From 5e595ff0eb6ddb39fe65700fe51a8980804ff56d Mon Sep 17 00:00:00 2001 From: klorpa <30924131+klorpa@users.noreply.github.com> Date: Sat, 8 May 2021 23:42:30 -0500 Subject: [PATCH 01/91] AddAs --- src/endWeek/saSocialEffects.js | 4 ++-- src/events/assistant/assistantFS.js | 2 +- src/events/nonRandom/rival/pRivalryActions.js | 20 +++++++++---------- src/js/vignettes.js | 4 ++-- src/npc/interaction/fFeelings.js | 4 ++-- src/personalAssistant/assistantAppearance.js | 4 ++-- src/uncategorized/barracks.tw | 2 +- src/uncategorized/reMalefactor.tw | 2 +- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/endWeek/saSocialEffects.js b/src/endWeek/saSocialEffects.js index bc135392d95..24d1cf7a839 100644 --- a/src/endWeek/saSocialEffects.js +++ b/src/endWeek/saSocialEffects.js @@ -63,7 +63,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) { } if (slave.fuckdoll > 0) { t.push(new SocialEffect("Supremacist", -2, "Superior race fuckdoll", - `Society <span class="red">strongly disapproves</span> of your owning a ${V.arcologies[0].FSSupremacistRace} Fuckdoll.`)); + `Society <span class="red">strongly disapproves</span> of your owning $(addA${V.arcologies[0].FSSupremacistRace})} Fuckdoll.`)); } } else { t.push(new SocialEffect("Supremacist", 1, "Inferior race slave", @@ -103,7 +103,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) { const dad = findFather(slave.pregSource); if (dad && dad.race === V.arcologies[0].FSSubjugationistRace) { t.push(new SocialEffect("Subjugationist", -2, "Miscegenation", - `Society <span class="red">strongly disapproves</span> of your allowing ${slave.slaveName} to be miscegenated by a ${V.arcologies[0].FSSubjugationistRace} subhuman like ${dad.slaveName}.`)); + `Society <span class="red">strongly disapproves</span> of your allowing ${slave.slaveName} to be miscegenated by ${addA(${V.arcologies[0].FSSubjugationistRace})} subhuman like ${dad.slaveName}.`)); } } } diff --git a/src/events/assistant/assistantFS.js b/src/events/assistant/assistantFS.js index f4361e5403c..830b58ac6c1 100644 --- a/src/events/assistant/assistantFS.js +++ b/src/events/assistant/assistantFS.js @@ -1175,7 +1175,7 @@ App.Events.assistantFS = class assistantFS extends App.Events.BaseEvent { } else if (V.arcologies[0].FSSupremacist !== "unset") { r.push(`adjusts ${hisA} appearance to resemble a model ${V.arcologies[0].FSSupremacistRace} student to conform with your vision of glorifying the superior race.`); } else if (V.arcologies[0].FSSubjugationist !== "unset") { - r.push(`adjusts ${hisA} appearance to resemble a ${V.arcologies[0].FSSubjugationistRace} foreign exchange student to conform with your vision of subjugating the inferior race.`); + r.push(`adjusts ${hisA} appearance to resemble ${addA(${V.arcologies[0].FSSubjugationistRace})} foreign exchange student to conform with your vision of subjugating the inferior race.`); } } diff --git a/src/events/nonRandom/rival/pRivalryActions.js b/src/events/nonRandom/rival/pRivalryActions.js index 712552ed9f8..9a423cc0ccb 100644 --- a/src/events/nonRandom/rival/pRivalryActions.js +++ b/src/events/nonRandom/rival/pRivalryActions.js @@ -1922,8 +1922,8 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 10; V.hostage.counter.anal += 10; hostageAction.push(`struggling to escape the grasp of a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`struggling to avoid giving an ${V.arcologies[0].FSSubjugationistRace} ${girlU} oral.`); - hostageAction.push(`screaming as ${he} gets fucked by an ${V.arcologies[0].FSSubjugationistRace} ${girlU}.`); + hostageAction.push(`struggling to avoid giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); + hostageAction.push(`screaming as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); } else if (V.rivalryDuration <= 10) { V.hostage.trust -= 5; V.hostage.devotion -= 5; @@ -1932,8 +1932,8 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 10; V.hostage.counter.anal += 10; hostageAction.push(`crying gently while a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s fondle ${him}.`); - hostageAction.push(`reluctantly giving an ${V.arcologies[0].FSSubjugationistRace} ${girlU} oral.`); - hostageAction.push(`crying as ${he} gets fucked by an ${V.arcologies[0].FSSubjugationistRace} ${girlU}.`); + hostageAction.push(`reluctantly giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); + hostageAction.push(`crying as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); } else if (V.rivalryDuration <= 15) { V.hostage.trust -= 5; V.hostage.devotion -= 5; @@ -1942,8 +1942,8 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 20; V.hostage.counter.anal += 20; hostageAction.push(`fooling around with a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`giving an ${V.arcologies[0].FSSubjugationistRace} ${girlU} oral.`); - hostageAction.push(`panting as ${he} gets fucked by an ${V.arcologies[0].FSSubjugationistRace} ${girlU}.`); + hostageAction.push(`giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); + hostageAction.push(`panting as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); } else if (V.rivalryDuration <= 20) { V.hostage.trust -= 5; V.hostage.devotion -= 5; @@ -1951,15 +1951,15 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 40; V.hostage.counter.anal += 20; hostageAction.push(`having a threesome with a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`eagerly giving an ${V.arcologies[0].FSSubjugationistRace} ${girlU} oral.`); - hostageAction.push(`moaning as ${he} gets fucked by an ${V.arcologies[0].FSSubjugationistRace} ${girlU}.`); + hostageAction.push(`eagerly giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); + hostageAction.push(`moaning as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); } else { V.hostage.counter.oral += 50; V.hostage.counter.vaginal += 50; V.hostage.counter.anal += 50; hostageAction.push(`making love to ${his} favorite two ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`enthusiastically giving an ${V.arcologies[0].FSSubjugationistRace} ${girlU} oral.`); - hostageAction.push(`enthusiastically wiggling ${his} rear as ${he} gets fucked by an ${V.arcologies[0].FSSubjugationistRace} ${girlU}.`); + hostageAction.push(`enthusiastically giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); + hostageAction.push(`enthusiastically wiggling ${his} rear as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); } break; case "Racial Supremacism": diff --git a/src/js/vignettes.js b/src/js/vignettes.js index a103cd3c9a0..12752b3337d 100644 --- a/src/js/vignettes.js +++ b/src/js/vignettes.js @@ -1443,7 +1443,7 @@ globalThis.GetVignette = function(slave) { if (V.arcologies[0].FSSubjugationist !== "unset") { if (slave.race === V.arcologies[0].FSSubjugationistRace) { vignettes.push({ - text: `${he} had a bad time in general, since most of ${his} customers didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`, + text: `${he} had a bad time in general, since most of ${his} customers didn't care about ${addA(${V.arcologies[0].FSSubjugationistRace})} prostitute's health or well-being,`, type: "health", effect: -1, }); @@ -3447,7 +3447,7 @@ globalThis.GetVignette = function(slave) { if (V.arcologies[0].FSSubjugationist !== "unset") { if (slave.race === V.arcologies[0].FSSubjugationistRace) { vignettes.push({ - text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`, + text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about ${addA(${V.arcologies[0].FSSubjugationistRace})} prostitute's health or well-being,`, type: "health", effect: -1, }); diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js index ec234dcc57f..961d1ede673 100644 --- a/src/npc/interaction/fFeelings.js +++ b/src/npc/interaction/fFeelings.js @@ -2031,9 +2031,9 @@ App.Interact.feelings = function(slave) { } if (V.arcologies[0].FSSubjugationist >= 10) { if (slave.race === V.arcologies[0].FSSubjugationistRace) { - r.push(Spoken(slave, `I know that as a ${V.arcologies[0].FSSubjugationistRace} slave, it's my proper place to serve.`)); + r.push(Spoken(slave, `I know that as a ${addA(${V.arcologies[0].FSSubjugationistRace})} slave, it's my proper place to serve.`)); } else { - r.push(Spoken(slave, `since I'm not a ${V.arcologies[0].FSSubjugationistRace} slave, I'm a little afraid I don't fit into your vision of the future.`)); + r.push(Spoken(slave, `since I'm not ${addA(${V.arcologies[0].FSSubjugationistRace})} slave, I'm a little afraid I don't fit into your vision of the future.`)); } } if (V.arcologies[0].FSSupremacist >= 10) { diff --git a/src/personalAssistant/assistantAppearance.js b/src/personalAssistant/assistantAppearance.js index a83919ede9b..94e631ee3f8 100644 --- a/src/personalAssistant/assistantAppearance.js +++ b/src/personalAssistant/assistantAppearance.js @@ -1204,7 +1204,7 @@ globalThis.PersonalAssistantAppearance = function() { }, "preggololi": { "paternalist": `belly wearing a cute pink dress. The middle is stretched tight by ${hisA} growing belly.`, - "supremacist": `belly wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying a ${V.arcologies[0].FSSupremacistRace} child.`, + "supremacist": `belly wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying ${addA(${V.arcologies[0].FSSupremacistRace})} child.`, "subjugationist": `belly, wearing nothing but a pregnancy biometrics collar. The collar's display reads 'Carrying 2 more ${V.arcologies[0].FSSubjugationistRace} subhumans!', something the ${girlA} occasionally reads aloud to ${himselfA}.`, "roman revivalist": `belly wearing a ${girlA}'s stola.`, "neoimperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`, @@ -1451,7 +1451,7 @@ globalThis.PersonalAssistantAppearance = function() { r.push(`If ${heA} were real, ${HeA} would make the perfect breeding stock for the next generation of the master race.`); return r.join(" "); }, - "subjugationist": `${HeA} still hasn't managed to undo the spell; ${HeA} looks like a racist caricature of a ${V.arcologies[0].FSSubjugationistRace} ${girlA}, and has an appropriately demeaning accent to match. What's worse, the spell also seems to have stripped most of ${hisA} literacy in ${V.language}, making reading ${hisA} tomes an arduous task for ${himA}.`, + "subjugationist": `${HeA} still hasn't managed to undo the spell; ${HeA} looks like a racist caricature of ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlA}, and has an appropriately demeaning accent to match. What's worse, the spell also seems to have stripped most of ${hisA} literacy in ${V.language}, making reading ${hisA} tomes an arduous task for ${himA}.`, "roman revivalist": `While ${heA} acts like a typical Roman ${womanA}, ${HeA} is pretty obviously Greek. ${HeA} can't even name the Pantheon correctly.`, "neoimperialist": `${HeA} looks like someone you would find selling "magical tokens" on the side of your neon-bathed streets, cybernetic trinkets adorning ${hisA} whole body.`, "aztec revivalist": `${HeA} is still very obviously not a native and has become rather caught up in the fear that ${heA}'ll soon be sacrificed.`, diff --git a/src/uncategorized/barracks.tw b/src/uncategorized/barracks.tw index 4d0af239090..7f3186b09c8 100644 --- a/src/uncategorized/barracks.tw +++ b/src/uncategorized/barracks.tw @@ -88,7 +88,7 @@ You head up a deck, to the staff area, and up one more, to look into the living They're obviously adopting the customs of $arcologies[0].name. <<set _vignette = 0>> <<if $arcologies[0].FSSubjugationist != "unset">> - A mercenary is fingering a $arcologies[0].FSSubjugationistRace _girlU's <<if $seeDicks != 100>>pussy<<else>>anus<</if>>. _HeU's wincing a little; _heU must be new here. + A mercenary is fingering <<print addA($arcologies[0].FSSubjugationistRace)>> _girlU's <<if $seeDicks != 100>>pussy<<else>>anus<</if>>. _HeU's wincing a little; _heU must be new here. <<set _vignette++>> <</if>> <<if $arcologies[0].FSSupremacist != "unset">> diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw index 666be201422..ee68f0b0212 100644 --- a/src/uncategorized/reMalefactor.tw +++ b/src/uncategorized/reMalefactor.tw @@ -295,7 +295,7 @@ <<setNonlocalPronouns $seeDicks>> but this is a special case. A well-muscled, well-armed $woman was caught attempting to smuggle a slave owned by one of your tenants out of the arcology. Though the slave surrendered immediately (and will be dealt with by _hisU owner), the would-be liberatrix was caught by your security drones. $He destroyed two of them and caused @@.red;other minor damage@@<<run cashX(forceNeg(1000), "event", _slave)>> that will require a small sum to repair, but was eventually subdued. The drones had to expend a great deal of nonlethal ordnance to bring $him down and keep $him down, but $he is now entirely at your mercy. <<case "passfail">> - Nevertheless, it seems one of your tenants, a rather ordinary white collar worker, has been severely wounded in a freak industrial accident, to the point that a blood transfusion was needed. In the course of doing so, an arcology hospital's autosurgery noted several genetic discrepancies and alerted a few nearby drones. Simply put, while the $woman appears to be a normal _fakeRace $woman, this is the result of numerous cosmetic surgeries; $he is actually _realRace. The laws of your arcology hold that members of the _realRace race are fit only for slavery, quite unlike the superior _fakeRace people. That a _realRace $girl would gain a position of relatively high class and power through such deception and fraud is considered an outrage by many of your citizens, and so $he was placed under arrest before $he even awoke from surgery. $He is now entirely at your mercy. + Nevertheless, it seems one of your tenants, a rather ordinary white collar worker, has been severely wounded in a freak industrial accident, to the point that a blood transfusion was needed. In the course of doing so, an arcology hospital's autosurgery noted several genetic discrepancies and alerted a few nearby drones. Simply put, while the $woman appears to be a normal _fakeRace $woman, this is the result of numerous cosmetic surgeries; $he is actually _realRace. The laws of your arcology hold that members of the _realRace race are fit only for slavery, quite unlike the superior _fakeRace people. That a <<= addA(_realRace)>> $girl would gain a position of relatively high class and power through such deception and fraud is considered an outrage by many of your citizens, and so $he was placed under arrest before $he even awoke from surgery. $He is now entirely at your mercy. <</switch>> <<set _ContractCost = 1000>> -- GitLab From 9014a82864b9be50a1d0fb7d40a83de0f2028108 Mon Sep 17 00:00:00 2001 From: klorpa <30924131+klorpa@users.noreply.github.com> Date: Sat, 8 May 2021 23:49:36 -0500 Subject: [PATCH 02/91] StillWrongs --- src/endWeek/saRecruitGirls.js | 14 +++++++------- src/npc/generate/newSlaveIntro.js | 2 +- src/uncategorized/reMalefactor.tw | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/endWeek/saRecruitGirls.js b/src/endWeek/saRecruitGirls.js index 2525edc330d..bead8ac67ae 100644 --- a/src/endWeek/saRecruitGirls.js +++ b/src/endWeek/saRecruitGirls.js @@ -176,7 +176,7 @@ App.SlaveAssignment.recruitGirls = (function() { if (arcology.FSSubjugationistRace === targetArcology.FSSubjugationistRace) { r.push(`${He} advances its racially aligned`); if (slave.race === targetArcology.FSSubjugationistRace) { - r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s a ${slave.race} slave ${himself}.`); + r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); targetArcology.FSSubjugationist++; } else { r.push(`Subjugationism.`); @@ -185,7 +185,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else { r.push(`${He} challenges its racially mismatched`); if (slave.race !== targetArcology.FSSubjugationistRace) { - r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s a ${slave.race} slave.`); + r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave.`); targetArcology.FSSubjugationist--; } else { r.push(`Subjugationism.`); @@ -195,7 +195,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else if (targetArcology.FSSupremacist !== "unset" && arcology.FSSubjugationistRace === targetArcology.FSSupremacistRace) { r.push(`${He} challenges its opposing`); if (slave.race === targetArcology.FSSubjugationistRace) { - r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s a ${slave.race} slave ${himself}.`); + r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); targetArcology.FSSupremacist--; } else { r.push(`Supremacism.`); @@ -208,7 +208,7 @@ App.SlaveAssignment.recruitGirls = (function() { if (arcology.FSSupremacistRace === targetArcology.FSSupremacistRace) { r.push(`${He} advances its racially aligned`); if (slave.race !== targetArcology.FSSupremacistRace) { - r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s a ${slave.race} slave ${himself}.`); + r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); targetArcology.FSSupremacist++; } else { r.push(`Supremacism.`); @@ -217,7 +217,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else { r.push(`${He} challenges its racially mismatched`); if (slave.race === targetArcology.FSSupremacistRace) { - r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s a ${slave.race} slave.`); + r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave.`); targetArcology.FSSupremacist--; } else { r.push(`Supremacism.`); @@ -227,7 +227,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else if (targetArcology.FSSubjugationist !== "unset" && arcology.FSSupremacistRace === targetArcology.FSSubjugationistRace) { r.push(`${He} challenges its opposing`); if (slave.race !== targetArcology.FSSupremacistRace) { - r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s a ${slave.race} slave ${himself}.`); + r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); targetArcology.FSSubjugationist--; } else { r.push(`Subjugationism.`); @@ -1053,7 +1053,7 @@ App.SlaveAssignment.recruitGirls = (function() { FSdefend++; arcology.FSSubjugationist += 0.01 * V.FSSingleSlaveRep * FSIntMod; if (slave.race === arcology.FSSubjugationistRace) { - pushFS(`It's always a pleasure to hear a ${slave.race} slave admit to all the failings for which ${his} kind need to be taken in hand.`); + pushFS(`It's always a pleasure to hear ${addA(${slave.race})} slave admit to all the failings for which ${his} kind need to be taken in hand.`); arcology.FSSubjugationist += 0.01 * V.FSSingleSlaveRep; } } else if (slave.race !== arcology.FSSupremacistRace) { diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js index 6ae9f6d2abf..88b8b73efce 100644 --- a/src/npc/generate/newSlaveIntro.js +++ b/src/npc/generate/newSlaveIntro.js @@ -537,7 +537,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = if (V.arcologies[0].FSSupremacist >= 50) { if (slave.origin === "You sentenced $him to enslavement as a punishment for defying local racial segregation laws.") { if (slave.race === V.arcologies[0].FSSupremacistRace) { - r.push(`${He} <span class="gold">rightfully fears for ${his} safety</span> now that you know that ${he} is a ${slave.origRace} merely pretending to be your arcology's favored race.`); + r.push(`${He} <span class="gold">rightfully fears for ${his} safety</span> now that you know that ${he} is ${addA(${slave.origRace})} merely pretending to be your arcology's favored race.`); slave.trust -= 10; } } else if (slave.race === V.arcologies[0].FSSupremacistRace) { diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw index ee68f0b0212..2f280e5ae0c 100644 --- a/src/uncategorized/reMalefactor.tw +++ b/src/uncategorized/reMalefactor.tw @@ -295,7 +295,7 @@ <<setNonlocalPronouns $seeDicks>> but this is a special case. A well-muscled, well-armed $woman was caught attempting to smuggle a slave owned by one of your tenants out of the arcology. Though the slave surrendered immediately (and will be dealt with by _hisU owner), the would-be liberatrix was caught by your security drones. $He destroyed two of them and caused @@.red;other minor damage@@<<run cashX(forceNeg(1000), "event", _slave)>> that will require a small sum to repair, but was eventually subdued. The drones had to expend a great deal of nonlethal ordnance to bring $him down and keep $him down, but $he is now entirely at your mercy. <<case "passfail">> - Nevertheless, it seems one of your tenants, a rather ordinary white collar worker, has been severely wounded in a freak industrial accident, to the point that a blood transfusion was needed. In the course of doing so, an arcology hospital's autosurgery noted several genetic discrepancies and alerted a few nearby drones. Simply put, while the $woman appears to be a normal _fakeRace $woman, this is the result of numerous cosmetic surgeries; $he is actually _realRace. The laws of your arcology hold that members of the _realRace race are fit only for slavery, quite unlike the superior _fakeRace people. That a <<= addA(_realRace)>> $girl would gain a position of relatively high class and power through such deception and fraud is considered an outrage by many of your citizens, and so $he was placed under arrest before $he even awoke from surgery. $He is now entirely at your mercy. + Nevertheless, it seems one of your tenants, a rather ordinary white collar worker, has been severely wounded in a freak industrial accident, to the point that a blood transfusion was needed. In the course of doing so, an arcology hospital's autosurgery noted several genetic discrepancies and alerted a few nearby drones. Simply put, while the $woman appears to be a normal _fakeRace $woman, this is the result of numerous cosmetic surgeries; $he is actually _realRace. The laws of your arcology hold that members of the _realRace race are fit only for slavery, quite unlike the superior _fakeRace people. That <<= addA(_realRace)>> $girl would gain a position of relatively high class and power through such deception and fraud is considered an outrage by many of your citizens, and so $he was placed under arrest before $he even awoke from surgery. $He is now entirely at your mercy. <</switch>> <<set _ContractCost = 1000>> -- GitLab From c39b525b6a42d957ed00cfa132e41427fe18b7af Mon Sep 17 00:00:00 2001 From: klorpa <30924131+klorpa@users.noreply.github.com> Date: Sun, 9 May 2021 10:13:14 -0500 Subject: [PATCH 03/91] ZAddAFixes --- src/endWeek/saRecruitGirls.js | 14 ++++++------- src/endWeek/saSocialEffects.js | 2 +- src/events/assistant/assistantFS.js | 2 +- src/events/nonRandom/rival/pRivalryActions.js | 20 +++++++++---------- src/js/vignettes.js | 4 ++-- src/npc/generate/newSlaveIntro.js | 2 +- src/npc/interaction/fFeelings.js | 12 +++++------ src/personalAssistant/assistantAppearance.js | 4 ++-- 8 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/endWeek/saRecruitGirls.js b/src/endWeek/saRecruitGirls.js index bead8ac67ae..0315e3da54f 100644 --- a/src/endWeek/saRecruitGirls.js +++ b/src/endWeek/saRecruitGirls.js @@ -176,7 +176,7 @@ App.SlaveAssignment.recruitGirls = (function() { if (arcology.FSSubjugationistRace === targetArcology.FSSubjugationistRace) { r.push(`${He} advances its racially aligned`); if (slave.race === targetArcology.FSSubjugationistRace) { - r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); + r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(slave.race)} slave ${himself}.`); targetArcology.FSSubjugationist++; } else { r.push(`Subjugationism.`); @@ -185,7 +185,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else { r.push(`${He} challenges its racially mismatched`); if (slave.race !== targetArcology.FSSubjugationistRace) { - r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave.`); + r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(slave.race)} slave.`); targetArcology.FSSubjugationist--; } else { r.push(`Subjugationism.`); @@ -195,7 +195,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else if (targetArcology.FSSupremacist !== "unset" && arcology.FSSubjugationistRace === targetArcology.FSSupremacistRace) { r.push(`${He} challenges its opposing`); if (slave.race === targetArcology.FSSubjugationistRace) { - r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); + r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(slave.race)} slave ${himself}.`); targetArcology.FSSupremacist--; } else { r.push(`Supremacism.`); @@ -208,7 +208,7 @@ App.SlaveAssignment.recruitGirls = (function() { if (arcology.FSSupremacistRace === targetArcology.FSSupremacistRace) { r.push(`${He} advances its racially aligned`); if (slave.race !== targetArcology.FSSupremacistRace) { - r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); + r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(slave.race)} slave ${himself}.`); targetArcology.FSSupremacist++; } else { r.push(`Supremacism.`); @@ -217,7 +217,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else { r.push(`${He} challenges its racially mismatched`); if (slave.race === targetArcology.FSSupremacistRace) { - r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave.`); + r.push(`Supremacism, which ${he}'s very appropriate for, since ${he}'s ${addA(slave.race)} slave.`); targetArcology.FSSupremacist--; } else { r.push(`Supremacism.`); @@ -227,7 +227,7 @@ App.SlaveAssignment.recruitGirls = (function() { } else if (targetArcology.FSSubjugationist !== "unset" && arcology.FSSupremacistRace === targetArcology.FSSubjugationistRace) { r.push(`${He} challenges its opposing`); if (slave.race !== targetArcology.FSSupremacistRace) { - r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(${slave.race})} slave ${himself}.`); + r.push(`Subjugationism, which ${he}'s very appropriate for, since ${he}'s ${addA(slave.race)} slave ${himself}.`); targetArcology.FSSubjugationist--; } else { r.push(`Subjugationism.`); @@ -1053,7 +1053,7 @@ App.SlaveAssignment.recruitGirls = (function() { FSdefend++; arcology.FSSubjugationist += 0.01 * V.FSSingleSlaveRep * FSIntMod; if (slave.race === arcology.FSSubjugationistRace) { - pushFS(`It's always a pleasure to hear ${addA(${slave.race})} slave admit to all the failings for which ${his} kind need to be taken in hand.`); + pushFS(`It's always a pleasure to hear ${addA(slave.race)} slave admit to all the failings for which ${his} kind need to be taken in hand.`); arcology.FSSubjugationist += 0.01 * V.FSSingleSlaveRep; } } else if (slave.race !== arcology.FSSupremacistRace) { diff --git a/src/endWeek/saSocialEffects.js b/src/endWeek/saSocialEffects.js index 24d1cf7a839..985a03ee87b 100644 --- a/src/endWeek/saSocialEffects.js +++ b/src/endWeek/saSocialEffects.js @@ -103,7 +103,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) { const dad = findFather(slave.pregSource); if (dad && dad.race === V.arcologies[0].FSSubjugationistRace) { t.push(new SocialEffect("Subjugationist", -2, "Miscegenation", - `Society <span class="red">strongly disapproves</span> of your allowing ${slave.slaveName} to be miscegenated by ${addA(${V.arcologies[0].FSSubjugationistRace})} subhuman like ${dad.slaveName}.`)); + `Society <span class="red">strongly disapproves</span> of your allowing ${slave.slaveName} to be miscegenated by ${addA(V.arcologies[0].FSSubjugationistRace)} subhuman like ${dad.slaveName}.`)); } } } diff --git a/src/events/assistant/assistantFS.js b/src/events/assistant/assistantFS.js index 830b58ac6c1..1fac3b7d5c4 100644 --- a/src/events/assistant/assistantFS.js +++ b/src/events/assistant/assistantFS.js @@ -1175,7 +1175,7 @@ App.Events.assistantFS = class assistantFS extends App.Events.BaseEvent { } else if (V.arcologies[0].FSSupremacist !== "unset") { r.push(`adjusts ${hisA} appearance to resemble a model ${V.arcologies[0].FSSupremacistRace} student to conform with your vision of glorifying the superior race.`); } else if (V.arcologies[0].FSSubjugationist !== "unset") { - r.push(`adjusts ${hisA} appearance to resemble ${addA(${V.arcologies[0].FSSubjugationistRace})} foreign exchange student to conform with your vision of subjugating the inferior race.`); + r.push(`adjusts ${hisA} appearance to resemble ${addA(V.arcologies[0].FSSubjugationistRace)} foreign exchange student to conform with your vision of subjugating the inferior race.`); } } diff --git a/src/events/nonRandom/rival/pRivalryActions.js b/src/events/nonRandom/rival/pRivalryActions.js index 9a423cc0ccb..5ba526daec5 100644 --- a/src/events/nonRandom/rival/pRivalryActions.js +++ b/src/events/nonRandom/rival/pRivalryActions.js @@ -1922,8 +1922,8 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 10; V.hostage.counter.anal += 10; hostageAction.push(`struggling to escape the grasp of a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`struggling to avoid giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); - hostageAction.push(`screaming as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); + hostageAction.push(`struggling to avoid giving ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU} oral.`); + hostageAction.push(`screaming as ${he} gets fucked by ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU}.`); } else if (V.rivalryDuration <= 10) { V.hostage.trust -= 5; V.hostage.devotion -= 5; @@ -1932,8 +1932,8 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 10; V.hostage.counter.anal += 10; hostageAction.push(`crying gently while a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s fondle ${him}.`); - hostageAction.push(`reluctantly giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); - hostageAction.push(`crying as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); + hostageAction.push(`reluctantly giving ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU} oral.`); + hostageAction.push(`crying as ${he} gets fucked by ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU}.`); } else if (V.rivalryDuration <= 15) { V.hostage.trust -= 5; V.hostage.devotion -= 5; @@ -1942,8 +1942,8 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 20; V.hostage.counter.anal += 20; hostageAction.push(`fooling around with a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); - hostageAction.push(`panting as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); + hostageAction.push(`giving ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU} oral.`); + hostageAction.push(`panting as ${he} gets fucked by ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU}.`); } else if (V.rivalryDuration <= 20) { V.hostage.trust -= 5; V.hostage.devotion -= 5; @@ -1951,15 +1951,15 @@ App.Events.pRivalryActions = function() { V.hostage.counter.vaginal += 40; V.hostage.counter.anal += 20; hostageAction.push(`having a threesome with a pair of ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`eagerly giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); - hostageAction.push(`moaning as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); + hostageAction.push(`eagerly giving ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU} oral.`); + hostageAction.push(`moaning as ${he} gets fucked by ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU}.`); } else { V.hostage.counter.oral += 50; V.hostage.counter.vaginal += 50; V.hostage.counter.anal += 50; hostageAction.push(`making love to ${his} favorite two ${V.arcologies[0].FSSubjugationistRace} ${girlU}s.`); - hostageAction.push(`enthusiastically giving ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU} oral.`); - hostageAction.push(`enthusiastically wiggling ${his} rear as ${he} gets fucked by ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlU}.`); + hostageAction.push(`enthusiastically giving ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU} oral.`); + hostageAction.push(`enthusiastically wiggling ${his} rear as ${he} gets fucked by ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlU}.`); } break; case "Racial Supremacism": diff --git a/src/js/vignettes.js b/src/js/vignettes.js index 12752b3337d..aa60dbced6a 100644 --- a/src/js/vignettes.js +++ b/src/js/vignettes.js @@ -1443,7 +1443,7 @@ globalThis.GetVignette = function(slave) { if (V.arcologies[0].FSSubjugationist !== "unset") { if (slave.race === V.arcologies[0].FSSubjugationistRace) { vignettes.push({ - text: `${he} had a bad time in general, since most of ${his} customers didn't care about ${addA(${V.arcologies[0].FSSubjugationistRace})} prostitute's health or well-being,`, + text: `${he} had a bad time in general, since most of ${his} customers didn't care about ${addA(V.arcologies[0].FSSubjugationistRace)} prostitute's health or well-being,`, type: "health", effect: -1, }); @@ -3447,7 +3447,7 @@ globalThis.GetVignette = function(slave) { if (V.arcologies[0].FSSubjugationist !== "unset") { if (slave.race === V.arcologies[0].FSSubjugationistRace) { vignettes.push({ - text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about ${addA(${V.arcologies[0].FSSubjugationistRace})} prostitute's health or well-being,`, + text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about ${addA(V.arcologies[0].FSSubjugationistRace)} prostitute's health or well-being,`, type: "health", effect: -1, }); diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js index 88b8b73efce..58a191b847d 100644 --- a/src/npc/generate/newSlaveIntro.js +++ b/src/npc/generate/newSlaveIntro.js @@ -537,7 +537,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = if (V.arcologies[0].FSSupremacist >= 50) { if (slave.origin === "You sentenced $him to enslavement as a punishment for defying local racial segregation laws.") { if (slave.race === V.arcologies[0].FSSupremacistRace) { - r.push(`${He} <span class="gold">rightfully fears for ${his} safety</span> now that you know that ${he} is ${addA(${slave.origRace})} merely pretending to be your arcology's favored race.`); + r.push(`${He} <span class="gold">rightfully fears for ${his} safety</span> now that you know that ${he} is ${addA(slave.origRace)} merely pretending to be your arcology's favored race.`); slave.trust -= 10; } } else if (slave.race === V.arcologies[0].FSSupremacistRace) { diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js index 81edfbcd2af..abbcdf16587 100644 --- a/src/npc/interaction/fFeelings.js +++ b/src/npc/interaction/fFeelings.js @@ -1724,11 +1724,11 @@ App.Interact.feelings = function(slave) { r.push(Spoken(slave, `I — I'm fucking my father,"`)); r.push(`${he} bursts out, blushing even harder.`); r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} knows so much about penetration, I can't stop.`)); - } else if (_partner.mother === slave.ID) { + } else if (_partner.mother === V.AS) { r.push(Spoken(slave, `I — I'm fucking my ${daughter2},"`)); r.push(`${he} bursts out, blushing even harder.`); r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} has such a hot little body, I can't stop.`)); - } else if (_partner.father === slave.ID) { + } else if (_partner.father === V.AS) { r.push(Spoken(slave, `I — I'm fucking my ${daughter2},"`)); r.push(`${he} bursts out, blushing even harder.`); r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} has such a hot little body. ${He2} looks so much like ${his2} mother, I can't stop.`)); @@ -2031,9 +2031,9 @@ App.Interact.feelings = function(slave) { } if (V.arcologies[0].FSSubjugationist >= 10) { if (slave.race === V.arcologies[0].FSSubjugationistRace) { - r.push(Spoken(slave, `I know that as a ${addA(${V.arcologies[0].FSSubjugationistRace})} slave, it's my proper place to serve.`)); + r.push(Spoken(slave, `I know that as a ${addA(V.arcologies[0].FSSubjugationistRace)} slave, it's my proper place to serve.`)); } else { - r.push(Spoken(slave, `since I'm not ${addA(${V.arcologies[0].FSSubjugationistRace})} slave, I'm a little afraid I don't fit into your vision of the future.`)); + r.push(Spoken(slave, `since I'm not ${addA(V.arcologies[0].FSSubjugationistRace)} slave, I'm a little afraid I don't fit into your vision of the future.`)); } } if (V.arcologies[0].FSSupremacist >= 10) { @@ -2094,9 +2094,9 @@ App.Interact.feelings = function(slave) { } // closes FS if (slave.devotion > 75) { - if (slave.tankBaby > 0 || isParentP(slave, V.PC) || (areSisters(slave, V.PC) && slave.actualAge <= V.PC.actualAge)) { + if (slave.tankBaby > 0|| slave.mother === -1 || (areSisters(slave, V.PC) && slave.actualAge <= V.PC.actualAge)) { r.push(Spoken(slave, `I've known you my whole life, ${Master}, I can't really think of any times you weren't there for me.`)); - } else if ((areSisters(slave, V.PC) && slave.actualAge > V.PC.actualAge) || isParentP(V.PC, slave)) { + } else if ((areSisters(slave, V.PC) && slave.actualAge > V.PC.actualAge) || V.PC.mother === V.AS || V.PC.father === V.AS) { r.push(Spoken(slave, `You're my dear ${Master}. I've known you since you were born, and I will always be watching out for you, no matter what.`)); } else if (slave.weekAcquired === 0 && V.week > 104) { r.push(Spoken(slave, `I feel like I've known you my whole life, ${Master}, and I would follow you to the end of the earth.`)); diff --git a/src/personalAssistant/assistantAppearance.js b/src/personalAssistant/assistantAppearance.js index 94e631ee3f8..54e90e0ec97 100644 --- a/src/personalAssistant/assistantAppearance.js +++ b/src/personalAssistant/assistantAppearance.js @@ -1204,7 +1204,7 @@ globalThis.PersonalAssistantAppearance = function() { }, "preggololi": { "paternalist": `belly wearing a cute pink dress. The middle is stretched tight by ${hisA} growing belly.`, - "supremacist": `belly wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying ${addA(${V.arcologies[0].FSSupremacistRace})} child.`, + "supremacist": `belly wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying ${addA(V.arcologies[0].FSSupremacistRace)} child.`, "subjugationist": `belly, wearing nothing but a pregnancy biometrics collar. The collar's display reads 'Carrying 2 more ${V.arcologies[0].FSSubjugationistRace} subhumans!', something the ${girlA} occasionally reads aloud to ${himselfA}.`, "roman revivalist": `belly wearing a ${girlA}'s stola.`, "neoimperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`, @@ -1451,7 +1451,7 @@ globalThis.PersonalAssistantAppearance = function() { r.push(`If ${heA} were real, ${HeA} would make the perfect breeding stock for the next generation of the master race.`); return r.join(" "); }, - "subjugationist": `${HeA} still hasn't managed to undo the spell; ${HeA} looks like a racist caricature of ${addA(${V.arcologies[0].FSSubjugationistRace})} ${girlA}, and has an appropriately demeaning accent to match. What's worse, the spell also seems to have stripped most of ${hisA} literacy in ${V.language}, making reading ${hisA} tomes an arduous task for ${himA}.`, + "subjugationist": `${HeA} still hasn't managed to undo the spell; ${HeA} looks like a racist caricature of ${addA(V.arcologies[0].FSSubjugationistRace)} ${girlA}, and has an appropriately demeaning accent to match. What's worse, the spell also seems to have stripped most of ${hisA} literacy in ${V.language}, making reading ${hisA} tomes an arduous task for ${himA}.`, "roman revivalist": `While ${heA} acts like a typical Roman ${womanA}, ${HeA} is pretty obviously Greek. ${HeA} can't even name the Pantheon correctly.`, "neoimperialist": `${HeA} looks like someone you would find selling "magical tokens" on the side of your neon-bathed streets, cybernetic trinkets adorning ${hisA} whole body.`, "aztec revivalist": `${HeA} is still very obviously not a native and has become rather caught up in the fear that ${heA}'ll soon be sacrificed.`, -- GitLab From 7fee6e66a34a69c09c53cace9413b849036c13bd Mon Sep 17 00:00:00 2001 From: klorpa <30924131+klorpa@users.noreply.github.com> Date: Sun, 9 May 2021 11:37:04 -0500 Subject: [PATCH 04/91] FixThat --- src/Mods/Catmod/events/SoSBombing.tw | 4 +- src/Mods/Catmod/events/SoSSniper.tw | 6 +- src/Mods/Catmod/events/SoSassassin.tw | 2 +- .../events/nonRandom/bodypuristprotest.tw | 6 +- .../events/nonRandom/projectNComplete.tw | 4 +- .../events/nonRandom/projectNSaboteur.tw | 44 +++++----- src/Mods/Catmod/interaction/fPet.tw | 8 +- src/endWeek/saSocialEffects.js | 2 +- .../farmyard/shows/saFarmyardShows.js | 2 +- .../interaction/fSlaveSlaveVagConsummate.tw | 2 +- src/npc/interaction/fondleVagina.tw | 4 +- .../passage/fSlaveSlaveDickConsummate.tw | 4 +- src/pregmod/FCTV/FCTV.js | 2 +- src/pregmod/geneLab.tw | 86 +++++++++---------- src/uncategorized/randomNonindividualEvent.tw | 18 ++-- 15 files changed, 97 insertions(+), 97 deletions(-) diff --git a/src/Mods/Catmod/events/SoSBombing.tw b/src/Mods/Catmod/events/SoSBombing.tw index 906c7374404..38c7cab59f4 100644 --- a/src/Mods/Catmod/events/SoSBombing.tw +++ b/src/Mods/Catmod/events/SoSBombing.tw @@ -32,7 +32,7 @@ Although they're not positive, they're requesting a few thousand credits in addi <br> <<link "Authorize the raid, but delegate it to your armed citizens instead of the security team">> <<replace "#result">> <<if $sekhmetbombplot == 1>> - You authorize the raid, but transfer authority for its execution over to a group of loyal, free citizens, who are all too eager to defend the Republic. Early in the morning the next day, a group of Praetorians in full gear burst into a small apartment in the lower sectors, interrupting a small group of Sekhmeti terrorists bulding a series of improvised bombs in the barren living room. Before the bombmakers can even grab their guns, the well-disciplined citizens gun them down in an explosive hail of fire, killing the whole cluster indiscriminately. Although the zealous citizenry don't leave anything left for you to enslave, a group of proud, well-trained free citizens voluntarily defending the arcology from a terrorist plot - and doing so without so much as a scratch - is a @@.green;good look.@@ + You authorize the raid, but transfer authority for its execution over to a group of loyal, free citizens, who are all too eager to defend the Republic. Early in the morning the next day, a group of Praetorians in full gear burst into a small apartment in the lower sectors, interrupting a small group of Sekhmeti terrorists building a series of improvised bombs in the barren living room. Before the bombmakers can even grab their guns, the well-disciplined citizens gun them down in an explosive hail of fire, killing the whole cluster indiscriminately. Although the zealous citizenry don't leave anything left for you to enslave, a group of proud, well-trained free citizens voluntarily defending the arcology from a terrorist plot - and doing so without so much as a scratch - is a @@.green;good look.@@ <<run cashX(-5000, "event")>> <<run repX(2500, "event")>> @@ -48,7 +48,7 @@ Although they're not positive, they're requesting a few thousand credits in addi <br> <<link "Authorize the raid, but transfer authority to your $mercenariesTitle">> <<replace "#result">> <<if $sekhmetbombplot == 1>> - You authorize the raid, but head up the effort with your better-trained $mercenariesTitle. Early in the morning the next day, the deadly mercenaries kick down the door of a small office building in the lower sectors, interrupting a group of Sekhmeti terrorists in the middle of constructing a series of improvised bombs in the converted office space. The $mercenariesTitle blow the entire group to pieces with high-power weaponry, absolutely annihilating the careful plot with overwhelming force and indiscriminate destruction before they can fire off a single shot. Although the rough mercenaries don't leave anything left for you to enslave, the well-trained mercs emerging from the smouldering ruin of what used to be a terrorist field HQ is a @@.green;good look@@ for the security of your arcology. + You authorize the raid, but head up the effort with your better-trained $mercenariesTitle. Early in the morning the next day, the deadly mercenaries kick down the door of a small office building in the lower sectors, interrupting a group of Sekhmeti terrorists in the middle of constructing a series of improvised bombs in the converted office space. The $mercenariesTitle blow the entire group to pieces with high-power weaponry, absolutely annihilating the careful plot with overwhelming force and indiscriminate destruction before they can fire off a single shot. Although the rough mercenaries don't leave anything left for you to enslave, the well-trained mercs emerging from the smoldering ruin of what used to be a terrorist field HQ is a @@.green;good look@@ for the security of your arcology. <<run cashX(-5000, "event")>> <<run repX(2500, "event")>> diff --git a/src/Mods/Catmod/events/SoSSniper.tw b/src/Mods/Catmod/events/SoSSniper.tw index 6e0dc9d7e9d..3ea83a3515c 100644 --- a/src/Mods/Catmod/events/SoSSniper.tw +++ b/src/Mods/Catmod/events/SoSSniper.tw @@ -140,17 +140,17 @@ As you pant in the wake of the sudden attack, $assistant.name notifies you that <</if>> <br><br> <<if _sniperescape == 1>> - The assassination attempt and subsequent escape has @@.red;scared@@ many of your citizens, even after you @@.red;pay@@ for the damage the sniper bullets caused to the wealthy elite's propety. A few days later, a trader passing by the arcology hands you an envelope, saying that he was told to pass it onto you. Inside is a single slip of paper, totally blank except for a single line of text: "See you soon." The envelope is emblazoned with the logo of an orange sun. + The assassination attempt and subsequent escape has @@.red;scared@@ many of your citizens, even after you @@.red;pay@@ for the damage the sniper bullets caused to the wealthy elite's property. A few days later, a trader passing by the arcology hands you an envelope, saying that he was told to pass it onto you. Inside is a single slip of paper, totally blank except for a single line of text: "See you soon." The envelope is emblazoned with the logo of an orange sun. <<set $arcologies[0].prosperity -= 1>> <<run repX(-2000, "event")>> <<elseif _sniperescape == 2>> - Surviving the assassination attempt and killing the assassin earns you @@.green;admiration@@ of the citizenry, who see you as strong for punishing the assassin, particularly after you @@.red;pay@@ for the damage the sniper bullets caused to the wealthy elite's propety. The next day, the Sons of Sekhmet release a 'news' update featuring their balaclava-wearing figurehead in front of his professional desk. + Surviving the assassination attempt and killing the assassin earns you @@.green;admiration@@ of the citizenry, who see you as strong for punishing the assassin, particularly after you @@.red;pay@@ for the damage the sniper bullets caused to the wealthy elite's property. The next day, the Sons of Sekhmet release a 'news' update featuring their balaclava-wearing figurehead in front of his professional desk. <br><br> "Today a servant of Sekhmet was martyred while making an attempt on the life of a hedonistic new-world plutocrat. This was not the first attempt we have made, and it will not be the last. Next time, we will inscribe his name on the bullet that finishes the job. Abna Sakhmat damk-" You turn off the report. That's about all you need to see. <<set $arcologies[0].prosperity += 1>> <<run repX(2000, "event")>> <<elseif _sniperescape == 3>> - Surviving the assassination attempt and capturing the assassin earns you @@.green;admiration@@ of the citizenry, who see you as strong for punishing the assassin, particularly after you @@.red;pay@@ for the damage the sniper bullets caused to the wealthy elite's propety. The next day, the Sons of Sekhmet release a 'news' update featuring their balaclava-wearing figurehead in front of his professional desk. + Surviving the assassination attempt and capturing the assassin earns you @@.green;admiration@@ of the citizenry, who see you as strong for punishing the assassin, particularly after you @@.red;pay@@ for the damage the sniper bullets caused to the wealthy elite's property. The next day, the Sons of Sekhmet release a 'news' update featuring their balaclava-wearing figurehead in front of his professional desk. <br><br> "Today a servant of Sekhmet was martyred while making an attempt on the life of a hedonistic new-world plutocrat. The enemy has captured one of ours - in time we will free them, or perhaps they will awake to find a dagger in their back. Soon, they will understand the grave mistake of taking a Son into their ranks, even as a slave. Abna Sakhmat damk-" You turn off the report. That's about all you need to see. <<set $arcologies[0].prosperity += 1>> diff --git a/src/Mods/Catmod/events/SoSassassin.tw b/src/Mods/Catmod/events/SoSassassin.tw index 6c35c5748ca..2aa578b2521 100644 --- a/src/Mods/Catmod/events/SoSassassin.tw +++ b/src/Mods/Catmod/events/SoSassassin.tw @@ -68,7 +68,7 @@ As you stroll through your market district in the afternoon, checking up on your <</if>> <<else>> <<if $PC.skill.warfare >= 100 && $personalArms > 0>> - There's nothing standing between you two. You level your handgun onto her, but she's just a microsecond faster, kicking the gun out of your hand with a painfully powerful strike that sends the pistol clattering onto the ground a few feet away. Before you can dive for it, she's thrusting her knife up towards your throat. Your combat instincts kick in and you wrench your head to the side, the blade nicking you on the cheek, and grab her by the wrist, throwing a hard punch into her ribcage. The assassin forces her hand free and stumbles back, seemingly surprised that you're holding your own against her. "Bhalwi al-sham asmik qalbik. I was told you could fight." She mumbles. You glance at your handgun on the ground as she drops into a combat stance and lunges towards you a second time. You barely catch her wrist as she thrusts the knife at your stomach, forcing her hand off to the side, and she responds by slamming a kick into your ankle, rearing her hand back for another strike as you reel. You narrowly deflect strike after strike as she jabs the knife towards your vitals, the sharp steel cutting and scraping your skin as you hold off the better-armed assailant, until she pulls back and brutally kicks you in the ribs as you block a jab, sending you slamming against the hard ground of the marketplace. Coughing a trace of blood, you roll to the side towards your discarded handgun as the assassin lunges atop you, pinning you down. She's got an insane look in her pretty eyes as she raises the knife, shouting "Abna Sakhmat damkun!" You reach your hand to the side as far as you can get it, narrowly grasp your fingers around your handgun, and whip it back to fire a single round, the last round in the magazine, through the assassin straddling you's chest. She gasps once, and then slumps off, an instant before having plunged the knife into your heart. Covered in blood, you push the corpse off, stand up, brush yourself off, and tell the @@.green;shocked and amazed@@ citizens of the marketplace that this is just another day in your life. Someone awkwardly applauds as the security drones arrive. + There's nothing standing between you two. You level your handgun onto her, but she's just a microsecond faster, kicking the gun out of your hand with a painfully powerful strike that sends the pistol clattering onto the ground a few feet away. Before you can dive for it, she's thrusting her knife up towards your throat. Your combat instincts kick in and you wrench your head to the side, the blade nicking you on the cheek, and grab her by the wrist, throwing a hard punch into her ribcage. The assassin forces her hand free and stumbles back, seemingly surprised that you're holding your own against her. "Bhalwi al-sham asmik qalbik. I was told you could fight." She mumbles. You glance at your handgun on the ground as she drops into a combat stance and lunges towards you a second time. You barely catch her wrist as she thrusts the knife at your stomach, forcing her hand off to the side, and she responds by slamming a kick into your ankle, rearing her hand back for another strike as you reel. You narrowly deflect strike after strike as she jabs the knife towards your vitals, the sharp steel cutting and scraping your skin as you hold off the better-armed assailant, until she pulls back and brutally kicks you in the ribs as you block a jab, sending you slamming against the hard ground of the marketplace. Coughing a trace of blood, you roll to the side towards your discarded handgun as the assassin lunges atop you, pinning you down. She's got an insane look in her pretty eyes as she raises the knife, shouting "Abna Sakhmat damkun!" You reach your hand to the side as far as you can get it, narrowly grasp your fingers around your handgun, and whip it back to fire a single round, the last round in the magazine, through the assassin straddling your chest. She gasps once, and then slumps off, an instant before having plunged the knife into your heart. Covered in blood, you push the corpse off, stand up, brush yourself off, and tell the @@.green;shocked and amazed@@ citizens of the marketplace that this is just another day in your life. Someone awkwardly applauds as the security drones arrive. <<run cashX(-1000, "event")>> <<run repX(2500, "event")>> <<else>> diff --git a/src/Mods/Catmod/events/nonRandom/bodypuristprotest.tw b/src/Mods/Catmod/events/nonRandom/bodypuristprotest.tw index 79fa83efae1..525d428b69a 100644 --- a/src/Mods/Catmod/events/nonRandom/bodypuristprotest.tw +++ b/src/Mods/Catmod/events/nonRandom/bodypuristprotest.tw @@ -24,7 +24,7 @@ One of the riot officers glances back at you, awaiting an order. This situation <span id="result"> <br> <<link "Order your troops to disperse the protest by force">> <<replace "#result">> - You don't have time for this shit. You tell the officer glancing at you to shut down these jumped-up hooligans without a second thought. With a nod, the officers press forward into the crowd in an organized fashion, to which they're met with instant pushback from the unarmed protestors. Someone throws a brick at the shieldwall which explodes into two parts with a loud smack, and then the entire situation erupts into chaotic, two-sided violence. As the officers start brawling with the protest crowd, trying to pindown fighting purists for arrest, you retreat back into your penthouse to watch the @@.red;blood flow in the streets.@@ This solution never fails, but the injuries and damages it'll cause are sure to be @@.red;expensive,@@ and riot scenes never look good in the media. + You don't have time for this shit. You tell the officer glancing at you to shut down these jumped-up hooligans without a second thought. With a nod, the officers press forward into the crowd in an organized fashion, to which they're met with instant pushback from the unarmed protestors. Someone throws a brick at the shieldwall which explodes into two parts with a loud smack, and then the entire situation erupts into chaotic, two-sided violence. As the officers start brawling with the protest crowd, trying to pin down fighting purists for arrest, you retreat back into your penthouse to watch the @@.red;blood flow in the streets.@@ This solution never fails, but the injuries and damages it'll cause are sure to be @@.red;expensive,@@ and riot scenes never look good in the media. <<run cashX(-2500, "violent fighting")>> <</replace>> <</link>> @@ -40,7 +40,7 @@ One of the riot officers glances back at you, awaiting an order. This situation <<if $PC.skill.warfare >= 80>> <br> <<link "Use your fearsome reputation to intimidate them into surrender">> <<replace "#result">> - You brush some concrete dust from the thrown brick off your shoulder. This isn't the first enemy you've stared down, and it sure as hell isn't the scariest. Even above the crackle of electrobatons and the shouting of the crowd, the entire protest group seems to hear when you ask them coldly if they've forgotten who you are. As the crowd watches, you rattle off battlefields and massacres, the names of armies you've shattered and towns you've burnt to ashes, casually point a finger at the blonde man with the megaphone, say his full name, and tell him that if he says another word you'll give his two daughters to your mercenaries as rape-toys, cut off his dick, and use him as a whipping board until he bleeds out after a few years of abuse. The unarmed crowd freezes up, seemingly just now becoming aware that while they're unarmed, the muscular, scarred-over guardsmen holding crackling electrobatons in front of them are most certainly not. You take the oppurtunity to remind them that the security cameras outside your penthouse has recorded every face in the crowd, and anyone who so much as raises a weapon in defense has their home, occupation, and family on file. No one moves a muscle. + You brush some concrete dust from the thrown brick off your shoulder. This isn't the first enemy you've stared down, and it sure as hell isn't the scariest. Even above the crackle of electrobatons and the shouting of the crowd, the entire protest group seems to hear when you ask them coldly if they've forgotten who you are. As the crowd watches, you rattle off battlefields and massacres, the names of armies you've shattered and towns you've burnt to ashes, casually point a finger at the blonde man with the megaphone, say his full name, and tell him that if he says another word you'll give his two daughters to your mercenaries as rape-toys, cut off his dick, and use him as a whipping board until he bleeds out after a few years of abuse. The unarmed crowd freezes up, seemingly just now becoming aware that while they're unarmed, the muscular, scarred-over guardsmen holding crackling electrobatons in front of them are most certainly not. You take the opportunity to remind them that the security cameras outside your penthouse has recorded every face in the crowd, and anyone who so much as raises a weapon in defense has their home, occupation, and family on file. No one moves a muscle. <br><br> You tell the frozen crowd that you'll be continuing your work on Project N, and that if any one of them ever shows up at your house again, let alone with a gun, it'll be the worst, and last, decision they ever make. A few people at the back start to break off from the crowd. You turn back to your penthouse and walk inside as the crowd disintegrates. You have work to do, and you get the feeling these people @@.green;aren't going to bother you again.@@ <<if $arcologies[0].FSBodyPurist != "unset">> @@ -57,7 +57,7 @@ One of the riot officers glances back at you, awaiting an order. This situation <<if $arcologies[0].FSEgyptianRevivalist != "unset">> <br> <<link "Calm the crowd through appealing to the Gods">> <<replace "#result">> - Even surrounded by violence held at bay only by a thin line of heavily-armed guards, you maintain the serene aura of a priest. Unperturbed, you turn and order one of the terrified slaves watching in the doorway to fetch <<if $projectN.status >= 5>>your designs<</if>><<if $projectN.status <= 6>>$subjectDeltaName<</if>>. "Have you forgotten the faces of the Gods, you sinners and fools? Beauty lies not simply in the perfection of the human form, but also in the life of our hands and the transcendence of our purity. Gaze upon my works and tell me you do not see within them the light of Bastet!" You chastise the furious crowd like they're children, and as the slave runs back out, <<if $projectN.status >= 5>>you snatch the designs from her hands and hold up an early technical document from Nieskowitz, showing a serene-looking catgirl in full pharonic attire, portrayed as an Egyptian deity<</if>><<if $projectN.status <= 6>>bringing $subjectDeltaName herself along. The poor, catgirl, still barely capable of human speech, looks absolutely terrified as the large crowd looks her up and down, but doesn't move. With her snow-like fur, she bears a striking resemblance to iconographic Egyptian Goddesses, and you gesture towards her with a dramatic hand<</if>>. "How dare you insult the purity of my designs!" You yell at the watching crowd, who seem to have grown quieter. "I have neither marred nor corrupted the human form, but instead brought another form of purity into being. Our dynastic ancestors could recognize this beauty, and you insult them with these blemishes and affronts!" Perhaps owing to the legitimate belief in Egyptian Revivalism across your arcology, the crowd seems genuinely shamed. People start to break off from the back of the crowd, and after a few minutes the furious cluster of rioters has @@.green;dispersed,@@ seemingly embarrassed that they'd attack feline icons considered holy by the ancient Egyptians. + Even surrounded by violence held at bay only by a thin line of heavily-armed guards, you maintain the serene aura of a priest. Unperturbed, you turn and order one of the terrified slaves watching in the doorway to fetch <<if $projectN.status >= 5>>your designs<</if>><<if $projectN.status <= 6>>$subjectDeltaName<</if>>. "Have you forgotten the faces of the Gods, you sinners and fools? Beauty lies not simply in the perfection of the human form, but also in the life of our hands and the transcendence of our purity. Gaze upon my works and tell me you do not see within them the light of Bastet!" You chastise the furious crowd like they're children, and as the slave runs back out, <<if $projectN.status >= 5>>you snatch the designs from her hands and hold up an early technical document from Nieskowitz, showing a serene-looking catgirl in full pharaonic attire, portrayed as an Egyptian deity<</if>><<if $projectN.status <= 6>>bringing $subjectDeltaName herself along. The poor catgirl, still barely capable of human speech, looks absolutely terrified as the large crowd looks her up and down, but doesn't move. With her snow-like fur, she bears a striking resemblance to iconographic Egyptian Goddesses, and you gesture towards her with a dramatic hand<</if>>. "How dare you insult the purity of my designs!" You yell at the watching crowd, who seem to have grown quieter. "I have neither marred nor corrupted the human form, but instead brought another form of purity into being. Our dynastic ancestors could recognize this beauty, and you insult them with these blemishes and affronts!" Perhaps owing to the legitimate belief in Egyptian Revivalism across your arcology, the crowd seems genuinely shamed. People start to break off from the back of the crowd, and after a few minutes the furious cluster of rioters has @@.green;dispersed,@@ seemingly embarrassed that they'd attack feline icons considered holy by the ancient Egyptians. <<if $arcologies[0].FSBodyPurist != "unset">> <<run repX(1000, "event")>> <<run $arcologies[0].prosperity += 3>> diff --git a/src/Mods/Catmod/events/nonRandom/projectNComplete.tw b/src/Mods/Catmod/events/nonRandom/projectNComplete.tw index ef15b25d856..ded6d1c6763 100644 --- a/src/Mods/Catmod/events/nonRandom/projectNComplete.tw +++ b/src/Mods/Catmod/events/nonRandom/projectNComplete.tw @@ -44,7 +44,7 @@ <<set _slave.canRecruit = 0>> <<set _slave.accent = 4>> -It's finally time. Nieskowitz greets you with a rare smile as you enter the genetics lab, showing you to the tube where $subjectDeltaName floats unconscious. Far from the blob of pinkish flesh she once was, $subjectDeltaName is now a fully-formed humanoid, covered in a layer of beautiful, snow-white fur and topped with twitching, pointed cat ears. You can hear the bustle of the media, journalists who somehow found out about $subjectDeltaName's near completition and are all but breaking down the lab's door trying to get a good look in. +It's finally time. Nieskowitz greets you with a rare smile as you enter the genetics lab, showing you to the tube where $subjectDeltaName floats unconscious. Far from the blob of pinkish flesh she once was, $subjectDeltaName is now a fully-formed humanoid, covered in a layer of beautiful, snow-white fur and topped with twitching, pointed cat ears. You can hear the bustle of the media, journalists who somehow found out about $subjectDeltaName's near completion and are all but breaking down the lab's door trying to get a good look in. <br><br> "Be aware that she won't have any instinctive knowledge of our language. Frankly, I don't know if she'll be capable of real human speech at all, honestly. This is a first for me, too. Try and keep her away from any cameras in her face, they're likely to frighten her. Anyway, I guess she's ready. Are you?" <br><br> @@ -72,7 +72,7 @@ It's finally time. Nieskowitz greets you with a rare smile as you enter the gene <</link>> <br> <<link "Let the media get a good look at $subjectDeltaName as you leave">> <<replace "#result">> - he watching scientists hold their breath as the green liquid drains from the tube, and $subjectDeltaName hits the glass wall with an unglamorous thud. As the tube comes up, you carefully catch the white catgirl, feeling the silk-like softness of her entire body as the young vat-grown girl opens her eyes for the first time. She blinks her big, catlike eyes a few times, and then meows at you loudly, probably the closest thing she can manage to a question. In response, you set her down on wobbly feet, take her by the hand, and lead her out the doors of the genelab to meet an absolute hail of journalists with cameras and bright flashing lights shoving microphones and recorders in both of your faces. As the terrified, nude catgirl recoils from the confusing sound and noise, you promptly push her forward, allowing the media to explore every last inch of her naked body while you answer questions. She's obviously @@.red;terrified@@ at the cameras in her face and crotch, not that the journalists seem to care, and although they get a @@.green;whole array of perfect footage@@ as you ignore $subjectDeltaName's loud, desperate meowing, you're forced to break off the imprompteau interview session early when $subjectDeltaName starts @@.gold;crying@@ as photos flash in her face. She's completely nonresponsive to your attempts to get her to stop bawling as the watching journalists awkwardly shuffle, and only stops sobbing loudly when you bring her away from the assembled crowd. As you lead $subjectDeltaName back to the penthouse, still sniffling and mrowling intermittently, she stares sullenly at you with big catlike eyes that only understand that you've @@.red;somehow betrayed her.@@ + he watching scientists hold their breath as the green liquid drains from the tube, and $subjectDeltaName hits the glass wall with an unglamorous thud. As the tube comes up, you carefully catch the white catgirl, feeling the silk-like softness of her entire body as the young vat-grown girl opens her eyes for the first time. She blinks her big, catlike eyes a few times, and then meows at you loudly, probably the closest thing she can manage to a question. In response, you set her down on wobbly feet, take her by the hand, and lead her out the doors of the genelab to meet an absolute hail of journalists with cameras and bright flashing lights shoving microphones and recorders in both of your faces. As the terrified, nude catgirl recoils from the confusing sound and noise, you promptly push her forward, allowing the media to explore every last inch of her naked body while you answer questions. She's obviously @@.red;terrified@@ at the cameras in her face and crotch, not that the journalists seem to care, and although they get a @@.green;whole array of perfect footage@@ as you ignore $subjectDeltaName's loud, desperate meowing, you're forced to break off the impromptu interview session early when $subjectDeltaName starts @@.gold;crying@@ as photos flash in her face. She's completely nonresponsive to your attempts to get her to stop bawling as the watching journalists awkwardly shuffle, and only stops sobbing loudly when you bring her away from the assembled crowd. As you lead $subjectDeltaName back to the penthouse, still sniffling and mrowling intermittently, she stares sullenly at you with big catlike eyes that only understand that you've @@.red;somehow betrayed her.@@ <<set $projectN.status = 6>> <<run repX(5000, "event")>> <<set _slave.prestige = 2>> diff --git a/src/Mods/Catmod/events/nonRandom/projectNSaboteur.tw b/src/Mods/Catmod/events/nonRandom/projectNSaboteur.tw index 3f6b3de6bea..86bb7e1c723 100644 --- a/src/Mods/Catmod/events/nonRandom/projectNSaboteur.tw +++ b/src/Mods/Catmod/events/nonRandom/projectNSaboteur.tw @@ -9,30 +9,30 @@ You're not going to be able to get down there in time yourself, but you'll need <br><br> <span id="result"> <<if $projectN.wellFunded == 1>> -<br> <<link "Activate the lab's integrated security">> - <<replace "#result">> - You briefly thank your lucky stars that you invested enough in project N to provide for integrated security, then call for the lab's drones to activate. Over the cameras, you smugly watch from your comfortable bed as the security drones tear two of the mysterious saboteurs to shreds, then pin down and apprehend the third. Seems like all they managed to get you today was a @@.green;brand new slave.@@ - <<run repX(1500, "event")>> - <<set _slave = GenerateNewSlave(null, {minAge: 16, maxAge: 32, disableDisability: 1})>> - <<run generateSalonModifications(_slave)>> - <<set _slave.origin = "$He is an enslaved Son of Sekhmet, one of many idealistic rebel groups violently opposed to you.">> - <<set _slave.devotion = random(-90,-70)>> - <<set _slave.trust = random(-20,30)>> - <<set _slave.weight = random(-20,30)>> - <<set _slave.muscles = random(20,80)>> - <<set _slave.waist = random(10,80)>> - <<includeDOM App.UI.newSlaveIntro(_slave)>> - <<set $projectN.status = 5>> - <</replace>> -<</link>> + <br> <<link "Activate the lab's integrated security">> + <<replace "#result">> + You briefly thank your lucky stars that you invested enough in project N to provide for integrated security, then call for the lab's drones to activate. Over the cameras, you smugly watch from your comfortable bed as the security drones tear two of the mysterious saboteurs to shreds, then pin down and apprehend the third. Seems like all they managed to get you today was a @@.green;brand new slave.@@ + <<run repX(1500, "event")>> + <<set _slave = GenerateNewSlave(null, {minAge: 16, maxAge: 32, disableDisability: 1})>> + <<run generateSalonModifications(_slave)>> + <<set _slave.origin = "$He is an enslaved Son of Sekhmet, one of many idealistic rebel groups violently opposed to you.">> + <<set _slave.devotion = random(-90,-70)>> + <<set _slave.trust = random(-20,30)>> + <<set _slave.weight = random(-20,30)>> + <<set _slave.muscles = random(20,80)>> + <<set _slave.waist = random(10,80)>> + <<includeDOM App.UI.newSlaveIntro(_slave)>> + <<set $projectN.status = 5>> + <</replace>> + <</link>> <</if>> <<if $mercenaries == 5>> -<br> <<link "Send for your $mercenariesTitle to bring in a rapid-response bomb defusal team">> - <<replace "#result">> - You immediately call for your $mercenariesTitle to send a bomb defusal team to the lab, and be ready to fight with the saboteurs on arrival. In the few minutes it takes for them to assemble a QRF and send it rocketing up to your laboratory, the saboteurs have already planted their bomb and vanished out the genelab's doors, disappearing into the dead of night. The mercenary team arrives shortly afterwards, bursts through the doors, and disables the ticking bomb with less than a minute left on the clock. Panting and sweating with nerves rather than fatigue, one of them flashes you a thumbs-up over the security cameras. Crisis narrowly averted. - <<set $projectN.status = 5>> - <</replace>> -<</link>> + <br> <<link "Send for your $mercenariesTitle to bring in a rapid-response bomb defusal team">> + <<replace "#result">> + You immediately call for your $mercenariesTitle to send a bomb defusal team to the lab, and be ready to fight with the saboteurs on arrival. In the few minutes it takes for them to assemble a QRF and send it rocketing up to your laboratory, the saboteurs have already planted their bomb and vanished out the genelab's doors, disappearing into the dead of night. The mercenary team arrives shortly afterwards, bursts through the doors, and disables the ticking bomb with less than a minute left on the clock. Panting and sweating with nerves rather than fatigue, one of them flashes you a thumbs-up over the security cameras. Crisis narrowly averted. + <<set $projectN.status = 5>> + <</replace>> + <</link>> <</if>> <br> <<link "Desperately try to make it to the lab yourself in time">> <<replace "#result">> diff --git a/src/Mods/Catmod/interaction/fPet.tw b/src/Mods/Catmod/interaction/fPet.tw index 9a013a9898b..4cdc3288775 100644 --- a/src/Mods/Catmod/interaction/fPet.tw +++ b/src/Mods/Catmod/interaction/fPet.tw @@ -39,7 +39,7 @@ The cat<<= $girl>> loudly purrs and eagerly rubs up against you, arching $his ba <<elseif (getSlave($AS).devotion > 50)>> -The cat<<= $girl>> presents $his back to you eagerly for petting, purring softly as you stroke your hand up and down $his soft fur. It's easy to let your hand practically get lost in the silky material, especially since the eager cat does all $he can to keep your hand runnng up and down $his spine in tender petting motions. When you finally retract your hand, <<= getSlave($AS).slaveName>> bats $his eyelashes at you, still purring a little. +The cat<<= $girl>> presents $his back to you eagerly for petting, purring softly as you stroke your hand up and down $his soft fur. It's easy to let your hand practically get lost in the silky material, especially since the eager cat does all $he can to keep your hand running up and down $his spine in tender petting motions. When you finally retract your hand, <<= getSlave($AS).slaveName>> bats $his eyelashes at you, still purring a little. <<if (!hasAnyArms(getSlave($AS))) && (!canTalk(getSlave($AS)))>> $His <<if canSee(getSlave($AS))>>eyes glimmer<<else>>expression stares<</if>> at you contentedly. <<elseif !canTalk(getSlave($AS))>> @@ -59,7 +59,7 @@ The cat<<= $girl>> puts up a little facade of resistance, but just about immedia <</if>> <<elseif (getSlave($AS).devotion < -20) && (getSlave($AS).trust >= 20)>> -$He glowers at you as you start to pet $him, clearly doing $his best to express nonverbal dissatifaction with you. Despite that, $he can't help but to shiver somewhat as you gingerly pet the fluffy cat, rumbling with a deep purr that betrays $his distaste for you. $He glares up at you the entire time, even as $he purrs, $his tail swishing about in the air as you pet the furry thing vigorously. When you finally retract your hand, $he acts like $he didn't enjoy it. +$He glowers at you as you start to pet $him, clearly doing $his best to express nonverbal dissatisfaction with you. Despite that, $he can't help but to shiver somewhat as you gingerly pet the fluffy cat, rumbling with a deep purr that betrays $his distaste for you. $He glares up at you the entire time, even as $he purrs, $his tail swishing about in the air as you pet the furry thing vigorously. When you finally retract your hand, $he acts like $he didn't enjoy it. <<if (!hasAnyArms(getSlave($AS))) && (!canTalk(getSlave($AS)))>> $His <<if canSee(getSlave($AS))>>eyes glower<<else>>expression glowers<</if>> at you. <<elseif !canTalk(getSlave($AS))>> @@ -89,13 +89,13 @@ $He flinches back when you raise your hand towards $him, expecting to be hit. Th <</if>> <<else>> -The cat<<= $girl>> puts up a little facade of resistance, but doesn't really fight back against your petting, giving you a full range of motion to pet and rub at $his silky fur. $He lets you pet along the full length of $his spine, rubbing under $his chin and exploring the curves of $his ass and breasts in a way that's, for once, entirely nonsexual. Despite $himself, $he can't help but to purr a little by the time you finally remove $his hands. +The cat<<= $girl>> puts up a little façade of resistance, but doesn't really fight back against your petting, giving you a full range of motion to pet and rub at $his silky fur. $He lets you pet along the full length of $his spine, rubbing under $his chin and exploring the curves of $his ass and breasts in a way that's, for once, entirely nonsexual. Despite $himself, $he can't help but to purr a little by the time you finally remove $his hands. <<if (!hasAnyArms(getSlave($AS))) && (!canTalk(getSlave($AS)))>> $His <<if canSee(getSlave($AS))>>eyes glint<<else>>expression stares<</if>> at you uncertainly. <<elseif !canTalk(getSlave($AS))>> $He makes a huffy mrowling noise. <<else>> - $He mrowls, "Thank<<s>>, I gues<<s>>..." + $He mrowls, "Thank<<s>>, I gue<<ss>>..." <</if>> <</if>> diff --git a/src/endWeek/saSocialEffects.js b/src/endWeek/saSocialEffects.js index 985a03ee87b..10401e8f720 100644 --- a/src/endWeek/saSocialEffects.js +++ b/src/endWeek/saSocialEffects.js @@ -63,7 +63,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) { } if (slave.fuckdoll > 0) { t.push(new SocialEffect("Supremacist", -2, "Superior race fuckdoll", - `Society <span class="red">strongly disapproves</span> of your owning $(addA${V.arcologies[0].FSSupremacistRace})} Fuckdoll.`)); + `Society <span class="red">strongly disapproves</span> of your owning ${addA(V.arcologies[0].FSSupremacistRace)} Fuckdoll.`)); } } else { t.push(new SocialEffect("Supremacist", 1, "Inferior race slave", diff --git a/src/facilities/farmyard/shows/saFarmyardShows.js b/src/facilities/farmyard/shows/saFarmyardShows.js index c001dc7cb4f..e264ddd7baf 100644 --- a/src/facilities/farmyard/shows/saFarmyardShows.js +++ b/src/facilities/farmyard/shows/saFarmyardShows.js @@ -38,7 +38,7 @@ App.Facilities.Farmyard.putOnShows = function(slave) { if (V.seeBestiality) { r.push(`Society <span class="reputation inc">approves</span> of the degradation you submit your ${arcology.FSSubjugationistRace} slaves to, and so ${he} earns you a bit more.`); } else { - r.push(`Fewer people want to go see a ${arcology.FSSubjugationistRace} slave put on a show, and so ${he} doesn't earn as much as ${he} otherwise could.`); + r.push(`Fewer people want to go see ${addA(arcology.FSSubjugationistRace)} slave put on a show, and so ${he} doesn't earn as much as ${he} otherwise could.`); } } else { r.push(`Society doesn't disapprove of ${him} not being ${arcology.FSSubjugationistRace}, but ${he} doesn't earn as much as ${he} would if ${he} was.`); diff --git a/src/npc/interaction/fSlaveSlaveVagConsummate.tw b/src/npc/interaction/fSlaveSlaveVagConsummate.tw index bbd23679f1f..b32688395e3 100644 --- a/src/npc/interaction/fSlaveSlaveVagConsummate.tw +++ b/src/npc/interaction/fSlaveSlaveVagConsummate.tw @@ -225,7 +225,7 @@ Next, you see to <<= getSlave($AS).slaveName>>. <<= getSlave($AS).slaveName>> is tied and placed on the bed with $his pussy defenseless and available, and then you tell the randy $slaverapistx.slaveName that it's all _hers2. The slave life has so affected $slaverapistx.slaveName that _he2 is quite eager to rape another slave, just for the perverted novelty of the act. $His high libido keeps $him going for a long time, bringing the helpless toy to one forced orgasm after another. By the end of the day <<= getSlave($AS).slaveName>> is lying on the bed, all worn out, $his cunt <<if $slaverapistx.dick > 0>>dripping with cum<<else>>overflowing with juices<</if>> to $his horror and resentment, while $slaverapistx.slaveName is sleeping next to $him in a state of obvious satiation and bliss. <<elseif (getSlave($AS).devotion <= 20) || ($slaverapistx.devotion <= 20)>> - You order <<= getSlave($AS).slaveName>> onto the couch and tell $slaverapistx.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 $slaverapistx.slaveName's looking a little more longingly at <<= getSlave($AS).slaveName>>. + You order <<= getSlave($AS).slaveName>> onto the couch and tell $slaverapistx.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 $slaverapistx.slaveName's <<if canSee($slaverapistx)>>looking a little more longingly at<<else>>acting a bit more softly with<</if>> <<= getSlave($AS).slaveName>>. <<elseif (getSlave($AS).devotion <= 50) || ($slaverapistx.devotion <= 50)>> You order <<= getSlave($AS).slaveName>> and $slaverapistx.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 $slaverapistx.slaveName's dick and dripping away with the contents of <<= getSlave($AS).slaveName>>'s cum-filled pussy. diff --git a/src/npc/interaction/fondleVagina.tw b/src/npc/interaction/fondleVagina.tw index 3d541e2fa2a..164cbd9da45 100644 --- a/src/npc/interaction/fondleVagina.tw +++ b/src/npc/interaction/fondleVagina.tw @@ -322,7 +322,7 @@ You call $him over so you can fondle $his <<if !hasAnyArms(getSlave($AS)) && !hasBothLegs(getSlave($AS))>> squirms uncomfortably a little <</if>> - as you continue to move your hand along $his pussy. $He moans as $he shudders in an orgasm, gripping tighter and shamefully looking at you as you stop moving your hand. + as you continue to move your hand along $his pussy. $He moans as $he shudders in an orgasm, gripping tighter and shamefully <<if canSee(getSlave($AS))>>looking at you<<else>>facing you<</if>> as you stop moving your hand. <</if>> <<elseif (getSlave($AS).fetish == "mindbroken")>> Like a doll, $he dumbly remains still, <<if canSee(getSlave($AS))>>watching your hands move towards $him<<else>>waiting<</if>> without any real interest. @@ -426,7 +426,7 @@ You call $him over so you can fondle $his <</if>> as your hand nears it. <</if>> - Soon $he shudders in an orgasm, <<if canSee(getSlave($AS))>>looking at you<<else>>facing<</if>> as you stop moving your hand. You leave your toy for one of your other slaves to clean and maintain. + Soon $he shudders in an orgasm, <<if canSee(getSlave($AS))>>looking at you<<else>>facing you<</if>> as you stop moving your hand. You leave your toy for one of your other slaves to clean and maintain. <<elseif (getSlave($AS).fetish == "submissive") && (getSlave($AS).fetishStrength > 60) && (getSlave($AS).fetishKnown == 1)>> $He comes submissively over, smiling a little submissive smile, and points $his pussy towards you<<if getSlave($AS).scrotum > 0>>, shifting $his balls out of the way and<</if>>. <<if (getSlave($AS).vagina != -1)>> diff --git a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw b/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw index 4b3669575a5..cd224946456 100644 --- a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw +++ b/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw @@ -535,7 +535,7 @@ You call $slaverapistx.slaveName into the room. <</if>> <</if>> <</if>> /* closes losing virginity */ - They fuck mechanically, gazing with roiling emotions into each others' eyes. They do seem to come to some sort of a nonverbal 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 $slaverapistx.slaveName's looking a little more longingly at <<= getSlave($AS).slaveName>>. + They fuck mechanically, gazing with roiling emotions into each others' eyes. They do seem to come to some sort of a nonverbal 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 $slaverapistx.slaveName's <<if canSee($slaverapistx)>>looking a little more longingly at<<else>>acting a bit more softly with<</if>> <<= getSlave($AS).slaveName>>. <<elseif (getSlave($AS).devotion <= 50) || ($slaverapistx.devotion <= 50)>> You order <<= getSlave($AS).slaveName>> and $slaverapistx.slaveName to get on with it. @@ -564,7 +564,7 @@ You call $slaverapistx.slaveName into the room. <</if>> <</if>> <</if>> /* closes losing virginity */ - 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 <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> and dripping away with the contents of $slaverapistx.slaveName's cum-filled pussy. You notice $slaverapistx.slaveName's looking a little more longingly at <<= getSlave($AS).slaveName>>. + 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 <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> and dripping away with the contents of $slaverapistx.slaveName's cum-filled pussy. You notice $slaverapistx.slaveName's <<if canSee($slaverapistx)>>looking a little more longingly at<<else>>acting a bit more softly with<</if>> <<= getSlave($AS).slaveName>>. <<else>> The two slaves turn eagerly to the business of sex. diff --git a/src/pregmod/FCTV/FCTV.js b/src/pregmod/FCTV/FCTV.js index 00ad0d70624..b0500438feb 100644 --- a/src/pregmod/FCTV/FCTV.js +++ b/src/pregmod/FCTV/FCTV.js @@ -390,7 +390,7 @@ globalThis.FctvDisplay = function() { if (availableEp > viewedCount) { // If we watched ep 0 last time, our view count will be 1. Now we can use 1 as our new ep, etc. epToShow = viewedCount; } else if (channel.loop === true) { - // How many times have we been through this series. Lets say we watched 10 episodes, but there are only 3 uniques [0,1,2]. + // How many times have we been through this series. Let's say we watched 10 episodes, but there are only 3 uniques [0,1,2]. const watchedEntireSeason = Math.trunc(viewedCount / availableEp); // we went through 3 times fully epToShow = viewedCount - (watchedEntireSeason * availableEp); // 10 - 3 seasons (9) is 1. So our last episode was the first, 0 in the array. And 1 is the next ep! } else { // We have seen all the episodes, return a random one diff --git a/src/pregmod/geneLab.tw b/src/pregmod/geneLab.tw index 644f729444b..4bfa67e3ec8 100644 --- a/src/pregmod/geneLab.tw +++ b/src/pregmod/geneLab.tw @@ -54,51 +54,51 @@ Genetic Modification <</if>> <</if>> <<if $seeCats == 1>> -<<if $geneticMappingUpgrade >=2 && $projectN.status == 0>> - [[Hire a team of renowned bioengineers and geneticists to splice the human genome with cat DNA and fulfill the destiny of mankind - creating catgirls|Gene Lab][cashX(forceNeg(150000*_PCSkillCheck), "capEx"), $projectN.status = 1]] - //Costs <<print cashFormat(150000*_PCSkillCheck)>>// - <br> //Will begin a long-term project to push the boundries of science and genetically engineer the world's first catgirl// - <br> - <</if>> - <<if $projectN.status == 1>> - You've started to get into contact with a number of renowned old-world biologists and genetic engineers to pursue the creation of a biological catgirl. They should be arriving soon. - <</if>> - <<if $projectN.status == 2>> - You've gathered together a team of some of the old world's foremost scientific minds in the fields of genetic engineering, who've turned your genelab into a workplace for what they've dubbed "Project N", or the "Cat Project". One white-bearded man looks up from a large computer screen showing a series of complicated genetic sequences as you enter. - <</if>> - <<if $projectN.status == 3>> - The geneticist team has started to make serious progress on project N. In a central tube filled with thick green liquid, a small mass of pinkish material floats in suspended animation, referred to by the biologists as "Subject Delta". A series of screens next to the tube read out low-functioning vitals and other essential information. - <</if>> - <<if $projectN.status == 4>> - The pinkish blob of flesh has become a small, hairless humanoid body with twitchy cat ears atop its head, unconsciously floating while suspended in the green tube. You've tenatively named the growing catgirl $subjectDeltaName, and she occasionally kicks around slightly in the tube, producing a little stream of floating bubbles. The Project N bioengineers carefully monitor her vitals at all times, aided by the lab's integrated AI. - <</if>> - <<if $projectN.status == 5>> - $subjectDeltaName looks like an almost fully grown catgirl now, complete with a thin but soft layer of pure white fur that puffs up in the thick green liquid of her tube. The Project N geneticists seem a little rattled after the attack by the Sons of Sekhmet, but they're more determined than ever to finish their job and ensure that subject Delta makes it out of this tube and into the real world, a possibility that looks closer day by day. - <</if>> - <<if $projectN.status == 6>> - Project N is complete. Dr. Nieskowitz and his team are currently monitoring various functions of the genetic laboratory, though you could set them to work engineering another catgirl if you give them the funding to do so. It will take approximately a month to create another catgirl. The genetic engineering tube is currently empty. - <br> - <</if>> - <<if $projectN.status == 6 && $seeCats == 1>> - [[Engineer me a Catgirl|Gene Lab][cashX(forceNeg(20000*_PCSkillCheck), "capEx"), $projectN.status = 7, $growingNewCat = 4]] - //Costs <<print cashFormat(20000*_PCSkillCheck)>>// - <br> - <</if>> - <<if $projectN.status == 6 && $seeCats == 1>> - [[Engineer me a Catboy|Gene Lab][cashX(forceNeg(20000*_PCSkillCheck), "capEx"), $projectN.status = 8, $growingNewCat = 4]] - //Costs <<print cashFormat(20000*_PCSkillCheck)>>// + <<if $geneticMappingUpgrade >=2 && $projectN.status == 0>> + [[Hire a team of renowned bioengineers and geneticists to splice the human genome with cat DNA and fulfill the destiny of mankind - creating catgirls|Gene Lab][cashX(forceNeg(150000*_PCSkillCheck), "capEx"), $projectN.status = 1]] + //Costs <<print cashFormat(150000*_PCSkillCheck)>>// + <br> //Will begin a long-term project to push the boundaries of science and genetically engineer the world's first catgirl// + <br> + <</if>> + <<if $projectN.status == 1>> + You've started to get into contact with a number of renowned old-world biologists and genetic engineers to pursue the creation of a biological catgirl. They should be arriving soon. + <</if>> + <<if $projectN.status == 2>> + You've gathered together a team of some of the old world's foremost scientific minds in the fields of genetic engineering, who've turned your genelab into a workplace for what they've dubbed "Project N", or the "Cat Project". One white-bearded man looks up from a large computer screen showing a series of complicated genetic sequences as you enter. + <</if>> + <<if $projectN.status == 3>> + The geneticist team has started to make serious progress on project N. In a central tube filled with thick green liquid, a small mass of pinkish material floats in suspended animation, referred to by the biologists as "Subject Delta". A series of screens next to the tube read out low-functioning vitals and other essential information. + <</if>> + <<if $projectN.status == 4>> + The pinkish blob of flesh has become a small, hairless humanoid body with twitchy cat ears atop its head, unconsciously floating while suspended in the green tube. You've tentatively named the growing catgirl $subjectDeltaName, and she occasionally kicks around slightly in the tube, producing a little stream of floating bubbles. The Project N bioengineers carefully monitor her vitals at all times, aided by the lab's integrated AI. + <</if>> + <<if $projectN.status == 5>> + $subjectDeltaName looks like an almost fully grown catgirl now, complete with a thin but soft layer of pure white fur that puffs up in the thick green liquid of her tube. The Project N geneticists seem a little rattled after the attack by the Sons of Sekhmet, but they're more determined than ever to finish their job and ensure that subject Delta makes it out of this tube and into the real world, a possibility that looks closer day by day. + <</if>> + <<if $projectN.status == 6>> + Project N is complete. Dr. Nieskowitz and his team are currently monitoring various functions of the genetic laboratory, though you could set them to work engineering another catgirl if you give them the funding to do so. It will take approximately a month to create another catgirl. The genetic engineering tube is currently empty. <br> + <</if>> + <<if $projectN.status == 6 && $seeCats == 1>> + [[Engineer me a Catgirl|Gene Lab][cashX(forceNeg(20000*_PCSkillCheck), "capEx"), $projectN.status = 7, $growingNewCat = 4]] + //Costs <<print cashFormat(20000*_PCSkillCheck)>>// + <br> + <</if>> + <<if $projectN.status == 6 && $seeCats == 1>> + [[Engineer me a Catboy|Gene Lab][cashX(forceNeg(20000*_PCSkillCheck), "capEx"), $projectN.status = 8, $growingNewCat = 4]] + //Costs <<print cashFormat(20000*_PCSkillCheck)>>// + <br> + <</if>> + <<if $projectN.status == 7>> + Dr. Nieskowitz and his team are currently hard at working growing you another catgirl, who rapidly develops in the central tube of thick green liquid you once used to create $subjectDeltaName. Nieskowitz assures you that he'll have your new catgirl finished <<if $growingNewCat >= 2>>in $growingNewCat weeks.<</if>><<if $growingNewCat <= 1>>by next week.<</if>> + <</if>> + <<if $projectN.status == 8>> + Dr. Nieskowitz and his team are currently hard at working growing you another catboy, who rapidly develops in the central tube of thick green liquid you once used to create $subjectDeltaName. Nieskowitz assures you that he'll have your new catboy finished <<if $growingNewCat >= 2>>in $growingNewCat weeks.<</if>><<if $growingNewCat <= 1>>by next week.<</if>> + <</if>> + <<if $projectN.status == 9>> + The bomb set by the Sons of Sekhmet destroyed large parts of the genelab and killed most of the personnel, including $subjectDeltaName's tube. After the death of Doctor Nieskowitz, you haven't just lost $subjectDeltaName herself, but also the knowledge used to create her. It's doubtful that there's anyone left in the world who can finish what he started. + <</if>> <</if>> - <<if $projectN.status == 7>> - Dr. Nieskowitz and his team are currently hard at working growing you another catgirl, who rapidly develops in the central tube of thick green liquid you once used to create $subjectDeltaName. Nieskowitz assures you that he'll have your new catgirl finished <<if $growingNewCat >= 2>>in $growingNewCat weeks.<</if>><<if $growingNewCat <= 1>>by next week.<</if>> - <</if>> - <<if $projectN.status == 8>> - Dr. Nieskowitz and his team are currently hard at working growing you another catboy, who rapidly develops in the central tube of thick green liquid you once used to create $subjectDeltaName. Nieskowitz assures you that he'll have your new catboy finished <<if $growingNewCat >= 2>>in $growingNewCat weeks.<</if>><<if $growingNewCat <= 1>>by next week.<</if>> - <</if>> - <<if $projectN.status == 9>> - The bomb set by the Sons of Sekhmet destroyed large parts of the genelab and killed most of the personnel, including $subjectDeltaName's tube. After the death of Doctor Nieskowitz, you haven't just lost $subjectDeltaName herself, but also the knowledge used to create her. It's doubtful that there's anyone left in the world who can finish what he started. - <</if>> -<</if>> <</if>> <br><br> diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index dc7ae13b84a..3fb705ca53f 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -47,15 +47,15 @@ <<set $events.push("RE former abolitionist")>> <</if>> <<if $seeCats != 0>> - <<if ($projectN.status > 4)>> - <<set $events.push("RE sos assassin")>> - <</if>> - <<if ($projectN.status > 4)>> - <<set $events.push("RE sos sniper")>> - <</if>> - <<if ($projectN.status > 4)>> - <<set $events.push("RE sos bombing")>> - <</if>> + <<if ($projectN.status > 4)>> + <<set $events.push("RE sos assassin")>> + <</if>> + <<if ($projectN.status > 4)>> + <<set $events.push("RE sos sniper")>> + <</if>> + <<if ($projectN.status > 4)>> + <<set $events.push("RE sos bombing")>> + <</if>> <</if>> /* Hyperpreg Inventor Events; 1 = event 1 funding chosen; 2 = event 2 funding chosen;*/ -- GitLab From dd5bd60a0209d9ecba0e3bbb9d5d710750ae4968 Mon Sep 17 00:00:00 2001 From: klorpa <30924131+klorpa@users.noreply.github.com> Date: Sun, 9 May 2021 11:51:23 -0500 Subject: [PATCH 05/91] FixThat2 --- src/events/assistant/assistantFS.js | 4 ++-- src/js/vignettes.js | 2 +- src/npc/interaction/fFeelings.js | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/events/assistant/assistantFS.js b/src/events/assistant/assistantFS.js index 1fac3b7d5c4..b083be8bc31 100644 --- a/src/events/assistant/assistantFS.js +++ b/src/events/assistant/assistantFS.js @@ -1161,7 +1161,7 @@ App.Events.assistantFS = class assistantFS extends App.Events.BaseEvent { } else if (V.arcologies[0].FSRomanRevivalist !== "unset") { r.push(`adjusts ${hisA} outfit to resemble a proper upper-class Roman lady to conform with your vision of building a new Rome.`); } else if (V.arcologies[0].FSNeoImperialist !== "unset") { - r.push(`adjusts ${hisA} outfit to resemble a high-tech woman bearing your crest to conform with your vision of a new Imperial society.`); + r.push(`adjusts ${hisA} outfit to resemble a high-tech ${womanA} bearing your crest to conform with your vision of a new Imperial society.`); } else if (V.arcologies[0].FSAztecRevivalist !== "unset") { r.push(`adjusts ${hisA} outfit to resemble a high standing Aztec priestess to conform with your vision of building a new Aztec Empire.`); } else if (V.arcologies[0].FSEgyptianRevivalist !== "unset") { @@ -1175,7 +1175,7 @@ App.Events.assistantFS = class assistantFS extends App.Events.BaseEvent { } else if (V.arcologies[0].FSSupremacist !== "unset") { r.push(`adjusts ${hisA} appearance to resemble a model ${V.arcologies[0].FSSupremacistRace} student to conform with your vision of glorifying the superior race.`); } else if (V.arcologies[0].FSSubjugationist !== "unset") { - r.push(`adjusts ${hisA} appearance to resemble ${addA(V.arcologies[0].FSSubjugationistRace)} foreign exchange student to conform with your vision of subjugating the inferior race.`); + r.push(`adjusts ${hisA} appearance to resemble ${addA(V.arcologies[0].FSSubjugationistRace)} foreign exchange student to conform with your vision of subjugating the inferior race.`); } } diff --git a/src/js/vignettes.js b/src/js/vignettes.js index aa60dbced6a..61a1a6d8e2c 100644 --- a/src/js/vignettes.js +++ b/src/js/vignettes.js @@ -3447,7 +3447,7 @@ globalThis.GetVignette = function(slave) { if (V.arcologies[0].FSSubjugationist !== "unset") { if (slave.race === V.arcologies[0].FSSubjugationistRace) { vignettes.push({ - text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about ${addA(V.arcologies[0].FSSubjugationistRace)} prostitute's health or well-being,`, + text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about ${addA(V.arcologies[0].FSSubjugationistRace)} prostitute's health or well-being,`, type: "health", effect: -1, }); diff --git a/src/npc/interaction/fFeelings.js b/src/npc/interaction/fFeelings.js index abbcdf16587..cf031998e17 100644 --- a/src/npc/interaction/fFeelings.js +++ b/src/npc/interaction/fFeelings.js @@ -1724,11 +1724,11 @@ App.Interact.feelings = function(slave) { r.push(Spoken(slave, `I — I'm fucking my father,"`)); r.push(`${he} bursts out, blushing even harder.`); r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} knows so much about penetration, I can't stop.`)); - } else if (_partner.mother === V.AS) { + } else if (_partner.mother === slave.ID) { r.push(Spoken(slave, `I — I'm fucking my ${daughter2},"`)); r.push(`${he} bursts out, blushing even harder.`); r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} has such a hot little body, I can't stop.`)); - } else if (_partner.father === V.AS) { + } else if (_partner.father === slave.ID) { r.push(Spoken(slave, `I — I'm fucking my ${daughter2},"`)); r.push(`${he} bursts out, blushing even harder.`); r.push(Spoken(slave, `"It's so fucking wrong, but ${he2} has such a hot little body. ${He2} looks so much like ${his2} mother, I can't stop.`)); @@ -2031,7 +2031,7 @@ App.Interact.feelings = function(slave) { } if (V.arcologies[0].FSSubjugationist >= 10) { if (slave.race === V.arcologies[0].FSSubjugationistRace) { - r.push(Spoken(slave, `I know that as a ${addA(V.arcologies[0].FSSubjugationistRace)} slave, it's my proper place to serve.`)); + r.push(Spoken(slave, `I know that as ${addA(V.arcologies[0].FSSubjugationistRace)} slave, it's my proper place to serve.`)); } else { r.push(Spoken(slave, `since I'm not ${addA(V.arcologies[0].FSSubjugationistRace)} slave, I'm a little afraid I don't fit into your vision of the future.`)); } @@ -2094,9 +2094,9 @@ App.Interact.feelings = function(slave) { } // closes FS if (slave.devotion > 75) { - if (slave.tankBaby > 0|| slave.mother === -1 || (areSisters(slave, V.PC) && slave.actualAge <= V.PC.actualAge)) { + if (slave.tankBaby > 0 || isParentP(slave, V.PC) || (areSisters(slave, V.PC) && slave.actualAge <= V.PC.actualAge)) { r.push(Spoken(slave, `I've known you my whole life, ${Master}, I can't really think of any times you weren't there for me.`)); - } else if ((areSisters(slave, V.PC) && slave.actualAge > V.PC.actualAge) || V.PC.mother === V.AS || V.PC.father === V.AS) { + } else if ((areSisters(slave, V.PC) && slave.actualAge > V.PC.actualAge) || isParentP(V.PC, slave)) { r.push(Spoken(slave, `You're my dear ${Master}. I've known you since you were born, and I will always be watching out for you, no matter what.`)); } else if (slave.weekAcquired === 0 && V.week > 104) { r.push(Spoken(slave, `I feel like I've known you my whole life, ${Master}, and I would follow you to the end of the earth.`)); -- GitLab From 238b991491960a4b5d87d25df9aefd2578d75d95 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Mon, 24 May 2021 22:58:05 -0400 Subject: [PATCH 06/91] Clinic initial DOMification --- src/005-passages/facilitiesPassages.js | 2 + src/facilities/clinic/clinic.js | 344 +++++++++++++++++++++++++ src/uncategorized/clinic.tw | 219 ---------------- 3 files changed, 346 insertions(+), 219 deletions(-) create mode 100644 src/facilities/clinic/clinic.js delete mode 100644 src/uncategorized/clinic.tw diff --git a/src/005-passages/facilitiesPassages.js b/src/005-passages/facilitiesPassages.js index 96780671218..b1b1d633e4e 100644 --- a/src/005-passages/facilitiesPassages.js +++ b/src/005-passages/facilitiesPassages.js @@ -1,4 +1,6 @@ /* ### Standard Facilities ### */ +new App.DomPassage("Clinic", () => { return App.Facilities.Clinic.clinic(); }, ["jump-to-safe", "jump-from-safe"]); + new App.DomPassage("Farmyard", () => { return App.Facilities.Farmyard.farmyard(); }, ["jump-to-safe", "jump-from-safe"]); new App.DomPassage("Incubator", () => { return App.UI.incubator(); }, ["jump-to-safe", "jump-from-safe"]); diff --git a/src/facilities/clinic/clinic.js b/src/facilities/clinic/clinic.js new file mode 100644 index 00000000000..9b81e9cb43a --- /dev/null +++ b/src/facilities/clinic/clinic.js @@ -0,0 +1,344 @@ +App.Facilities.Clinic.clinic = function() { + const frag = new DocumentFragment(); + + const introDiv = App.UI.DOM.makeElement("div", null, ['clinic-intro']); + const expandDiv = App.UI.DOM.makeElement("div", null, ['clinic-expand']); + const upgradesDiv = App.UI.DOM.makeElement("div", null, ['clinic-upgrades']); + const rulesDiv = App.UI.DOM.makeElement("div", null, ['clinic-rules']); + const slavesDiv = App.UI.DOM.makeElement("div", null, ['clinic-slaves']); + const renameDiv = App.UI.DOM.makeElement("div", null, ['clinic-rename']); + + let clinicNameCaps = capFirstChar(V.clinicName); + + const count = App.Entity.facilities.clinic.employeesIDs().size; + + V.nextButton = "Back to Main"; + V.nextLink = "Main"; + V.returnTo = "Clinic"; + V.encyclopedia = "Clinic"; + + frag.append( + intro(), + expand(), + upgrades(), + rules(), + slaves(), + rename(), + ); + + return frag; + + function intro() { + const text = []; + + text.push(clinicNameCaps); + + switch (V.clinicDecoration) { + case "Roman Revivalist": + text.push(`is open and airy; a breeze wafts through the space, and Roman theories on natural cleanliness are very much on display.`); + break; + case "Neo-Imperialist": + text.push(`is white and sterile, filled with so many high-tech machines that you cannot discern the purpose of them all. The space reminds you of a laboratory, kept painstakingly clean at all time by small robotic drones.`); + break; + case "Aztec Revivalist": + text.push(`is open and airy; a light hint of herbs and natural oil permeates the air. Everything is incredibly sterile, especially the blood management equipment.`); + break; + case "Egyptian Revivalist": + text.push(`is open and airy; clean rushes are strewn across the floor, making a gentle susurration when anyone crosses the space.`); + break; + case "Edo Revivalist": + text.push(`is clean and spartan to the point of featurelessness. Spotless tatami mats cover the floor, and partitions divide the space into cubicles.`); + break; + case "Arabian Revivalist": + text.push(`is open and airy; a thin trail of smoke wafts through the space on a gentle breeze, coming from a brazier burning incense.`); + break; + case "Chinese Revivalist": + text.push(`is open and airy; a thin trail of smoke wafts through the space on a gentle breeze, coming from a brazier burning medicinal herbs.`); + break; + case "Chattel Religionist": + text.push(`is open and airy; shaded beams of sunlight shine through skylights to bathe each bed in a pool of healing warmth.`); + break; + case "Degradationist": + text.push(`is clean and cold, all scrubbed tile and cool steel. The beds have prominent restraint attachment points to force patients into any position desired.`); + break; + case "Repopulationist": + text.push(`is warm and inviting, with wide corridors and ample seating for its pregnant clientèle. All the equipment is designed to accommodate heavily pregnant women.`); + break; + case "Eugenics": + text.push(`is warm and inviting on one side, cold and utilitarian on the other. Only the toys of the elite are allowed the best of care.`); + break; + case "Asset Expansionist": + text.push(`is utilitarian, without any concession to style. Every available ${V.showInches === 2 ? `inch` : `centimeter`} of space is used for equipment specialized to support growth.`); + break; + case "Transformation Fetishist": + text.push(`is utilitarian, without any concession to style. Every available <<if $showInches == 2>>inch<<else>>centimeter<</if>> of space is used for equipment specialized to support radical surgery.`); + break; + case "Gender Radicalist": + text.push(`is comfortable and feminine. Its curving walls and soft colors are designed to present slaves coming out of anesthesia with an impression of girlishness.`); + break; + case "Gender Fundamentalist": + text.push(`is comfortable and feminine. Its curving walls and soft colors are designed to keep slaves here for their female health nice and comfortable.`); + break; + case "Physical Idealist": + text.push(`is utilitarian, without any concession to style. Every available ${V.showInches === 2 ? `inch` : `centimeter`} of space is used for some piece of equipment useful in making the human body faster or stronger.`); + break; + case "Supremacist": + case "Subjugationist": + text.push(`is clean and cold, all scrubbed tile and cool steel. The only hint of its radical uses are the pseudoscientific racialist charts on the walls.`); + break; + case "Paternalist": + text.push(`is warm and inviting, with curved walls and warm colors designed to put patients at their ease. Each bed is well provided with entertainment options.`); + break; + case "Pastoralist": + text.push(`is utilitarian, without any concession to style. Every available ${V.showInches === 2 ? `inch` : `centimeter`} of space is used for equipment specialized for human veterinary medicine.`); + break; + case "Maturity Preferentialist": + text.push(`is comfortable and soothing, with curved walls and cool colors designed to keep patients relaxed. Each bed is provided with refined yet invariably pornographic entertainment options.`); + break; + case "Youth Preferentialist": + text.push(`is bright and cheerful, with curved walls and pastel colors designed to keep patients in good spirits. Each bed is provided with light entertainment options.`); + break; + case "Body Purist": + text.push(`is utilitarian, without any concession to style. Every available ${V.showInches === 2 ? `inch` : `centimeter`} of space is filled with equipment designed to make medicine as low-impact as possible.`); + break; + case "Slimness Enthusiast": + text.push(`is warm and inviting, with curved walls and warm colors designed to put patients at their ease. Each bed is well provided with entertainment options.`); + break; + case "Hedonistic": + text.push(`is warm and comfortable, with extra wide, soft, heated beds and ample morphine. Pleasant smells are pumped into the recovery wards, plenty of entertainment is available and chubby nurse in a too small dress with a big bowl of slave food is only a button press away. It can be quite difficult to convince patients to leave.`); + break; + case "Intellectual Dependency": + text.push(`is bright and cheerful, with plenty of simple amusements to keep bimbos distracted and in bed. A complex locking mechanism promises no chance of a slave wandering off to slake their lust.`); + break; + case "Slave Professionalism": + text.push(`is clean and cold, all scrubbed tile and cool steel. Any delays in recovery are nothing more than time spent not honing one's talents.`); + break; + case "Petite Admiration": + text.push(`is open and airy due to all the extra space freed up by shortening the beds. A footrest is the only accommodation made for tall slaves.`); + break; + case "Statuesque Glorification": + text.push(`is warm and comfortable, if a little cramped; tall slaves require long beds, after all. A meager footstool is the only accommodation made for short slaves.`); + break; + default: + text.push(`is a well-equipped modern medical facility. Each patient has their own area, with heavy automation to provide them treatment without any human intervention at all.`); + break; + } + + if (count > 2) { + text.push(`${clinicNameCaps} is busy. Patients occupy many of the beds; most are alert, but a few are dozing under medication designed to promote healing through deep rest.`); + } else if (count > 0) { + text.push(`${clinicNameCaps} is sparsely populated. Patients occupy a few of the beds; most are alert, but a few are dozing under medication designed to promote healing through deep rest.`); + } else if (S.Nurse) { + text.push(`${S.Nurse.slaveName} is alone in the clinic, and has nothing to do but keep the place spotlessly clean and ready for its next patients.`); + } else { + text.push(`${clinicNameCaps} is empty and quiet.`); + } + + App.UI.DOM.appendNewElement("div", introDiv, text.join(' '), ['scene-intro']); + + if (count === 0 && !S.Nurse) { + introDiv.append(App.UI.DOM.makeElement("div", App.UI.DOM.passageLink(`Decommission ${V.clinicName}`, "Main", () => { + V.clinic = 0; + V.clinicDecoration = "standard"; + V.clinicUpgradeScanner = 0; + V.clinicUpgradeFilters = 0; + V.clinicUpgradePurge = 0; + V.clinicInflateBelly = 0; + V.clinicSpeedGestation = 0; + }), ['indent'])); + } + + return introDiv; + } + + function expand() { + const cost = V.clinic * 1000 * V.upgradeMultiplierArcology; + + expandDiv.append(`${clinicNameCaps} has room to support ${V.clinic} slaves while they receive treatment. There ${count === 1 ? `is currently ${num(count)} slave` : `are currently ${num(count)} slaves`} receiving treatment in ${V.clinicName}.`); + + App.UI.DOM.appendNewElement("div", expandDiv, App.UI.DOM.link(`Expand ${V.clinicName}`, () => { + cashX(forceNeg(cost), "capEx"); + V.clinic += 5; + V.PC.skill.engineering += .1; + + refresh(); + }, [], '', `Costs ${cashFormat(cost)} and increases the capacity of ${V.clinicName} by 5.`), ['indent']); + + if (count > 0) { + expandDiv.append(removeFacilityWorkers("clinic", "rest", "rest")); + } + + return expandDiv; + } + + function upgrades() { + if (V.clinicUpgradeScanner) { + App.UI.DOM.appendNewElement("div", upgradesDiv, `${clinicNameCaps}'s scanners have been upgraded with a sampling system that can estimate carcinogenic damage to a slave's body.`); + } else { + const cost = Math.trunc(10000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier)); + + upgradesDiv.append(`It mounts powerful medical scanning technology.`); + + App.UI.DOM.appendNewElement("div", upgradesDiv, App.UI.DOM.link(`Upgrade the scanners to help detect genomic damage`, () => { + cashX(forceNeg(cost), "capEx"); + V.clinicUpgradeScanner = 1; + V.PC.skill.hacking += 0.1; + + refresh(); + }, [], '', `Costs ${cashFormat(cost)} and increases the effectiveness of ${V.clinicName}.`), ['indent']); + } + + if (V.clinicUpgradeFilters) { + if (V.clinicUpgradePurge > 0) { + upgradesDiv.append(`The entire floor beneath ${V.clinicName} is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities.`); + + if (V.clinicUpgradePurge > 1) { + upgradesDiv.append(`Microscopic magnets have been added to better facilitate the leeching of impurities from cells.`); + } + + upgradesDiv.append(`The blood is intensely cleaned to greatly decrease the presence of impurities at the cost of compatibility. Patients will likely be ill for the duration of the treatment.`); + } + + const cost = Math.trunc(150000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier)); + + if (V.clinicUpgradePurge === 0) { + upgradesDiv.append(`The entire floor beneath ${V.clinicName} is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities.`); + + App.UI.DOM.appendNewElement("div", upgradesDiv, App.UI.DOM.link(`Increase the effectiveness of the impurity purging`, () => { + cashX(forceNeg(cost), "capEx"); + V.clinicUpgradePurge = 1; + V.PC.skill.hacking += 0.1; + }, + [], '', `Costs ${cashFormat(cost)} and may cause health problems in slaves.`)); + } else if (V.clinicUpgradePurge === 1) { + App.UI.DOM.appendNewElement("div", upgradesDiv, App.UI.DOM.link(`Further increase the effectiveness of the impurity purging by utilizing nano magnets`, () => { + cashX(forceNeg(cost * 2), "capEx"); + V.clinicUpgradePurge = 3; // FIXME: why is this 3? + V.PC.skill.hacking += 0.1; + }, + [], '', `Costs ${cashFormat(cost * 2)}.`)); + } + if (!S.Nurse) { + upgradesDiv.append(`However, without a nurse in attendance, the <span class="yellow">blood treatment equipment remains idle.</span>`); + } + } else { + const cost = Math.trunc(50000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier)); + + upgradesDiv.append(`It includes standard dialysis equipment.`); + + App.UI.DOM.appendNewElement("div", upgradesDiv, App.UI.DOM.link(`Install advanced blood treatment equipment to help address drug side effects`, () => { + cashX(forceNeg(cost), "capEx"); + V.clinicUpgradeFilters = 1; + V.PC.skill.hacking += 0.1; + }, + [], '', `Costs ${cashFormat(cost)}.`), ['indent']); + } + + return upgradesDiv; + } + + function rules() { + const implantsDiv = App.UI.DOM.makeElement("div", null, ['clinic-implants']); + const observationDiv = App.UI.DOM.makeElement("div", null, ['clinic-observation']); + const gestationDiv = App.UI.DOM.makeElement("div", null, ['clinic-gestation']); + + rulesDiv.append( + implants(), + observation(), + gestation(), + ); + + return rulesDiv; + + function implants() { + if (V.bellyImplants) { + if (!S.Nurse) { + implantsDiv.append(`A resident nurse could be used to safely regulate the rate a slave's fillable belly implant for maximum size with minimum health loss.`); + } else { + const options = new App.UI.OptionsGroup(); + + if (V.clinicInflateBelly) { + implantsDiv.append(`${clinicNameCaps} is useful for keeping slaves healthy during long term procedures. Slaves in ${V.clinicName} with inflatable belly implants will be filled during their time under ${S.Nurse.slaveName}'s supervision to maximize growth with minimized health complications.`); + } else { + implantsDiv.append(`${clinicNameCaps} is useful for keeping slaves healthy during long term procedures. ${S.Nurse.slaveName} can supervise weekly filling regimens for clinic slaves with fillable belly implants during their stay to maximize growth with minimal health complications.`); + } + + options.addOption(``, "clinicInflateBelly") + .addValue(`Fill belly implants`, 1) + .addValue(`Do not fill belly implants`, 0); + + App.UI.DOM.appendNewElement("div", implantsDiv, options.render(), ['indent']); + } + } + + return implantsDiv; + } + + function observation() { + if (V.seePreg) { + const options = new App.UI.OptionsGroup(); + + if (V.clinicObservePregnancy) { + observationDiv.append(`Patients undergoing a high-risk pregnancy or are close to giving birth will be kept under observation.`); + } else { + observationDiv.append(`Pregnant patients will not be kept under observation.`); + } + + options.addOption(``, "clinicObservePregnancy") + .addValue(`Keep high-risk pregnancies under observation`, 1) + .addValue(`Stop observing pregnancies`, 0); + + App.UI.DOM.appendNewElement("div", observationDiv, options.render(), ['indent']); + } + + return observationDiv; + } + + function gestation() { + if (!S.Nurse) { + gestationDiv.append(`A resident nurse could be used to supervise patients under rapid gestation agents while minimizing strain and health complications.`); + } else { + const options = new App.UI.OptionsGroup(); + + if (V.clinicSpeedGestation) { + gestationDiv.append(`It's exceedingly dangerous to speed up gestation without constant supervision. In ${V.clinicName}, ${S.Nurse.slaveName} will monitor slaves on rapid gestation agents; making sure the growing patients' food demands are met, monitoring their skin and womb and, if need be, perform an emergency c-section should the need arise.`); + } else { + gestationDiv.append(`${clinicNameCaps} is currently not applying rapid gestation agents to pregnant patients. Only individually selected slaves will undergo this procedure.`); + } + + options.addOption(``, "clinicSpeedGestation") + .addValue(`Limit rapid gestation agents to selected slaves only`, 1) + .addValue(`Speed up gestation for all pregnant patients`, 0); + + App.UI.DOM.appendNewElement("div", gestationDiv, options.render(), ['indent']); + } + + return gestationDiv; + } + } + + function slaves() { + slavesDiv.append(App.UI.SlaveList.stdFacilityPage(App.Entity.facilities.clinic, true)); + + return slavesDiv; + } + + function rename() { + renameDiv.append(App.Facilities.rename(App.Entity.facilities.clinic, () => { + clinicNameCaps = capFirstChar(V.clinicName); + + refresh(); + })); + + return renameDiv; + } + + function refresh() { + App.UI.DOM.replace(introDiv, intro); + App.UI.DOM.replace(expandDiv, expand); + App.UI.DOM.replace(upgradesDiv, upgrades); + App.UI.DOM.replace(rulesDiv, rules); + App.UI.DOM.replace(slavesDiv, slaves); + App.UI.DOM.replace(renameDiv, rename); + } +}; diff --git a/src/uncategorized/clinic.tw b/src/uncategorized/clinic.tw deleted file mode 100644 index fe1a4a83dcb..00000000000 --- a/src/uncategorized/clinic.tw +++ /dev/null @@ -1,219 +0,0 @@ -:: Clinic [nobr jump-to-safe jump-from-safe] - -<<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Clinic", $encyclopedia = "Clinic", _CL = App.Entity.facilities.clinic.employeesIDs().size>> - -<p class="scene-intro"> - <<set _clinicNameCaps = capFirstChar($clinicName)>> - _clinicNameCaps - <<switch $clinicDecoration>> - <<case "Roman Revivalist">> - is open and airy; a breeze wafts through the space, and Roman theories on natural cleanliness are very much on display. - <<case "Neo-Imperialist">> - is white and sterile, filled with so many high-tech machines that you cannot discern the purpose of them all. The space reminds you of a laboratory, kept painstakingly clean at all time by small robotic drones. - <<case "Aztec Revivalist">> - is open and airy; a light hint of herbs and natural oil permeates the air. Everything is incredibly sterile, especially the blood management equipment. - <<case "Egyptian Revivalist">> - is open and airy; clean rushes are strewn across the floor, making a gentle susurration when anyone crosses the space. - <<case "Edo Revivalist">> - is clean and spartan to the point of featurelessness. Spotless tatami mats cover the floor, and partitions divide the space into cubicles. - <<case "Arabian Revivalist">> - is open and airy; a thin trail of smoke wafts through the space on a gentle breeze, coming from a brazier burning incense. - <<case "Chinese Revivalist">> - is open and airy; a thin trail of smoke wafts through the space on a gentle breeze, coming from a brazier burning medicinal herbs. - <<case "Chattel Religionist">> - is open and airy; shaded beams of sunlight shine through skylights to bathe each bed in a pool of healing warmth. - <<case "Degradationist">> - is clean and cold, all scrubbed tile and cool steel. The beds have prominent restraint attachment points to force patients into any position desired. - <<case "Repopulationist">> - is warm and inviting, with wide corridors and ample seating for its pregnant clientèle. All the equipment is designed to accommodate heavily pregnant women. - <<case "Eugenics">> - is warm and inviting on one side, cold and utilitarian on the other. Only the toys of the elite are allowed the best of care. - <<case "Asset Expansionist">> - is utilitarian, without any concession to style. Every available <<if $showInches == 2>>inch<<else>>centimeter<</if>> of space is used for equipment specialized to support growth. - <<case "Transformation Fetishist">> - is utilitarian, without any concession to style. Every available <<if $showInches == 2>>inch<<else>>centimeter<</if>> of space is used for equipment specialized to support radical surgery. - <<case "Gender Radicalist">> - is comfortable and feminine. Its curving walls and soft colors are designed to present slaves coming out of anesthesia with an impression of girlishness. - <<case "Gender Fundamentalist">> - is comfortable and feminine. Its curving walls and soft colors are designed to keep slaves here for their female health nice and comfortable. - <<case "Physical Idealist">> - is utilitarian, without any concession to style. Every available <<if $showInches == 2>>inch<<else>>centimeter<</if>> of space is used for some piece of equipment useful in making the human body faster or stronger. - <<case "Supremacist">> - is clean and cold, all scrubbed tile and cool steel. The only hint of its radical uses are the pseudoscientific racialist charts on the walls. - <<case "Subjugationist">> - is clean and cold, all scrubbed tile and cool steel. The only hint of its radical uses are the pseudoscientific racialist charts on the walls. - <<case "Paternalist">> - is warm and inviting, with curved walls and warm colors designed to put patients at their ease. Each bed is well provided with entertainment options. - <<case "Pastoralist">> - is utilitarian, without any concession to style. Every available <<if $showInches == 2>>inch<<else>>centimeter<</if>> of space is used for equipment specialized for human veterinary medicine. - <<case "Maturity Preferentialist">> - is comfortable and soothing, with curved walls and cool colors designed to keep patients relaxed. Each bed is provided with refined yet invariably pornographic entertainment options. - <<case "Youth Preferentialist">> - is bright and cheerful, with curved walls and pastel colors designed to keep patients in good spirits. Each bed is provided with light entertainment options. - <<case "Body Purist">> - is utilitarian, without any concession to style. Every available <<if $showInches == 2>>inch<<else>>centimeter<</if>> of space is filled with equipment designed to make medicine as low-impact as possible. - <<case "Slimness Enthusiast">> - is warm and inviting, with curved walls and warm colors designed to put patients at their ease. Each bed is well provided with entertainment options. - <<case "Hedonistic">> - is warm and comfortable, with extra wide, soft, heated beds and ample morphine. Pleasant smells are pumped into the recovery wards, plenty of entertainment is available and chubby nurse in a too small dress with a big bowl of slave food is only a button press away. It can be quite difficult to convince patients to leave. - <<case "Intellectual Dependency">> - is bright and cheerful, with plenty of simple amusements to keep bimbos distracted and in bed. A complex locking mechanism promises no chance of a slave wandering off to slake their lust. - <<case "Slave Professionalism">> - is clean and cold, all scrubbed tile and cool steel. Any delays in recovery are nothing more than time spent not honing one's talents. - <<case "Petite Admiration">> - is open and airy due to all the extra space freed up by shortening the beds. A footrest is the only accommodation made for tall slaves. - <<case "Statuesque Glorification">> - is warm and comfortable, if a little cramped; tall slaves require long beds, after all. A meager footstool is the only accommodation made for short slaves. - <<default>> - is a well-equipped modern medical facility. Each patient has their own area, with heavy automation to provide them treatment without any human intervention at all. - <</switch>> - - <<if _CL > 2>> - _clinicNameCaps is busy. Patients occupy many of the beds; most are alert, but a few are dozing under medication designed to promote healing through deep rest. - <<elseif _CL > 0>> - _clinicNameCaps is sparsely populated. Patients occupy a few of the beds; most are alert, but a few are dozing under medication designed to promote healing through deep rest. - <<elseif _S.Nurse>> - _S.Nurse.slaveName is alone in the clinic, and has nothing to do but keep the place spotlessly clean and ready for its next patients. - <<else>> - _clinicNameCaps is empty and quiet. - <div class="choices" style="font-style:normal"> - [[Decommission the Clinic|Main][$clinic = 0, $clinicDecoration = "standard", $clinicUpgradeScanner = 0, $clinicUpgradeFilters = 0, $clinicUpgradePurge = 0, $clinicInflateBelly = 0, $clinicSpeedGestation = 0]] - </div> - <</if>> -</p> - -<div> - <<set _Tmult0 = Math.trunc($clinic*1000*$upgradeMultiplierArcology)>> - _clinicNameCaps has room to support $clinic slaves while they receive treatment. - There <<if _CL == 1>>is<<else>>are<</if>> currently _CL slave<<if _CL != 1>>s<</if>> receiving treatment in $clinicName. - <div class="choices"> - [[Expand the clinic|Clinic][cashX(forceNeg(_Tmult0), "capEx"), $clinic += 5, $PC.skill.engineering += .1]] - <span class="note"> - Costs <<print cashFormat(_Tmult0)>> - </span> - </div> - <div class="choices"> - <<if _CL > 0>> - <<includeDOM removeFacilityWorkers("clinic", "rest", "rest")>> - <</if>> - </div> -</div> - -<div> - <<if $clinicUpgradeScanner == 1>> - _clinicNameCaps's scanners have been upgraded with a sampling system that can estimate carcinogenic damage to a slave's body. - <<else>> - <<set _Tmult1 = Math.trunc(10000*$upgradeMultiplierArcology*Math.min($upgradeMultiplierMedicine, $HackingSkillMultiplier))>> - It mounts powerful medical scanning technology. - <div class="choices"> - [[Upgrade the scanners to help detect genomic damage|Clinic][cashX(forceNeg(_Tmult1), "capEx"), $clinicUpgradeScanner = 1, $PC.skill.hacking += 0.1]] - <span class="note"> - Costs <<print cashFormat(_Tmult1)>> - </span> - </div> - <</if>> -</div> - -<div> - <<if $clinicUpgradeFilters == 1>> - <<if $clinicUpgradePurge >= 1>> - The entire floor beneath $clinicName is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities. - <<if $clinicUpgradePurge > 1>> - Microscopic magnets have been added to better facilitate the leeching of impurities from cells. - <</if>> - The blood is intensely cleaned to greatly decrease the presence of impurities at the cost of compatibility. Patients will likely be ill for the duration of the treatment. - <</if>> - <<set _Tmult3 = Math.trunc(150000*$upgradeMultiplierArcology*Math.min($upgradeMultiplierMedicine, $HackingSkillMultiplier))>> - <<if $clinicUpgradePurge === 0>> - The entire floor beneath $clinicName is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities. - <div class="choices"> - [[Increase the effectiveness of the impurity purging|Clinic][cashX(forceNeg(_Tmult3), "capEx"), $clinicUpgradePurge = 1, $PC.skill.hacking += 0.1]] - <span class="note"> - Costs <<print cashFormat(_Tmult3)>> and may cause health problems in slaves. - </span> - </div> - <<elseif $clinicUpgradePurge === 1>> - <div class="choices"> - [[Further increase the effectiveness of the impurity purging by utilizing nano magnets|Clinic][cashX(forceNeg(_Tmult3*2), "capEx"), $clinicUpgradePurge = 3, $PC.skill.hacking += 0.1]] - <span class="note"> - Costs <<print cashFormat(_Tmult3*2)>> - </span> - </div> - <</if>> - <<if !_S.Nurse>> - <div> - However, without a nurse in attendance, the @@.yellow;blood treatment equipment remains idle.@@ - </div> - <</if>> - <<else>> - <<set _Tmult2 = Math.trunc(50000*$upgradeMultiplierArcology*Math.min($upgradeMultiplierMedicine, $HackingSkillMultiplier))>> - It includes standard dialysis equipment. - <div class="choices"> - [[Install advanced blood treatment equipment to help address drug side effects|Clinic][cashX(forceNeg(_Tmult2), "capEx"), $clinicUpgradeFilters = 1, $PC.skill.hacking += 0.1]] - <span class="note"> - Costs <<print cashFormat(_Tmult2)>> - </span> - </div> - <</if>> -</div> - -<div> - <<if $bellyImplants == 1 && !_S.Nurse>> - A resident nurse could be used to safely regulate the rate a slave's fillable belly implant for maximum size with minimum health loss. - <<elseif $bellyImplants == 1 && $clinicInflateBelly == 1>> - _clinicNameCaps is useful for keeping slaves healthy during long term procedures. Slaves in $clinicName with inflatable belly implants will be filled during their time under _S.Nurse.slaveName's supervision to maximize growth with minimized health complications. - <div class="choices"> - [[Do not fill belly implants|Clinic][$clinicInflateBelly = 0]] - </div> - <<elseif $bellyImplants == 1 && _S.Nurse && $clinicInflateBelly != 1>> - _clinicNameCaps is useful for keeping slaves healthy during long term procedures. _S.Nurse.slaveName can supervise weekly filling regimens for clinic slaves with fillable belly implants during their stay to maximize growth with minimal health complications. - <div class="choices"> - [[Fill belly implants|Clinic][$clinicInflateBelly = 1]] - </div> - <</if>> -</div> - -<div> - <<if $seePreg == 1>> - <<if $clinicObservePregnancy != 1>> - Pregnant patients will not be kept under observation. - <div class="choices"> - [[Keep high-risk pregnancies under observation|Clinic][$clinicObservePregnancy = 1]] - </div> - <<else>> - Patients undergoing a high-risk pregnancy or are close to giving birth will be kept under observation. - <div class="choices"> - [[Stop observing pregnancies|Clinic][$clinicObservePregnancy = 0]] - </div> - <</if>> - <</if>> -</div> - -<div> - <<if $pregSpeedControl == 1 && !_S.Nurse>> - A resident nurse could be used to supervise patients under rapid gestation agents while minimizing strain and health complications. - <<elseif $pregSpeedControl == 1 && $clinicSpeedGestation == 1>> - It's exceedingly dangerous to speed up gestation without constant supervision. In $clinicName, _S.Nurse.slaveName will monitor slaves on rapid gestation agents; making sure the growing patients' food demands are met, monitoring their skin and womb and, if need be, perform an emergency c-section should the need arise. - <div class="choices"> - [[Limit rapid gestation agents to selected slaves only|Clinic][$clinicSpeedGestation = 0]] - </div> - <<elseif $pregSpeedControl == 1 && _S.Nurse && $clinicSpeedGestation != 1>> - _clinicNameCaps is currently not applying rapid gestation agents to pregnant patients. Only individually selected slaves will undergo this procedure - <div class="choices"> - [[Speed up gestation for all pregnant patients|Clinic][$clinicSpeedGestation = 1]] - </div> - <</if>> -</div> - -<p> - <<includeDOM App.UI.SlaveList.stdFacilityPage(App.Entity.facilities.clinic, true)>> -</p> - -<p> - Rename $clinicName: <<textbox "$clinicName" $clinicName "Clinic">> - <span class="note"> - Use a noun or similar short phrase - </span> -</p> - -<<run App.UI.SlaveList.ScrollPosition.restore()>> -- GitLab From 27e39ddd04be020cbe6d960f2f234b3b79cd0e43 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Mon, 24 May 2021 23:23:19 -0400 Subject: [PATCH 07/91] Added CSS --- css/facilities/clinic.css | 11 +++++++++++ src/facilities/clinic/clinic.js | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 css/facilities/clinic.css diff --git a/css/facilities/clinic.css b/css/facilities/clinic.css new file mode 100644 index 00000000000..eaa8608eb15 --- /dev/null +++ b/css/facilities/clinic.css @@ -0,0 +1,11 @@ +.clinic-intro, +.clinic-expand, +.clinic-upgrades, +.clinic-rules, +.clinic-slaves, +.clinic-rename, +.clinic-implants, +.clinic-observation, +.clinic-gestation { + margin-bottom: 1em; +} diff --git a/src/facilities/clinic/clinic.js b/src/facilities/clinic/clinic.js index 9b81e9cb43a..cd63cf9de89 100644 --- a/src/facilities/clinic/clinic.js +++ b/src/facilities/clinic/clinic.js @@ -209,14 +209,14 @@ App.Facilities.Clinic.clinic = function() { V.clinicUpgradePurge = 1; V.PC.skill.hacking += 0.1; }, - [], '', `Costs ${cashFormat(cost)} and may cause health problems in slaves.`)); + [], '', `Costs ${cashFormat(cost)} and may cause health problems in slaves.`), ['indent']); } else if (V.clinicUpgradePurge === 1) { App.UI.DOM.appendNewElement("div", upgradesDiv, App.UI.DOM.link(`Further increase the effectiveness of the impurity purging by utilizing nano magnets`, () => { cashX(forceNeg(cost * 2), "capEx"); V.clinicUpgradePurge = 3; // FIXME: why is this 3? V.PC.skill.hacking += 0.1; }, - [], '', `Costs ${cashFormat(cost * 2)}.`)); + [], '', `Costs ${cashFormat(cost * 2)}.`), ['indent']); } if (!S.Nurse) { upgradesDiv.append(`However, without a nurse in attendance, the <span class="yellow">blood treatment equipment remains idle.</span>`); -- GitLab From 88326574a2fe7dadc3788610c81db4a905c99412 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Mon, 24 May 2021 23:25:20 -0400 Subject: [PATCH 08/91] Minor fixes --- src/facilities/clinic/clinic.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/facilities/clinic/clinic.js b/src/facilities/clinic/clinic.js index cd63cf9de89..ea8477849c6 100644 --- a/src/facilities/clinic/clinic.js +++ b/src/facilities/clinic/clinic.js @@ -196,7 +196,7 @@ App.Facilities.Clinic.clinic = function() { upgradesDiv.append(`Microscopic magnets have been added to better facilitate the leeching of impurities from cells.`); } - upgradesDiv.append(`The blood is intensely cleaned to greatly decrease the presence of impurities at the cost of compatibility. Patients will likely be ill for the duration of the treatment.`); + upgradesDiv.append(` The blood is intensely cleaned to greatly decrease the presence of impurities at the cost of compatibility. Patients will likely be ill for the duration of the treatment.`); } const cost = Math.trunc(150000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier)); @@ -208,6 +208,8 @@ App.Facilities.Clinic.clinic = function() { cashX(forceNeg(cost), "capEx"); V.clinicUpgradePurge = 1; V.PC.skill.hacking += 0.1; + + refresh(); }, [], '', `Costs ${cashFormat(cost)} and may cause health problems in slaves.`), ['indent']); } else if (V.clinicUpgradePurge === 1) { @@ -215,6 +217,8 @@ App.Facilities.Clinic.clinic = function() { cashX(forceNeg(cost * 2), "capEx"); V.clinicUpgradePurge = 3; // FIXME: why is this 3? V.PC.skill.hacking += 0.1; + + refresh(); }, [], '', `Costs ${cashFormat(cost * 2)}.`), ['indent']); } @@ -230,6 +234,8 @@ App.Facilities.Clinic.clinic = function() { cashX(forceNeg(cost), "capEx"); V.clinicUpgradeFilters = 1; V.PC.skill.hacking += 0.1; + + refresh(); }, [], '', `Costs ${cashFormat(cost)}.`), ['indent']); } -- GitLab From 0c57be335d15725f2f902a87cd361ce5a0d22948 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 09:08:14 -0400 Subject: [PATCH 09/91] Fixes and cleanup --- src/facilities/clinic/clinic.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/facilities/clinic/clinic.js b/src/facilities/clinic/clinic.js index ea8477849c6..29141f7f12c 100644 --- a/src/facilities/clinic/clinic.js +++ b/src/facilities/clinic/clinic.js @@ -189,9 +189,9 @@ App.Facilities.Clinic.clinic = function() { } if (V.clinicUpgradeFilters) { - if (V.clinicUpgradePurge > 0) { - upgradesDiv.append(`The entire floor beneath ${V.clinicName} is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities.`); + upgradesDiv.append(`The entire floor beneath ${V.clinicName} is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities.`); + if (V.clinicUpgradePurge > 0) { if (V.clinicUpgradePurge > 1) { upgradesDiv.append(`Microscopic magnets have been added to better facilitate the leeching of impurities from cells.`); } @@ -202,8 +202,6 @@ App.Facilities.Clinic.clinic = function() { const cost = Math.trunc(150000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier)); if (V.clinicUpgradePurge === 0) { - upgradesDiv.append(`The entire floor beneath ${V.clinicName} is occupied by a huge filtration plant that constantly cycles out the patients' blood to remove impurities.`); - App.UI.DOM.appendNewElement("div", upgradesDiv, App.UI.DOM.link(`Increase the effectiveness of the impurity purging`, () => { cashX(forceNeg(cost), "capEx"); V.clinicUpgradePurge = 1; @@ -215,15 +213,15 @@ App.Facilities.Clinic.clinic = function() { } else if (V.clinicUpgradePurge === 1) { App.UI.DOM.appendNewElement("div", upgradesDiv, App.UI.DOM.link(`Further increase the effectiveness of the impurity purging by utilizing nano magnets`, () => { cashX(forceNeg(cost * 2), "capEx"); - V.clinicUpgradePurge = 3; // FIXME: why is this 3? + V.clinicUpgradePurge = 2; V.PC.skill.hacking += 0.1; refresh(); }, - [], '', `Costs ${cashFormat(cost * 2)}.`), ['indent']); + [], '', `Costs ${cashFormat(cost * 2)} and increases the effectiveness of ${V.clinicName}.`), ['indent']); } if (!S.Nurse) { - upgradesDiv.append(`However, without a nurse in attendance, the <span class="yellow">blood treatment equipment remains idle.</span>`); + App.Events.addNode(upgradesDiv, [`However, without a nurse in attendance, the <span class="yellow">blood treatment equipment remains idle.</span>`], "div"); } } else { const cost = Math.trunc(50000 * V.upgradeMultiplierArcology * Math.min(V.upgradeMultiplierMedicine, V.HackingSkillMultiplier)); @@ -237,7 +235,7 @@ App.Facilities.Clinic.clinic = function() { refresh(); }, - [], '', `Costs ${cashFormat(cost)}.`), ['indent']); + [], '', `Costs ${cashFormat(cost)} and increases the effectiveness of ${V.clinicName}.`), ['indent']); } return upgradesDiv; -- GitLab From bcd147a632f748d1b0872dde856b8b28a0c944e0 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 21:16:07 -0400 Subject: [PATCH 10/91] Cleaned up Pit code --- src/facilities/pit/pit.js | 468 ++++++++++++++++++++------------------ 1 file changed, 242 insertions(+), 226 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index c8b4ed0e9b2..adbc5a6e695 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -1,60 +1,51 @@ App.Facilities.Pit.pit = function() { const frag = new DocumentFragment(); - const introDiv = document.createElement("div"); - const lethalityDiv = document.createElement("div"); + const introDiv = App.UI.DOM.makeElement("div", null, ['pit-intro']); + const slavesDiv = App.UI.DOM.makeElement("div", null, ['pit-slaves']); + const lethalityDiv = App.UI.DOM.makeElement("div", null, ['pit-lethality']); + const renameDiv = App.UI.DOM.makeElement("div", null, ['pit-rename']); + + let pitNameCaps = capFirstChar(V.pit.name); + + const count = App.Entity.facilities.pit.totalEmployeesCount; V.nextButton = "Back to Main"; V.nextLink = "Main"; V.returnTo = "Pit"; V.encyclopedia = "Pit"; - frag.append(intro(), audience()); - - if (V.pit.slaveFightingBodyguard) { - frag.appendChild(scheduled()); - } else { - frag.append(fighters(), lethality()); - - App.UI.DOM.appendNewElement("div", frag, - App.UI.SlaveList.listSJFacilitySlaves(App.Entity.facilities.pit, passage(), false, - {assign: "Select a slave to fight", remove: "Cancel a slave's fight", transfer: null}), - "pit-assign"); - } - - frag.appendChild(App.Facilities.rename(App.Entity.facilities.pit, () => { - App.UI.DOM.replace(introDiv, intro); - })); + frag.append( + intro(), + audience(), + slaves(), + rename(), + ); return frag; function intro() { - introDiv.classList.add("pit-intro"); + const text = []; - const desc = App.UI.DOM.appendNewElement("div", introDiv, `${capFirstChar(V.pit.name)} is clean and ready, `); - const link = App.UI.DOM.makeElement("div", null, "indent"); - const note = App.UI.DOM.makeElement("div", `${properTitle()}, slaves assigned here can continue their usual duties.`, "note"); - - const count = App.Entity.facilities.pit.totalEmployeesCount; + text.push(`${pitNameCaps} is clean and ready,`); if (count > 2) { - desc.append(`with a pool of slaves assigned to fight in the next week's bout. `); + text.push(`with a pool of slaves assigned to fight in the next week's bout.`); } else if (count === 1) { - desc.append(`but only one slave is assigned to the week's bout. `); + text.push(`but only one slave is assigned to the week's bout.`); } else if (count > 0) { - desc.append(`with slaves assigned to the week's bout. `); + text.push(`with slaves assigned to the week's bout.`); } else { - desc.append(`but no slaves are assigned to fight. `); + text.push(`but no slaves are assigned to fight.`); } - link.append(App.UI.DOM.passageLink(`Decommission ${V.pit.name}`, "Main", () => { + App.UI.DOM.appendNewElement("div", introDiv, text.join(' '), ['scene-intro']); + App.UI.DOM.appendNewElement("div", introDiv, App.UI.DOM.passageLink(`Decommission ${V.pit.name}`, "Main", () => { V.pit = null; App.Arcology.cellUpgrade(V.building, App.Arcology.Cell.Market, "Pit", "Markets"); - })); - - desc.append(link, note); - introDiv.appendChild(desc); + }), ['indent']); + App.UI.DOM.appendNewElement("div", introDiv, `${properTitle()}, slaves assigned here can continue their usual duties.`, ['note']); return introDiv; } @@ -118,33 +109,34 @@ App.Facilities.Pit.pit = function() { return audienceDiv; } - function fighters() { - const fightersDiv = document.createElement("div"); - const animalDiv = document.createElement("div"); - const linkSpan = document.createElement("span"); + function slaves() { + if (V.pit.slaveFightingBodyguard) { + slavesDiv.append(scheduled()); + } else { + slavesDiv.append(fighters(), lethality()); - const links = []; + App.UI.DOM.appendNewElement("div", slavesDiv, + App.UI.SlaveList.listSJFacilitySlaves(App.Entity.facilities.pit, passage(), false, + {assign: "Select a slave to fight", remove: "Cancel a slave's fight", transfer: null}), + 'pit-assign'); + } - if (S.Bodyguard || V.active.canine || V.active.hooved || V.active.feline) { - if (V.pit.bodyguardFights) { - fightersDiv.append(`Your bodyguard ${S.Bodyguard.slaveName} will fight a slave selected from the pool at random. `); + return slavesDiv; - links.push(App.UI.DOM.link("Make both slots random", () => { - V.pit.bodyguardFights = false; - V.pit.animal = null; + function fighters() { + const fightersDiv = document.createElement("div"); + const animalDiv = document.createElement("div"); + const linkSpan = document.createElement("span"); - if (V.pit.fighterIDs.includes(V.BodyguardID)) { - V.pit.fighterIDs.delete(V.BodyguardID); - } + const links = []; - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - })); + if (S.Bodyguard || V.active.canine || V.active.hooved || V.active.feline) { + if (V.pit.bodyguardFights) { + fightersDiv.append(`Your bodyguard ${S.Bodyguard.slaveName} will fight a slave selected from the pool at random. `); - if (V.active.canine || V.active.hooved || V.active.feline) { - links.push(App.UI.DOM.link("Have a slave fight an animal", () => { + links.push(App.UI.DOM.link("Make both slots random", () => { V.pit.bodyguardFights = false; - V.pit.animal = V.active.canine || V.active.hooved || V.active.feline; + V.pit.animal = null; if (V.pit.fighterIDs.includes(V.BodyguardID)) { V.pit.fighterIDs.delete(V.BodyguardID); @@ -153,247 +145,271 @@ App.Facilities.Pit.pit = function() { App.UI.DOM.replace(fightersDiv, fighters); App.UI.DOM.replace(lethalityDiv, lethality); })); - } - } else { - if (V.pit.animal) { - fightersDiv.append(`A random slave will fight an animal. `); - links.push( - App.UI.DOM.link("Have them fight another slave", () => { + if (V.active.canine || V.active.hooved || V.active.feline) { + links.push(App.UI.DOM.link("Have a slave fight an animal", () => { V.pit.bodyguardFights = false; - V.pit.animal = null; - - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - })); + V.pit.animal = V.active.canine || V.active.hooved || V.active.feline; - if (S.Bodyguard) { - App.UI.DOM.link("Have them fight your bodyguard", () => { - V.pit.bodyguardFights = true; - V.pit.animal = null; + if (V.pit.fighterIDs.includes(V.BodyguardID)) { + V.pit.fighterIDs.delete(V.BodyguardID); + } App.UI.DOM.replace(fightersDiv, fighters); App.UI.DOM.replace(lethalityDiv, lethality); - }); + })); } - - animalDiv.appendChild(App.Facilities.Pit.animals()); } else { - fightersDiv.append(`Two fighters will be selected from the pool at random. `); + if (V.pit.animal) { + fightersDiv.append(`A random slave will fight an animal. `); - if (S.Bodyguard) { links.push( - App.UI.DOM.link("Guarantee your bodyguard a slot", () => { - V.pit.bodyguardFights = true; + App.UI.DOM.link("Have them fight another slave", () => { + V.pit.bodyguardFights = false; V.pit.animal = null; App.UI.DOM.replace(fightersDiv, fighters); App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); - } + })); - if (V.active.canine || V.active.hooved || V.active.feline) { - links.push( - App.UI.DOM.link("Have a slave fight an animal", () => { - V.pit.bodyguardFights = false; - V.pit.animal = V.active.canine || V.active.hooved || V.active.feline; + if (S.Bodyguard) { + App.UI.DOM.link("Have them fight your bodyguard", () => { + V.pit.bodyguardFights = true; + V.pit.animal = null; App.UI.DOM.replace(fightersDiv, fighters); App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); + }); + } + + animalDiv.appendChild(App.Facilities.Pit.animals()); + } else { + fightersDiv.append(`Two fighters will be selected from the pool at random. `); + + if (S.Bodyguard) { + links.push( + App.UI.DOM.link("Guarantee your bodyguard a slot", () => { + V.pit.bodyguardFights = true; + V.pit.animal = null; + + App.UI.DOM.replace(fightersDiv, fighters); + App.UI.DOM.replace(lethalityDiv, lethality); + }) + ); + } + + if (V.active.canine || V.active.hooved || V.active.feline) { + links.push( + App.UI.DOM.link("Have a slave fight an animal", () => { + V.pit.bodyguardFights = false; + V.pit.animal = V.active.canine || V.active.hooved || V.active.feline; + + App.UI.DOM.replace(fightersDiv, fighters); + App.UI.DOM.replace(lethalityDiv, lethality); + }) + ); + } } } + } else { + fightersDiv.append(`Two fighters will be selected from the pool at random. `); } - } else { - fightersDiv.append(`Two fighters will be selected from the pool at random. `); - } - linkSpan.append(App.UI.DOM.generateLinksStrip(links)); - fightersDiv.append(linkSpan); + linkSpan.append(App.UI.DOM.generateLinksStrip(links)); + fightersDiv.append(linkSpan); + + if (V.pit.animal) { + fightersDiv.appendChild(animalDiv); + } - if (V.pit.animal) { - fightersDiv.appendChild(animalDiv); + return fightersDiv; } - return fightersDiv; - } + function lethality() { + const linkSpan = document.createElement("span"); - function lethality() { - const linkSpan = document.createElement("span"); + if (V.pit.lethal) { + if (V.pit.animal) { + lethalityDiv.append(`The fighter will be armed with a sword and will fight to the death. `); - if (V.pit.lethal) { - if (V.pit.animal) { - lethalityDiv.append(`The fighter will be armed with a sword and will fight to the death. `); + linkSpan.append( + App.UI.DOM.link("Nonlethal", () => { + V.pit.lethal = false; - linkSpan.append( - App.UI.DOM.link("Nonlethal", () => { - V.pit.lethal = false; + App.UI.DOM.replace(lethalityDiv, lethality); + }) + ); + } else { + lethalityDiv.append(`Fighters will be armed with swords, and fights will be to the death. `); - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); + linkSpan.append( + App.UI.DOM.link("Nonlethal", () => { + V.pit.lethal = false; + + App.UI.DOM.replace(lethalityDiv, lethality); + }) + ); + } } else { - lethalityDiv.append(`Fighters will be armed with swords, and fights will be to the death. `); + if (V.pit.animal) { + lethalityDiv.append(`The slave will be restrained and will try to avoid becoming the animal's plaything. `); - linkSpan.append( - App.UI.DOM.link("Nonlethal", () => { - V.pit.lethal = false; + linkSpan.append( + App.UI.DOM.link("Lethal", () => { + V.pit.lethal = true; - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); - } - } else { - if (V.pit.animal) { - lethalityDiv.append(`The slave will be restrained and will try to avoid becoming the animal's plaything. `); + App.UI.DOM.replace(lethalityDiv, lethality); + }) + ); + } else { + lethalityDiv.append(`Fighters will use their fists and feet, and fights will be to submission. `); - linkSpan.append( - App.UI.DOM.link("Lethal", () => { - V.pit.lethal = true; + linkSpan.append( + App.UI.DOM.link("Lethal", () => { + V.pit.lethal = true; - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); - } else { - lethalityDiv.append(`Fighters will use their fists and feet, and fights will be to submission. `); + App.UI.DOM.replace(lethalityDiv, lethality); + }) + ); + } + } - linkSpan.append( - App.UI.DOM.link("Lethal", () => { - V.pit.lethal = true; + lethalityDiv.appendChild(linkSpan); - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); + if (!V.pit.lethal && !V.pit.animal) { + lethalityDiv.appendChild(virginities()); } - } - lethalityDiv.appendChild(linkSpan); + return lethalityDiv; - if (!V.pit.lethal && !V.pit.animal) { - lethalityDiv.appendChild(virginities()); - } + function virginities() { + const virginitiesDiv = document.createElement("div"); + const boldSpan = App.UI.DOM.makeElement("span", null, "bold"); + const linkSpan = document.createElement("span"); - return lethalityDiv; + const links = []; - function virginities() { - const virginitiesDiv = document.createElement("div"); - const boldSpan = App.UI.DOM.makeElement("span", null, "bold"); - const linkSpan = document.createElement("span"); + if (!V.pit.animal) { + if (V.pit.virginities === "neither") { + boldSpan.append(`No`); + virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); - const links = []; + links.push( + App.UI.DOM.link("Vaginal", () => { + V.pit.virginities = "vaginal"; - if (!V.pit.animal) { - if (V.pit.virginities === "neither") { - boldSpan.append(`No`); - virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("Anal", () => { + V.pit.virginities = "anal"; - links.push( - App.UI.DOM.link("Vaginal", () => { - V.pit.virginities = "vaginal"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("All", () => { + V.pit.virginities = "all"; - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Anal", () => { - V.pit.virginities = "anal"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }) + ); + } else if (V.pit.virginities === "vaginal") { + boldSpan.append(`Vaginal`); + virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("All", () => { - V.pit.virginities = "all"; + links.push( + App.UI.DOM.link("Neither", () => { + V.pit.virginities = "neither"; - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); - } else if (V.pit.virginities === "vaginal") { - boldSpan.append(`Vaginal`); - virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("Anal", () => { + V.pit.virginities = "anal"; - links.push( - App.UI.DOM.link("Neither", () => { - V.pit.virginities = "neither"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("All", () => { + V.pit.virginities = "all"; - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Anal", () => { - V.pit.virginities = "anal"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }) + ); + } else if (V.pit.virginities === "anal") { + boldSpan.append(`Anal`); + virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("All", () => { - V.pit.virginities = "all"; + links.push( + App.UI.DOM.link("Neither", () => { + V.pit.virginities = "neither"; - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); - } else if (V.pit.virginities === "anal") { - boldSpan.append(`Anal`); - virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("Vaginal", () => { + V.pit.virginities = "vaginal"; - links.push( - App.UI.DOM.link("Neither", () => { - V.pit.virginities = "neither"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("All", () => { + V.pit.virginities = "all"; - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Vaginal", () => { - V.pit.virginities = "vaginal"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }) + ); + } else { + boldSpan.append(`All`); + virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("All", () => { - V.pit.virginities = "all"; + links.push( + App.UI.DOM.link("Neither", () => { + V.pit.virginities = "neither"; - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); - } else { - boldSpan.append(`All`); - virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("Vaginal", () => { + V.pit.virginities = "vaginal"; - links.push( - App.UI.DOM.link("Neither", () => { - V.pit.virginities = "neither"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }), + App.UI.DOM.link("Anal", () => { + V.pit.virginities = "anal"; - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Vaginal", () => { - V.pit.virginities = "vaginal"; + App.UI.DOM.replace(virginitiesDiv, virginities); + }) + ); + } + } - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Anal", () => { - V.pit.virginities = "anal"; + linkSpan.append(App.UI.DOM.generateLinksStrip(links)); + virginitiesDiv.appendChild(linkSpan); - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); - } + return virginitiesDiv; } + } - linkSpan.append(App.UI.DOM.generateLinksStrip(links)); - virginitiesDiv.appendChild(linkSpan); + function scheduled() { + const scheduledDiv = document.createElement("div"); + const linkSpan = document.createElement("span"); - return virginitiesDiv; - } - } + scheduledDiv.append(`You have scheduled ${getSlave(V.pit.slaveFightingBodyguard).slaveName} to fight your bodyguard to the death this week. `, linkSpan); - function scheduled() { - const scheduledDiv = document.createElement("div"); - const linkSpan = document.createElement("span"); + linkSpan.append(App.UI.DOM.link("Cancel it", () => { + V.pit.slaveFightingBodyguard = null; - scheduledDiv.append(`You have scheduled ${getSlave(V.pit.slaveFightingBodyguard).slaveName} to fight your bodyguard to the death this week. `, linkSpan); + App.UI.DOM.replace(scheduledDiv, scheduled); + })); - linkSpan.append(App.UI.DOM.link("Cancel it", () => { - V.pit.slaveFightingBodyguard = null; + scheduledDiv.appendChild(linkSpan); - App.UI.DOM.replace(scheduledDiv, scheduled); - })); + return scheduledDiv; + } + } + + function rename() { + renameDiv.append(App.Facilities.rename(App.Entity.facilities.pit, () => { + pitNameCaps = capFirstChar(V.pit.name); - scheduledDiv.appendChild(linkSpan); + App.UI.DOM.replace(introDiv, intro); + })); - return scheduledDiv; + return renameDiv; } }; -- GitLab From 5c9c69c22493670f432e5016c92adc7bc97a5ed8 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 21:38:20 -0400 Subject: [PATCH 11/91] Replaced audience links with options group --- src/facilities/pit/pit.js | 59 ++++++++------------------------------- 1 file changed, 11 insertions(+), 48 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index adbc5a6e695..c5eb753c9e6 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -2,6 +2,7 @@ App.Facilities.Pit.pit = function() { const frag = new DocumentFragment(); const introDiv = App.UI.DOM.makeElement("div", null, ['pit-intro']); + const audienceDiv = App.UI.DOM.makeElement("div", null, ['pit-audience']); const slavesDiv = App.UI.DOM.makeElement("div", null, ['pit-slaves']); const lethalityDiv = App.UI.DOM.makeElement("div", null, ['pit-lethality']); const renameDiv = App.UI.DOM.makeElement("div", null, ['pit-rename']); @@ -51,60 +52,22 @@ App.Facilities.Pit.pit = function() { } function audience() { - const audienceDiv = document.createElement("div"); - const linkSpan = document.createElement("span"); - - const links = []; + const options = new App.UI.OptionsGroup(); if (V.pit.audience === "none") { - audienceDiv.append(`Fights here are strictly private. `); - - links.push( - App.UI.DOM.link("Open them for free", () => { - V.pit.audience = "free"; - - App.UI.DOM.replace(audienceDiv, audience); - }), - App.UI.DOM.link("Open them and charge admission", () => { - V.pit.audience = "paid"; - - App.UI.DOM.replace(audienceDiv, audience); - }) - ); + audienceDiv.append(`Fights here are strictly private.`); } else if (V.pit.audience === "free") { - audienceDiv.append(`Fights here are free and open to the public. `); - - links.push( - App.UI.DOM.link("Close them", () => { - V.pit.audience = "none"; - - App.UI.DOM.replace(audienceDiv, audience); - }), - App.UI.DOM.link("Charge admission", () => { - V.pit.audience = "paid"; - - App.UI.DOM.replace(audienceDiv, audience); - }) - ); + audienceDiv.append(`Fights here are free and open to the public.`); } else { - audienceDiv.append(`Admission is charged to the fights here. `); - - links.push( - App.UI.DOM.link("Close them", () => { - V.pit.audience = "none"; - - App.UI.DOM.replace(audienceDiv, audience); - }), - App.UI.DOM.link("Stop charging admission", () => { - V.pit.audience = "free"; - - App.UI.DOM.replace(audienceDiv, audience); - }) - ); + audienceDiv.append(`Admission is charged to the fights here.`); } - linkSpan.append(App.UI.DOM.generateLinksStrip(links)); - audienceDiv.appendChild(linkSpan); + options.addOption(null, "audience", V.pit) + .addValue(`Close them`, 'none') + .addValue(`Open them for free`, 'free') + .addValue(`Open them and charge admission`, 'paid'); + + App.UI.DOM.appendNewElement("div", audienceDiv, options.render(), ['indent']); return audienceDiv; } -- GitLab From 97b3bcac0563a8b3a766b766d56ab57638cb62a4 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 21:45:56 -0400 Subject: [PATCH 12/91] Replaced lethality links with options group --- src/facilities/pit/pit.js | 40 ++++++--------------------------------- 1 file changed, 6 insertions(+), 34 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index c5eb753c9e6..0a72dd6fcda 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -189,55 +189,27 @@ App.Facilities.Pit.pit = function() { } function lethality() { - const linkSpan = document.createElement("span"); + const options = new App.UI.OptionsGroup(); if (V.pit.lethal) { if (V.pit.animal) { lethalityDiv.append(`The fighter will be armed with a sword and will fight to the death. `); - - linkSpan.append( - App.UI.DOM.link("Nonlethal", () => { - V.pit.lethal = false; - - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); } else { lethalityDiv.append(`Fighters will be armed with swords, and fights will be to the death. `); - - linkSpan.append( - App.UI.DOM.link("Nonlethal", () => { - V.pit.lethal = false; - - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); } } else { if (V.pit.animal) { lethalityDiv.append(`The slave will be restrained and will try to avoid becoming the animal's plaything. `); - - linkSpan.append( - App.UI.DOM.link("Lethal", () => { - V.pit.lethal = true; - - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); } else { lethalityDiv.append(`Fighters will use their fists and feet, and fights will be to submission. `); - - linkSpan.append( - App.UI.DOM.link("Lethal", () => { - V.pit.lethal = true; - - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); } } - lethalityDiv.appendChild(linkSpan); + options.addOption(null, "lethal", V.pit) + .addValue(`Lethal`, true) + .addValue(`Nonlethal`, false); + + App.UI.DOM.appendNewElement("div", lethalityDiv, options.render(), ['indent']); if (!V.pit.lethal && !V.pit.animal) { lethalityDiv.appendChild(virginities()); -- GitLab From 8d5f8c4978ba644aa564b24f8c14b32f72d2c846 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 21:50:49 -0400 Subject: [PATCH 13/91] Replaced virginities links with options group --- src/facilities/pit/pit.js | 84 ++++----------------------------------- 1 file changed, 8 insertions(+), 76 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index 0a72dd6fcda..003027d9d57 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -220,100 +220,32 @@ App.Facilities.Pit.pit = function() { function virginities() { const virginitiesDiv = document.createElement("div"); const boldSpan = App.UI.DOM.makeElement("span", null, "bold"); - const linkSpan = document.createElement("span"); - const links = []; + const options = new App.UI.OptionsGroup(); if (!V.pit.animal) { if (V.pit.virginities === "neither") { boldSpan.append(`No`); virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); - - links.push( - App.UI.DOM.link("Vaginal", () => { - V.pit.virginities = "vaginal"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Anal", () => { - V.pit.virginities = "anal"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("All", () => { - V.pit.virginities = "all"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); } else if (V.pit.virginities === "vaginal") { boldSpan.append(`Vaginal`); virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); - - links.push( - App.UI.DOM.link("Neither", () => { - V.pit.virginities = "neither"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Anal", () => { - V.pit.virginities = "anal"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("All", () => { - V.pit.virginities = "all"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); } else if (V.pit.virginities === "anal") { boldSpan.append(`Anal`); virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); - - links.push( - App.UI.DOM.link("Neither", () => { - V.pit.virginities = "neither"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Vaginal", () => { - V.pit.virginities = "vaginal"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("All", () => { - V.pit.virginities = "all"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); } else { boldSpan.append(`All`); virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); - - links.push( - App.UI.DOM.link("Neither", () => { - V.pit.virginities = "neither"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Vaginal", () => { - V.pit.virginities = "vaginal"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }), - App.UI.DOM.link("Anal", () => { - V.pit.virginities = "anal"; - - App.UI.DOM.replace(virginitiesDiv, virginities); - }) - ); } } - linkSpan.append(App.UI.DOM.generateLinksStrip(links)); - virginitiesDiv.appendChild(linkSpan); + options.addOption(null, "virginities", V.pit) + .addValue(`Neither`, 'neither') + .addValue(`Vaginal`, 'vaginal') + .addValue(`Anal`, 'anal') + .addValue(`All`, 'all'); + + App.UI.DOM.appendNewElement("div", virginitiesDiv, options.render(), ['indent']); return virginitiesDiv; } -- GitLab From ee046a240dcbe009516b0f1fa83532568b4e549e Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 22:17:06 -0400 Subject: [PATCH 14/91] Replaced fighters links with options group --- src/facilities/pit/pit.js | 112 ++++++++++++-------------------------- 1 file changed, 35 insertions(+), 77 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index 003027d9d57..0cc5155861e 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -89,102 +89,60 @@ App.Facilities.Pit.pit = function() { function fighters() { const fightersDiv = document.createElement("div"); const animalDiv = document.createElement("div"); - const linkSpan = document.createElement("span"); - const links = []; + const availableAnimal = V.active.canine || V.active.hooved || V.active.feline; + + const options = new App.UI.OptionsGroup(); + const option = options.addCustomOption(null); - if (S.Bodyguard || V.active.canine || V.active.hooved || V.active.feline) { + if (S.Bodyguard || availableAnimal) { if (V.pit.bodyguardFights) { fightersDiv.append(`Your bodyguard ${S.Bodyguard.slaveName} will fight a slave selected from the pool at random. `); - - links.push(App.UI.DOM.link("Make both slots random", () => { - V.pit.bodyguardFights = false; - V.pit.animal = null; - - if (V.pit.fighterIDs.includes(V.BodyguardID)) { - V.pit.fighterIDs.delete(V.BodyguardID); - } - - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - })); - - if (V.active.canine || V.active.hooved || V.active.feline) { - links.push(App.UI.DOM.link("Have a slave fight an animal", () => { - V.pit.bodyguardFights = false; - V.pit.animal = V.active.canine || V.active.hooved || V.active.feline; - - if (V.pit.fighterIDs.includes(V.BodyguardID)) { - V.pit.fighterIDs.delete(V.BodyguardID); - } - - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - })); - } } else { if (V.pit.animal) { fightersDiv.append(`A random slave will fight an animal. `); - - links.push( - App.UI.DOM.link("Have them fight another slave", () => { - V.pit.bodyguardFights = false; - V.pit.animal = null; - - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - })); - - if (S.Bodyguard) { - App.UI.DOM.link("Have them fight your bodyguard", () => { - V.pit.bodyguardFights = true; - V.pit.animal = null; - - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - }); - } - - animalDiv.appendChild(App.Facilities.Pit.animals()); + animalDiv.append(App.Facilities.Pit.animals()); } else { fightersDiv.append(`Two fighters will be selected from the pool at random. `); - - if (S.Bodyguard) { - links.push( - App.UI.DOM.link("Guarantee your bodyguard a slot", () => { - V.pit.bodyguardFights = true; - V.pit.animal = null; - - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); - } - - if (V.active.canine || V.active.hooved || V.active.feline) { - links.push( - App.UI.DOM.link("Have a slave fight an animal", () => { - V.pit.bodyguardFights = false; - V.pit.animal = V.active.canine || V.active.hooved || V.active.feline; - - App.UI.DOM.replace(fightersDiv, fighters); - App.UI.DOM.replace(lethalityDiv, lethality); - }) - ); - } } } } else { fightersDiv.append(`Two fighters will be selected from the pool at random. `); } - linkSpan.append(App.UI.DOM.generateLinksStrip(links)); - fightersDiv.append(linkSpan); + option.addButton(`Have two random slaves fight`, () => { + V.pit.bodyguardFights = false; + V.pit.animal = null; + + if (V.pit.fighterIDs.includes(V.BodyguardID)) { + V.pit.fighterIDs.delete(V.BodyguardID); + } + }); + + if (S.Bodyguard) { + option.addButton(`Have a slave fight your bodyguard`, () => { + V.pit.bodyguardFights = true; + V.pit.animal = null; + }); + } + + if (availableAnimal) { + option.addButton(`Have a slave fight an animal`, () => { + V.pit.bodyguardFights = false; + V.pit.animal = availableAnimal; + + if (V.pit.fighterIDs.includes(V.BodyguardID)) { + V.pit.fighterIDs.delete(V.BodyguardID); + } + }); + } if (V.pit.animal) { - fightersDiv.appendChild(animalDiv); + fightersDiv.append(animalDiv); } + App.UI.DOM.appendNewElement("div", fightersDiv, options.render(), ['indent']); + return fightersDiv; } -- GitLab From 7cbcafc5bd7c1faeb26d6599c44605ee2a59e7c2 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 22:22:16 -0400 Subject: [PATCH 15/91] Minor code cleanup --- src/facilities/pit/pit.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index 0cc5155861e..e6b8e9fc080 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -184,19 +184,17 @@ App.Facilities.Pit.pit = function() { if (!V.pit.animal) { if (V.pit.virginities === "neither") { boldSpan.append(`No`); - virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); } else if (V.pit.virginities === "vaginal") { boldSpan.append(`Vaginal`); - virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); } else if (V.pit.virginities === "anal") { boldSpan.append(`Anal`); - virginitiesDiv.append(boldSpan, ` virginity of the loser will be respected. `); } else { boldSpan.append(`All`); - virginitiesDiv.append(boldSpan, ` virginities of the loser will be respected. `); } } + virginitiesDiv.append(boldSpan, ` ${['none', 'all'].includes(V.pit.virginities) ? `virginities` : `virginity`} of the loser will be respected.`); + options.addOption(null, "virginities", V.pit) .addValue(`Neither`, 'neither') .addValue(`Vaginal`, 'vaginal') -- GitLab From 76c98a1f8d7159e09e2fce04616cd49d5765309b Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 22:27:07 -0400 Subject: [PATCH 16/91] Minor text cleanup --- src/facilities/pit/pit.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index e6b8e9fc080..10007c7d673 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -177,23 +177,24 @@ App.Facilities.Pit.pit = function() { function virginities() { const virginitiesDiv = document.createElement("div"); - const boldSpan = App.UI.DOM.makeElement("span", null, "bold"); + + const text = []; const options = new App.UI.OptionsGroup(); if (!V.pit.animal) { if (V.pit.virginities === "neither") { - boldSpan.append(`No`); + text.push(`No virginities`); } else if (V.pit.virginities === "vaginal") { - boldSpan.append(`Vaginal`); + text.push(`Vaginal virginity`); } else if (V.pit.virginities === "anal") { - boldSpan.append(`Anal`); + text.push(`Anal virginity`); } else { - boldSpan.append(`All`); + text.push(`All virginities`); } } - virginitiesDiv.append(boldSpan, ` ${['none', 'all'].includes(V.pit.virginities) ? `virginities` : `virginity`} of the loser will be respected.`); + virginitiesDiv.append(`${text.join('')} of the loser will be respected.`); options.addOption(null, "virginities", V.pit) .addValue(`Neither`, 'neither') -- GitLab From c24a7e103bf5a98ef3182836341e5cd03ddd5a5b Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 22:39:03 -0400 Subject: [PATCH 17/91] Replaced pit animal links with options group --- src/facilities/pit/pitAnimals.js | 102 +++++++------------------------ 1 file changed, 22 insertions(+), 80 deletions(-) diff --git a/src/facilities/pit/pitAnimals.js b/src/facilities/pit/pitAnimals.js index f815bcde87e..a77434cc5ec 100644 --- a/src/facilities/pit/pitAnimals.js +++ b/src/facilities/pit/pitAnimals.js @@ -5,103 +5,45 @@ App.Facilities.Pit.animals = function() { return frag; - - - // MARK: Main Function - function animalSelect() { const animalSelectDiv = document.createElement("div"); - const animalLinks = []; const an = V.pit.animal.articleAn; animalSelectDiv.append(`Your slave will fight ${an} `, App.UI.DOM.makeElement("span", V.pit.animal.name, ["bold"]), `. `); + const options = new App.UI.OptionsGroup(); + const option = options.addOption(null, "animal", V.pit); + if (V.active.canine) { - animalLinks.push(canineSelect(animalSelectDiv)); + let animalEligible = true; + + switch (V.active.canine.name) { + case "beagle": + case "French bulldog": + case "poodle": + case "Yorkshire terrier": + animalEligible = false; + break; + } + + if (animalEligible) { + option.addValue(capFirstChar(V.active.canine.name), V.active.canine); + } } if (V.active.hooved) { - animalLinks.push(hoovedSelect(animalSelectDiv)); + option.addValue(capFirstChar(V.active.hooved.name), V.active.hooved); } if (V.active.feline) { - animalLinks.push(felineSelect(animalSelectDiv)); + if (V.active.feline.species !== 'cat') { + option.addValue(capFirstChar(V.active.feline.name), V.active.feline); + } } - const links = App.UI.DOM.generateLinksStrip(animalLinks); - - animalSelectDiv.append(links); + App.UI.DOM.appendNewElement("div", animalSelectDiv, options.render(), ['indent']); return animalSelectDiv; } - - - - // MARK: Canine - - function canineSelect(div) { - let animalEligible = true; - - switch (V.active.canine.name) { - case "beagle": - case "French bulldog": - case "poodle": - case "Yorkshire terrier": - animalEligible = false; - break; - } - - if (V.pit.animal.name === V.active.canine.name) { - return App.UI.DOM.disabledLink(capFirstChar(V.active.canine.name), [`Already selected.`]); - } - - if (animalEligible) { - return App.UI.DOM.link(capFirstChar(V.active.canine.name), () => { - V.pit.animal = V.active.canine; - - App.UI.DOM.replace(div, animalSelect); - }); - } else { - return App.UI.DOM.disabledLink(capFirstChar(V.active.canine.name), [`${V.active.canine.name}s are too small for a proper fight.`]); - } - } - - - - // MARK: Hooved - - function hoovedSelect(div) { - if (V.pit.animal.name === V.active.hooved.name) { - return App.UI.DOM.disabledLink(capFirstChar(V.active.hooved.name), [`Already selected.`]); - } - - return App.UI.DOM.link(capFirstChar(V.active.hooved.name), () => { - V.pit.animal = V.active.hooved; - - App.UI.DOM.replace(div, animalSelect); - }); - } - - - - // MARK: Felines - - function felineSelect(div) { - const cat = "cat"; - - if (V.pit.animal.name === V.active.feline.name) { - return App.UI.DOM.disabledLink(capFirstChar(V.active.feline.name), [`Already selected.`]); - } - - if (V.active.feline.species === cat) { - return App.UI.DOM.disabledLink(capFirstChar(V.active.feline.name), [`${V.active.feline.name}s are too small for a proper fight.`]); - } else { - return App.UI.DOM.link(capFirstChar(V.active.feline.name), () => { - V.pit.animal = V.active.feline; - - App.UI.DOM.replace(div, animalSelect); - }); - } - } }; -- GitLab From 0dc50c70d42734acf0e829c543028e15b51c97ae Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 22:46:57 -0400 Subject: [PATCH 18/91] Reorganization --- src/facilities/pit/pit.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index 10007c7d673..836b9bfb792 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -88,7 +88,6 @@ App.Facilities.Pit.pit = function() { function fighters() { const fightersDiv = document.createElement("div"); - const animalDiv = document.createElement("div"); const availableAnimal = V.active.canine || V.active.hooved || V.active.feline; @@ -101,7 +100,6 @@ App.Facilities.Pit.pit = function() { } else { if (V.pit.animal) { fightersDiv.append(`A random slave will fight an animal. `); - animalDiv.append(App.Facilities.Pit.animals()); } else { fightersDiv.append(`Two fighters will be selected from the pool at random. `); } @@ -137,12 +135,12 @@ App.Facilities.Pit.pit = function() { }); } + App.UI.DOM.appendNewElement("div", fightersDiv, options.render(), ['indent']); + if (V.pit.animal) { - fightersDiv.append(animalDiv); + fightersDiv.append(App.Facilities.Pit.animals()); } - App.UI.DOM.appendNewElement("div", fightersDiv, options.render(), ['indent']); - return fightersDiv; } -- GitLab From fea7a2863998e0b232f054b4f536caa755837537 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Tue, 25 May 2021 22:49:45 -0400 Subject: [PATCH 19/91] Added refresh() --- src/facilities/pit/pit.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index 836b9bfb792..cb1d0ef09f7 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -228,11 +228,18 @@ App.Facilities.Pit.pit = function() { renameDiv.append(App.Facilities.rename(App.Entity.facilities.pit, () => { pitNameCaps = capFirstChar(V.pit.name); - App.UI.DOM.replace(introDiv, intro); + refresh(); })); return renameDiv; } + + function refresh() { + App.UI.DOM.replace(introDiv, intro); + App.UI.DOM.replace(audienceDiv, audience); + App.UI.DOM.replace(slavesDiv, slaves); + App.UI.DOM.replace(renameDiv, rename); + } }; App.Facilities.Pit.init = function() { -- GitLab From 111897ab395eddf130dd0cafbe7c2cffbdcb47e1 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Fri, 28 May 2021 20:05:51 -0400 Subject: [PATCH 20/91] Fighter selection now uses proper styling --- src/facilities/pit/pit.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index cb1d0ef09f7..230b2d5d9f0 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -89,10 +89,12 @@ App.Facilities.Pit.pit = function() { function fighters() { const fightersDiv = document.createElement("div"); - const availableAnimal = V.active.canine || V.active.hooved || V.active.feline; + const availableAnimal = V.active.canine || V.active.hooved || V.active.feline || null; + + const obj = {selected: true}; const options = new App.UI.OptionsGroup(); - const option = options.addCustomOption(null); + const option = options.addOption(null, 'selected', obj); if (S.Bodyguard || availableAnimal) { if (V.pit.bodyguardFights) { @@ -108,7 +110,7 @@ App.Facilities.Pit.pit = function() { fightersDiv.append(`Two fighters will be selected from the pool at random. `); } - option.addButton(`Have two random slaves fight`, () => { + option.addValue(`Have two random slaves fight`, !V.pit.bodyguardFights && !V.pit.animal, () => { V.pit.bodyguardFights = false; V.pit.animal = null; @@ -118,14 +120,14 @@ App.Facilities.Pit.pit = function() { }); if (S.Bodyguard) { - option.addButton(`Have a slave fight your bodyguard`, () => { + option.addValue(`Have a slave fight your bodyguard`, V.pit.bodyguardFights && !V.pit.animal, () => { V.pit.bodyguardFights = true; V.pit.animal = null; }); } if (availableAnimal) { - option.addButton(`Have a slave fight an animal`, () => { + option.addValue(`Have a slave fight an animal`, !V.pit.bodyguardFights && V.pit.animal !== null, () => { V.pit.bodyguardFights = false; V.pit.animal = availableAnimal; -- GitLab From bef6600a557404eb7a837b93513151cd6c777f6b Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Fri, 28 May 2021 20:19:24 -0400 Subject: [PATCH 21/91] Animal selection now uses proper styling --- src/facilities/pit/pitAnimals.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/facilities/pit/pitAnimals.js b/src/facilities/pit/pitAnimals.js index a77434cc5ec..4b4ab3ca716 100644 --- a/src/facilities/pit/pitAnimals.js +++ b/src/facilities/pit/pitAnimals.js @@ -12,8 +12,10 @@ App.Facilities.Pit.animals = function() { animalSelectDiv.append(`Your slave will fight ${an} `, App.UI.DOM.makeElement("span", V.pit.animal.name, ["bold"]), `. `); + const obj = {selected: true} + const options = new App.UI.OptionsGroup(); - const option = options.addOption(null, "animal", V.pit); + const option = options.addOption(null, 'selected', obj); if (V.active.canine) { let animalEligible = true; @@ -28,17 +30,23 @@ App.Facilities.Pit.animals = function() { } if (animalEligible) { - option.addValue(capFirstChar(V.active.canine.name), V.active.canine); + option.addValue(capFirstChar(V.active.canine.name), V.pit.animal.name === V.active.canine.name, () => { + V.pit.animal = V.active.canine; + }); } } if (V.active.hooved) { - option.addValue(capFirstChar(V.active.hooved.name), V.active.hooved); + option.addValue(capFirstChar(V.active.hooved.name), V.pit.animal.name === V.active.hooved.name, () => { + V.pit.animal = V.active.hooved; + }); } if (V.active.feline) { if (V.active.feline.species !== 'cat') { - option.addValue(capFirstChar(V.active.feline.name), V.active.feline); + option.addValue(capFirstChar(V.active.feline.name), V.pit.animal.name === V.active.feline.name, () => { + V.pit.animal = V.active.feline; + }); } } -- GitLab From 06316f921b36483ff9da280f265dc50010a16b7b Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Fri, 28 May 2021 20:22:43 -0400 Subject: [PATCH 22/91] Removed bold --- src/facilities/pit/pitAnimals.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/facilities/pit/pitAnimals.js b/src/facilities/pit/pitAnimals.js index 4b4ab3ca716..6d26eef3f7b 100644 --- a/src/facilities/pit/pitAnimals.js +++ b/src/facilities/pit/pitAnimals.js @@ -10,9 +10,9 @@ App.Facilities.Pit.animals = function() { const an = V.pit.animal.articleAn; - animalSelectDiv.append(`Your slave will fight ${an} `, App.UI.DOM.makeElement("span", V.pit.animal.name, ["bold"]), `. `); + animalSelectDiv.append(`Your slave will fight ${an} ${V.pit.animal.name}. `); - const obj = {selected: true} + const obj = {selected: true}; const options = new App.UI.OptionsGroup(); const option = options.addOption(null, 'selected', obj); -- GitLab From f866ae7ac1399550a2d097538403df8ba1c3ff36 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Fri, 28 May 2021 20:23:08 -0400 Subject: [PATCH 23/91] Minor text change --- src/facilities/pit/pitAnimals.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/facilities/pit/pitAnimals.js b/src/facilities/pit/pitAnimals.js index 6d26eef3f7b..e1c2476b65f 100644 --- a/src/facilities/pit/pitAnimals.js +++ b/src/facilities/pit/pitAnimals.js @@ -10,7 +10,7 @@ App.Facilities.Pit.animals = function() { const an = V.pit.animal.articleAn; - animalSelectDiv.append(`Your slave will fight ${an} ${V.pit.animal.name}. `); + animalSelectDiv.append(`Your slave will fight ${an} ${V.pit.animal.name}.`); const obj = {selected: true}; -- GitLab From 1b409af6875409079b7f1ef4665d7dde6ec2e798 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 21:20:18 -0400 Subject: [PATCH 24/91] start --- src/events/RE/reMaleCitizenHookup.js | 742 +++++++++++++++++++++++++++ src/pregmod/reMaleCitizenHookup.tw | 478 ----------------- 2 files changed, 742 insertions(+), 478 deletions(-) create mode 100644 src/events/RE/reMaleCitizenHookup.js delete mode 100644 src/pregmod/reMaleCitizenHookup.tw diff --git a/src/events/RE/reMaleCitizenHookup.js b/src/events/RE/reMaleCitizenHookup.js new file mode 100644 index 00000000000..fb92b2e1166 --- /dev/null +++ b/src/events/RE/reMaleCitizenHookup.js @@ -0,0 +1,742 @@ +App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.policies.regularParties === 1, + () => V.PC.vagina > 0, + () => V.PC.title === 0, + () => random(0, 99) < V.seeDicks + ]; + } + + actorPrerequisites() { + return []; + } + + execute(node) { + V.nextButton = "Continue", V.nextLink = "RIE Eligibility Check"; + + const FSArray = []; + if (V.arcologies[0].FSSubjugationist !== "unset") { + FSArray.push("Subjugationist"); + } + if (V.arcologies[0].FSSupremacist !== "unset") { + FSArray.push("Supremacist"); + } + if (V.arcologies[0].FSGenderRadicalist !== "unset") { + FSArray.push("Gender Radicalist"); + } else if (V.arcologies[0].FSGenderFundamentalist !== "unset") { + FSArray.push("Gender Fundamentalist"); + } + if (V.arcologies[0].FSRepopulationFocus !== "unset") { + FSArray.push("Repopulationist"); + } else if (V.arcologies[0].FSRestart !== "unset") { + FSArray.push("Eugenics"); + } + if (V.arcologies[0].FSPaternalist !== "unset") { + FSArray.push("Paternalist"); + } else if (V.arcologies[0].FSDegradationist !== "unset") { + FSArray.push("Degradationist"); + } + if (V.arcologies[0].FSBodyPurist !== "unset") { + FSArray.push("Body Purist"); + } else if (V.arcologies[0].FSTransformationFetishist !== "unset") { + FSArray.push("Transformation Fetishist"); + } + if (V.arcologies[0].FSYouthPreferentialist !== "unset") { + FSArray.push("Youth Preferentialist"); + } else if (V.arcologies[0].FSMaturityPreferentialist !== "unset") { + FSArray.push("Maturity Preferentialist"); + } + if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") { + FSArray.push("Slimness Enthusiast"); + } else if (V.arcologies[0].FSAssetExpansionist !== "unset") { + FSArray.push("Asset Expansionist"); + } + if (V.arcologies[0].FSPastoralist !== "unset") { + FSArray.push("Pastoralist"); + } + if (V.arcologies[0].FSPhysicalIdealist !== "unset") { + FSArray.push("Physical Idealist"); + } else if (V.arcologies[0].FSHedonisticDecadence !== "unset") { + FSArray.push("Hedonistic"); + } + if (V.arcologies[0].FSIntellectualDependency !== "unset") { + FSArray.push("Intellectual Dependency"); + } else if (V.arcologies[0].FSSlaveProfessionalism !== "unset") { + FSArray.push("Slave Professionalism"); + } + if (V.arcologies[0].FSPetiteAdmiration !== "unset") { + FSArray.push("Petite Admiration"); + } else if (V.arcologies[0].FSStatuesqueGlorification !== "unset") { + FSArray.push("Statuesque Glorification"); + } + if (V.arcologies[0].FSChattelReligionist !== "unset") { + FSArray.push("Chattel Religionist"); + } + if (V.arcologies[0].FSRomanRevivalist !== "unset") { + FSArray.push("Roman Revivalist"); + } else if (V.arcologies[0].FSNeoImperialist !== "unset") { + FSArray.push("Neo Imperialist"); + } else if (V.arcologies[0].FSAztecRevivalist !== "unset") { + FSArray.push("Aztec Revivalist"); + } else if (V.arcologies[0].FSEgyptianRevivalist !== "unset") { + FSArray.push("Egyptian Revivalist"); + } else if (V.arcologies[0].FSEdoRevivalist !== "unset") { + FSArray.push("Edo Revivalist"); + } else if (V.arcologies[0].FSArabianRevivalist !== "unset") { + FSArray.push("Arabian Revivalist"); + } else if (V.arcologies[0].FSChineseRevivalist !== "unset") { + FSArray.push("Chinese Revivalist"); + } + const _FS = (FSArray.length > 0) ? FSArray.random() : "none"; + + let r = []; + r.push(`At night, the best living areas in the arcology offer a constant mélange of selective entertainments. There's a perpetual social scrum of who is to be invited to what going on, and you occupy a preeminent place atop it, mostly aloof from the struggles of your citizens for recognition and influence. You're invited to almost everything, since everyone who lives here knows the value of being in favor with the owner of the arcology. Invitations to your parties, of course, are some of the most valuable social currency in the arcology and one of V.assistant.name's most important duties is to help you manage them without wasting your valuable time. It's not actually necessary for you to attend your own parties, since almost everyone will be glad to be seen in the entertainment area of the penthouse whether or not the`); + if (V.PC.title === 1) { + r.push(`proprietor`); + } else { + r.push(`proprietress`); + } + r.push(` is actually present.`); + // <br><br> + r.push(`But tonight, you've put in an appearance. Your citizens are drinking your`); + if (V.arcologies[0].FSPastoralist !== "unset") { + r.push(`milk`); + } else if (V.arcologies[0].FSRestart !== "unset") { + r.push(`finest alcohol`); + } else { + r.push(`alcohol`); + } + r.push(` and eating your food, though of course they helped pay for it through their rent. They're performing a complex dance of social dominance, and it all radiates around you, with complex unspoken rules of collective approval governing which citizens cycle past you for a word, and for how long. During a low point in the ebb and flow,`); + switch (_FS) { + case "Subjugationist": + case "Supremacist": + r.push(`a handsome, racially pure young man`); + case "Gender Radicalist": + r.push(`a cute, androgynous-faced girl with nice breasts`); + case "Gender Fundamentalist": + r.push(`a dominant-looking man`); + case "Repopulationist": + r.push(`a dominant-looking young man with a nice bulge in his pants`); + case "Eugenics": + r.push(`a stunningly handsome man`); + case "Paternalist": + r.push(`a pretty, upbeat young man`); + case "Degradationist": + r.push(`a confident man`); + case "Body Purist": + r.push(`a clean-looking young man`); + case "Transformation Fetishist": + r.push(`a nicely augmented boy, judging by the bulge in his crotch and down his pant leg,`); + case "Youth Preferentialist": + if (V.minimumSlaveAge < 13) { + r.push(`an adorable little shota`); + } else if (V.minimumSlaveAge < 18) { + r.push(`a cute teenage boy`); + } else { + r.push(`a cute young man`); + } + case "Maturity Preferentialist": + r.push(`a handsome, mature man`); + case "Slimness Enthusiast": + r.push(`a slim young thing`); + case "Asset Expansionist": + r.push(`a hung young man, with specially tailored pants to contain his junk,`); + case "Pastoralist": + r.push(`a chubby young man`); + case "Physical Idealist": + r.push(`a hot, buff man`); + case "Hedonistic": + r.push(`a cutely chubby young man`); + case "Chattel Religionist": + r.push(`a cute, devout-looking young man`); + case "Roman Revivalist": + r.push(`a proper young Roman man`); + case "Neo Imperialist": + r.push(`a dashing young Imperial Knight with piercing blue eyes`); + case "Aztec Revivalist": + r.push(`a natural Aztec beauty`); + case "Egyptian Revivalist": + r.push(`a handsome, sun-kissed man`); + case "Edo Revivalist": + r.push(`a handsome Edo man`); + case "Arabian Revivalist": + r.push(`a handsome Arabian prince`); + case "Chinese Revivalist": + r.push(`a handsome Chinese man`); + case "Intellectual Dependency": + r.push(`a cute party boy`); + case "Slave Professionalism": + r.push(`a handsome, experienced man`); + case "Petite Admiration": + r.push(`a delightfully short young man`); + case "Statuesque Glorification": + r.push(`a towering figure`); + default: + r.push(`a cute young man`); + } + r.push(`sidles up to you.`); + if (_FS !== "Gender Radicalist") { + r.push(`He begins to introduce himself, but one of the advantages of your connection to the arcology is that you always know who everyone is, and you greet him by name, which people have never learned not to be impressed by`); + } else { + r.push(`She begins to introduce herself and, not to your surprise, she is in fact a he`); + } + r.push(`. He gushes about some of your recent `); + if (_FS !== "none") { + _FS; + } + r.push(`actions, displaying an unusual grasp of what you've been planning. Despite his sincere interest, he's obviously got something else on his mind.`); + // <br><br> + r.push(`He's yours for the taking, if you want him, and if his praise and proximity weren't enough to make that clear, he manages to`); + switch (_FS) { + case "Subjugationist": + case "Supremacist": + r.push(`flash you a view straight down his pants at his ethnically superior dick.`); + case "Gender Radicalist": + r.push(`flex, popping his shirt's buttons and freeing his well crafted breasts.`); + case "Gender Fundamentalist": + r.push(`wrap his arm around you and whisper sweet nothings in your ear.`); + case "Repopulationist": + if (V.PC.belly >= 100) { + r.push(`grope your pregnancy, paying close attention to your navel.`); + } else { + r.push(`press up against you and wrap his arms around your flat belly. "You'd make a lovely mother, you know?"`); + } + case "Eugenics": + r.push(`give you an excellent view of a little black book filled with all sorts of connections.`); + case "Paternalist": + r.push(`wrap his arm over your shoulder, presuming on the egalitarian nature of your Paternalist society to flirt a little aggressively.`); + case "Degradationist": + r.push(`pull his tight pants down slightly to reveal to tip of his barbell pierced, erect cock.`); + case "Body Purist": + r.push(`push up behind you, his natural cock pressing against your butt.`); + case "Transformation Fetishist": + r.push(`lift his shirt, revealing his oversized erection extending from his pants.`); + case "Youth Preferentialist": + r.push(`perfectly balance his youthful, innocent advances with the proper decorum between you and a citizen.`); + case "Maturity Preferentialist": + r.push(`perfectly balance his experienced, well-tuned advances with the proper decorum between you and a citizen.`); + case "Slimness Enthusiast": + r.push(`turn from side to side as he flirts with you in a way that shows off his lithe, flexible body.`); + case "Asset Expansionist": + r.push(`shift his stance enough that his enormous, beach ball-like testicles and forearm sized cock tear the seam of his pants, springing clear to offer themselves glorious and nude.`); + case "Pastoralist": + r.push(`let you know that he's almost entirely milk-fed, while pressing his soft body against yours.`); + case "Physical Idealist": + r.push(`sweep you off your feet into a bridal carry, demonstrating his strength.`); + case "Hedonistic": + r.push(`lean his plump body into yours, popping several of his straining buttons in the process.`); + case "Chattel Religionist": + r.push(`assume just a hint of a Chattel Religionist devotional pose used to request to penetrate. It's heavy flirting, of a modern religious sort.`); + case "Aztec Revivalist": + r.push(`hint that his devotion, which is the most important thing, cannot be besmirched by tasting your divine power.`); + case "Intellectual Dependency": + r.push(`push his prominent erection against your leg.`); + case "Slave Professionalism": + r.push(`whisper a tantalizing series of positions you two could share into your ear.`); + case "Petite Admiration": + r.push(`rest his head against your hip.`); + case "Statuesque Glorification": + r.push(`give you an affectionate pat on the head.`); + default: + r.push(`flirt with you quite hard without crossing any lines between a citizen and an arcology owner.`); + } + r.push(`He's clearly attracted to you; even the most consummate actor would have difficulty fooling you, and his breath is a little quick, his pupils are a bit dilated, and he's blushing cutely. But he's no fool, either. A casual liaison with ${PCTitle()} would be a tremendous social boost for him.`); + + // <span id="result"> + // <<link "Keep aloof without offending him">> + // <<replace "#result">> + r.push(`You thank him for his praise, weighting the words in just the right way to communicate that you consider his flirtations worthy compliments, and nothing more. He understands immediately, communicating acceptance and pleasure at his own daring with nothing more than a thankful look in your eyes. This is how you approach matters like this. You are the ruler of this place and it behooves you to maintain a balance atop all your citizens without showing any susceptibility to solicitation. A little incident like this has little effect on its own, but your habit of maintaining proper reserve creates a reputation for judiciousness that <span class="green">businesspeople consider attractive for arcology investment.</span>`); + V.arcologies[0].prosperity += 3; + // <</replace>> + // <</link>> + // <br> + // <<link "To them that hath, it shall be given">> + // <<replace "#result">> + r.push(`You're not exactly starved for casual sex, but you've never thought there was any such thing as too much of a good thing.`); + if (_FS === "Physical Idealist" || _FS === "Statuesque Glorification") { + r.push(`You nudge him in the ribs and motion to the door.`); + } else if (_FS === "Petite Admiration") { + r.push(`You place your hand on the nap of his neck and begin to lead him away.`); + } else { + r.push(`You pull his arm around your waist.`); + } + r.push(`You hear a slight gasp from him as he realizes that his gambit has succeeded with more immediate effect than he expected. He shivers with anticipation as you steer him back through a side door, grabbing a pair of glasses of `); + if (V.PC.refreshmentType === 1) { + r.push(`${V.PC.refreshment}`); + } else { + r.push(`liquor`); + } + r.push(` on the way, and making a discreet exit towards your private suite.`); + if (S.Concubine) { + // <<setLocalPronouns S.Concubine>> + if (S.Concubine.intelligence+S.Concubine.intelligenceImplant > 50) { + r.push(`${S.Concubine.slaveName} is there, of course, and ${he} instantly`); + if (canSee(S.Concubine)) { + r.push(`sees`); + } else { + r.push(`realizes`); + } + r.push(` that ${his} continued presence for a ménage à trois is wanted by both you and your guest.`); + } else if (S.Concubine.intelligence+S.Concubine.intelligenceImplant < -50) { + r.push(`${S.Concubine.slaveName} is there, of course, absentmindly doing whatever it is ${he} does when you are not around, and unsurprisingly fails to`); + if (canSee(S.Concubine)) { + r.push(`see`); + } else { + r.push(`realize`); + } + r.push(` that ${his} presence might not be wanted.`); + } else if (S.Concubine.fetish === "mindbroken") { + r.push(`${S.Concubine.slaveName} is there, of course, completely indifferent to you or your guest's presence.`); + } + } + r.push(`Your guest restrains his eager praise now that you're in private, but his wide-eyed appreciation of your domain is compliment enough. Once in your suite, you undress him, revealing`); + switch (_FS) { + case "Subjugationist": + case "Supremacist": + r.push(`his fresh, pure body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Gender Radicalist": + r.push(`perky fake breasts and a stiff dick as you gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Gender Fundamentalist": + r.push(`a fine body with a proud erection. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); + if (V.PC.belly >= 5000) { + r.push(`begins massaging your rounded middle`); + } else { + r.push(`groping your `); + if (V.PC.boobs >= 1000) { + r.push(`huge breasts`); + } else if (V.PC.boobs >= 650) { + r.push(`ample breasts`); + } else if (V.PC.boobs >= 300) { + r.push(`cute breasts`); + } else { + r.push(`butt`); + } + } + r.push(`, distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. Through the haze of your lust, you can't help but feel your drink tasted off.`); + V.PC.forcedFertDrugs += 2; + case "Repopulationist": + V.PC.forcedFertDrugs += 10; + r.push(`a hot young body with an eager erection. Before you can tip him onto your bed; he pulls your evening dress off, spins you around and lowers you, back first, onto the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); + if (V.PC.belly >= 5000) { + r.push(`begins earnestly groping your pregnancy`); + } else { + r.push(`grabs your hips and pushes even deeper into you`); + } + r.push(`, distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. `); + if (V.PC.belly < 100) { + r.push(`Unsatisfied with your body, he guides you into a position more favorable for conception`); + } else { + r.push(`Crazed with lust over your baby bump, he guides you into a position more comfortable for a pregnant woman`); + } + r.push(` and carries on fucking you. By the time he is done with you, you'll be leaking cum for the rest of the evening.`); + if (V.PC.forcedFertDrugs > 10) { + r.push(` He seemed certain you'd become enormously pregnant from his efforts; he could have been fantasizing, but your drink did taste a little funny and you have a pleasant tingling in your lower belly.`); + } + case "Eugenics": + r.push(`his glorious, flawless body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Paternalist": + r.push(`a nice young body, with all the little attractions and flaws of a free citizen's, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Degradationist": + r.push(`a taut body covered in dominant tattoos and spiky piercings, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, especially one involving piercings rubbing all the right places, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Body Purist": + r.push(`a delectably clean young body unmarred by any trace of surgical intervention, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Transformation Fetishist": + r.push(`a massive fake bubble butt to go with his extended erection, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, taking as much as you physically can, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Youth Preferentialist": + if (V.minimumSlaveAge < 13) { + r.push(`that he is adorable, but may not be satisfying, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him, pull him over yourself and guide his tiny penis into you. Instinct quickly takes hold as he begins thrusting and hugs tightly to your `); + if (V.PC.belly >= 5000) { + r.push(`pregnant belly`); + } else { + r.push(`larger body`); + } + r.push(`. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You hold him close and buck against him, trying to make up for his size, until he releases a small load into your depths. You follow not long after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Exhausted, he passes out `); + if (V.PC.belly >= 5000) { + r.push(`against your middle`); + } else if (V.PC.boobs >= 1000) { + r.push(`in your huge bust`); + } else if (V.PC.boobs >= 650) { + r.push(`in your ample bust`); + } else if (V.PC.boobs >= 300) { + r.push(`in your cute breasts`); + } else { + r.push(`atop you`); + } + r.push(`; where he lies until you finish playing with him and move him beside you. You return to your needy crotch to finish up as he snuggles closer to your side.`); + } else if (V.minimumSlaveAge < 18) { + r.push(`that his whole body looks fresh, untouched, and very young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + } else { + r.push(`that his whole body looks fresh, untouched, and quite young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + } + case "Maturity Preferentialist": + r.push(`a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); + if (V.PC.belly >= 5000) { + r.push(`begins massaging your rounded middle`); + } else { + r.push(`groping your `); + if (V.PC.boobs >= 1000) { + r.push(`huge breasts`); + } else if (V.PC.boobs >= 650) { + r.push(`ample breasts`); + } else if (V.PC.boobs >= 300) { + r.push(`cute breasts`); + } else { + r.push(`butt`); + } + } + r.push(`, calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, despite his age, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Slimness Enthusiast": + r.push(`lean muscles, a smooth waist, trim hips and a cute little ass, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Asset Expansionist": + r.push(`an inhumanly enormous ass to counterbalance those enormous balls and a semi-hard cock, unable to become fully erect. You have to struggle to get him onto your bed. You tease him as you remove your evening dress, crawl over him and`); + if (V.PC.newVag === 1) { + r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you.`); + } else if (V.PC.vagina > 3) { + r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you like nothing does lately.`); + } else if (V.PC.vagina > 2) { + r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at how full you are.`); + } else if (V.PC.vagina > 1) { + r.push(`barely manage to get his cockhead into your pussy.`); + } else { + r.push(`find he is too big to fit in you. You settle for the tip instead.`); + } + r.push(`Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly massaging his cock as it fills you pussy. As you feel his climax mounting, he taps you and warns you that you won't be able to handle his orgasm.`); + if (V.PC.preg > 20) { + r.push(`For your unborn child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); + } else if (V.PC.preg > 10) { + r.push(`For your growing child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); + } else if (V.PC.preg > 0) { + r.push(`Feeling like you should heed his advice, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); + } else { + r.push(`Quivering with your own pending orgasm, you ignore him and keep going, achieving climax as he blows a near endless load into your womb.`); + if (V.PC.skill.cumTap === 0) { + r.push(`The quantity of cum quickly overwhelms you and backflows out of you as you fall into your lover's waiting arms. He lays you to his side as he continues showering you both with cum.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 5) { + r.push(`You last for several seconds before the sheer size of his load forces you off his dick and into his waiting arms. He lays you to his side, gently patting your cum-bloated middle, as he continues showering you both with cum.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 10) { + r.push(`You manage to take a respectable portion of his load before it begins backflowing out of you. He massages your cum-filled belly as he finishes unloading across your back. "Most girls can't even come close to handling it at all, I'm impressed."`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 15) { + r.push(`You manage to take nearly half of his load before it begins backflowing out of you. He cradles your cum-stuffed belly as he finishes unloading across your back. "Few girls can even come close to handling that much of it, I'm impressed." He helps you down, making sure to provide extra support for your huge, full-term looking belly.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 20) { + r.push(`You manage to take nearly two thirds of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you look like a woman on the verge of childbirth. "Damn girl, you look like you're gonna pop, I'm impressed." He helps you down, making sure to provide extra support for your enormous, taut belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 25) { + r.push(`You manage to take nearly three fourths of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time you can't take any more, you look like you are ready to burst with triplets. "Damn girl, just how stretchy are you? I'm impressed." He helps you down, making sure to provide extra support for your massive, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); + V.PC.skill.cumTap++; + } else { + r.push(`You manage to take his entire load without spilling a drop. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time he's done, you look ready to birth octuplets. "I can't believe you took it all; incredible. Are you going to be OK?" He helps you down, making sure to provide extra support for your immense, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); + V.PC.skill.cumTap++; + } + } + case "Pastoralist": + r.push(`soft, milk-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Physical Idealist": + r.push(`a chiseled Adonis. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You `); + if (V.PC.belly >= 5000) { + r.push(`squirm in discomfort until he turns you around and gives your pregnancy room`); + } else if (V.PC.boobs >= 1000) { + r.push(`squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady`); + } else if (V.PC.boobs >= 650) { + r.push(`push your `); + if (V.PC.boobs >= 900) { + r.push(`ample `); + } + r.push(`breasts against his firm pecs`); + } else if (V.PC.boobs >= 300) { + r.push(`push your cute breasts against his firm pecs`); + } else { + r.push(`allow him pull your flat chest to his firm pecs`); + } + r.push(`, before he starts showing off his strength. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Hedonistic": + r.push(`soft, well-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. He's winded after just one go, but offers up a cache of snacks he was hiding as an apology. You snuggle up to each other and sensually feed one another until he is ready for round two.`); + case "Chattel Religionist": + r.push(`a fresh and ready body, adorned here and there with sensual devotional jewelry, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Egyptian Revivalist": + r.push(`a strong, tight, bronze body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Intellectual Dependency": + r.push(`a young body eager for sex, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Slave Professionalism": + r.push(`a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); + if (V.PC.belly >= 5000) { + r.push(`shifts you to a position more befitting your gravidity`); + } else { + r.push(`groping your `); + if (V.PC.boobs >= 1000) { + r.push(`huge breasts`); + } else if (V.PC.boobs >= 650) { + r.push(`ample breasts`); + } else if (V.PC.boobs >= 300) { + r.push(`cute breasts`); + } else { + r.push(`butt`); + } + } + r.push(`, calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and maneuvers you to a fresh position and begins anew, quickly bringing to a second orgasm and drawing an adorable moan out of you. His bag of tricks is nigh endless; you spend the night having sex in new and exciting ways.`); + case "Petite Admiration": + r.push(`that he is adorable, and not lacking at all down there, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him and pull him into you. He begins thrusting excitedly and hugs tightly to your `); + if (V.PC.belly >= 5000) { + r.push(`pregnant belly`); + } else { + r.push(`larger body`); + } + r.push(`, clearly into how much bigger you are than him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that spares his tiny form most of the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + case "Statuesque Glorification": + r.push(`a glorified titan. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You `); + if (V.PC.belly >= 5000) { + r.push(`squirm in discomfort until he turns you around and gives your pregnancy room`); + } else if (V.PC.boobs >= 1000) { + r.push(`squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady`); + } else if (V.PC.boobs >= 650) { + r.push(`push your `); + if (V.PC.boobs >= 900) { + r.push(`ample `); + } + r.push(`breasts against his toned abs`); + } else if (V.PC.boobs >= 300) { + r.push(`push your cute breasts against his toned abs`); + } + r.push(`, before he really takes advantage of your size difference. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + default: + r.push(`a hot young body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(` (one that forces him to bear the weight of your heavy middle) `); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + } + if (_FS === "Asset Expansionist") { + if (S.Concubine && canMove(S.Concubine) && S.Concubine.fetish !== "mindbroken") { + r.push(`${S.Concubine.slaveName} eagerly joins the two of you to help clean the massive cumshot up.`); + } + } else if (_FS !== "Youth Preferentialist") { + if (S.Concubine && canMove(S.Concubine) && S.Concubine.fetish !== "mindbroken") { + r.push(`The `); + if (canSee(S.Concubine)) { + r.push(`view of your bouncing tits`); + } else if (canHear(S.Concubine)) { + r.push(`sound of lusty sex`); + } else { + r.push(`vibrations from your bed bouncing up and down`); + } + r.push(` is too much for ${S.Concubine.slaveName} to resist and so ${he} crawls over to kiss and caress you as your lover finishes.`); + } + } + r.push(`Sometimes society overlooks that you are a woman and have certain needs, but your lover tonight knows exactly how to treat you. When your guest `); + if (_FS !== "Youth Preferentialist") { + r.push(`is finally spent`); + } else { + r.push(`wakes up from against your body`); + } + r.push(`, he showers, dresses, and leaves discreetly, offering you a proper thank you. This is the kind of thing that <span class="green">builds a lasting reputation</span> in the Free Cities.`); + repX(5000, "event"); + if (canGetPregnant(V.PC)) { + switch (_FS) { + case "Asset Expansionist": + case "Repopulationist": + case "Slave Professionalism": + r.push(knockMeUp(V.PC, 100, 0, -2)); + case "Eugenics": + case "Gender Fundamentalist": + case "Maturity Preferentialist": + case "Paternalist": + case "Physical Idealist": + case "Statuesque Glorification": + r.push(knockMeUp(V.PC, 60, 0, -2)); + default: + r.push(knockMeUp(V.PC, 40, 0, -2)); + } + } + if (_FS !== "none") { + const desc = "a tasteful morning-after message, complete with number, from a handsome " + _FS + " citizen"; + V.trinkets.push(desc); + } else { + V.trinkets.push("a tasteful morning-after message, complete with number, from a handsome citizen"); + } + // <</replace>> + // <</link>> + if (_FS !== "none") { + // <br> + // <<link "Emphasize his societal style with exhibitionism">> + // <<replace "#result">> + r.push(`You turn to face him straight on, and something about the look in your eye fills him with mixed apprehension and anticipation. You agree with his banter and praise him for being so forward-thinking, before transitioning to more direct praise of his style and then his body. You're speaking in a tone that cuts through the room, and by the time you kiss your willing conquest, there's not a person in the room who isn't paying attention. They all understand the message: this gathering is turning into something else, now. Those few who aren't willing to fuck in public withdraw, and everyone who didn't come with a sexual partner sends urgent messages to have appropriate slaves brought from their apartments. You make out with him for a while, letting everyone make arrangements, and then pull his clothes off, making sure his`); + switch (_FS) { + case "Subjugationist": + case "Supremacist": + r.push(`superior body`); + if (_FS === "Supremacist") { + V.arcologies[0].FSSupremacist += 5; + } else { + V.arcologies[0].FSSubjugationist += 5; + } + case "Gender Radicalist": + r.push(`tits and stiff dick`); + V.arcologies[0].FSGenderRadicalist += 5; + case "Gender Fundamentalist": + r.push(`dominant masculinity`); + V.arcologies[0].FSGenderFundamentalist += 5; + case "Repopulationist": + r.push(`urge to father a daughter`); + V.arcologies[0].FSRepopulationFocus += 5; + case "Eugenics": + r.push(`perfect body`); + V.arcologies[0].FSRestart += 5; + case "Paternalist": + r.push(`appealing body`); + V.arcologies[0].FSPaternalist += 5; + case "Degradationist": + r.push(`dominant form`); + V.arcologies[0].FSDegradationist += 5; + case "Body Purist": + r.push(`natural body`); + V.arcologies[0].FSBodyPurist += 5; + case "Transformation Fetishist": + r.push(`extended dick`); + V.arcologies[0].FSTransformationFetishist += 5; + case "Youth Preferentialist": + if (V.minimumSlaveAge < 13) { + r.push(`boyish`); + } else if (V.minimumSlaveAge < 18) { + r.push(`teenage`); + } else { + r.push(`young`); + } + r.push(`body`); + V.arcologies[0].FSYouthPreferentialist += 5; + case "Maturity Preferentialist": + r.push(`mature body`); + V.arcologies[0].FSMaturityPreferentialist += 5; + case "Slimness Enthusiast": + r.push(`slender body`); + V.arcologies[0].FSSlimnessEnthusiast += 5; + case "Asset Expansionist": + r.push(`huge genitals`); + V.arcologies[0].FSAssetExpansionist += 5; + case "Pastoralist": + r.push(`milk-fed, chubby body`); + V.arcologies[0].FSPastoralist += 5; + case "Physical Idealist": + r.push(`ripped body`); + V.arcologies[0].FSPhysicalIdealist += 5; + case "Hedonistic": + r.push(`plump body`); + V.arcologies[0].FSHedonisticDecadence += 5; + case "Chattel Religionist": + r.push(`divine sexuality`); + V.arcologies[0].FSChattelReligionist += 5; + case "Roman Revivalist": + r.push(`muscular form`); + V.arcologies[0].FSRomanRevivalist += 5; + case "Neo Imperialist": + r.push(`chiseled muscles`); + V.arcologies[0].FSNeoImperialist += 5; + case "Aztec Revivalist": + r.push(`well-built form`); + V.arcologies[0].FSAztecRevivalist += 5; + case "Egyptian Revivalist": + r.push(`beautiful tanned body`); + V.arcologies[0].FSEgyptianRevivalist += 5; + case "Arabian Revivalist": + case "Chinese Revivalist": + case "Edo Revivalist": + r.push(`graceful form`); + if (_FS === "Edo Revivalist") { + V.arcologies[0].FSEdoRevivalist += 5; + } else if (_FS === "Arabian Revivalist") { + V.arcologies[0].FSArabianRevivalist += 5; + } else { + V.arcologies[0].FSChineseRevivalist += 5; + } + case "Intellectual Dependency": + r.push(`extreme horniness`); + V.arcologies[0].FSIntellectualDependency += 5; + case "Slave Professionalism": + r.push(`experienced body`); + V.arcologies[0].FSSlaveProfessionalism += 5; + case "Petite Admiration": + r.push(`tiny form`); + V.arcologies[0].FSPetiteAdmiration += 5; + case "Statuesque Glorification": + r.push(`towering form`); + V.arcologies[0].FSStatuesqueGlorification += 5; + default: + r.push(`hot young body`); + } + r.push(`is obvious to everyone. The message is clear, and your guest of honor is the center of attention as you take him there in view of the arcology's leading citizens. Naturally, the story percolates, making it clear that there's nothing you won't do to <span class="green">further acceptance of${_FS} principles.</span>`); + if (canGetPregnant(V.PC)) { + r.push(knockMeUp(V.PC, 40, 0, -2)); + } + // <</replace>> + // <</link>> + } + // </span> + } +}; diff --git a/src/pregmod/reMaleCitizenHookup.tw b/src/pregmod/reMaleCitizenHookup.tw deleted file mode 100644 index 584d220f7b9..00000000000 --- a/src/pregmod/reMaleCitizenHookup.tw +++ /dev/null @@ -1,478 +0,0 @@ -:: RE male citizen hookup [nobr] - -<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">> - -<<set _FS = []>> -<<if $arcologies[0].FSSubjugationist != "unset">> - <<set _FS.push("Subjugationist")>> -<</if>> -<<if $arcologies[0].FSSupremacist != "unset">> - <<set _FS.push("Supremacist")>> -<</if>> -<<if $arcologies[0].FSGenderRadicalist != "unset">> - <<set _FS.push("Gender Radicalist")>> -<<elseif $arcologies[0].FSGenderFundamentalist != "unset">> - <<set _FS.push("Gender Fundamentalist")>> -<</if>> -<<if $arcologies[0].FSRepopulationFocus != "unset">> - <<set _FS.push("Repopulationist")>> -<<elseif $arcologies[0].FSRestart != "unset">> - <<set _FS.push("Eugenics")>> -<</if>> -<<if $arcologies[0].FSPaternalist != "unset">> - <<set _FS.push("Paternalist")>> -<<elseif $arcologies[0].FSDegradationist != "unset">> - <<set _FS.push("Degradationist")>> -<</if>> -<<if $arcologies[0].FSBodyPurist != "unset">> - <<set _FS.push("Body Purist")>> -<<elseif $arcologies[0].FSTransformationFetishist != "unset">> - <<set _FS.push("Transformation Fetishist")>> -<</if>> -<<if $arcologies[0].FSYouthPreferentialist != "unset">> - <<set _FS.push("Youth Preferentialist")>> -<<elseif $arcologies[0].FSMaturityPreferentialist != "unset">> - <<set _FS.push("Maturity Preferentialist")>> -<</if>> -<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> - <<set _FS.push("Slimness Enthusiast")>> -<<elseif $arcologies[0].FSAssetExpansionist != "unset">> - <<set _FS.push("Asset Expansionist")>> -<</if>> -<<if $arcologies[0].FSPastoralist != "unset">> - <<set _FS.push("Pastoralist")>> -<</if>> -<<if $arcologies[0].FSPhysicalIdealist != "unset">> - <<set _FS.push("Physical Idealist")>> -<<elseif $arcologies[0].FSHedonisticDecadence != "unset">> - <<set _FS.push("Hedonistic")>> -<</if>> -<<if $arcologies[0].FSIntellectualDependency != "unset">> - <<set _FS.push("Intellectual Dependency")>> -<<elseif $arcologies[0].FSSlaveProfessionalism != "unset">> - <<set _FS.push("Slave Professionalism")>> -<</if>> -<<if $arcologies[0].FSPetiteAdmiration != "unset">> - <<set _FS.push("Petite Admiration")>> -<<elseif $arcologies[0].FSStatuesqueGlorification != "unset">> - <<set _FS.push("Statuesque Glorification")>> -<</if>> -<<if $arcologies[0].FSChattelReligionist != "unset">> - <<set _FS.push("Chattel Religionist")>> -<</if>> -<<if $arcologies[0].FSRomanRevivalist != "unset">> - <<set _FS.push("Roman Revivalist")>> -<<elseif $arcologies[0].FSNeoImperialist != "unset">> - <<set _FS.push("Neo Imperialist")>> -<<elseif $arcologies[0].FSAztecRevivalist != "unset">> - <<set _FS.push("Aztec Revivalist")>> -<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">> - <<set _FS.push("Egyptian Revivalist")>> -<<elseif $arcologies[0].FSEdoRevivalist != "unset">> - <<set _FS.push("Edo Revivalist")>> -<<elseif $arcologies[0].FSArabianRevivalist != "unset">> - <<set _FS.push("Arabian Revivalist")>> -<<elseif $arcologies[0].FSChineseRevivalist != "unset">> - <<set _FS.push("Chinese Revivalist")>> -<</if>> -<<if _FS.length > 0>> - <<set _FS = _FS.random()>> -<<else>> - <<set _FS = "none">> -<</if>> - -At night, the best living areas in the arcology offer a constant mélange of selective entertainments. There's a perpetual social scrum of who is to be invited to what going on, and you occupy a preeminent place atop it, mostly aloof from the struggles of your citizens for recognition and influence. You're invited to almost everything, since everyone who lives here knows the value of being in favor with the owner of the arcology. Invitations to your parties, of course, are some of the most valuable social currency in the arcology and one of $assistant.name's most important duties is to help you manage them without wasting your valuable time. It's not actually necessary for you to attend your own parties, since almost everyone will be glad to be seen in the entertainment area of the penthouse whether or not the <<if $PC.title == 1>>proprietor<<else>>proprietress<</if>> is actually present. -<br><br> -But tonight, you've put in an appearance. Your citizens are drinking your <<if $arcologies[0].FSPastoralist != "unset">>milk<<elseif $arcologies[0].FSRestart != "unset">>finest alcohol<<else>>alcohol<</if>> and eating your food, though of course they helped pay for it through their rent. They're performing a complex dance of social dominance, and it all radiates around you, with complex unspoken rules of collective approval governing which citizens cycle past you for a word, and for how long. During a low point in the ebb and flow, -<<switch _FS>> -<<case "Subjugationist" "Supremacist">> - a handsome, racially pure young man -<<case "Gender Radicalist">> - a cute, androgynous-faced girl with nice breasts -<<case "Gender Fundamentalist">> - a dominant-looking man -<<case "Repopulationist">> - a dominant-looking young man with a nice bulge in his pants -<<case "Eugenics">> - a stunningly handsome man -<<case "Paternalist">> - a pretty, upbeat young man -<<case "Degradationist">> - a confident man -<<case "Body Purist">> - a clean-looking young man -<<case "Transformation Fetishist">> - a nicely augmented boy, judging by the bulge in his crotch and down his pant leg, -<<case "Youth Preferentialist">> - <<if $minimumSlaveAge < 13>> - an adorable little shota - <<elseif $minimumSlaveAge < 18>> - a cute teenage boy - <<else>> - a cute young man - <</if>> -<<case "Maturity Preferentialist">> - a handsome, mature man -<<case "Slimness Enthusiast">> - a slim young thing -<<case "Asset Expansionist">> - a hung young man, with specially tailored pants to contain his junk, -<<case "Pastoralist">> - a chubby young man -<<case "Physical Idealist">> - a hot, buff man -<<case "Hedonistic">> - a cutely chubby young man -<<case "Chattel Religionist">> - a cute, devout-looking young man -<<case "Roman Revivalist">> - a proper young Roman man -<<case "Neo Imperialist">> - a dashing young Imperial Knight with piercing blue eyes -<<case "Aztec Revivalist">> - a natural Aztec beauty -<<case "Egyptian Revivalist">> - a handsome, sun-kissed man -<<case "Edo Revivalist">> - a handsome Edo man -<<case "Arabian Revivalist">> - a handsome Arabian prince -<<case "Chinese Revivalist">> - a handsome Chinese man -<<case "Intellectual Dependency">> - a cute party boy -<<case "Slave Professionalism">> - a handsome, experienced man -<<case "Petite Admiration">> - a delightfully short young man -<<case "Statuesque Glorification">> - a towering figure -<<default>> - a cute young man -<</switch>> -sidles up to you. <<if _FS != "Gender Radicalist">>He begins to introduce himself, but one of the advantages of your connection to the arcology is that you always know who everyone is, and you greet him by name, which people have never learned not to be impressed by<<else>>She begins to introduce herself and, not to your surprise, she is in fact a he<</if>>. He gushes about some of your recent <<if _FS != "none">>_FS <</if>>actions, displaying an unusual grasp of what you've been planning. Despite his sincere interest, he's obviously got something else on his mind. -<br><br> -He's yours for the taking, if you want him, and if his praise and proximity weren't enough to make that clear, he manages to -<<switch _FS>> -<<case "Subjugationist" "Supremacist">> - flash you a view straight down his pants at his ethnically superior dick. -<<case "Gender Radicalist">> - flex, popping his shirt's buttons and freeing his well crafted breasts. -<<case "Gender Fundamentalist">> - wrap his arm around you and whisper sweet nothings in your ear. -<<case "Repopulationist">> - <<if $PC.belly >= 100>> - grope your pregnancy, paying close attention to your navel. - <<else>> - press up against you and wrap his arms around your flat belly. "You'd make a lovely mother, you know?" - <</if>> -<<case "Eugenics">> - give you an excellent view of a little black book filled with all sorts of connections. -<<case "Paternalist">> - wrap his arm over your shoulder, presuming on the egalitarian nature of your Paternalist society to flirt a little aggressively. -<<case "Degradationist">> - pull his tight pants down slightly to reveal to tip of his barbell pierced, erect cock. -<<case "Body Purist">> - push up behind you, his natural cock pressing against your butt. -<<case "Transformation Fetishist">> - lift his shirt, revealing his oversized erection extending from his pants. -<<case "Youth Preferentialist">> - perfectly balance his youthful, innocent advances with the proper decorum between you and a citizen. -<<case "Maturity Preferentialist">> - perfectly balance his experienced, well-tuned advances with the proper decorum between you and a citizen. -<<case "Slimness Enthusiast">> - turn from side to side as he flirts with you in a way that shows off his lithe, flexible body. -<<case "Asset Expansionist">> - shift his stance enough that his enormous, beach ball-like testicles and forearm sized cock tear the seam of his pants, springing clear to offer themselves glorious and nude. -<<case "Pastoralist">> - let you know that he's almost entirely milk-fed, while pressing his soft body against yours. -<<case "Physical Idealist">> - sweep you off your feet into a bridal carry, demonstrating his strength. -<<case "Hedonistic">> - lean his plump body into yours, popping several of his straining buttons in the process. -<<case "Chattel Religionist">> - assume just a hint of a Chattel Religionist devotional pose used to request to penetrate. It's heavy flirting, of a modern religious sort. -<<case "Aztec Revivalist">> - hint that his devotion, which is the most important thing, cannot be besmirched by tasting your divine power. -<<case "Intellectual Dependency">> - push his prominent erection against your leg. -<<case "Slave Professionalism">> - whisper a tantalizing series of positions you two could share into your ear. -<<case "Petite Admiration">> - rest his head against your hip. -<<case "Statuesque Glorification">> - give you an affectionate pat on the head. -<<default>> - flirt with you quite hard without crossing any lines between a citizen and an arcology owner. -<</switch>> -He's clearly attracted to you; even the most consummate actor would have difficulty fooling you, and his breath is a little quick, his pupils are a bit dilated, and he's blushing cutely. But he's no fool, either. A casual liaison with <<= PCTitle()>> would be a tremendous social boost for him. -<br><br> - -<span id="result"> -<<link "Keep aloof without offending him">> - <<replace "#result">> - You thank him for his praise, weighting the words in just the right way to communicate that you consider his flirtations worthy compliments, and nothing more. He understands immediately, communicating acceptance and pleasure at his own daring with nothing more than a thankful look in your eyes. This is how you approach matters like this. You are the ruler of this place and it behooves you to maintain a balance atop all your citizens without showing any susceptibility to solicitation. A little incident like this has little effect on its own, but your habit of maintaining proper reserve creates a reputation for judiciousness that @@.green;businesspeople consider attractive for arcology investment.@@ - <<set $arcologies[0].prosperity += 3>> - <</replace>> -<</link>> -<br><<link "To them that hath, it shall be given">> - <<replace "#result">> - You're not exactly starved for casual sex, but you've never thought there was any such thing as too much of a good thing. - <<if _FS == "Physical Idealist" || _FS == "Statuesque Glorification">> - You nudge him in the ribs and motion to the door. - <<elseif _FS == "Petite Admiration">> - You place your hand on the nap of his neck and begin to lead him away. - <<else>> - You pull his arm around your waist. - <</if>> - You hear a slight gasp from him as he realizes that his gambit has succeeded with more immediate effect than he expected. He shivers with anticipation as you steer him back through a side door, grabbing a pair of glasses of <<if $PC.refreshmentType == 1>>$PC.refreshment<<else>>liquor<</if>> on the way, and making a discreet exit towards your private suite. - <<if _S.Concubine>> - <<setLocalPronouns _S.Concubine>> - <<if _S.Concubine.intelligence+_S.Concubine.intelligenceImplant > 50>> - _S.Concubine.slaveName is there, of course, and $he instantly <<if canSee(_S.Concubine)>>sees<<else>>realizes<</if>> that $his continued presence for a ménage à trois is wanted by both you and your guest. - <<elseif _S.Concubine.intelligence+_S.Concubine.intelligenceImplant < -50>> - _S.Concubine.slaveName is there, of course, absentmindly doing whatever it is $he does when you are not around, and unsurprisingly fails to <<if canSee(_S.Concubine)>>see<<else>>realize<</if>> that $his presence might not be wanted. - <<elseif _S.Concubine.fetish == "mindbroken">> - _S.Concubine.slaveName is there, of course, completely indifferent to you or your guest's presence. - <</if>> - <</if>> - Your guest restrains his eager praise now that you're in private, but his wide-eyed appreciation of your domain is compliment enough. Once in your suite, you undress him, revealing - <<switch _FS>> - <<case "Subjugationist" "Supremacist">> - his fresh, pure body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Gender Radicalist">> - perky fake breasts and a stiff dick as you gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Gender Fundamentalist">> - a fine body with a proud erection. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he <<if $PC.belly >= 5000>>begins massaging your rounded middle<<else>>groping your <<if $PC.boobs >= 1000>>huge breasts<<elseif $PC.boobs >= 650>>ample breasts<<elseif $PC.boobs >= 300>>cute breasts<<else>>butt<</if>><</if>>, distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. Through the haze of your lust, you can't help but feel your drink tasted off. - <<set $PC.forcedFertDrugs += 2>> - <<case "Repopulationist">> - <<set $PC.forcedFertDrugs += 10>> - a hot young body with an eager erection. Before you can tip him onto your bed; he pulls your evening dress off, spins you around and lowers you, back first, onto the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he <<if $PC.belly >= 5000>>begins earnestly groping your pregnancy<<else>>grabs your hips and pushes even deeper into you<</if>>, distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. <<if $PC.belly < 100>>Unsatisfied with your body, he guides you into a position more favorable for conception<<else>>Crazed with lust over your baby bump, he guides you into a position more comfortable for a pregnant woman<</if>> and carries on fucking you. By the time he is done with you, you'll be leaking cum for the rest of the evening.<<if $PC.forcedFertDrugs > 10>> He seemed certain you'd become enormously pregnant from his efforts; he could have been fantasizing, but your drink did taste a little funny and you have a pleasant tingling in your lower belly.<</if>> - <<case "Eugenics">> - his glorious, flawless body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Paternalist">> - a nice young body, with all the little attractions and flaws of a free citizen's, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Degradationist">> - a taut body covered in dominant tattoos and spiky piercings, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, especially one involving piercings rubbing all the right places, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Body Purist">> - a delectably clean young body unmarred by any trace of surgical intervention, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Transformation Fetishist">> - a massive fake bubble butt to go with his extended erection, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, taking as much as you physically can, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Youth Preferentialist">> - <<if $minimumSlaveAge < 13>> - that he is adorable, but may not be satisfying, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him, pull him over yourself and guide his tiny penis into you. Instinct quickly takes hold as he begins thrusting and hugs tightly to your <<if $PC.belly >= 5000>>pregnant belly<<else>>larger body<</if>>. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You hold him close and buck against him, trying to make up for his size, until he releases a small load into your depths. You follow not long after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Exhausted, he passes out <<if $PC.belly >= 5000>>against your middle<<elseif $PC.boobs >= 1000>>in your huge bust<<elseif $PC.boobs >= 650>>in your ample bust<<elseif $PC.boobs >= 300>>in your cute breasts<<else>>atop you<</if>>; where he lies until you finish playing with him and move him beside you. You return to your needy crotch to finish up as he snuggles closer to your side. - <<elseif $minimumSlaveAge < 18>> - that his whole body looks fresh, untouched, and very young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<else>> - that his whole body looks fresh, untouched, and quite young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <</if>> - <<case "Maturity Preferentialist">> - a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he <<if $PC.belly >= 5000>>begins massaging your rounded middle<<else>>groping your <<if $PC.boobs >= 1000>>huge breasts<<elseif $PC.boobs >= 650>>ample breasts<<elseif $PC.boobs >= 300>>cute breasts<<else>>butt<</if>><</if>>, calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, despite his age, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Slimness Enthusiast">> - lean muscles, a smooth waist, trim hips and a cute little ass, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Asset Expansionist">> - an inhumanly enormous ass to counterbalance those enormous balls and a semi-hard cock, unable to become fully erect. You have to struggle to get him onto your bed. You tease him as you remove your evening dress, crawl over him and - <<if $PC.newVag == 1>> - impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you. - <<elseif $PC.vagina > 3>> - impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you like nothing does lately. - <<elseif $PC.vagina > 2>> - impale yourself on his monster shaft as far as you can, quivering in joy at how full you are. - <<elseif $PC.vagina > 1>> - barely manage to get his cockhead into your pussy. - <<else>> - find he is too big to fit in you. You settle for the tip instead. - <</if>> - Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly massaging his cock as it fills you pussy. As you feel his climax mounting, he taps you and warns you that you won't be able to handle his orgasm. - <<if $PC.preg > 20>> - For your unborn child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up. - <<elseif $PC.preg > 10>> - For your growing child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up. - <<elseif $PC.preg > 0>> - Feeling like you should heed his advice, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up. - <<else>> - Quivering with your own pending orgasm, you ignore him and keep going, achieving climax as he blows a near endless load into your womb. - <<if $PC.skill.cumTap == 0>> - The quantity of cum quickly overwhelms you and backflows out of you as you fall into your lover's waiting arms. He lays you to his side as he continues showering you both with cum. - <<set $PC.skill.cumTap++>> - <<elseif $PC.skill.cumTap < 5>> - You last for several seconds before the sheer size of his load forces you off his dick and into his waiting arms. He lays you to his side, gently patting your cum-bloated middle, as he continues showering you both with cum. - <<set $PC.skill.cumTap++>> - <<elseif $PC.skill.cumTap < 10>> - You manage to take a respectable portion of his load before it begins backflowing out of you. He massages your cum-filled belly as he finishes unloading across your back. "Most girls can't even come close to handling it at all, I'm impressed." - <<set $PC.skill.cumTap++>> - <<elseif $PC.skill.cumTap < 15>> - You manage to take nearly half of his load before it begins backflowing out of you. He cradles your cum-stuffed belly as he finishes unloading across your back. "Few girls can even come close to handling that much of it, I'm impressed." He helps you down, making sure to provide extra support for your huge, full-term looking belly. - <<set $PC.skill.cumTap++>> - <<elseif $PC.skill.cumTap < 20>> - You manage to take nearly two thirds of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you look like a woman on the verge of childbirth. "Damn girl, you look like you're gonna pop, I'm impressed." He helps you down, making sure to provide extra support for your enormous, taut belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party. - <<set $PC.skill.cumTap++>> - <<elseif $PC.skill.cumTap < 25>> - You manage to take nearly three fourths of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time you can't take any more, you look like you are ready to burst with triplets. "Damn girl, just how stretchy are you? I'm impressed." He helps you down, making sure to provide extra support for your massive, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party. - <<set $PC.skill.cumTap++>> - <<else>> - You manage to take his entire load without spilling a drop. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time he's done, you look ready to birth octuplets. "I can't believe you took it all; incredible. Are you going to be OK?" He helps you down, making sure to provide extra support for your immense, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party. - <<set $PC.skill.cumTap++>> - <</if>> - <</if>> - <<case "Pastoralist">> - soft, milk-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Physical Idealist">> - a chiseled Adonis. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You <<if $PC.belly >= 5000>>squirm in discomfort until he turns you around and gives your pregnancy room<<elseif $PC.boobs >= 1000>>squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady<<elseif $PC.boobs >= 650>>push your <<if $PC.boobs >= 900>>ample <</if>>breasts against his firm pecs<<elseif $PC.boobs >= 300>>push your cute breasts against his firm pecs<<else>>allow him pull your flat chest to his firm pecs<</if>>, before he starts showing off his strength. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Hedonistic">> - soft, well-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. He's winded after just one go, but offers up a cache of snacks he was hiding as an apology. You snuggle up to each other and sensually feed one another until he is ready for round two. - <<case "Chattel Religionist">> - a fresh and ready body, adorned here and there with sensual devotional jewelry, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Egyptian Revivalist">> - a strong, tight, bronze body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Intellectual Dependency">> - a young body eager for sex, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Slave Professionalism">> - a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he <<if $PC.belly >= 5000>>shifts you to a position more befitting your gravidity<<else>>groping your <<if $PC.boobs >= 1000>>huge breasts<<elseif $PC.boobs >= 650>>ample breasts<<elseif $PC.boobs >= 300>>cute breasts<<else>>butt<</if>><</if>>, calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and maneuvers you to a fresh position and begins anew, quickly bringing to a second orgasm and drawing an adorable moan out of you. His bag of tricks is nigh endless; you spend the night having sex in new and exciting ways. - <<case "Petite Admiration">> - that he is adorable, and not lacking at all down there, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him and pull him into you. He begins thrusting excitedly and hugs tightly to your <<if $PC.belly >= 5000>>pregnant belly<<else>>larger body<</if>>, clearly into how much bigger you are than him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that spares his tiny form most of the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<case "Statuesque Glorification">> - a glorified titan. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You <<if $PC.belly >= 5000>>squirm in discomfort until he turns you around and gives your pregnancy room<<elseif $PC.boobs >= 1000>>squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady<<elseif $PC.boobs >= 650>>push your <<if $PC.boobs >= 900>>ample <</if>>breasts against his toned abs<<elseif $PC.boobs >= 300>>push your cute breasts against his toned abs<</if>>, before he really takes advantage of your size difference. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <<default>> - a hot young body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position<<if $PC.belly >= 5000>> (one that forces him to bear the weight of your heavy middle) <</if>>and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. - <</switch>> - <<if _FS == "Asset Expansionist">> - <<if _S.Concubine && canMove(_S.Concubine) && _S.Concubine.fetish != "mindbroken">> - _S.Concubine.slaveName eagerly joins the two of you to help clean the massive cumshot up. - <</if>> - <<elseif _FS != "Youth Preferentialist">> - <<if _S.Concubine && canMove(_S.Concubine) && _S.Concubine.fetish != "mindbroken">> - The <<if canSee(_S.Concubine)>>view of your bouncing tits<<elseif canHear(_S.Concubine)>>sound of lusty sex<<else>>vibrations from your bed bouncing up and down<</if>> is too much for _S.Concubine.slaveName to resist and so $he crawls over to kiss and caress you as your lover finishes. - <</if>> - <</if>> - Sometimes society overlooks that you are a woman and have certain needs, but your lover tonight knows exactly how to treat you. When your guest <<if _FS != "Youth Preferentialist">>is finally spent<<else>>wakes up from against your body<</if>>, he showers, dresses, and leaves discreetly, offering you a proper thank you. This is the kind of thing that @@.green;builds a lasting reputation@@ in the Free Cities. - <<run repX(5000, "event")>> - <<if canGetPregnant($PC)>> - <<switch _FS>> - <<case "Asset Expansionist" "Repopulationist" "Slave Professionalism">> - <<= knockMeUp($PC, 100, 0, -2)>> - <<case "Eugenics" "Gender Fundamentalist" "Maturity Preferentialist" "Paternalist" "Physical Idealist" "Statuesque Glorification">> - <<= knockMeUp($PC, 60, 0, -2)>> - <<default>> - <<= knockMeUp($PC, 40, 0, -2)>> - <</switch>> - <</if>> - <<if _FS != "none">> - <<set $desc = "a tasteful morning-after message, complete with number, from a handsome " + _FS + " citizen">> - <<set $trinkets.push($desc)>> - <<else>> - <<set $trinkets.push("a tasteful morning-after message, complete with number, from a handsome citizen")>> - <</if>> - <</replace>> -<</link>> -<<if _FS != "none">> - <br><<link "Emphasize his societal style with exhibitionism">> - <<replace "#result">> - You turn to face him straight on, and something about the look in your eye fills him with mixed apprehension and anticipation. You agree with his banter and praise him for being so forward-thinking, before transitioning to more direct praise of his style and then his body. You're speaking in a tone that cuts through the room, and by the time you kiss your willing conquest, there's not a person in the room who isn't paying attention. They all understand the message: this gathering is turning into something else, now. Those few who aren't willing to fuck in public withdraw, and everyone who didn't come with a sexual partner sends urgent messages to have appropriate slaves brought from their apartments. You make out with him for a while, letting everyone make arrangements, and then pull his clothes off, making sure his - <<switch _FS>> - <<case "Subjugationist" "Supremacist">> - superior body - <<if _FS == "Supremacist">> - <<set $arcologies[0].FSSupremacist += 5>> - <<else>> - <<set $arcologies[0].FSSubjugationist += 5>> - <</if>> - <<case "Gender Radicalist">> - tits and stiff dick - <<set $arcologies[0].FSGenderRadicalist += 5>> - <<case "Gender Fundamentalist">> - dominant masculinity - <<set $arcologies[0].FSGenderFundamentalist += 5>> - <<case "Repopulationist">> - urge to father a daughter - <<set $arcologies[0].FSRepopulationFocus += 5>> - <<case "Eugenics">> - perfect body - <<set $arcologies[0].FSRestart += 5>> - <<case "Paternalist">> - appealing body - <<set $arcologies[0].FSPaternalist += 5>> - <<case "Degradationist">> - dominant form - <<set $arcologies[0].FSDegradationist += 5>> - <<case "Body Purist">> - natural body - <<set $arcologies[0].FSBodyPurist += 5>> - <<case "Transformation Fetishist">> - extended dick - <<set $arcologies[0].FSTransformationFetishist += 5>> - <<case "Youth Preferentialist">> - <<if $minimumSlaveAge < 13>> - boyish - <<elseif $minimumSlaveAge < 18>> - teenage - <<else>> - young - <</if>> - body - <<set $arcologies[0].FSYouthPreferentialist += 5>> - <<case "Maturity Preferentialist">> - mature body - <<set $arcologies[0].FSMaturityPreferentialist += 5>> - <<case "Slimness Enthusiast">> - slender body - <<set $arcologies[0].FSSlimnessEnthusiast += 5>> - <<case "Asset Expansionist">> - huge genitals - <<set $arcologies[0].FSAssetExpansionist += 5>> - <<case "Pastoralist">> - milk-fed, chubby body - <<set $arcologies[0].FSPastoralist += 5>> - <<case "Physical Idealist">> - ripped body - <<set $arcologies[0].FSPhysicalIdealist += 5>> - <<case "Hedonistic">> - plump body - <<set $arcologies[0].FSHedonisticDecadence += 5>> - <<case "Chattel Religionist">> - divine sexuality - <<set $arcologies[0].FSChattelReligionist += 5>> - <<case "Roman Revivalist">> - muscular form - <<set $arcologies[0].FSRomanRevivalist += 5>> - <<case "Neo Imperialist">> - chiseled muscles - <<set $arcologies[0].FSNeoImperialist += 5>> - <<case "Aztec Revivalist">> - well-built form - <<set $arcologies[0].FSAztecRevivalist += 5>> - <<case "Egyptian Revivalist">> - beautiful tanned body - <<set $arcologies[0].FSEgyptianRevivalist += 5>> - <<case "Arabian Revivalist" "Chinese Revivalist" "Edo Revivalist">> - graceful form - <<if _FS == "Edo Revivalist">> - <<set $arcologies[0].FSEdoRevivalist += 5>> - <<elseif _FS == "Arabian Revivalist">> - <<set $arcologies[0].FSArabianRevivalist += 5>> - <<else>> - <<set $arcologies[0].FSChineseRevivalist += 5>> - <</if>> - <<case "Intellectual Dependency">> - extreme horniness - <<set $arcologies[0].FSIntellectualDependency += 5>> - <<case "Slave Professionalism">> - experienced body - <<set $arcologies[0].FSSlaveProfessionalism += 5>> - <<case "Petite Admiration">> - tiny form - <<set $arcologies[0].FSPetiteAdmiration += 5>> - <<case "Statuesque Glorification">> - towering form - <<set $arcologies[0].FSStatuesqueGlorification += 5>> - <<default>> - hot young body - <</switch>> - is obvious to everyone. The message is clear, and your guest of honor is the center of attention as you take him there in view of the arcology's leading citizens. Naturally, the story percolates, making it clear that there's nothing you won't do to @@.green;further acceptance of _FS principles.@@ - <<if canGetPregnant($PC)>> - <<= knockMeUp($PC, 40, 0, -2)>> - <</if>> - <</replace>> - <</link>> -<</if>> -</span> -- GitLab From 04c1a3a3079d7d362cc90444bdec60520660e0ce Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 21:34:38 -0400 Subject: [PATCH 25/91] fixes --- src/events/RE/reMaleCitizenHookup.js | 844 +++++++++++++++------------ 1 file changed, 482 insertions(+), 362 deletions(-) diff --git a/src/events/RE/reMaleCitizenHookup.js b/src/events/RE/reMaleCitizenHookup.js index fb92b2e1166..c626fb80dd6 100644 --- a/src/events/RE/reMaleCitizenHookup.js +++ b/src/events/RE/reMaleCitizenHookup.js @@ -13,7 +13,8 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba } execute(node) { - V.nextButton = "Continue", V.nextLink = "RIE Eligibility Check"; + V.nextButton = "Continue"; + V.nextLink = "RIE Eligibility Check"; const FSArray = []; if (V.arcologies[0].FSSubjugationist !== "unset") { @@ -97,8 +98,9 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba } else { r.push(`proprietress`); } - r.push(` is actually present.`); - // <br><br> + r.push(`is actually present.`); + App.Events.addParagraph(node, r); + r = []; r.push(`But tonight, you've put in an appearance. Your citizens are drinking your`); if (V.arcologies[0].FSPastoralist !== "unset") { r.push(`milk`); @@ -107,27 +109,36 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba } else { r.push(`alcohol`); } - r.push(` and eating your food, though of course they helped pay for it through their rent. They're performing a complex dance of social dominance, and it all radiates around you, with complex unspoken rules of collective approval governing which citizens cycle past you for a word, and for how long. During a low point in the ebb and flow,`); + r.push(`and eating your food, though of course they helped pay for it through their rent. They're performing a complex dance of social dominance, and it all radiates around you, with complex unspoken rules of collective approval governing which citizens cycle past you for a word, and for how long. During a low point in the ebb and flow,`); switch (_FS) { case "Subjugationist": case "Supremacist": r.push(`a handsome, racially pure young man`); + break; case "Gender Radicalist": r.push(`a cute, androgynous-faced girl with nice breasts`); + break; case "Gender Fundamentalist": r.push(`a dominant-looking man`); + break; case "Repopulationist": r.push(`a dominant-looking young man with a nice bulge in his pants`); + break; case "Eugenics": r.push(`a stunningly handsome man`); + break; case "Paternalist": r.push(`a pretty, upbeat young man`); + break; case "Degradationist": r.push(`a confident man`); + break; case "Body Purist": r.push(`a clean-looking young man`); + break; case "Transformation Fetishist": r.push(`a nicely augmented boy, judging by the bulge in his crotch and down his pant leg,`); + break; case "Youth Preferentialist": if (V.minimumSlaveAge < 13) { r.push(`an adorable little shota`); @@ -136,497 +147,580 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba } else { r.push(`a cute young man`); } + break; case "Maturity Preferentialist": r.push(`a handsome, mature man`); + break; case "Slimness Enthusiast": r.push(`a slim young thing`); + break; case "Asset Expansionist": r.push(`a hung young man, with specially tailored pants to contain his junk,`); + break; case "Pastoralist": r.push(`a chubby young man`); + break; case "Physical Idealist": r.push(`a hot, buff man`); + break; case "Hedonistic": r.push(`a cutely chubby young man`); + break; case "Chattel Religionist": r.push(`a cute, devout-looking young man`); + break; case "Roman Revivalist": r.push(`a proper young Roman man`); + break; case "Neo Imperialist": r.push(`a dashing young Imperial Knight with piercing blue eyes`); + break; case "Aztec Revivalist": r.push(`a natural Aztec beauty`); + break; case "Egyptian Revivalist": r.push(`a handsome, sun-kissed man`); + break; case "Edo Revivalist": r.push(`a handsome Edo man`); + break; case "Arabian Revivalist": r.push(`a handsome Arabian prince`); + break; case "Chinese Revivalist": r.push(`a handsome Chinese man`); + break; case "Intellectual Dependency": r.push(`a cute party boy`); + break; case "Slave Professionalism": r.push(`a handsome, experienced man`); + break; case "Petite Admiration": r.push(`a delightfully short young man`); + break; case "Statuesque Glorification": r.push(`a towering figure`); + break; default: r.push(`a cute young man`); } r.push(`sidles up to you.`); if (_FS !== "Gender Radicalist") { - r.push(`He begins to introduce himself, but one of the advantages of your connection to the arcology is that you always know who everyone is, and you greet him by name, which people have never learned not to be impressed by`); + r.push(`He begins to introduce himself, but one of the advantages of your connection to the arcology is that you always know who everyone is, and you greet him by name, which people have never learned not to be impressed by.`); } else { - r.push(`She begins to introduce herself and, not to your surprise, she is in fact a he`); + r.push(`She begins to introduce herself and, not to your surprise, she is in fact a he.`); } - r.push(`. He gushes about some of your recent `); + r.push(`He gushes about some of your recent`); if (_FS !== "none") { - _FS; + r.push(_FS); } r.push(`actions, displaying an unusual grasp of what you've been planning. Despite his sincere interest, he's obviously got something else on his mind.`); - // <br><br> + App.Events.addParagraph(node, r); + r = []; r.push(`He's yours for the taking, if you want him, and if his praise and proximity weren't enough to make that clear, he manages to`); switch (_FS) { case "Subjugationist": case "Supremacist": r.push(`flash you a view straight down his pants at his ethnically superior dick.`); + break; case "Gender Radicalist": r.push(`flex, popping his shirt's buttons and freeing his well crafted breasts.`); + break; case "Gender Fundamentalist": r.push(`wrap his arm around you and whisper sweet nothings in your ear.`); + break; case "Repopulationist": if (V.PC.belly >= 100) { r.push(`grope your pregnancy, paying close attention to your navel.`); } else { r.push(`press up against you and wrap his arms around your flat belly. "You'd make a lovely mother, you know?"`); } + break; case "Eugenics": r.push(`give you an excellent view of a little black book filled with all sorts of connections.`); + break; case "Paternalist": r.push(`wrap his arm over your shoulder, presuming on the egalitarian nature of your Paternalist society to flirt a little aggressively.`); + break; case "Degradationist": r.push(`pull his tight pants down slightly to reveal to tip of his barbell pierced, erect cock.`); + break; case "Body Purist": r.push(`push up behind you, his natural cock pressing against your butt.`); + break; case "Transformation Fetishist": r.push(`lift his shirt, revealing his oversized erection extending from his pants.`); + break; case "Youth Preferentialist": r.push(`perfectly balance his youthful, innocent advances with the proper decorum between you and a citizen.`); + break; case "Maturity Preferentialist": r.push(`perfectly balance his experienced, well-tuned advances with the proper decorum between you and a citizen.`); + break; case "Slimness Enthusiast": r.push(`turn from side to side as he flirts with you in a way that shows off his lithe, flexible body.`); + break; case "Asset Expansionist": r.push(`shift his stance enough that his enormous, beach ball-like testicles and forearm sized cock tear the seam of his pants, springing clear to offer themselves glorious and nude.`); + break; case "Pastoralist": r.push(`let you know that he's almost entirely milk-fed, while pressing his soft body against yours.`); + break; case "Physical Idealist": r.push(`sweep you off your feet into a bridal carry, demonstrating his strength.`); + break; case "Hedonistic": r.push(`lean his plump body into yours, popping several of his straining buttons in the process.`); + break; case "Chattel Religionist": r.push(`assume just a hint of a Chattel Religionist devotional pose used to request to penetrate. It's heavy flirting, of a modern religious sort.`); + break; case "Aztec Revivalist": r.push(`hint that his devotion, which is the most important thing, cannot be besmirched by tasting your divine power.`); + break; case "Intellectual Dependency": r.push(`push his prominent erection against your leg.`); + break; case "Slave Professionalism": r.push(`whisper a tantalizing series of positions you two could share into your ear.`); + break; case "Petite Admiration": r.push(`rest his head against your hip.`); + break; case "Statuesque Glorification": r.push(`give you an affectionate pat on the head.`); + break; default: r.push(`flirt with you quite hard without crossing any lines between a citizen and an arcology owner.`); } r.push(`He's clearly attracted to you; even the most consummate actor would have difficulty fooling you, and his breath is a little quick, his pupils are a bit dilated, and he's blushing cutely. But he's no fool, either. A casual liaison with ${PCTitle()} would be a tremendous social boost for him.`); - // <span id="result"> - // <<link "Keep aloof without offending him">> - // <<replace "#result">> - r.push(`You thank him for his praise, weighting the words in just the right way to communicate that you consider his flirtations worthy compliments, and nothing more. He understands immediately, communicating acceptance and pleasure at his own daring with nothing more than a thankful look in your eyes. This is how you approach matters like this. You are the ruler of this place and it behooves you to maintain a balance atop all your citizens without showing any susceptibility to solicitation. A little incident like this has little effect on its own, but your habit of maintaining proper reserve creates a reputation for judiciousness that <span class="green">businesspeople consider attractive for arcology investment.</span>`); - V.arcologies[0].prosperity += 3; - // <</replace>> - // <</link>> - // <br> - // <<link "To them that hath, it shall be given">> - // <<replace "#result">> - r.push(`You're not exactly starved for casual sex, but you've never thought there was any such thing as too much of a good thing.`); - if (_FS === "Physical Idealist" || _FS === "Statuesque Glorification") { - r.push(`You nudge him in the ribs and motion to the door.`); - } else if (_FS === "Petite Admiration") { - r.push(`You place your hand on the nap of his neck and begin to lead him away.`); - } else { - r.push(`You pull his arm around your waist.`); + const responses = [ + new App.Events.Result("Keep aloof without offending him", aloof), + new App.Events.Result("To them that hath, it shall be given", given), + ]; + + if (_FS !== "none") { + responses.push(new App.Events.Result("Emphasize his societal style with exhibitionism", exhibitionism)); } - r.push(`You hear a slight gasp from him as he realizes that his gambit has succeeded with more immediate effect than he expected. He shivers with anticipation as you steer him back through a side door, grabbing a pair of glasses of `); - if (V.PC.refreshmentType === 1) { - r.push(`${V.PC.refreshment}`); - } else { - r.push(`liquor`); + + App.Events.addResponses(node, responses); + + function aloof() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You thank him for his praise, weighting the words in just the right way to communicate that you consider his flirtations worthy compliments, and nothing more. He understands immediately, communicating acceptance and pleasure at his own daring with nothing more than a thankful look in your eyes. This is how you approach matters like this. You are the ruler of this place and it behooves you to maintain a balance atop all your citizens without showing any susceptibility to solicitation. A little incident like this has little effect on its own, but your habit of maintaining proper reserve creates a reputation for judiciousness that <span class="green">businesspeople consider attractive for arcology investment.</span>`); + V.arcologies[0].prosperity += 3; + App.Events.addParagraph(frag, r); + return frag; } - r.push(` on the way, and making a discreet exit towards your private suite.`); - if (S.Concubine) { - // <<setLocalPronouns S.Concubine>> - if (S.Concubine.intelligence+S.Concubine.intelligenceImplant > 50) { - r.push(`${S.Concubine.slaveName} is there, of course, and ${he} instantly`); - if (canSee(S.Concubine)) { - r.push(`sees`); - } else { - r.push(`realizes`); - } - r.push(` that ${his} continued presence for a ménage à trois is wanted by both you and your guest.`); - } else if (S.Concubine.intelligence+S.Concubine.intelligenceImplant < -50) { - r.push(`${S.Concubine.slaveName} is there, of course, absentmindly doing whatever it is ${he} does when you are not around, and unsurprisingly fails to`); - if (canSee(S.Concubine)) { - r.push(`see`); - } else { - r.push(`realize`); - } - r.push(` that ${his} presence might not be wanted.`); - } else if (S.Concubine.fetish === "mindbroken") { - r.push(`${S.Concubine.slaveName} is there, of course, completely indifferent to you or your guest's presence.`); + + function given() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You're not exactly starved for casual sex, but you've never thought there was any such thing as too much of a good thing.`); + if (_FS === "Physical Idealist" || _FS === "Statuesque Glorification") { + r.push(`You nudge him in the ribs and motion to the door.`); + } else if (_FS === "Petite Admiration") { + r.push(`You place your hand on the nap of his neck and begin to lead him away.`); + } else { + r.push(`You pull his arm around your waist.`); } - } - r.push(`Your guest restrains his eager praise now that you're in private, but his wide-eyed appreciation of your domain is compliment enough. Once in your suite, you undress him, revealing`); - switch (_FS) { - case "Subjugationist": - case "Supremacist": - r.push(`his fresh, pure body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Gender Radicalist": - r.push(`perky fake breasts and a stiff dick as you gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Gender Fundamentalist": - r.push(`a fine body with a proud erection. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); - if (V.PC.belly >= 5000) { - r.push(`begins massaging your rounded middle`); - } else { - r.push(`groping your `); - if (V.PC.boobs >= 1000) { - r.push(`huge breasts`); - } else if (V.PC.boobs >= 650) { - r.push(`ample breasts`); - } else if (V.PC.boobs >= 300) { - r.push(`cute breasts`); + r.push(`You hear a slight gasp from him as he realizes that his gambit has succeeded with more immediate effect than he expected. He shivers with anticipation as you steer him back through a side door, grabbing a pair of glasses of`); + if (V.PC.refreshmentType === 1) { + r.push(`${V.PC.refreshment}`); + } else { + r.push(`liquor`); + } + r.push(`on the way, and making a discreet exit towards your private suite.`); + if (S.Concubine) { + const {he, his} = getPronouns(S.Concubine); + if (S.Concubine.intelligence + S.Concubine.intelligenceImplant > 50) { + r.push(`${S.Concubine.slaveName} is there, of course, and ${he} instantly`); + if (canSee(S.Concubine)) { + r.push(`sees`); } else { - r.push(`butt`); + r.push(`realizes`); } + r.push(`that ${his} continued presence for a ménage à trois is wanted by both you and your guest.`); + } else if (S.Concubine.intelligence + S.Concubine.intelligenceImplant < -50) { + r.push(`${S.Concubine.slaveName} is there, of course, absentmindly doing whatever it is ${he} does when you are not around, and unsurprisingly fails to`); + if (canSee(S.Concubine)) { + r.push(`see`); + } else { + r.push(`realize`); + } + r.push(`that ${his} presence might not be wanted.`); + } else if (S.Concubine.fetish === "mindbroken") { + r.push(`${S.Concubine.slaveName} is there, of course, completely indifferent to you or your guest's presence.`); } - r.push(`, distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. Through the haze of your lust, you can't help but feel your drink tasted off.`); - V.PC.forcedFertDrugs += 2; - case "Repopulationist": - V.PC.forcedFertDrugs += 10; - r.push(`a hot young body with an eager erection. Before you can tip him onto your bed; he pulls your evening dress off, spins you around and lowers you, back first, onto the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); - if (V.PC.belly >= 5000) { - r.push(`begins earnestly groping your pregnancy`); - } else { - r.push(`grabs your hips and pushes even deeper into you`); - } - r.push(`, distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. `); - if (V.PC.belly < 100) { - r.push(`Unsatisfied with your body, he guides you into a position more favorable for conception`); - } else { - r.push(`Crazed with lust over your baby bump, he guides you into a position more comfortable for a pregnant woman`); - } - r.push(` and carries on fucking you. By the time he is done with you, you'll be leaking cum for the rest of the evening.`); - if (V.PC.forcedFertDrugs > 10) { - r.push(` He seemed certain you'd become enormously pregnant from his efforts; he could have been fantasizing, but your drink did taste a little funny and you have a pleasant tingling in your lower belly.`); - } - case "Eugenics": - r.push(`his glorious, flawless body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Paternalist": - r.push(`a nice young body, with all the little attractions and flaws of a free citizen's, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Degradationist": - r.push(`a taut body covered in dominant tattoos and spiky piercings, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, especially one involving piercings rubbing all the right places, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Body Purist": - r.push(`a delectably clean young body unmarred by any trace of surgical intervention, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Transformation Fetishist": - r.push(`a massive fake bubble butt to go with his extended erection, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, taking as much as you physically can, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Youth Preferentialist": - if (V.minimumSlaveAge < 13) { - r.push(`that he is adorable, but may not be satisfying, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him, pull him over yourself and guide his tiny penis into you. Instinct quickly takes hold as he begins thrusting and hugs tightly to your `); + } + r.push(`Your guest restrains his eager praise now that you're in private, but his wide-eyed appreciation of your domain is compliment enough. Once in your suite, you undress him, revealing`); + switch (_FS) { + case "Subjugationist": + case "Supremacist": + r.push(`his fresh, pure body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); if (V.PC.belly >= 5000) { - r.push(`pregnant belly`); + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Gender Radicalist": + r.push(`perky fake breasts and a stiff dick as you gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Gender Fundamentalist": + r.push(`a fine body with a proud erection. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he`); + if (V.PC.belly >= 5000) { + r.push(`begins massaging your rounded middle,`); + } else { + r.push(`groping your`); + if (V.PC.boobs >= 1000) { + r.push(`huge breasts,`); + } else if (V.PC.boobs >= 650) { + r.push(`ample breasts,`); + } else if (V.PC.boobs >= 300) { + r.push(`cute breasts,`); + } else { + r.push(`butt,`); + } + } + r.push(`distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you. Through the haze of your lust, you can't help but feel your drink tasted off.`); + V.PC.forcedFertDrugs += 2; + break; + case "Repopulationist": + V.PC.forcedFertDrugs += 10; + r.push(`a hot young body with an eager erection. Before you can tip him onto your bed; he pulls your evening dress off, spins you around and lowers you, back first, onto the edge of your bed. He dominantly spears your pussy and begins thrusting powerfully. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he`); + if (V.PC.belly >= 5000) { + r.push(`begins earnestly groping your pregnancy,`); + } else { + r.push(`grabs your hips and pushes even deeper into you,`); + } + r.push(`distracting you from the situation and allowing you to be overwhelmed by pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + if (V.PC.belly < 100) { + r.push(`Unsatisfied with your body, he guides you into a position more favorable for conception`); + } else { + r.push(`Crazed with lust over your baby bump, he guides you into a position more comfortable for a pregnant woman`); + } + r.push(`and carries on fucking you. By the time he is done with you, you'll be leaking cum for the rest of the evening.`); + if (V.PC.forcedFertDrugs > 10) { + r.push(`He seemed certain you'd become enormously pregnant from his efforts; he could have been fantasizing, but your drink did taste a little funny and you have a pleasant tingling in your lower belly.`); + } + break; + case "Eugenics": + r.push(`his glorious, flawless body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Paternalist": + r.push(`a nice young body, with all the little attractions and flaws of a free citizen's, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Degradationist": + r.push(`a taut body covered in dominant tattoos and spiky piercings, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, especially one involving piercings rubbing all the right places, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Body Purist": + r.push(`a delectably clean young body unmarred by any trace of surgical intervention, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Transformation Fetishist": + r.push(`a massive fake bubble butt to go with his extended erection, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, taking as much as you physically can, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Youth Preferentialist": + if (V.minimumSlaveAge < 13) { + r.push(`that he is adorable, but may not be satisfying, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him, pull him over yourself and guide his tiny penis into you. Instinct quickly takes hold as he begins thrusting and hugs tightly to your`); + if (V.PC.belly >= 5000) { + r.push(`pregnant belly.`); + } else { + r.push(`larger body.`); + } + r.push(`Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You hold him close and buck against him, trying to make up for his size, until he releases a small load into your depths. You follow not long after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Exhausted, he passes out`); + if (V.PC.belly >= 5000) { + r.push(`against your middle;`); + } else if (V.PC.boobs >= 1000) { + r.push(`in your huge bust;`); + } else if (V.PC.boobs >= 650) { + r.push(`in your ample bust;`); + } else if (V.PC.boobs >= 300) { + r.push(`in your cute breasts;`); + } else { + r.push(`atop you;`); + } + r.push(`where he lies until you finish playing with him and move him beside you. You return to your needy crotch to finish up as he snuggles closer to your side.`); + } else if (V.minimumSlaveAge < 18) { + r.push(`that his whole body looks fresh, untouched, and very young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + } else { + r.push(`that his whole body looks fresh, untouched, and quite young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + } + break; + case "Maturity Preferentialist": + r.push(`a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he`); + if (V.PC.belly >= 5000) { + r.push(`begins massaging your rounded middle,`); + } else { + r.push(`groping your`); + if (V.PC.boobs >= 1000) { + r.push(`huge breasts,`); + } else if (V.PC.boobs >= 650) { + r.push(`ample breasts,`); + } else if (V.PC.boobs >= 300) { + r.push(`cute breasts,`); + } else { + r.push(`butt,`); + } + } + r.push(`calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, despite his age, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Slimness Enthusiast": + r.push(`lean muscles, a smooth waist, trim hips and a cute little ass, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Asset Expansionist": + r.push(`an inhumanly enormous ass to counterbalance those enormous balls and a semi-hard cock, unable to become fully erect. You have to struggle to get him onto your bed. You tease him as you remove your evening dress, crawl over him and`); + if (V.PC.newVag === 1) { + r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you.`); + } else if (V.PC.vagina > 3) { + r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you like nothing does lately.`); + } else if (V.PC.vagina > 2) { + r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at how full you are.`); + } else if (V.PC.vagina > 1) { + r.push(`barely manage to get his cockhead into your pussy.`); + } else { + r.push(`find he is too big to fit in you. You settle for the tip instead.`); + } + r.push(`Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly massaging his cock as it fills you pussy. As you feel his climax mounting, he taps you and warns you that you won't be able to handle his orgasm.`); + if (V.PC.preg > 20) { + r.push(`For your unborn child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); + } else if (V.PC.preg > 10) { + r.push(`For your growing child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); + } else if (V.PC.preg > 0) { + r.push(`Feeling like you should heed his advice, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); } else { - r.push(`larger body`); + r.push(`Quivering with your own pending orgasm, you ignore him and keep going, achieving climax as he blows a near endless load into your womb.`); + if (V.PC.skill.cumTap === 0) { + r.push(`The quantity of cum quickly overwhelms you and backflows out of you as you fall into your lover's waiting arms. He lays you to his side as he continues showering you both with cum.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 5) { + r.push(`You last for several seconds before the sheer size of his load forces you off his dick and into his waiting arms. He lays you to his side, gently patting your cum-bloated middle, as he continues showering you both with cum.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 10) { + r.push(`You manage to take a respectable portion of his load before it begins backflowing out of you. He massages your cum-filled belly as he finishes unloading across your back. "Most girls can't even come close to handling it at all, I'm impressed."`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 15) { + r.push(`You manage to take nearly half of his load before it begins backflowing out of you. He cradles your cum-stuffed belly as he finishes unloading across your back. "Few girls can even come close to handling that much of it, I'm impressed." He helps you down, making sure to provide extra support for your huge, full-term looking belly.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 20) { + r.push(`You manage to take nearly two thirds of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you look like a woman on the verge of childbirth. "Damn girl, you look like you're gonna pop, I'm impressed." He helps you down, making sure to provide extra support for your enormous, taut belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); + V.PC.skill.cumTap++; + } else if (V.PC.skill.cumTap < 25) { + r.push(`You manage to take nearly three fourths of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time you can't take any more, you look like you are ready to burst with triplets. "Damn girl, just how stretchy are you? I'm impressed." He helps you down, making sure to provide extra support for your massive, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); + V.PC.skill.cumTap++; + } else { + r.push(`You manage to take his entire load without spilling a drop. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time he's done, you look ready to birth octuplets. "I can't believe you took it all; incredible. Are you going to be OK?" He helps you down, making sure to provide extra support for your immense, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); + V.PC.skill.cumTap++; + } } - r.push(`. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You hold him close and buck against him, trying to make up for his size, until he releases a small load into your depths. You follow not long after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Exhausted, he passes out `); + break; + case "Pastoralist": + r.push(`soft, milk-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); if (V.PC.belly >= 5000) { - r.push(`against your middle`); + r.push(`(one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Physical Idealist": + r.push(`a chiseled Adonis. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You`); + if (V.PC.belly >= 5000) { + r.push(`squirm in discomfort until he turns you around and gives your pregnancy room`); } else if (V.PC.boobs >= 1000) { - r.push(`in your huge bust`); + r.push(`squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady`); } else if (V.PC.boobs >= 650) { - r.push(`in your ample bust`); + r.push(`push your`); + if (V.PC.boobs >= 900) { + r.push(`ample`); + } + r.push(`breasts against his firm pecs`); } else if (V.PC.boobs >= 300) { - r.push(`in your cute breasts`); + r.push(`push your cute breasts against his firm pecs,`); } else { - r.push(`atop you`); + r.push(`allow him pull your flat chest to his firm pecs,`); } - r.push(`; where he lies until you finish playing with him and move him beside you. You return to your needy crotch to finish up as he snuggles closer to your side.`); - } else if (V.minimumSlaveAge < 18) { - r.push(`that his whole body looks fresh, untouched, and very young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + r.push(`before he starts showing off his strength. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Hedonistic": + r.push(`soft, well-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); + r.push(`(one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. He's winded after just one go, but offers up a cache of snacks he was hiding as an apology. You snuggle up to each other and sensually feed one another until he is ready for round two.`); + break; + case "Chattel Religionist": + r.push(`a fresh and ready body, adorned here and there with sensual devotional jewelry, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); } r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - } else { - r.push(`that his whole body looks fresh, untouched, and quite young, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + break; + case "Egyptian Revivalist": + r.push(`a strong, tight, bronze body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); + r.push(`(one that forces him to bear the weight of your heavy middle)`); } r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - } - case "Maturity Preferentialist": - r.push(`a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); - if (V.PC.belly >= 5000) { - r.push(`begins massaging your rounded middle`); - } else { - r.push(`groping your `); - if (V.PC.boobs >= 1000) { - r.push(`huge breasts`); - } else if (V.PC.boobs >= 650) { - r.push(`ample breasts`); - } else if (V.PC.boobs >= 300) { - r.push(`cute breasts`); + break; + case "Intellectual Dependency": + r.push(`a young body eager for sex, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Slave Professionalism": + r.push(`a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he`); + if (V.PC.belly >= 5000) { + r.push(`shifts you to a position more befitting your gravidity,`); } else { - r.push(`butt`); + r.push(`groping your`); + if (V.PC.boobs >= 1000) { + r.push(`huge breasts,`); + } else if (V.PC.boobs >= 650) { + r.push(`ample breasts,`); + } else if (V.PC.boobs >= 300) { + r.push(`cute breasts,`); + } else { + r.push(`butt,`); + } } - } - r.push(`, calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, despite his age, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Slimness Enthusiast": - r.push(`lean muscles, a smooth waist, trim hips and a cute little ass, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Asset Expansionist": - r.push(`an inhumanly enormous ass to counterbalance those enormous balls and a semi-hard cock, unable to become fully erect. You have to struggle to get him onto your bed. You tease him as you remove your evening dress, crawl over him and`); - if (V.PC.newVag === 1) { - r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you.`); - } else if (V.PC.vagina > 3) { - r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at its girth filling you like nothing does lately.`); - } else if (V.PC.vagina > 2) { - r.push(`impale yourself on his monster shaft as far as you can, quivering in joy at how full you are.`); - } else if (V.PC.vagina > 1) { - r.push(`barely manage to get his cockhead into your pussy.`); - } else { - r.push(`find he is too big to fit in you. You settle for the tip instead.`); - } - r.push(`Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly massaging his cock as it fills you pussy. As you feel his climax mounting, he taps you and warns you that you won't be able to handle his orgasm.`); - if (V.PC.preg > 20) { - r.push(`For your unborn child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); - } else if (V.PC.preg > 10) { - r.push(`For your growing child's sake, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); - } else if (V.PC.preg > 0) { - r.push(`Feeling like you should heed his advice, you slide off his shaft and down to his face, planting your soaked cunt over his mouth. Reaching around behind you as he eats you out, you tease his twitching rod. As you climax, you accidentally squeeze his vulnerable balls, provoking his own massive orgasm. Shouting in surprise, you hug as close to him as you can as cascade of cum pours onto the two of you. You roll off of him and laugh at the mess your servants are going to have to clean up.`); - } else { - r.push(`Quivering with your own pending orgasm, you ignore him and keep going, achieving climax as he blows a near endless load into your womb.`); - if (V.PC.skill.cumTap === 0) { - r.push(`The quantity of cum quickly overwhelms you and backflows out of you as you fall into your lover's waiting arms. He lays you to his side as he continues showering you both with cum.`); - V.PC.skill.cumTap++; - } else if (V.PC.skill.cumTap < 5) { - r.push(`You last for several seconds before the sheer size of his load forces you off his dick and into his waiting arms. He lays you to his side, gently patting your cum-bloated middle, as he continues showering you both with cum.`); - V.PC.skill.cumTap++; - } else if (V.PC.skill.cumTap < 10) { - r.push(`You manage to take a respectable portion of his load before it begins backflowing out of you. He massages your cum-filled belly as he finishes unloading across your back. "Most girls can't even come close to handling it at all, I'm impressed."`); - V.PC.skill.cumTap++; - } else if (V.PC.skill.cumTap < 15) { - r.push(`You manage to take nearly half of his load before it begins backflowing out of you. He cradles your cum-stuffed belly as he finishes unloading across your back. "Few girls can even come close to handling that much of it, I'm impressed." He helps you down, making sure to provide extra support for your huge, full-term looking belly.`); - V.PC.skill.cumTap++; - } else if (V.PC.skill.cumTap < 20) { - r.push(`You manage to take nearly two thirds of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you look like a woman on the verge of childbirth. "Damn girl, you look like you're gonna pop, I'm impressed." He helps you down, making sure to provide extra support for your enormous, taut belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); - V.PC.skill.cumTap++; - } else if (V.PC.skill.cumTap < 25) { - r.push(`You manage to take nearly three fourths of his load before it begins backflowing out of you. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time you can't take any more, you look like you are ready to burst with triplets. "Damn girl, just how stretchy are you? I'm impressed." He helps you down, making sure to provide extra support for your massive, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); - V.PC.skill.cumTap++; + r.push(`calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and maneuvers you to a fresh position and begins anew, quickly bringing to a second orgasm and drawing an adorable moan out of you. His bag of tricks is nigh endless; you spend the night having sex in new and exciting ways.`); + break; + case "Petite Admiration": + r.push(`that he is adorable, and not lacking at all down there, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him and pull him into you. He begins thrusting excitedly and hugs tightly to your`); + if (V.PC.belly >= 5000) { + r.push(`pregnant belly,`); } else { - r.push(`You manage to take his entire load without spilling a drop. You swear he cums harder as he places his hands to your swelling middle, enjoying the growth until you grow taut and your belly button pops out. By the time he's done, you look ready to birth octuplets. "I can't believe you took it all; incredible. Are you going to be OK?" He helps you down, making sure to provide extra support for your immense, straining belly. He sensually massages it, coaxing as much cum from your hungry womb that he can. But in the end, he can only get you back to the size of a woman in her final trimester. You likely won't be returning to the party.`); - V.PC.skill.cumTap++; + r.push(`larger body,`); } - } - case "Pastoralist": - r.push(`soft, milk-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Physical Idealist": - r.push(`a chiseled Adonis. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You `); - if (V.PC.belly >= 5000) { - r.push(`squirm in discomfort until he turns you around and gives your pregnancy room`); - } else if (V.PC.boobs >= 1000) { - r.push(`squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady`); - } else if (V.PC.boobs >= 650) { - r.push(`push your `); - if (V.PC.boobs >= 900) { - r.push(`ample `); - } - r.push(`breasts against his firm pecs`); - } else if (V.PC.boobs >= 300) { - r.push(`push your cute breasts against his firm pecs`); - } else { - r.push(`allow him pull your flat chest to his firm pecs`); - } - r.push(`, before he starts showing off his strength. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Hedonistic": - r.push(`soft, well-fed body, and gently push him back onto your bed, giggling as his chubby belly jiggles. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle, and surprisingly comfortable given his belly) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. He's winded after just one go, but offers up a cache of snacks he was hiding as an apology. You snuggle up to each other and sensually feed one another until he is ready for round two.`); - case "Chattel Religionist": - r.push(`a fresh and ready body, adorned here and there with sensual devotional jewelry, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Egyptian Revivalist": - r.push(`a strong, tight, bronze body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Intellectual Dependency": - r.push(`a young body eager for sex, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Slave Professionalism": - r.push(`a mature body featuring an erection with years of experience. Before you can tip him onto your bed; he deftly slips you out of your evening dress, scoops you up and places you, back first, at the edge of your bed. He dominantly spears your pussy and begins thrusting, hitting all the right places. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You shift in discomfort at being dominated, and in response he `); - if (V.PC.belly >= 5000) { - r.push(`shifts you to a position more befitting your gravidity`); - } else { - r.push(`groping your `); - if (V.PC.boobs >= 1000) { - r.push(`huge breasts`); + r.push(`clearly into how much bigger you are than him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that spares his tiny form most of the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + case "Statuesque Glorification": + r.push(`a glorified titan. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you.`); + if (V.PC.belly >= 5000) { + r.push(`You squirm in discomfort until he turns you around and gives your pregnancy room,`); + } else if (V.PC.boobs >= 1000) { + r.push(`You squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady,`); } else if (V.PC.boobs >= 650) { - r.push(`ample breasts`); + r.push(`You push your`); + if (V.PC.boobs >= 900) { + r.push(`You ample`); + } + r.push(`You breasts against his toned abs,`); } else if (V.PC.boobs >= 300) { - r.push(`cute breasts`); + r.push(`You push your cute breasts against his toned abs,`); } else { - r.push(`butt`); + r.push(`You,`); //TODO created fallback for conversion, case was not handled in tw } + r.push(`before he really takes advantage of your size difference. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + break; + default: + r.push(`a hot young body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); + if (V.PC.belly >= 5000) { + r.push(`(one that forces him to bear the weight of your heavy middle)`); + } + r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); + } + if (_FS === "Asset Expansionist") { + if (S.Concubine && canMove(S.Concubine) && S.Concubine.fetish !== "mindbroken") { + r.push(`${S.Concubine.slaveName} eagerly joins the two of you to help clean the massive cumshot up.`); + } + } else if (_FS !== "Youth Preferentialist") { + if (S.Concubine && canMove(S.Concubine) && S.Concubine.fetish !== "mindbroken") { + const {he} = getPronouns(S.Concubine); + r.push(`The`); + if (canSee(S.Concubine)) { + r.push(`view of your bouncing tits`); + } else if (canHear(S.Concubine)) { + r.push(`sound of lusty sex`); + } else { + r.push(`vibrations from your bed bouncing up and down`); + } + r.push(`is too much for ${S.Concubine.slaveName} to resist and so ${he} crawls over to kiss and caress you as your lover finishes.`); } - r.push(`, calming you and allowing you to give in to the pleasure. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and maneuvers you to a fresh position and begins anew, quickly bringing to a second orgasm and drawing an adorable moan out of you. His bag of tricks is nigh endless; you spend the night having sex in new and exciting ways.`); - case "Petite Admiration": - r.push(`that he is adorable, and not lacking at all down there, and gently carry him to your bed. You tease him as you remove your evening dress, crawl next to him and pull him into you. He begins thrusting excitedly and hugs tightly to your `); - if (V.PC.belly >= 5000) { - r.push(`pregnant belly`); - } else { - r.push(`larger body`); - } - r.push(`, clearly into how much bigger you are than him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that spares his tiny form most of the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - case "Statuesque Glorification": - r.push(`a glorified titan. Before you can tip him onto your bed; he deftly pulls you out of your evening dress, scoops you up, dominantly spears your pussy and begins thrusting powerfully while holding you. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly fucking you. You `); - if (V.PC.belly >= 5000) { - r.push(`squirm in discomfort until he turns you around and gives your pregnancy room`); - } else if (V.PC.boobs >= 1000) { - r.push(`squirm in discomfort until he turns you around and uses his other arm to keep your huge breasts steady`); - } else if (V.PC.boobs >= 650) { - r.push(`push your `); - if (V.PC.boobs >= 900) { - r.push(`ample `); - } - r.push(`breasts against his toned abs`); - } else if (V.PC.boobs >= 300) { - r.push(`push your cute breasts against his toned abs`); - } - r.push(`, before he really takes advantage of your size difference. With a hard, firm thrust, he cums deep into your pussy. You follow shortly after, feeling the heat of his seed in your depths as you clamp down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - default: - r.push(`a hot young body, and gently push him back onto your bed. You tease him as you remove your evening dress, crawl over him and impale yourself on his eager shaft, fully taking its length, before beginning to ride him. Even a female arcology owner like yourself appreciates a good hard fuck, since regular submission to a pounding from sex slaves would be a scandal. There's little opprobrium waiting for you if it's known he had you, though, and he is eagerly thrusting into your pussy. You shift into a slightly more comfortable position`); - if (V.PC.belly >= 5000) { - r.push(` (one that forces him to bear the weight of your heavy middle) `); - } - r.push(`and ride him to orgasm. You follow shortly after, feeling the heat of his seed in the depths of your pussy as it clamps down around his dick. Thankfully, he isn't spent yet and begins anew, quickly carrying your climax to a second orgasm and drawing an adorable moan out of you.`); - } - if (_FS === "Asset Expansionist") { - if (S.Concubine && canMove(S.Concubine) && S.Concubine.fetish !== "mindbroken") { - r.push(`${S.Concubine.slaveName} eagerly joins the two of you to help clean the massive cumshot up.`); } - } else if (_FS !== "Youth Preferentialist") { - if (S.Concubine && canMove(S.Concubine) && S.Concubine.fetish !== "mindbroken") { - r.push(`The `); - if (canSee(S.Concubine)) { - r.push(`view of your bouncing tits`); - } else if (canHear(S.Concubine)) { - r.push(`sound of lusty sex`); - } else { - r.push(`vibrations from your bed bouncing up and down`); + r.push(`Sometimes society overlooks that you are a woman and have certain needs, but your lover tonight knows exactly how to treat you. When your guest`); + if (_FS !== "Youth Preferentialist") { + r.push(`is finally spent,`); + } else { + r.push(`wakes up from against your body,`); + } + r.push(`he showers, dresses, and leaves discreetly, offering you a proper thank you. This is the kind of thing that <span class="green">builds a lasting reputation</span> in the Free Cities.`); + repX(5000, "event"); + if (canGetPregnant(V.PC)) { + switch (_FS) { + case "Asset Expansionist": + case "Repopulationist": + case "Slave Professionalism": + r.push(knockMeUp(V.PC, 100, 0, -2)); + break; + case "Eugenics": + case "Gender Fundamentalist": + case "Maturity Preferentialist": + case "Paternalist": + case "Physical Idealist": + case "Statuesque Glorification": + r.push(knockMeUp(V.PC, 60, 0, -2)); + break; + default: + r.push(knockMeUp(V.PC, 40, 0, -2)); } - r.push(` is too much for ${S.Concubine.slaveName} to resist and so ${he} crawls over to kiss and caress you as your lover finishes.`); } - } - r.push(`Sometimes society overlooks that you are a woman and have certain needs, but your lover tonight knows exactly how to treat you. When your guest `); - if (_FS !== "Youth Preferentialist") { - r.push(`is finally spent`); - } else { - r.push(`wakes up from against your body`); - } - r.push(`, he showers, dresses, and leaves discreetly, offering you a proper thank you. This is the kind of thing that <span class="green">builds a lasting reputation</span> in the Free Cities.`); - repX(5000, "event"); - if (canGetPregnant(V.PC)) { - switch (_FS) { - case "Asset Expansionist": - case "Repopulationist": - case "Slave Professionalism": - r.push(knockMeUp(V.PC, 100, 0, -2)); - case "Eugenics": - case "Gender Fundamentalist": - case "Maturity Preferentialist": - case "Paternalist": - case "Physical Idealist": - case "Statuesque Glorification": - r.push(knockMeUp(V.PC, 60, 0, -2)); - default: - r.push(knockMeUp(V.PC, 40, 0, -2)); + if (_FS !== "none") { + const desc = "a tasteful morning-after message, complete with number, from a handsome " + _FS + " citizen"; + V.trinkets.push(desc); + } else { + V.trinkets.push("a tasteful morning-after message, complete with number, from a handsome citizen"); } + + App.Events.addParagraph(frag, r); + return frag; } - if (_FS !== "none") { - const desc = "a tasteful morning-after message, complete with number, from a handsome " + _FS + " citizen"; - V.trinkets.push(desc); - } else { - V.trinkets.push("a tasteful morning-after message, complete with number, from a handsome citizen"); - } - // <</replace>> - // <</link>> - if (_FS !== "none") { - // <br> - // <<link "Emphasize his societal style with exhibitionism">> - // <<replace "#result">> + function exhibitionism() { + const frag = new DocumentFragment(); + let r = []; r.push(`You turn to face him straight on, and something about the look in your eye fills him with mixed apprehension and anticipation. You agree with his banter and praise him for being so forward-thinking, before transitioning to more direct praise of his style and then his body. You're speaking in a tone that cuts through the room, and by the time you kiss your willing conquest, there's not a person in the room who isn't paying attention. They all understand the message: this gathering is turning into something else, now. Those few who aren't willing to fuck in public withdraw, and everyone who didn't come with a sexual partner sends urgent messages to have appropriate slaves brought from their apartments. You make out with him for a while, letting everyone make arrangements, and then pull his clothes off, making sure his`); switch (_FS) { case "Subjugationist": @@ -637,30 +731,39 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba } else { V.arcologies[0].FSSubjugationist += 5; } + break; case "Gender Radicalist": r.push(`tits and stiff dick`); V.arcologies[0].FSGenderRadicalist += 5; + break; case "Gender Fundamentalist": r.push(`dominant masculinity`); V.arcologies[0].FSGenderFundamentalist += 5; + break; case "Repopulationist": r.push(`urge to father a daughter`); V.arcologies[0].FSRepopulationFocus += 5; + break; case "Eugenics": r.push(`perfect body`); V.arcologies[0].FSRestart += 5; + break; case "Paternalist": r.push(`appealing body`); V.arcologies[0].FSPaternalist += 5; + break; case "Degradationist": r.push(`dominant form`); V.arcologies[0].FSDegradationist += 5; + break; case "Body Purist": r.push(`natural body`); V.arcologies[0].FSBodyPurist += 5; + break; case "Transformation Fetishist": r.push(`extended dick`); V.arcologies[0].FSTransformationFetishist += 5; + break; case "Youth Preferentialist": if (V.minimumSlaveAge < 13) { r.push(`boyish`); @@ -671,39 +774,51 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba } r.push(`body`); V.arcologies[0].FSYouthPreferentialist += 5; + break; case "Maturity Preferentialist": r.push(`mature body`); V.arcologies[0].FSMaturityPreferentialist += 5; + break; case "Slimness Enthusiast": r.push(`slender body`); V.arcologies[0].FSSlimnessEnthusiast += 5; + break; case "Asset Expansionist": r.push(`huge genitals`); V.arcologies[0].FSAssetExpansionist += 5; + break; case "Pastoralist": r.push(`milk-fed, chubby body`); V.arcologies[0].FSPastoralist += 5; + break; case "Physical Idealist": r.push(`ripped body`); V.arcologies[0].FSPhysicalIdealist += 5; + break; case "Hedonistic": r.push(`plump body`); V.arcologies[0].FSHedonisticDecadence += 5; + break; case "Chattel Religionist": r.push(`divine sexuality`); V.arcologies[0].FSChattelReligionist += 5; + break; case "Roman Revivalist": r.push(`muscular form`); V.arcologies[0].FSRomanRevivalist += 5; + break; case "Neo Imperialist": r.push(`chiseled muscles`); V.arcologies[0].FSNeoImperialist += 5; + break; case "Aztec Revivalist": r.push(`well-built form`); V.arcologies[0].FSAztecRevivalist += 5; + break; case "Egyptian Revivalist": r.push(`beautiful tanned body`); V.arcologies[0].FSEgyptianRevivalist += 5; + break; case "Arabian Revivalist": case "Chinese Revivalist": case "Edo Revivalist": @@ -715,28 +830,33 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba } else { V.arcologies[0].FSChineseRevivalist += 5; } + break; case "Intellectual Dependency": r.push(`extreme horniness`); V.arcologies[0].FSIntellectualDependency += 5; + break; case "Slave Professionalism": r.push(`experienced body`); V.arcologies[0].FSSlaveProfessionalism += 5; + break; case "Petite Admiration": r.push(`tiny form`); V.arcologies[0].FSPetiteAdmiration += 5; + break; case "Statuesque Glorification": r.push(`towering form`); V.arcologies[0].FSStatuesqueGlorification += 5; + break; default: r.push(`hot young body`); } - r.push(`is obvious to everyone. The message is clear, and your guest of honor is the center of attention as you take him there in view of the arcology's leading citizens. Naturally, the story percolates, making it clear that there's nothing you won't do to <span class="green">further acceptance of${_FS} principles.</span>`); + r.push(`is obvious to everyone. The message is clear, and your guest of honor is the center of attention as you take him there in view of the arcology's leading citizens. Naturally, the story percolates, making it clear that there's nothing you won't do to <span class="green">further acceptance of ${_FS} principles.</span>`); if (canGetPregnant(V.PC)) { r.push(knockMeUp(V.PC, 40, 0, -2)); } - // <</replace>> - // <</link>> + + App.Events.addParagraph(frag, r); + return frag; } - // </span> } }; -- GitLab From 5065b9a2d5b099fd2d8005c51ab54172b05a31b4 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 21:35:11 -0400 Subject: [PATCH 26/91] fix --- src/events/RE/reMaleCitizenHookup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/RE/reMaleCitizenHookup.js b/src/events/RE/reMaleCitizenHookup.js index c626fb80dd6..6ce07b4716c 100644 --- a/src/events/RE/reMaleCitizenHookup.js +++ b/src/events/RE/reMaleCitizenHookup.js @@ -92,7 +92,7 @@ App.Events.REMaleCitizenHookup = class REMaleCitizenHookup extends App.Events.Ba const _FS = (FSArray.length > 0) ? FSArray.random() : "none"; let r = []; - r.push(`At night, the best living areas in the arcology offer a constant mélange of selective entertainments. There's a perpetual social scrum of who is to be invited to what going on, and you occupy a preeminent place atop it, mostly aloof from the struggles of your citizens for recognition and influence. You're invited to almost everything, since everyone who lives here knows the value of being in favor with the owner of the arcology. Invitations to your parties, of course, are some of the most valuable social currency in the arcology and one of V.assistant.name's most important duties is to help you manage them without wasting your valuable time. It's not actually necessary for you to attend your own parties, since almost everyone will be glad to be seen in the entertainment area of the penthouse whether or not the`); + r.push(`At night, the best living areas in the arcology offer a constant mélange of selective entertainments. There's a perpetual social scrum of who is to be invited to what going on, and you occupy a preeminent place atop it, mostly aloof from the struggles of your citizens for recognition and influence. You're invited to almost everything, since everyone who lives here knows the value of being in favor with the owner of the arcology. Invitations to your parties, of course, are some of the most valuable social currency in the arcology and one of ${V.assistant.name}'s most important duties is to help you manage them without wasting your valuable time. It's not actually necessary for you to attend your own parties, since almost everyone will be glad to be seen in the entertainment area of the penthouse whether or not the`); if (V.PC.title === 1) { r.push(`proprietor`); } else { -- GitLab From a1ddfbd4464b446f05f5ccd193a82ced00116a8e Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 21:41:19 -0400 Subject: [PATCH 27/91] hook up --- src/events/randomEvent.js | 1 + src/uncategorized/randomNonindividualEvent.tw | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index dff1e4548b2..551e1615467 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -124,6 +124,7 @@ App.Events.getNonindividualEvents = function() { new App.Events.RERecruit(), new App.Events.REBusyMasterSuite(), new App.Events.REMalefactor(), + new App.Events.REMaleCitizenHookup(), ]; }; diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 854e7a4ba95..8a13351cf2b 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -1013,7 +1013,7 @@ <<if $policies.regularParties == 1>> <<if ($PC.vagina > 0 && $PC.title == 0) && (random(0,99) < $seeDicks)>> - <<set $events.push("RE male citizen hookup")>> + /*<<set $events.push("RE male citizen hookup")>> moved to js */ <<else>> <<set $events.push("RE citizen hookup")>> <</if>> -- GitLab From a2aa6568d9e2ca87c06c9bba3d7c2a83c4a3090c Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 22:56:32 -0400 Subject: [PATCH 28/91] start --- src/events/RE/reFSNonconformist.js | 375 ++++++++++++++++++ src/uncategorized/randomNonindividualEvent.tw | 117 ------ src/uncategorized/reFSNonconformist.tw | 332 ---------------- 3 files changed, 375 insertions(+), 449 deletions(-) create mode 100644 src/events/RE/reFSNonconformist.js delete mode 100644 src/uncategorized/reFSNonconformist.tw diff --git a/src/events/RE/reFSNonconformist.js b/src/events/RE/reFSNonconformist.js new file mode 100644 index 00000000000..25af489ba7b --- /dev/null +++ b/src/events/RE/reFSNonconformist.js @@ -0,0 +1,375 @@ +App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => Object.keys(App.Data.FutureSociety.records).some(fs => V.arcologies[0][fs] < 95 && V.arcologies[0][fs] > 50) + ]; + } + + actorPrerequisites() { + return []; + } + execute(node) { + :: RE FS nonconformist [nobr] + + V.nextButton = " ", V.nextLink = "RIE Eligibility Check", V.returnTo = "RIE Eligibility Check"; + + const FSNonconformistArray = Object.keys(App.Data.FutureSociety.records).filter(fs => V.arcologies[0][fs] < 95 && V.arcologies[0][fs] > 50) + + + V.FSNonconformist = V.FSNonconformistEvents.random(); + + if (V.arcologies[0].FSRestart !== "unset") { + r.push(`A group of the Societal Elite arrives at your penthouse and is quickly ushered into your office. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply`); + } else { + r.push(`A deputation of your citizens arrives at your penthouse and asks to see you. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply`); + } + if (V.FSNonconformist === "Pastoralist") { + r.push(`committed to making the future of the arcology a creamy one. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time planning milk orgies,`); + } else if (V.FSNonconformist === "Supremacist") { + r.push(`committed to the ascendancy of the ${V.arcologies[0].FSSupremacistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time eagerly debating revisionist histories,`); + } else if (V.FSNonconformist === "Subjugationist") { + r.push(`involved in the subjugation of the ${V.arcologies[0].FSSubjugationistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time competing to come up with ever more extreme ways to degrade mongrels,`); + } else if (V.FSNonconformist === "Repopulation Efforts") { + r.push(`committed to perpetuating humanity. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time impregnating fertile women,`); + } else if (V.FSNonconformist === "Eugenics") { + r.push(`committed to restarting humanity. They're looking quite furious, an unusual mood for those with power second only to yours,`); + } else if (V.FSNonconformist === "Gender Radicalist") { + r.push(`committed to the redefinition of gender around power. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully sodomizing their slaves,`); + } else if (V.FSNonconformist === "Gender Fundamentalist") { + r.push(`committed to traditional gender roles. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time basking in the attentions of their women,`); + } else if (V.FSNonconformist === "Paternalist") { + r.push(`committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the lives of their chattel makes them quite self-assured,`); + } else if (V.FSNonconformist === "Degradationist") { + r.push(`committed to the comprehensive degradation of slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully raping their slaves,`); + } else if (V.FSNonconformist === "Intellectual Dependency") { + r.push(`committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time being fawned over by horny sluts,`); + } else if (V.FSNonconformist === "Slave Professionalism") { + r.push(`committed to crafting perfect slaves. They're looking quite grim, an unusual mood for a group of oligarchs with nothing short of masterful sources of stress release,`); + } else if (V.FSNonconformist === "Body Purist") { + r.push(`committed to body purism. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the health of their chattel make them quite self-righteous,`); + } else if (V.FSNonconformist === "Transformation Fetishist") { + r.push(`committed to extreme transformation. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time obsessing over improvements to their favorite slaves,`); + } else if (V.FSNonconformist === "Slimness Enthusiast") { + r.push(`addicted to slim female bodies. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cavorting with their harems,`); + } else if (V.FSNonconformist === "Asset Expansionist") { + r.push(`addicted to tits and ass. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time having sex with their grandiosely endowed girls,`); + } else if (V.FSNonconformist === "Youth Preferentialist") { + r.push(`committed to the fashion for young girls. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' fresh bodies,`); + } else if (V.FSNonconformist === "Maturity Preferentialist") { + r.push(`committed to the fashion for mature slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' experience,`); + } else if (V.FSNonconformist === "Petite Admiration") { + r.push(`committed to the fashion for short slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their fun-sized slaves,`); + } else if (V.FSNonconformist === "Statuesque Glorification") { + r.push(`obsessed with tallness. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time flaunting their stature,`); + } else if (V.FSNonconformist === "Physical Idealist") { + r.push(`involved in physical idealism. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time lifting, tanning, and giving each other fist-bumps and bro-nods,`); + } else if (V.FSNonconformist === "Hedonistic Decadence") { + r.push(`committed to hedonistic decadence. They're looking quite grim, an unusual mood for a group of oligarchs who spend most of their time indulging themselves by any, and every, means possible,`); + } else if (V.FSNonconformist === "Chattel Religionist") { + r.push(`committed to the new faith. They're looking quite grim, an unusual mood for a group of oligarchs who occupy favored places in a new religious hierarchy that affords them ample pleasure,`); + } else if (V.FSNonconformist === "Roman Revivalist") { + r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the upper-class Roman virtues of stoicism and self-possession,`); + } else if (V.FSNonconformist === "Neo Imperialist") { + r.push(`involved in your new Imperial vision. They're looking quite grim, an unusual mood for a group of noble oligarchs in a society that views them and their children as socially, physically, and even religiously superior to the serf-like masses,`); + } else if (V.FSNonconformist === "Aztec Revivalist") { + r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the bloody virtues of their proud society,`); + } else if (V.FSNonconformist === "Edo Revivalist") { + r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the traditional Japanese virtue of stoicism,`); + } else if (V.FSNonconformist === "Arabian Revivalist") { + r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to embody the confidence of the early Caliphate,`); + } else if (V.FSNonconformist === "Chinese Revivalist") { + r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to project complete confidence that the arcology possesses the Mandate of Heaven,`); + } else { + r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who partake of your serene confidence that your arcology is coming into a place as stable and long-lived as that of Ancient Egypt,`); + } + if (V.arcologies[0].FSRestart !== "unset") { + r.push(`so you hear them out. Apparently, they're here about a peer, another member of the Elite, who has chosen to perform certain undesirable actions. `); + V.capFirstChar(V.assistant.name) + r.push(` helpfully supplies a biography, but you were previously aware of the situation.`); + } else { + r.push(`so you hear them out. Apparently, they're here about a peer, a fellow citizen with money and power who does not support your vision for the arcology's future. `); + V.capFirstChar(V.assistant.name) + r.push(` helpfully supplies a biography, but you were previously aware of the situation.`); + } + <br><br> + The nonconformist + if (V.FSNonconformist === "Pastoralist") { + r.push(`has long been a vocal skeptic of the tastefulness of grown citizens drinking milk from slaves' breasts. Unfortunately, it seems that they've now edged over into open revolt against pastoralism. They're planning to publish an exposé that purports to reveal abuses in the human milk industry.`); + } else if (V.FSNonconformist === "Supremacist") { + r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are not ${V.arcologies[0].FSSupremacistRace}, and they insist on flaunting their V.arcologies[0].FSSupremacistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against V.arcologies[0].FSSupremacistRace supremacism. After a brutal but deserved public punishment of a non-V.arcologies[0].FSSupremacistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their V.arcologies[0].FSSupremacistRace slaves, on a very weak pretext.`); + } else if (V.FSNonconformist === "Subjugationist") { + r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are ${V.arcologies[0].FSSubjugationistRace}, and they insist on flaunting their non-V.arcologies[0].FSSubjugationistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against V.arcologies[0].FSSubjugationistRace inferiority. After a brutal but deserved public punishment of a V.arcologies[0].FSSubjugationistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their non-V.arcologies[0].FSSubjugationistRace slaves, on a very weak pretext.`); + } else if (V.FSNonconformist === "Repopulation Efforts") { + r.push(`has long been skeptical of the point of your repopulation efforts when the world is not stable and the arcology only so big. They plan to publish information regarding overpopulation, the negatives of chain pregnancies, the dangers of inbreeding and the risks of having so high a concentration of slaves.`); + } else if (V.FSNonconformist === "Eugenics") { + r.push(`has recently knocked up his favorite pet, and instead of responsibly aborting the bastard, has freed and married her. Allowing such actions to come to the public's attention will create a huge scandal and massive trouble for the Societal Elite, as well as undoing much of the progress you've made towards a better future.`); + } else if (V.FSNonconformist === "Gender Radicalist") { + r.push(`has never been quiet about their belief that slaves with dicks are not girls. Unfortunately, it seems that they've now edged over into open revolt against gender radicalism. They've purchased a highly feminized slave one of the group of concerned citizens sold to a third party, and are rumored to be returning the slave to her natural state. The oligarchs are worried that they plan to publicize this project, or worse, possibly even free the slave.`); + } else if (V.FSNonconformist === "Gender Fundamentalist") { + r.push(`has never been quiet about their belief that anything with an asshole counts as a slave girl. Unfortunately, it seems that they've now edged over into open revolt against gender traditionalism. They've been accumulating a number of sexually skilled slaves with dicks, and the oligarchs are worried that some sort of public event involving free sex with these slaves is planned to sway lower class opinion.`); + } else if (V.FSNonconformist === "Paternalist") { + r.push(`has never been shy about their belief that true trust between slave and master is impossible. Unfortunately, it seems that they've now edged over into open revolt against paternalism. They're rumored to run a household in which slaves are required to beat miscreants without mercy or be savaged themselves. There are indications that they may intend to make these spectacles public.`); + } else if (V.FSNonconformist === "Degradationist") { + r.push(`has never been shy about their belief that slaves are people too, and should be treated with respect. Unfortunately, it seems that they've now edged over into open revolt against degradationism. They're rumored to allow their slaves to decline sex. This perversion is bad enough, but the oligarchs are concerned that they may intend to take this practice public, setting favored slaves up with their own apartments and livelihoods.`); + } else if (V.FSNonconformist === "Intellectual Dependency") { + r.push(`has never been quiet about their grievances with having such a concentration of morons in one place. Unfortunately, it seems that they've now edged over into open revolt against intellectual dependency. They're planning to publish an exposé that reveals that the recent rise in prices is directly related to the number of accidents caused by the sheer lack of brains in the slave population.`); + } else if (V.FSNonconformist === "Slave Professionalism") { + r.push(`has never been shy about their paranoia over the dangers of a smart slave population. Unfortunately, it seems that they've now edged out of sanity and into open revolt against slave professionalism. They're rumored to be training slaves to carry out their fears. There are indications that they may intend to set loose these slaves to wreak havoc and prove their point.`); + } else if (V.FSNonconformist === "Body Purist") { + r.push(`has always been known for their harem of implant-filled silicone dolls. Unfortunately, it seems that they've now edged over into open revolt against body purism. They've purchased a wonderfully healthy and pure slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave has been outfitted with cutting-edge gradually expanding breast implants with no effective maximum size. The oligarchs are disgusted and mortified lest this project become public.`); + } else if (V.FSNonconformist === "Transformation Fetishist") { + r.push(`has always been known for their harem of natural girls. Unfortunately, it seems that they've now edged over into open revolt against transformation. They've purchased a heavily implanted slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being painstakingly returned to her natural, implant-free appearance. The oligarchs are concerned that the nonconformist may be planning some sort of public reveal of her naturalist makeover.`); + } else if (V.FSNonconformist === "Slimness Enthusiast") { + r.push(`has always been known for their harem of disgusting hambeasts. Unfortunately, it seems that they've now edged over into open revolt against the fashion for slimness. They've purchased a notoriously graceful slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being force-fed in private as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product.`); + } else if (V.FSNonconformist === "Asset Expansionist") { + r.push(`has always been known for their harem of disgusting beanpoles. Unfortunately, it seems that they've now edged over into open revolt against the fashion for big tits. They've purchased a slave with famously magnificent boobs one of the group of concerned citizens sold to a third party, and it's rumored that the slave has undergone a radical breast reduction as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product.`); + } else if (V.FSNonconformist === "Youth Preferentialist") { + r.push(`has never missed an opportunity to share their belief that a mature woman who knows her way around a dick is a better fuck than a virgin. Unfortunately, it seems that they've now edged over into open revolt against the fashion for youth and freshness. They're holed up in their luxurious apartments, preparing a large number of older, sexually experienced slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`); + } else if (V.FSNonconformist === "Maturity Preferentialist") { + r.push(`has never missed an opportunity to share their belief that a fresh girl is infinitely preferable to an old whore. Unfortunately, it seems that they've now edged over into open revolt against the fashion for maturity and experience. They're holed up in their luxurious apartments, preparing a large number of virgin slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`); + } else if (V.FSNonconformist === "Petite Admiration") { + r.push(`has never missed an opportunity to share their belief that being able to look into your lover's eyes while you fuck is the greatest thing in the world. Unfortunately, it seems that they've now edged over into open revolt against the fashion for mixing big and small. They're holed up in their luxurious apartments, preparing a large number of tall, undeniably gorgeous slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`); + } else if (V.FSNonconformist === "Statuesque Glorification") { + r.push(`is an advocate for short slaves. They themselves stand barely over the acceptable threshold, and they insist on flaunting their midget slaves. Unfortunately, it seems that they've now edged over into open revolt against tall superiority. After a brutal but deserved public humiliation of a slave owner caught lying about their chattel's height by a group of concerned citizens, the nonconformist is planning on visiting the same horrors on some of their gorgeously tall slaves, on a very weak pretext.`); + } else if (V.FSNonconformist === "Physical Idealist") { + r.push(`rarely misses a chance to lecture on the perils of toxic masculinity and excessive public standards of beauty. Unfortunately, it seems that they've now edged over into open revolt against the Valhalla of physical perfection the arcology is rapidly becoming. They're rumored to be preparing a manifesto on beauty at any size, along with the necessary funds to bribe neutral third parties into going along.`); + } else if (V.FSNonconformist === "Hedonistic Decadence") { + r.push(`has long been a vocal opponent of over-indulgence and its effects on society. Unfortunately, it seems that they've now edged over into open revolt against hedonism. They're planning to publish an exposé that reveals numerous statistics regarding average health and lifespans, the rising maintenance costs to accommodate the widening population, and a rather alarming report that the arcology has in fact //sunk// several `); + if (V.showInches === 2) { + r.push(`inches`); + } else { + r.push(`centimeters`); + } + r.push(` since hedonism became commonplace among the citizenry.`); + } else if (V.FSNonconformist === "Chattel Religionist") { + r.push(`originally moved to the Free Cities to get away from religion entirely, and has never missed a chance to register disdain for the new faith. Unfortunately, it seems that they've now edged over into open heresy. Typically, they're going about it in a hypocritical way. It's rumored that they've engaged the services of a charismatic itinerant preacher of one of the more popular old world faiths, and intend to bring him to the arcology to inveigh against the chattel religion.`); + } else if (V.FSNonconformist === "Roman Revivalist") { + r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Rome has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Roman project, they're going to set up a competing Gaulish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); + } else if (V.FSNonconformist === "Neo Imperialist") { + r.push(`has been a staunch and lifelong egalitarian, despite holding slaves for most of their later life, committed to the tenets of a free democratic society. They have loudly and openly criticzed Imperial society and its relegation of the lower classes to serfdom and subservience for the benefit of your Knights and Barons; now you hear they're planning to set up a competing societal design they call Neo-Republicanism, modifying the old world Republican style into a directly democratic arcology governance. The Barons fear that this might rile up a number of serfs against Imperial society.`); + } else if (V.FSNonconformist === "Aztec Revivalist") { + r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Aztec has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Aztec project, they're going to set up a competing Spanish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); + } else if (V.FSNonconformist === "Edo Revivalist") { + r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Edo Japan has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Japanese project, they're going to set up a competing Korean Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); + } else if (V.FSNonconformist === "Arabian Revivalist") { + r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the golden age of the Caliphate has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Arabian project, they're going to set up a competing Byzantine Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); + } else if (V.FSNonconformist === "Chinese Revivalist") { + r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since ancient China has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the imperial project, they're going to set up a competing Mongol Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); + } else { + r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the land of the Pharaohs has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Egyptian project, they're going to set up a competing Ancient Greek Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); + } + if (V.arcologies[0].FSRestart !== "unset") { + r.push(`Faced with such a threat, the Elite naturally came to you. They ask you, as leader of the arcology, to both cover up the event and deal with the disgraced Elite.`); + } else { + r.push(`Faced with such a threat, the citizens naturally came to you. They ask you, as leader of the arcology, to both prevent the plan and get the nonconformist to move out.`); + } + <br><br> + The nonconformist is far too prominent and prosperous to make this an easy dilemma to resolve. Your societal goals are at stake, as is your reputation among some of your best citizens, but the nonconformist has significant sway in the arcology's economy. Merely forcing them out of the arcology would damage its prosperity, and more decisive action could have more serious consequences still. + <br><br> + + <span id="result"> + <<link "Ignore the situation">> + repX(-250, "event"); + <<replace "#result">> + r.push(`You communicate polite concern, but offer no specific plans. The prominent citizens go away muttering, <span class="red">very disappointed</span> that you are not taking their concerns seriously. The nonconformist`); + if (V.FSNonconformist === "Pastoralist") { + r.push(`publishes the exposé, <span class="red">setting back adoption</span> of pastoralism.`); + V.arcologies[0].FSPastoralist -= 10; + } else if (V.FSNonconformist === "Supremacist") { + r.push(`publicly flogs one of their ${V.arcologies[0].FSSupremacistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of V.arcologies[0].FSSupremacistRace supremacy.`); + V.arcologies[0].FSSupremacist -= 10; + } else if (V.FSNonconformist === "Subjugationist") { + r.push(`publicly flogs one of their non-${V.arcologies[0].FSSubjugationistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of V.arcologies[0].FSSubjugationistRace inferiority.`); + V.arcologies[0].FSSubjugationist -= 10; + } else if (V.FSNonconformist === "Gender Radicalist") { + r.push(`reveals the defeminized slave and then frees her, completing her return to maleness according to Gender Radicalism's own tenets, <span class="red">setting back acceptance</span> of the society model.`); + V.arcologies[0].FSGenderRadicalist -= 10; + } else if (V.FSNonconformist === "Repopulation Efforts") { + r.push(`publishes his information, <span class="red">greatly hindering</span> the adoption of mass reproduction.`); + if (V.PC.belly >= 1000) { + r.push(` Your own fecundity is brought into question as well, <span class="red">hurting your public opinion.</span>`); + repX(forceNeg(V.PC.preg*10), "event"); + } + V.arcologies[0].FSRepopulationFocus -= 10; + } else if (V.FSNonconformist === "Eugenics") { + r.push(`hosts a public wedding commemorating their love. This <span class="red">sets back acceptance</span> of your class system and hinders Eugenics.`); + if (V.eugenicsFullControl !== 1) { + r.push(` The Societal Elite are <span class="red">furious</span> at your inaction.`); + V.failedElite += 100; + } + V.arcologies[0].FSRestart -= 20; + } else if (V.FSNonconformist === "Gender Fundamentalist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. They're so filled with aphrodisiacs that they orgasm constantly when citizens use their asses. This <span class="red">setts back acceptance</span> of gender traditionalism.`); + V.arcologies[0].FSGenderFundamentalist -= 10; + } else if (V.FSNonconformist === "Paternalist") { + r.push(`begins requiring his slaves to beat each other in public for the entertainment of passersby, <span class="red">setting back acceptance</span> of paternalism.`); + V.arcologies[0].FSPaternalist -= 10; + } else if (V.FSNonconformist === "Degradationist") { + r.push(`begins building independent little lives for a few of their best slaves, <span class="red">setting back acceptance</span> of degradationism.`); + V.arcologies[0].FSDegradationist -= 10; + } else if (V.FSNonconformist === "Intellectual Dependency") { + r.push(`publishes the exposé, <span class="red">setting back acceptance</span> of a totally dependent slave population as citizens scramble to slave-proof their homes.`); + V.arcologies[0].FSIntellectualDependency -= 10; + } else if (V.FSNonconformist === "Slave Professionalism") { + r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, striking fear into the citizenry and <span class="red">setting back acceptance</span> of slave professionalism.`); + V.arcologies[0].FSSlaveProfessionalism -= 10; + } else if (V.FSNonconformist === "Body Purist") { + r.push(`is soon accompanied around the arcology by a slave with ten-liter breast implants, <span class="red">setting back acceptance</span> of body purism.`); + V.arcologies[0].FSBodyPurist -= 10; + } else if (V.FSNonconformist === "Transformation Fetishist") { + r.push(`is soon accompanied around the arcology by the successfully made-over slave, whose transformation they never tire of extolling. This <span class="red">setting back acceptance</span> of transformation.`); + V.arcologies[0].FSTransformationFetishist -= 10; + } else if (V.FSNonconformist === "Slimness Enthusiast") { + r.push(`soon reveals their little project. The once-beautiful slave is now so fat she can scarcely walk; the unanswered insult <span class="red">sets back the fashion</span> for slim slaves.`); + V.arcologies[0].FSSlimnessEnthusiast -= 10; + } else if (V.FSNonconformist === "Asset Expansionist") { + r.push(`soon reveals their little project. A pair of the arcology's finest tits are gone forever; the unanswered insult <span class="red">sets back the fashion</span> for stacked slaves.`); + V.arcologies[0].FSAssetExpansionist -= 10; + } else if (V.FSNonconformist === "Youth Preferentialist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. They're so filled with aphrodisiacs that they eagerly fuck anyone who shows the slightest interest. This <span class="red">dims the fashion</span> for fresh slaves.`); + V.arcologies[0].FSYouthPreferentialist -= 10; + } else if (V.FSNonconformist === "Maturity Preferentialist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. They're virgins, though not for very long. This <span class="red">dims the fashion</span> for mature slaves.`); + V.arcologies[0].FSMaturityPreferentialist -= 10; + } else if (V.FSNonconformist === "Petite Admiration") { + r.push(`hosts a fancy ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. After a pleasant dance with a partner actually capable of it, many opt to share a second dance beneath the sheets. This <span class="red">dims the fashion</span> for short slaves.`); + V.arcologies[0].FSPetiteAdmiration -= 10; + } else if (V.FSNonconformist === "Statuesque Glorification") { + r.push(`publicly berates each of their tall slaves to complete tears. As the group begins to gleefully join in, glorification of the tall <span class="red">becomes more a joke than a fashion.</span>`); + V.arcologies[0].FSStatuesqueGlorification -= 10; + } else if (V.FSNonconformist === "Physical Idealist") { + r.push(`publishes their screed, and spreads money around to ensure its widespread dissemination. This <span class="red">sets back acceptance</span> of physical idealism.`); + V.arcologies[0].FSPhysicalIdealist -= 10; + } else if (V.FSNonconformist === "Hedonistic Decadence") { + r.push(`publishes their findings causing a tremendous panic, several heart attacks and a large number of clogged hallways, but ultimately a resurgence of healthy living practices. This <span class="red">sets back acceptance</span> of hedonistic decadence.`); + V.arcologies[0].FSHedonisticDecadence -= 10; + } else if (V.FSNonconformist === "Chattel Religionist") { + r.push(`brings in their pet dissenting preacher, whose clever invectives <span class="red">set back acceptance</span> of the new religion.`); + V.arcologies[0].FSChattelReligionist -= 10; + } else if (V.FSNonconformist === "Roman Revivalist") { + r.push(`offers their Gaulish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Roman revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); + V.arcologies[0].FSRomanRevivalist -= 10; + } else if (V.FSNonconformist === "Neo Imperialist") { + r.push(`presents their Neo-Republicanism to society with great fanfare. While the slave population is much too indoctrinated to pay these ridiculous precepts much heed, Republican ideals stir debate and rabblerousing among a portion of the free serfs, before your guards brusquely push their preachers off the street and tear down the Republican posters littered around the arcology. This imbroglio <span class="red">sets back acceptance</span> of your Imperial Society.`); + V.arcologies[0].FSNeoImperialist -= 10; + } else if (V.FSNonconformist === "Aztec Revivalist") { + r.push(`offers their Spanish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Aztec revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); + V.arcologies[0].FSAztecRevivalist -= 10; + } else if (V.FSNonconformist === "Edo Revivalist") { + r.push(`offers their Korean Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Edo revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); + V.arcologies[0].FSEdoRevivalist -= 10; + } else if (V.FSNonconformist === "Arabian Revivalist") { + r.push(`offers their Byzantine Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Arabian revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); + V.arcologies[0].FSArabianRevivalist -= 10; + } else if (V.FSNonconformist === "Chinese Revivalist") { + r.push(`offers their Mongol Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Chinese revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); + V.arcologies[0].FSChineseRevivalist -= 10; + } else { + r.push(`offers their Ancient Greek Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Egyptian revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); + V.arcologies[0].FSEgyptianRevivalist -= 10; + } + <</replace>> + V.nextButton = "Continue"; + App.Utils.updateUserButton(); + r.push(` /* unlock Continue button *//link>> + <br> + <<link "Throw the nonconformist out of the arcology">> + V.arcologies[0].prosperity -= 10; + <<replace "#result">> + r.push(`You agree with the prominent citizens, and promise to apply all of your considerable contractual and business power to get the nonconformist out of the arcology before they can put their plan into action. You manage it, but only just. Opinion on your actions is mixed: the oligarchs who came to you are pleased you satisfied their requests, but your maneuvers were offensive to the general preference for freedom. The impact on the arcology's economy on the other hand is entirely negative, since the sudden loss of a major player within the arcology's business field <span class="red">damages its prosperity.</span>`); + <</replace>> + V.nextButton = "Continue"; + App.Utils.updateUserButton(); + r.push(` /* unlock Continue button */`); + <</link>> + if (V.PC.rumor === "force") { + <br> + <<link "Leverage your reputation with some credible threats">> + repX(500, "event"); + <<replace "#result"Resolving the situation takes you one call. Exactly what happened to your predecessor as owner of the arcology has never become publicly known, but your method of replacing them is rumored to have been somewhat ballistic in nature. It doesn't take much inflection in your voice to communicate threat, and the nonconformist hastily promises to abandon their plans and be less annoying in the future. The oligarchs are somewhat frightened by the rapidity with which you sorted things out, but they can't argue with the results and their <span class="green">respect for you deepens.</span>`); + <</replace>> + V.nextButton = "Continue"; + App.Utils.updateUserButton(); + r.push(` /* unlock Continue button */`); + <</link>> + } else if (V.cash > 10000) { + <br> + <<link "Quickly manage a nuanced response">> + cashX(-10000, "event"); + <<replace "#result">> + if (V.arcologies[0].FSRestart !== "unset") { + r.push(`You promise to deal with the situation. The Societal Elite trust you to not fail, and they are not disappointed. The fallen Elite`); + } else { + r.push(`You promise to deal with the situation. The prominent citizens trust you enough to leave the problem in your hands, and they are not disappointed. The nonconformist`); + } + if (V.FSNonconformist === "Pastoralist") { + r.push(`publishes the exposé, but finds it effectively defused by a nuanced pro-dairy campaign leveraging your dominance of the arcology's media.`); + } else if (V.FSNonconformist === "Supremacist") { + r.push(`is intent on publicly flogging the unfortunate ${V.arcologies[0].FSSupremacistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Subjugationist") { + r.push(`is intent on publicly flogging the unfortunate non-${V.arcologies[0].FSSubjugationistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Repopulation Efforts") { + r.push(`publishes their information about pregnancy, but it has little effect thanks to a preemptive campaign leveraging your dominance over the arcology's media. Your reputation is protected by the promises of a large stock of future slaves, securing both money and ensuring a stable population in case of disaster. You also pointed out all the other slaveowners also partaking in the pleasures of a pregnant woman. Plus, what could a flock of heavily pregnant slaves do to overthrow their masters?`); + } else if (V.FSNonconformist === "Eugenics") { + r.push(`is ejected from the elite class following a leak of evidence proving he wasn't fit to be a member of the Societal Elite. Evidence tailored by you. Unfortunately, he was ready for this move; he and his wife had already fled the arcology. You did your job adequately, and managed to suppress any possible outrage in the city.`); + } else if (V.FSNonconformist === "Gender Radicalist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Gender Fundamentalist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring real girls in the main plaza, at the same time.`); + } else if (V.FSNonconformist === "Paternalist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from displaying public slave beatings within the arcology. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Degradationist") { + r.push(`discovers that you've hastily set up subtle clauses within the rental contracts that make it all but inevitable that girls sent out on their own would be confiscated. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Intellectual Dependency") { + r.push(`publishes the exposé, but finds it effectively ignored while the public's attention is focused on a record breaking slave orgy. Some fruity drinks and club music were all it took.`); + } else if (V.FSNonconformist === "Slave Professionalism") { + r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, but finds you've prepared a counter for each of his arguments. He's no fool and backs down before he makes things worse for himself.`); + } else if (V.FSNonconformist === "Body Purist") { + r.push(`finds that a mysterious actor has raised serious safety concerns about the new implant technology, causing a minor public outcry against them. The altered slave is not publicly displayed.`); + } else if (V.FSNonconformist === "Transformation Fetishist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Slimness Enthusiast") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off fat-bodied slaves within the arcology. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Asset Expansionist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off ruined slaves within the arcology. Frustrated, they subside for now.`); + } else if (V.FSNonconformist === "Youth Preferentialist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring fresh virgins in the main plaza, at the same time.`); + } else if (V.FSNonconformist === "Maturity Preferentialist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous MILF whores in the main plaza, at the same time.`); + } else if (V.FSNonconformist === "Petite Admiration") { + r.push(`hosts a huge public ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous shortstacks in the main plaza, at the same time.`); + } else if (V.FSNonconformist === "Statuesque Glorification") { + r.push(`is intent on publicly berating the unfortunate giants into mental breakdowns, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, but thankful you kept their true height out of it, they subside for now.`); + } else if (V.FSNonconformist === "Physical Idealist") { + r.push(`publishes their screed, and soon receives a challenge from you to a brief public debate. They offer a brief rant, to which you respond by removing your suit jacket and flexing, which almost pops the seams of your formal shirt. The public loses interest in the manifesto in the amusement.`); + } else if (V.FSNonconformist === "Hedonistic Decadence") { + r.push(`publishes their report and immediately hosts a speech. This is easily countered; you throw a massive party for the arcology's citizens complete with all you can eat buffets, a variety of drugs and a massive orgy to top it off. While the citizens are distracted, the nonconformist's words go unheard and their report is quietly swept under the rug. Not that your population will care as long as there is adequate entertainment to keep their minds off any potential problems.`); + } else if (V.FSNonconformist === "Chattel Religionist") { + r.push(`brings in their pet dissenting preacher, who finds himself caught in a duel from the pulpit with a noted cleric of the slave religion, brought in from outside the arcology on short notice. The debate receives a great deal of attention, and is generally agreed to have been a close-fought draw.`); + } else if (V.FSNonconformist === "Roman Revivalist") { + r.push(`offers their Gaulish Revivalism alternative with fanfare, but fanfare is something that the Romans could certainly manage. The nasty little attempt is forgotten in a day of public gladiatorial combat, chariot racing, and giveaways for the poorer citizens.`); + } else if (V.FSNonconformist === "Neo Imperialist") { + r.push(`offers their Neo-Republican alternative with fanfare, but their fanfare pales before the magnificence of your Imperial rule. The well-trained, heavily-armored, and socially pampered Imperial Knights of your arcology react to the mere proposal with an outrage so intense that the backers almost immediately retreat into hiding from your furious citizens.`); + } else if (V.FSNonconformist === "Aztec Revivalist") { + r.push(`offers their Spanish Revivalism alternative with fanfare, but fanfare is something that the Aztecs would never acknowledge. The nasty little attempt does nothing after a day of prayer, bloodletting and slave sacrifice.`); + } else if (V.FSNonconformist === "Edo Revivalist") { + r.push(`offers their Korean Revivalism alternative with fanfare, but fanfare is inelegant next to Edo revivalism. The nasty little attempt has its day, but looks gauche next to the stately grace of your project.`); + } else if (V.FSNonconformist === "Arabian Revivalist") { + r.push(`offers their Byzantine Revivalism alternative with fanfare, but jihad may be waged with diplomacy as much as with the sword. The nasty little attempt founders on the growing conservatism of the arcology, whose citizens rally to you as their proper leader.`); + } else if (V.FSNonconformist === "Chinese Revivalist") { + r.push(`offers their Mongol Revivalism alternative with fanfare, but judicious strengthening of your imperial authority sees it off without trouble. The influence of Confucian ideas is spreading through your arcology, making it resistant to radical departures.`); + } else { + r.push(`offers their Ancient Greek Revivalism alternative with fanfare, but fanfare is something that the Egyptians could certainly manage. The nasty little attempt is barely noticed over the perfume and noise of a long and beautiful festival.`); + } + r.push(`The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem./replace>> + V.nextButton = "Continue"; + App.Utils.updateUserButton(); + r.push(` /* unlock Continue button */`); + <</link //This will cost `); + V.cashFormat(10000)// + } else { + //You lack the necessary ready cash to manage a nuanced solution// + } + </span> + } +}; diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 8a13351cf2b..513ff7ecee3 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -594,123 +594,6 @@ <<if $arcologies[0].FSEgyptianRevivalist > (random(1,100) || _oneIfDebug)>> <<set _recruitEvents.push("RE FSEgyptianRevivalist acquisition")>> <</if>> - <<set $FSNonconformistEvents = []>> - <<if $arcologies[0].FSSupremacist < 95 && $arcologies[0].FSSupremacist > 50>> - <<set $FSNonconformistEvents.push("Supremacist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSSubjugationist < 95 && $arcologies[0].FSSubjugationist > 50>> - <<set $FSNonconformistEvents.push("Subjugationist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSRepopulationFocus < 95 && $arcologies[0].FSRepopulationFocus > 50>> - <<set $FSNonconformistEvents.push("Repopulation Efforts")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSRestart < 95 && $arcologies[0].FSRestart > 50>> - <<set $FSNonconformistEvents.push("Eugenics")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSIntellectualDependency < 95 && $arcologies[0].FSIntellectualDependency > 50>> - <<set $FSNonconformistEvents.push("Intellectual Dependency")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSSlaveProfessionalism < 95 && $arcologies[0].FSSlaveProfessionalism > 50>> - <<set $FSNonconformistEvents.push("Slave Professionalism")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSGenderRadicalist < 95 && $arcologies[0].FSGenderRadicalist > 50>> - <<set $FSNonconformistEvents.push("Gender Radicalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSGenderFundamentalist < 95 && $arcologies[0].FSGenderFundamentalist > 50>> - <<set $FSNonconformistEvents.push("Gender Fundamentalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSPaternalist < 95 && $arcologies[0].FSPaternalist > 50>> - <<set $FSNonconformistEvents.push("Paternalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSDegradationist < 95 && $arcologies[0].FSDegradationist > 50>> - <<set $FSNonconformistEvents.push("Degradationist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSBodyPurist < 95 && $arcologies[0].FSBodyPurist > 50>> - <<set $FSNonconformistEvents.push("Body Purist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSTransformationFetishist < 95 && $arcologies[0].FSTransformationFetishist > 50>> - <<set $FSNonconformistEvents.push("Transformation Fetishist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSPetiteAdmiration < 95 && $arcologies[0].FSPetiteAdmiration > 50>> - <<set $FSNonconformistEvents.push("Petite Admiration")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSStatuesqueGlorification < 95 && $arcologies[0].FSStatuesqueGlorification > 50>> - <<set $FSNonconformistEvents.push("Statuesque Glorification")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSYouthPreferentialist < 95 && $arcologies[0].FSYouthPreferentialist > 50>> - <<set $FSNonconformistEvents.push("Youth Preferentialist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSMaturityPreferentialist < 95 && $arcologies[0].FSMaturityPreferentialist > 50>> - <<set $FSNonconformistEvents.push("Maturity Preferentialist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSSlimnessEnthusiast < 95 && $arcologies[0].FSSlimnessEnthusiast > 50>> - <<set $FSNonconformistEvents.push("Slimness Enthusiast")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSAssetExpansionist < 95 && $arcologies[0].FSAssetExpansionist > 50>> - <<set $FSNonconformistEvents.push("Asset Expansionist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSPastoralist < 95 && $arcologies[0].FSPastoralist > 50>> - <<set $FSNonconformistEvents.push("Pastoralist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSPhysicalIdealist < 95 && $arcologies[0].FSPhysicalIdealist > 50>> - <<set $FSNonconformistEvents.push("Physical Idealist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSHedonisticDecadence < 95 && $arcologies[0].FSHedonisticDecadence > 50>> - <<set $FSNonconformistEvents.push("Hedonistic Decadence")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSChattelReligionist < 95 && $arcologies[0].FSChattelReligionist > 50>> - <<set $FSNonconformistEvents.push("Chattel Religionist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSRomanRevivalist < 95 && $arcologies[0].FSRomanRevivalist > 50>> - <<set $FSNonconformistEvents.push("Roman Revivalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSNeoImperialist < 95 && $arcologies[0].FSNeoImperialist > 50>> - <<set $FSNonconformistEvents.push("Neo Imperialist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSAztecRevivalist < 95 && $arcologies[0].FSAztecRevivalist > 50>> - <<set $FSNonconformistEvents.push("Aztec Revivalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSEdoRevivalist < 95 && $arcologies[0].FSEdoRevivalist > 50>> - <<set $FSNonconformistEvents.push("Edo Revivalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSArabianRevivalist < 95 && $arcologies[0].FSArabianRevivalist > 50>> - <<set $FSNonconformistEvents.push("Arabian Revivalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSChineseRevivalist < 95 && $arcologies[0].FSChineseRevivalist > 50>> - <<set $FSNonconformistEvents.push("Chinese Revivalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> - <<if $arcologies[0].FSEgyptianRevivalist < 95 && $arcologies[0].FSEgyptianRevivalist > 50>> - <<set $FSNonconformistEvents.push("Egyptian Revivalist")>> - <<set $events.push("RE FS nonconformist")>> - <</if>> <</if>> /* SCHOOL EVENTS */ diff --git a/src/uncategorized/reFSNonconformist.tw b/src/uncategorized/reFSNonconformist.tw deleted file mode 100644 index 8d97c529b0e..00000000000 --- a/src/uncategorized/reFSNonconformist.tw +++ /dev/null @@ -1,332 +0,0 @@ -:: RE FS nonconformist [nobr] - -<<set $nextButton = " ", $nextLink = "RIE Eligibility Check", $returnTo = "RIE Eligibility Check">> - -<<set $FSNonconformist = $FSNonconformistEvents.random()>> - -<<if $arcologies[0].FSRestart != "unset">> - A group of the Societal Elite arrives at your penthouse and is quickly ushered into your office. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply -<<else>> - A deputation of your citizens arrives at your penthouse and asks to see you. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply -<</if>> -<<if $FSNonconformist == "Pastoralist">> - committed to making the future of the arcology a creamy one. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time planning milk orgies, -<<elseif $FSNonconformist == "Supremacist">> - committed to the ascendancy of the $arcologies[0].FSSupremacistRace race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time eagerly debating revisionist histories, -<<elseif $FSNonconformist == "Subjugationist">> - involved in the subjugation of the $arcologies[0].FSSubjugationistRace race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time competing to come up with ever more extreme ways to degrade mongrels, -<<elseif $FSNonconformist == "Repopulation Efforts">> - committed to perpetuating humanity. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time impregnating fertile women, -<<elseif $FSNonconformist == "Eugenics">> - committed to restarting humanity. They're looking quite furious, an unusual mood for those with power second only to yours, -<<elseif $FSNonconformist == "Gender Radicalist">> - committed to the redefinition of gender around power. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully sodomizing their slaves, -<<elseif $FSNonconformist == "Gender Fundamentalist">> - committed to traditional gender roles. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time basking in the attentions of their women, -<<elseif $FSNonconformist == "Paternalist">> - committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the lives of their chattel makes them quite self-assured, -<<elseif $FSNonconformist == "Degradationist">> - committed to the comprehensive degradation of slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully raping their slaves, -<<elseif $FSNonconformist == "Intellectual Dependency">> - committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time being fawned over by horny sluts, -<<elseif $FSNonconformist == "Slave Professionalism">> - committed to crafting perfect slaves. They're looking quite grim, an unusual mood for a group of oligarchs with nothing short of masterful sources of stress release, -<<elseif $FSNonconformist == "Body Purist">> - committed to body purism. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the health of their chattel make them quite self-righteous, -<<elseif $FSNonconformist == "Transformation Fetishist">> - committed to extreme transformation. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time obsessing over improvements to their favorite slaves, -<<elseif $FSNonconformist == "Slimness Enthusiast">> - addicted to slim female bodies. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cavorting with their harems, -<<elseif $FSNonconformist == "Asset Expansionist">> - addicted to tits and ass. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time having sex with their grandiosely endowed girls, -<<elseif $FSNonconformist == "Youth Preferentialist">> - committed to the fashion for young girls. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' fresh bodies, -<<elseif $FSNonconformist == "Maturity Preferentialist">> - committed to the fashion for mature slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' experience, -<<elseif $FSNonconformist == "Petite Admiration">> - committed to the fashion for short slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their fun-sized slaves, -<<elseif $FSNonconformist == "Statuesque Glorification">> - obsessed with tallness. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time flaunting their stature, -<<elseif $FSNonconformist == "Physical Idealist">> - involved in physical idealism. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time lifting, tanning, and giving each other fist-bumps and bro-nods, -<<elseif $FSNonconformist == "Hedonistic Decadence">> - committed to hedonistic decadence. They're looking quite grim, an unusual mood for a group of oligarchs who spend most of their time indulging themselves by any, and every, means possible, -<<elseif $FSNonconformist == "Chattel Religionist">> - committed to the new faith. They're looking quite grim, an unusual mood for a group of oligarchs who occupy favored places in a new religious hierarchy that affords them ample pleasure, -<<elseif $FSNonconformist == "Roman Revivalist">> - involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the upper-class Roman virtues of stoicism and self-possession, -<<elseif $FSNonconformist == "Neo Imperialist">> - involved in your new Imperial vision. They're looking quite grim, an unusual mood for a group of noble oligarchs in a society that views them and their children as socially, physically, and even religiously superior to the serf-like masses, -<<elseif $FSNonconformist == "Aztec Revivalist">> - involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the bloody virtues of their proud society, -<<elseif $FSNonconformist == "Edo Revivalist">> - involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the traditional Japanese virtue of stoicism, -<<elseif $FSNonconformist == "Arabian Revivalist">> - involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to embody the confidence of the early Caliphate, -<<elseif $FSNonconformist == "Chinese Revivalist">> - involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to project complete confidence that the arcology possesses the Mandate of Heaven, -<<else>> - involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who partake of your serene confidence that your arcology is coming into a place as stable and long-lived as that of Ancient Egypt, -<</if>> -<<if $arcologies[0].FSRestart != "unset">> - so you hear them out. Apparently, they're here about a peer, another member of the Elite, who has chosen to perform certain undesirable actions. <<= capFirstChar($assistant.name)>> helpfully supplies a biography, but you were previously aware of the situation. -<<else>> - so you hear them out. Apparently, they're here about a peer, a fellow citizen with money and power who does not support your vision for the arcology's future. <<= capFirstChar($assistant.name)>> helpfully supplies a biography, but you were previously aware of the situation. -<</if>> -<br><br> -The nonconformist -<<if $FSNonconformist == "Pastoralist">> - has long been a vocal skeptic of the tastefulness of grown citizens drinking milk from slaves' breasts. Unfortunately, it seems that they've now edged over into open revolt against pastoralism. They're planning to publish an exposé that purports to reveal abuses in the human milk industry. -<<elseif $FSNonconformist == "Supremacist">> - is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are not $arcologies[0].FSSupremacistRace, and they insist on flaunting their $arcologies[0].FSSupremacistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against $arcologies[0].FSSupremacistRace supremacism. After a brutal but deserved public punishment of a non-$arcologies[0].FSSupremacistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their $arcologies[0].FSSupremacistRace slaves, on a very weak pretext. -<<elseif $FSNonconformist == "Subjugationist">> - is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are $arcologies[0].FSSubjugationistRace, and they insist on flaunting their non-$arcologies[0].FSSubjugationistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against $arcologies[0].FSSubjugationistRace inferiority. After a brutal but deserved public punishment of a $arcologies[0].FSSubjugationistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their non-$arcologies[0].FSSubjugationistRace slaves, on a very weak pretext. -<<elseif $FSNonconformist == "Repopulation Efforts">> - has long been skeptical of the point of your repopulation efforts when the world is not stable and the arcology only so big. They plan to publish information regarding overpopulation, the negatives of chain pregnancies, the dangers of inbreeding and the risks of having so high a concentration of slaves. -<<elseif $FSNonconformist == "Eugenics">> - has recently knocked up his favorite pet, and instead of responsibly aborting the bastard, has freed and married her. Allowing such actions to come to the public's attention will create a huge scandal and massive trouble for the Societal Elite, as well as undoing much of the progress you've made towards a better future. -<<elseif $FSNonconformist == "Gender Radicalist">> - has never been quiet about their belief that slaves with dicks are not girls. Unfortunately, it seems that they've now edged over into open revolt against gender radicalism. They've purchased a highly feminized slave one of the group of concerned citizens sold to a third party, and are rumored to be returning the slave to her natural state. The oligarchs are worried that they plan to publicize this project, or worse, possibly even free the slave. -<<elseif $FSNonconformist == "Gender Fundamentalist">> - has never been quiet about their belief that anything with an asshole counts as a slave girl. Unfortunately, it seems that they've now edged over into open revolt against gender traditionalism. They've been accumulating a number of sexually skilled slaves with dicks, and the oligarchs are worried that some sort of public event involving free sex with these slaves is planned to sway lower class opinion. -<<elseif $FSNonconformist == "Paternalist">> - has never been shy about their belief that true trust between slave and master is impossible. Unfortunately, it seems that they've now edged over into open revolt against paternalism. They're rumored to run a household in which slaves are required to beat miscreants without mercy or be savaged themselves. There are indications that they may intend to make these spectacles public. -<<elseif $FSNonconformist == "Degradationist">> - has never been shy about their belief that slaves are people too, and should be treated with respect. Unfortunately, it seems that they've now edged over into open revolt against degradationism. They're rumored to allow their slaves to decline sex. This perversion is bad enough, but the oligarchs are concerned that they may intend to take this practice public, setting favored slaves up with their own apartments and livelihoods. -<<elseif $FSNonconformist == "Intellectual Dependency">> - has never been quiet about their grievances with having such a concentration of morons in one place. Unfortunately, it seems that they've now edged over into open revolt against intellectual dependency. They're planning to publish an exposé that reveals that the recent rise in prices is directly related to the number of accidents caused by the sheer lack of brains in the slave population. -<<elseif $FSNonconformist == "Slave Professionalism">> - has never been shy about their paranoia over the dangers of a smart slave population. Unfortunately, it seems that they've now edged out of sanity and into open revolt against slave professionalism. They're rumored to be training slaves to carry out their fears. There are indications that they may intend to set loose these slaves to wreak havoc and prove their point. -<<elseif $FSNonconformist == "Body Purist">> - has always been known for their harem of implant-filled silicone dolls. Unfortunately, it seems that they've now edged over into open revolt against body purism. They've purchased a wonderfully healthy and pure slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave has been outfitted with cutting-edge gradually expanding breast implants with no effective maximum size. The oligarchs are disgusted and mortified lest this project become public. -<<elseif $FSNonconformist == "Transformation Fetishist">> - has always been known for their harem of natural girls. Unfortunately, it seems that they've now edged over into open revolt against transformation. They've purchased a heavily implanted slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being painstakingly returned to her natural, implant-free appearance. The oligarchs are concerned that the nonconformist may be planning some sort of public reveal of her naturalist makeover. -<<elseif $FSNonconformist == "Slimness Enthusiast">> - has always been known for their harem of disgusting hambeasts. Unfortunately, it seems that they've now edged over into open revolt against the fashion for slimness. They've purchased a notoriously graceful slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being force-fed in private as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product. -<<elseif $FSNonconformist == "Asset Expansionist">> - has always been known for their harem of disgusting beanpoles. Unfortunately, it seems that they've now edged over into open revolt against the fashion for big tits. They've purchased a slave with famously magnificent boobs one of the group of concerned citizens sold to a third party, and it's rumored that the slave has undergone a radical breast reduction as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product. -<<elseif $FSNonconformist == "Youth Preferentialist">> - has never missed an opportunity to share their belief that a mature woman who knows her way around a dick is a better fuck than a virgin. Unfortunately, it seems that they've now edged over into open revolt against the fashion for youth and freshness. They're holed up in their luxurious apartments, preparing a large number of older, sexually experienced slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion. -<<elseif $FSNonconformist == "Maturity Preferentialist">> - has never missed an opportunity to share their belief that a fresh girl is infinitely preferable to an old whore. Unfortunately, it seems that they've now edged over into open revolt against the fashion for maturity and experience. They're holed up in their luxurious apartments, preparing a large number of virgin slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion. -<<elseif $FSNonconformist == "Petite Admiration">> - has never missed an opportunity to share their belief that being able to look into your lover's eyes while you fuck is the greatest thing in the world. Unfortunately, it seems that they've now edged over into open revolt against the fashion for mixing big and small. They're holed up in their luxurious apartments, preparing a large number of tall, undeniably gorgeous slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion. -<<elseif $FSNonconformist == "Statuesque Glorification">> - is an advocate for short slaves. They themselves stand barely over the acceptable threshold, and they insist on flaunting their midget slaves. Unfortunately, it seems that they've now edged over into open revolt against tall superiority. After a brutal but deserved public humiliation of a slave owner caught lying about their chattel's height by a group of concerned citizens, the nonconformist is planning on visiting the same horrors on some of their gorgeously tall slaves, on a very weak pretext. -<<elseif $FSNonconformist == "Physical Idealist">> - rarely misses a chance to lecture on the perils of toxic masculinity and excessive public standards of beauty. Unfortunately, it seems that they've now edged over into open revolt against the Valhalla of physical perfection the arcology is rapidly becoming. They're rumored to be preparing a manifesto on beauty at any size, along with the necessary funds to bribe neutral third parties into going along. -<<elseif $FSNonconformist == "Hedonistic Decadence">> - has long been a vocal opponent of over-indulgence and its effects on society. Unfortunately, it seems that they've now edged over into open revolt against hedonism. They're planning to publish an exposé that reveals numerous statistics regarding average health and lifespans, the rising maintenance costs to accommodate the widening population, and a rather alarming report that the arcology has in fact //sunk// several <<if $showInches == 2>>inches<<else>>centimeters<</if>> since hedonism became commonplace among the citizenry. -<<elseif $FSNonconformist == "Chattel Religionist">> - originally moved to the Free Cities to get away from religion entirely, and has never missed a chance to register disdain for the new faith. Unfortunately, it seems that they've now edged over into open heresy. Typically, they're going about it in a hypocritical way. It's rumored that they've engaged the services of a charismatic itinerant preacher of one of the more popular old world faiths, and intend to bring him to the arcology to inveigh against the chattel religion. -<<elseif $FSNonconformist == "Roman Revivalist">> - has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Rome has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Roman project, they're going to set up a competing Gaulish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction. -<<elseif $FSNonconformist == "Neo Imperialist">> - has been a staunch and lifelong egalitarian, despite holding slaves for most of their later life, committed to the tenets of a free democratic society. They have loudly and openly criticzed Imperial society and its relegation of the lower classes to serfdom and subservience for the benefit of your Knights and Barons; now you hear they're planning to set up a competing societal design they call Neo-Republicanism, modifying the old world Republican style into a directly democratic arcology governance. The Barons fear that this might rile up a number of serfs against Imperial society. -<<elseif $FSNonconformist == "Aztec Revivalist">> - has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Aztec has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Aztec project, they're going to set up a competing Spanish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction. -<<elseif $FSNonconformist == "Edo Revivalist">> - has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Edo Japan has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Japanese project, they're going to set up a competing Korean Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction. -<<elseif $FSNonconformist == "Arabian Revivalist">> - has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the golden age of the Caliphate has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Arabian project, they're going to set up a competing Byzantine Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction. -<<elseif $FSNonconformist == "Chinese Revivalist">> - has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since ancient China has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the imperial project, they're going to set up a competing Mongol Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction. -<<else>> - has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the land of the Pharaohs has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Egyptian project, they're going to set up a competing Ancient Greek Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction. -<</if>> -<<if $arcologies[0].FSRestart != "unset">> - Faced with such a threat, the Elite naturally came to you. They ask you, as leader of the arcology, to both cover up the event and deal with the disgraced Elite. -<<else>> - Faced with such a threat, the citizens naturally came to you. They ask you, as leader of the arcology, to both prevent the plan and get the nonconformist to move out. -<</if>> -<br><br> -The nonconformist is far too prominent and prosperous to make this an easy dilemma to resolve. Your societal goals are at stake, as is your reputation among some of your best citizens, but the nonconformist has significant sway in the arcology's economy. Merely forcing them out of the arcology would damage its prosperity, and more decisive action could have more serious consequences still. -<br><br> - -<span id="result"> -<<link "Ignore the situation">> - <<run repX(-250, "event")>> - <<replace "#result">> - You communicate polite concern, but offer no specific plans. The prominent citizens go away muttering, @@.red;very disappointed@@ that you are not taking their concerns seriously. The nonconformist - <<if $FSNonconformist == "Pastoralist">> - publishes the exposé, @@.red;setting back adoption@@ of pastoralism. - <<set $arcologies[0].FSPastoralist -= 10>> - <<elseif $FSNonconformist == "Supremacist">> - publicly flogs one of their $arcologies[0].FSSupremacistRace slaves halfway to exsanguination, @@.red;setting back acceptance@@ of $arcologies[0].FSSupremacistRace supremacy. - <<set $arcologies[0].FSSupremacist -= 10>> - <<elseif $FSNonconformist == "Subjugationist">> - publicly flogs one of their non-$arcologies[0].FSSubjugationistRace slaves halfway to exsanguination, @@.red;setting back acceptance@@ of $arcologies[0].FSSubjugationistRace inferiority. - <<set $arcologies[0].FSSubjugationist -= 10>> - <<elseif $FSNonconformist == "Gender Radicalist">> - reveals the defeminized slave and then frees her, completing her return to maleness according to Gender Radicalism's own tenets, @@.red;setting back acceptance@@ of the society model. - <<set $arcologies[0].FSGenderRadicalist -= 10>> - <<elseif $FSNonconformist == "Repopulation Efforts">> - publishes his information, @@.red;greatly hindering@@ the adoption of mass reproduction.<<if $PC.belly >= 1000>> Your own fecundity is brought into question as well, @@.red;hurting your public opinion.@@<<run repX(forceNeg($PC.preg*10), "event")>><</if>> - <<set $arcologies[0].FSRepopulationFocus -= 10>> - <<elseif $FSNonconformist == "Eugenics">> - hosts a public wedding commemorating their love. This @@.red;sets back acceptance@@ of your class system and hinders Eugenics.<<if $eugenicsFullControl != 1>> The Societal Elite are @@.red;furious@@ at your inaction.<<set $failedElite += 100>><</if>> - <<set $arcologies[0].FSRestart -= 20>> - <<elseif $FSNonconformist == "Gender Fundamentalist">> - hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. They're so filled with aphrodisiacs that they orgasm constantly when citizens use their asses. This @@.red;setts back acceptance@@ of gender traditionalism. - <<set $arcologies[0].FSGenderFundamentalist -= 10>> - <<elseif $FSNonconformist == "Paternalist">> - begins requiring his slaves to beat each other in public for the entertainment of passersby, @@.red;setting back acceptance@@ of paternalism. - <<set $arcologies[0].FSPaternalist -= 10>> - <<elseif $FSNonconformist == "Degradationist">> - begins building independent little lives for a few of their best slaves, @@.red;setting back acceptance@@ of degradationism. - <<set $arcologies[0].FSDegradationist -= 10>> - <<elseif $FSNonconformist == "Intellectual Dependency">> - publishes the exposé, @@.red;setting back acceptance@@ of a totally dependent slave population as citizens scramble to slave-proof their homes. - <<set $arcologies[0].FSIntellectualDependency -= 10>> - <<elseif $FSNonconformist == "Slave Professionalism">> - hosts a public display of just how easy it would be to turn a slave into an effective assassin, striking fear into the citizenry and @@.red;setting back acceptance@@ of slave professionalism. - <<set $arcologies[0].FSSlaveProfessionalism -= 10>> - <<elseif $FSNonconformist == "Body Purist">> - is soon accompanied around the arcology by a slave with ten-liter breast implants, @@.red;setting back acceptance@@ of body purism. - <<set $arcologies[0].FSBodyPurist -= 10>> - <<elseif $FSNonconformist == "Transformation Fetishist">> - is soon accompanied around the arcology by the successfully made-over slave, whose transformation they never tire of extolling. This @@.red;setting back acceptance@@ of transformation. - <<set $arcologies[0].FSTransformationFetishist -= 10>> - <<elseif $FSNonconformist == "Slimness Enthusiast">> - soon reveals their little project. The once-beautiful slave is now so fat she can scarcely walk; the unanswered insult @@.red;sets back the fashion@@ for slim slaves. - <<set $arcologies[0].FSSlimnessEnthusiast -= 10>> - <<elseif $FSNonconformist == "Asset Expansionist">> - soon reveals their little project. A pair of the arcology's finest tits are gone forever; the unanswered insult @@.red;sets back the fashion@@ for stacked slaves. - <<set $arcologies[0].FSAssetExpansionist -= 10>> - <<elseif $FSNonconformist == "Youth Preferentialist">> - hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. They're so filled with aphrodisiacs that they eagerly fuck anyone who shows the slightest interest. This @@.red;dims the fashion@@ for fresh slaves. - <<set $arcologies[0].FSYouthPreferentialist -= 10>> - <<elseif $FSNonconformist == "Maturity Preferentialist">> - hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. They're virgins, though not for very long. This @@.red;dims the fashion@@ for mature slaves. - <<set $arcologies[0].FSMaturityPreferentialist -= 10>> - <<elseif $FSNonconformist == "Petite Admiration">> - hosts a fancy ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. After a pleasant dance with a partner actually capable of it, many opt to share a second dance beneath the sheets. This @@.red;dims the fashion@@ for short slaves. - <<set $arcologies[0].FSPetiteAdmiration -= 10>> - <<elseif $FSNonconformist == "Statuesque Glorification">> - publicly berates each of their tall slaves to complete tears. As the group begins to gleefully join in, glorification of the tall @@.red;becomes more a joke than a fashion.@@ - <<set $arcologies[0].FSStatuesqueGlorification -= 10>> - <<elseif $FSNonconformist == "Physical Idealist">> - publishes their screed, and spreads money around to ensure its widespread dissemination. This @@.red;sets back acceptance@@ of physical idealism. - <<set $arcologies[0].FSPhysicalIdealist -= 10>> - <<elseif $FSNonconformist == "Hedonistic Decadence">> - publishes their findings causing a tremendous panic, several heart attacks and a large number of clogged hallways, but ultimately a resurgence of healthy living practices. This @@.red;sets back acceptance@@ of hedonistic decadence. - <<set $arcologies[0].FSHedonisticDecadence -= 10>> - <<elseif $FSNonconformist == "Chattel Religionist">> - brings in their pet dissenting preacher, whose clever invectives @@.red;set back acceptance@@ of the new religion. - <<set $arcologies[0].FSChattelReligionist -= 10>> - <<elseif $FSNonconformist == "Roman Revivalist">> - offers their Gaulish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Roman revivalism. This imbroglio @@.red;sets back acceptance@@ of your revivalist project. - <<set $arcologies[0].FSRomanRevivalist -= 10>> - <<elseif $FSNonconformist == "Neo Imperialist">> - presents their Neo-Republicanism to society with great fanfare. While the slave population is much too indoctrinated to pay these ridiculous precepts much heed, Republican ideals stir debate and rabblerousing among a portion of the free serfs, before your guards brusquely push their preachers off the street and tear down the Republican posters littered around the arcology. This imbroglio @@.red;sets back acceptance@@ of your Imperial Society. - <<set $arcologies[0].FSNeoImperialist -= 10>> - <<elseif $FSNonconformist == "Aztec Revivalist">> - offers their Spanish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Aztec revivalism. This imbroglio @@.red;sets back acceptance@@ of your revivalist project. - <<set $arcologies[0].FSAztecRevivalist -= 10>> - <<elseif $FSNonconformist == "Edo Revivalist">> - offers their Korean Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Edo revivalism. This imbroglio @@.red;sets back acceptance@@ of your revivalist project. - <<set $arcologies[0].FSEdoRevivalist -= 10>> - <<elseif $FSNonconformist == "Arabian Revivalist">> - offers their Byzantine Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Arabian revivalism. This imbroglio @@.red;sets back acceptance@@ of your revivalist project. - <<set $arcologies[0].FSArabianRevivalist -= 10>> - <<elseif $FSNonconformist == "Chinese Revivalist">> - offers their Mongol Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Chinese revivalism. This imbroglio @@.red;sets back acceptance@@ of your revivalist project. - <<set $arcologies[0].FSChineseRevivalist -= 10>> - <<else>> - offers their Ancient Greek Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Egyptian revivalism. This imbroglio @@.red;sets back acceptance@@ of your revivalist project. - <<set $arcologies[0].FSEgyptianRevivalist -= 10>> - <</if>> - <</replace>> - <<set $nextButton = "Continue">><<run App.Utils.updateUserButton()>> /* unlock Continue button */ -<</link>> -<br><<link "Throw the nonconformist out of the arcology">> - <<set $arcologies[0].prosperity -= 10>> - <<replace "#result">> - You agree with the prominent citizens, and promise to apply all of your considerable contractual and business power to get the nonconformist out of the arcology before they can put their plan into action. You manage it, but only just. Opinion on your actions is mixed: the oligarchs who came to you are pleased you satisfied their requests, but your maneuvers were offensive to the general preference for freedom. The impact on the arcology's economy on the other hand is entirely negative, since the sudden loss of a major player within the arcology's business field @@.red;damages its prosperity.@@ - <</replace>> - <<set $nextButton = "Continue">><<run App.Utils.updateUserButton()>> /* unlock Continue button */ -<</link>> -<<if $PC.rumor == "force">> -<br><<link "Leverage your reputation with some credible threats">> - <<run repX(500, "event")>> - <<replace "#result">> - Resolving the situation takes you one call. Exactly what happened to your predecessor as owner of the arcology has never become publicly known, but your method of replacing them is rumored to have been somewhat ballistic in nature. It doesn't take much inflection in your voice to communicate threat, and the nonconformist hastily promises to abandon their plans and be less annoying in the future. The oligarchs are somewhat frightened by the rapidity with which you sorted things out, but they can't argue with the results and their @@.green;respect for you deepens.@@ - <</replace>> - <<set $nextButton = "Continue">><<run App.Utils.updateUserButton()>> /* unlock Continue button */ -<</link>> -<<elseif $cash > 10000>> - <br><<link "Quickly manage a nuanced response">> - <<run cashX(-10000, "event")>> - <<replace "#result">> - <<if $arcologies[0].FSRestart != "unset">> - You promise to deal with the situation. The Societal Elite trust you to not fail, and they are not disappointed. The fallen Elite - <<else>> - You promise to deal with the situation. The prominent citizens trust you enough to leave the problem in your hands, and they are not disappointed. The nonconformist - <</if>> - <<if $FSNonconformist == "Pastoralist">> - publishes the exposé, but finds it effectively defused by a nuanced pro-dairy campaign leveraging your dominance of the arcology's media. - <<elseif $FSNonconformist == "Supremacist">> - is intent on publicly flogging the unfortunate $arcologies[0].FSSupremacistRace slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Subjugationist">> - is intent on publicly flogging the unfortunate non-$arcologies[0].FSSubjugationistRace slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Repopulation Efforts">> - publishes their information about pregnancy, but it has little effect thanks to a preemptive campaign leveraging your dominance over the arcology's media. Your reputation is protected by the promises of a large stock of future slaves, securing both money and ensuring a stable population in case of disaster. You also pointed out all the other slaveowners also partaking in the pleasures of a pregnant woman. Plus, what could a flock of heavily pregnant slaves do to overthrow their masters? - <<elseif $FSNonconformist == "Eugenics">> - is ejected from the elite class following a leak of evidence proving he wasn't fit to be a member of the Societal Elite. Evidence tailored by you. Unfortunately, he was ready for this move; he and his wife had already fled the arcology. You did your job adequately, and managed to suppress any possible outrage in the city. - <<elseif $FSNonconformist == "Gender Radicalist">> - finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Gender Fundamentalist">> - hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring real girls in the main plaza, at the same time. - <<elseif $FSNonconformist == "Paternalist">> - finds that you've manipulated their contracts with you to forbid them from displaying public slave beatings within the arcology. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Degradationist">> - discovers that you've hastily set up subtle clauses within the rental contracts that make it all but inevitable that girls sent out on their own would be confiscated. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Intellectual Dependency">> - publishes the exposé, but finds it effectively ignored while the public's attention is focused on a record breaking slave orgy. Some fruity drinks and club music were all it took. - <<elseif $FSNonconformist == "Slave Professionalism">> - hosts a public display of just how easy it would be to turn a slave into an effective assassin, but finds you've prepared a counter for each of his arguments. He's no fool and backs down before he makes things worse for himself. - <<elseif $FSNonconformist == "Body Purist">> - finds that a mysterious actor has raised serious safety concerns about the new implant technology, causing a minor public outcry against them. The altered slave is not publicly displayed. - <<elseif $FSNonconformist == "Transformation Fetishist">> - finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Slimness Enthusiast">> - finds that you've manipulated their contracts with you to forbid them from showing off fat-bodied slaves within the arcology. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Asset Expansionist">> - finds that you've manipulated their contracts with you to forbid them from showing off ruined slaves within the arcology. Frustrated, they subside for now. - <<elseif $FSNonconformist == "Youth Preferentialist">> - hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring fresh virgins in the main plaza, at the same time. - <<elseif $FSNonconformist == "Maturity Preferentialist">> - hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous MILF whores in the main plaza, at the same time. - <<elseif $FSNonconformist == "Petite Admiration">> - hosts a huge public ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous shortstacks in the main plaza, at the same time. - <<elseif $FSNonconformist == "Statuesque Glorification">> - is intent on publicly berating the unfortunate giants into mental breakdowns, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, but thankful you kept their true height out of it, they subside for now. - <<elseif $FSNonconformist == "Physical Idealist">> - publishes their screed, and soon receives a challenge from you to a brief public debate. They offer a brief rant, to which you respond by removing your suit jacket and flexing, which almost pops the seams of your formal shirt. The public loses interest in the manifesto in the amusement. - <<elseif $FSNonconformist == "Hedonistic Decadence">> - publishes their report and immediately hosts a speech. This is easily countered; you throw a massive party for the arcology's citizens complete with all you can eat buffets, a variety of drugs and a massive orgy to top it off. While the citizens are distracted, the nonconformist's words go unheard and their report is quietly swept under the rug. Not that your population will care as long as there is adequate entertainment to keep their minds off any potential problems. - <<elseif $FSNonconformist == "Chattel Religionist">> - brings in their pet dissenting preacher, who finds himself caught in a duel from the pulpit with a noted cleric of the slave religion, brought in from outside the arcology on short notice. The debate receives a great deal of attention, and is generally agreed to have been a close-fought draw. - <<elseif $FSNonconformist == "Roman Revivalist">> - offers their Gaulish Revivalism alternative with fanfare, but fanfare is something that the Romans could certainly manage. The nasty little attempt is forgotten in a day of public gladiatorial combat, chariot racing, and giveaways for the poorer citizens. - <<elseif $FSNonconformist == "Neo Imperialist">> - offers their Neo-Republican alternative with fanfare, but their fanfare pales before the magnificence of your Imperial rule. The well-trained, heavily-armored, and socially pampered Imperial Knights of your arcology react to the mere proposal with an outrage so intense that the backers almost immediately retreat into hiding from your furious citizens. - <<elseif $FSNonconformist == "Aztec Revivalist">> - offers their Spanish Revivalism alternative with fanfare, but fanfare is something that the Aztecs would never acknowledge. The nasty little attempt does nothing after a day of prayer, bloodletting and slave sacrifice. - <<elseif $FSNonconformist == "Edo Revivalist">> - offers their Korean Revivalism alternative with fanfare, but fanfare is inelegant next to Edo revivalism. The nasty little attempt has its day, but looks gauche next to the stately grace of your project. - <<elseif $FSNonconformist == "Arabian Revivalist">> - offers their Byzantine Revivalism alternative with fanfare, but jihad may be waged with diplomacy as much as with the sword. The nasty little attempt founders on the growing conservatism of the arcology, whose citizens rally to you as their proper leader. - <<elseif $FSNonconformist == "Chinese Revivalist">> - offers their Mongol Revivalism alternative with fanfare, but judicious strengthening of your imperial authority sees it off without trouble. The influence of Confucian ideas is spreading through your arcology, making it resistant to radical departures. - <<else>> - offers their Ancient Greek Revivalism alternative with fanfare, but fanfare is something that the Egyptians could certainly manage. The nasty little attempt is barely noticed over the perfume and noise of a long and beautiful festival. - <</if>> - The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem. - <</replace>> - <<set $nextButton = "Continue">><<run App.Utils.updateUserButton()>> /* unlock Continue button */ - <</link>> //This will cost <<print cashFormat(10000)>>// -<<else>> - //You lack the necessary ready cash to manage a nuanced solution// -<</if>> -</span> -- GitLab From 605b59eb9250393e1e320bd0c3e4af1990c4c446 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 23:03:58 -0400 Subject: [PATCH 29/91] polish --- src/events/RE/reFSNonconformist.js | 298 ++++++++++++++--------------- src/events/randomEvent.js | 2 +- 2 files changed, 149 insertions(+), 151 deletions(-) diff --git a/src/events/RE/reFSNonconformist.js b/src/events/RE/reFSNonconformist.js index 25af489ba7b..17099825c00 100644 --- a/src/events/RE/reFSNonconformist.js +++ b/src/events/RE/reFSNonconformist.js @@ -9,75 +9,74 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv return []; } execute(node) { - :: RE FS nonconformist [nobr] - + let r = []; V.nextButton = " ", V.nextLink = "RIE Eligibility Check", V.returnTo = "RIE Eligibility Check"; const FSNonconformistArray = Object.keys(App.Data.FutureSociety.records).filter(fs => V.arcologies[0][fs] < 95 && V.arcologies[0][fs] > 50) - - V.FSNonconformist = V.FSNonconformistEvents.random(); + /**@type {FC.FutureSocietyNoun} */ + const FSNonconformist = App.Data.FutureSociety.records[FSNonconformistArray.random()].noun; if (V.arcologies[0].FSRestart !== "unset") { r.push(`A group of the Societal Elite arrives at your penthouse and is quickly ushered into your office. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply`); } else { r.push(`A deputation of your citizens arrives at your penthouse and asks to see you. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply`); } - if (V.FSNonconformist === "Pastoralist") { + if (FSNonconformist === "Pastoralist") { r.push(`committed to making the future of the arcology a creamy one. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time planning milk orgies,`); - } else if (V.FSNonconformist === "Supremacist") { + } else if (FSNonconformist === "Supremacist") { r.push(`committed to the ascendancy of the ${V.arcologies[0].FSSupremacistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time eagerly debating revisionist histories,`); - } else if (V.FSNonconformist === "Subjugationist") { + } else if (FSNonconformist === "Subjugationist") { r.push(`involved in the subjugation of the ${V.arcologies[0].FSSubjugationistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time competing to come up with ever more extreme ways to degrade mongrels,`); - } else if (V.FSNonconformist === "Repopulation Efforts") { + } else if (FSNonconformist === "Repopulation Efforts") { r.push(`committed to perpetuating humanity. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time impregnating fertile women,`); - } else if (V.FSNonconformist === "Eugenics") { + } else if (FSNonconformist === "Eugenics") { r.push(`committed to restarting humanity. They're looking quite furious, an unusual mood for those with power second only to yours,`); - } else if (V.FSNonconformist === "Gender Radicalist") { + } else if (FSNonconformist === "Gender Radicalist") { r.push(`committed to the redefinition of gender around power. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully sodomizing their slaves,`); - } else if (V.FSNonconformist === "Gender Fundamentalist") { + } else if (FSNonconformist === "Gender Fundamentalist") { r.push(`committed to traditional gender roles. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time basking in the attentions of their women,`); - } else if (V.FSNonconformist === "Paternalist") { + } else if (FSNonconformist === "Paternalist") { r.push(`committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the lives of their chattel makes them quite self-assured,`); - } else if (V.FSNonconformist === "Degradationist") { + } else if (FSNonconformist === "Degradationist") { r.push(`committed to the comprehensive degradation of slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully raping their slaves,`); - } else if (V.FSNonconformist === "Intellectual Dependency") { + } else if (FSNonconformist === "Intellectual Dependency") { r.push(`committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time being fawned over by horny sluts,`); - } else if (V.FSNonconformist === "Slave Professionalism") { + } else if (FSNonconformist === "Slave Professionalism") { r.push(`committed to crafting perfect slaves. They're looking quite grim, an unusual mood for a group of oligarchs with nothing short of masterful sources of stress release,`); - } else if (V.FSNonconformist === "Body Purist") { + } else if (FSNonconformist === "Body Purist") { r.push(`committed to body purism. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the health of their chattel make them quite self-righteous,`); - } else if (V.FSNonconformist === "Transformation Fetishist") { + } else if (FSNonconformist === "Transformation Fetishist") { r.push(`committed to extreme transformation. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time obsessing over improvements to their favorite slaves,`); - } else if (V.FSNonconformist === "Slimness Enthusiast") { + } else if (FSNonconformist === "Slimness Enthusiast") { r.push(`addicted to slim female bodies. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cavorting with their harems,`); - } else if (V.FSNonconformist === "Asset Expansionist") { + } else if (FSNonconformist === "Asset Expansionist") { r.push(`addicted to tits and ass. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time having sex with their grandiosely endowed girls,`); - } else if (V.FSNonconformist === "Youth Preferentialist") { + } else if (FSNonconformist === "Youth Preferentialist") { r.push(`committed to the fashion for young girls. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' fresh bodies,`); - } else if (V.FSNonconformist === "Maturity Preferentialist") { + } else if (FSNonconformist === "Maturity Preferentialist") { r.push(`committed to the fashion for mature slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their slaves' experience,`); - } else if (V.FSNonconformist === "Petite Admiration") { + } else if (FSNonconformist === "Petite Admiration") { r.push(`committed to the fashion for short slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time enjoying their fun-sized slaves,`); - } else if (V.FSNonconformist === "Statuesque Glorification") { + } else if (FSNonconformist === "Statuesque Glorification") { r.push(`obsessed with tallness. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time flaunting their stature,`); - } else if (V.FSNonconformist === "Physical Idealist") { + } else if (FSNonconformist === "Physical Idealist") { r.push(`involved in physical idealism. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time lifting, tanning, and giving each other fist-bumps and bro-nods,`); - } else if (V.FSNonconformist === "Hedonistic Decadence") { + } else if (FSNonconformist === "Hedonistic Decadence") { r.push(`committed to hedonistic decadence. They're looking quite grim, an unusual mood for a group of oligarchs who spend most of their time indulging themselves by any, and every, means possible,`); - } else if (V.FSNonconformist === "Chattel Religionist") { + } else if (FSNonconformist === "Chattel Religionist") { r.push(`committed to the new faith. They're looking quite grim, an unusual mood for a group of oligarchs who occupy favored places in a new religious hierarchy that affords them ample pleasure,`); - } else if (V.FSNonconformist === "Roman Revivalist") { + } else if (FSNonconformist === "Roman Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the upper-class Roman virtues of stoicism and self-possession,`); - } else if (V.FSNonconformist === "Neo Imperialist") { + } else if (FSNonconformist === "Neo Imperialist") { r.push(`involved in your new Imperial vision. They're looking quite grim, an unusual mood for a group of noble oligarchs in a society that views them and their children as socially, physically, and even religiously superior to the serf-like masses,`); - } else if (V.FSNonconformist === "Aztec Revivalist") { + } else if (FSNonconformist === "Aztec Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the bloody virtues of their proud society,`); - } else if (V.FSNonconformist === "Edo Revivalist") { + } else if (FSNonconformist === "Edo Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the traditional Japanese virtue of stoicism,`); - } else if (V.FSNonconformist === "Arabian Revivalist") { + } else if (FSNonconformist === "Arabian Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to embody the confidence of the early Caliphate,`); - } else if (V.FSNonconformist === "Chinese Revivalist") { + } else if (FSNonconformist === "Chinese Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to project complete confidence that the arcology possesses the Mandate of Heaven,`); } else { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who partake of your serene confidence that your arcology is coming into a place as stable and long-lived as that of Ancient Egypt,`); @@ -91,69 +90,69 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv V.capFirstChar(V.assistant.name) r.push(` helpfully supplies a biography, but you were previously aware of the situation.`); } - <br><br> + //<br><br> The nonconformist - if (V.FSNonconformist === "Pastoralist") { + if (FSNonconformist === "Pastoralist") { r.push(`has long been a vocal skeptic of the tastefulness of grown citizens drinking milk from slaves' breasts. Unfortunately, it seems that they've now edged over into open revolt against pastoralism. They're planning to publish an exposé that purports to reveal abuses in the human milk industry.`); - } else if (V.FSNonconformist === "Supremacist") { + } else if (FSNonconformist === "Supremacist") { r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are not ${V.arcologies[0].FSSupremacistRace}, and they insist on flaunting their V.arcologies[0].FSSupremacistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against V.arcologies[0].FSSupremacistRace supremacism. After a brutal but deserved public punishment of a non-V.arcologies[0].FSSupremacistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their V.arcologies[0].FSSupremacistRace slaves, on a very weak pretext.`); - } else if (V.FSNonconformist === "Subjugationist") { + } else if (FSNonconformist === "Subjugationist") { r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are ${V.arcologies[0].FSSubjugationistRace}, and they insist on flaunting their non-V.arcologies[0].FSSubjugationistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against V.arcologies[0].FSSubjugationistRace inferiority. After a brutal but deserved public punishment of a V.arcologies[0].FSSubjugationistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their non-V.arcologies[0].FSSubjugationistRace slaves, on a very weak pretext.`); - } else if (V.FSNonconformist === "Repopulation Efforts") { + } else if (FSNonconformist === "Repopulation Efforts") { r.push(`has long been skeptical of the point of your repopulation efforts when the world is not stable and the arcology only so big. They plan to publish information regarding overpopulation, the negatives of chain pregnancies, the dangers of inbreeding and the risks of having so high a concentration of slaves.`); - } else if (V.FSNonconformist === "Eugenics") { + } else if (FSNonconformist === "Eugenics") { r.push(`has recently knocked up his favorite pet, and instead of responsibly aborting the bastard, has freed and married her. Allowing such actions to come to the public's attention will create a huge scandal and massive trouble for the Societal Elite, as well as undoing much of the progress you've made towards a better future.`); - } else if (V.FSNonconformist === "Gender Radicalist") { + } else if (FSNonconformist === "Gender Radicalist") { r.push(`has never been quiet about their belief that slaves with dicks are not girls. Unfortunately, it seems that they've now edged over into open revolt against gender radicalism. They've purchased a highly feminized slave one of the group of concerned citizens sold to a third party, and are rumored to be returning the slave to her natural state. The oligarchs are worried that they plan to publicize this project, or worse, possibly even free the slave.`); - } else if (V.FSNonconformist === "Gender Fundamentalist") { + } else if (FSNonconformist === "Gender Fundamentalist") { r.push(`has never been quiet about their belief that anything with an asshole counts as a slave girl. Unfortunately, it seems that they've now edged over into open revolt against gender traditionalism. They've been accumulating a number of sexually skilled slaves with dicks, and the oligarchs are worried that some sort of public event involving free sex with these slaves is planned to sway lower class opinion.`); - } else if (V.FSNonconformist === "Paternalist") { + } else if (FSNonconformist === "Paternalist") { r.push(`has never been shy about their belief that true trust between slave and master is impossible. Unfortunately, it seems that they've now edged over into open revolt against paternalism. They're rumored to run a household in which slaves are required to beat miscreants without mercy or be savaged themselves. There are indications that they may intend to make these spectacles public.`); - } else if (V.FSNonconformist === "Degradationist") { + } else if (FSNonconformist === "Degradationist") { r.push(`has never been shy about their belief that slaves are people too, and should be treated with respect. Unfortunately, it seems that they've now edged over into open revolt against degradationism. They're rumored to allow their slaves to decline sex. This perversion is bad enough, but the oligarchs are concerned that they may intend to take this practice public, setting favored slaves up with their own apartments and livelihoods.`); - } else if (V.FSNonconformist === "Intellectual Dependency") { + } else if (FSNonconformist === "Intellectual Dependency") { r.push(`has never been quiet about their grievances with having such a concentration of morons in one place. Unfortunately, it seems that they've now edged over into open revolt against intellectual dependency. They're planning to publish an exposé that reveals that the recent rise in prices is directly related to the number of accidents caused by the sheer lack of brains in the slave population.`); - } else if (V.FSNonconformist === "Slave Professionalism") { + } else if (FSNonconformist === "Slave Professionalism") { r.push(`has never been shy about their paranoia over the dangers of a smart slave population. Unfortunately, it seems that they've now edged out of sanity and into open revolt against slave professionalism. They're rumored to be training slaves to carry out their fears. There are indications that they may intend to set loose these slaves to wreak havoc and prove their point.`); - } else if (V.FSNonconformist === "Body Purist") { + } else if (FSNonconformist === "Body Purist") { r.push(`has always been known for their harem of implant-filled silicone dolls. Unfortunately, it seems that they've now edged over into open revolt against body purism. They've purchased a wonderfully healthy and pure slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave has been outfitted with cutting-edge gradually expanding breast implants with no effective maximum size. The oligarchs are disgusted and mortified lest this project become public.`); - } else if (V.FSNonconformist === "Transformation Fetishist") { + } else if (FSNonconformist === "Transformation Fetishist") { r.push(`has always been known for their harem of natural girls. Unfortunately, it seems that they've now edged over into open revolt against transformation. They've purchased a heavily implanted slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being painstakingly returned to her natural, implant-free appearance. The oligarchs are concerned that the nonconformist may be planning some sort of public reveal of her naturalist makeover.`); - } else if (V.FSNonconformist === "Slimness Enthusiast") { + } else if (FSNonconformist === "Slimness Enthusiast") { r.push(`has always been known for their harem of disgusting hambeasts. Unfortunately, it seems that they've now edged over into open revolt against the fashion for slimness. They've purchased a notoriously graceful slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave is being force-fed in private as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product.`); - } else if (V.FSNonconformist === "Asset Expansionist") { + } else if (FSNonconformist === "Asset Expansionist") { r.push(`has always been known for their harem of disgusting beanpoles. Unfortunately, it seems that they've now edged over into open revolt against the fashion for big tits. They've purchased a slave with famously magnificent boobs one of the group of concerned citizens sold to a third party, and it's rumored that the slave has undergone a radical breast reduction as preparation for some kind of insulting public reveal. The oligarchs are mortally offended without even seeing the final product.`); - } else if (V.FSNonconformist === "Youth Preferentialist") { + } else if (FSNonconformist === "Youth Preferentialist") { r.push(`has never missed an opportunity to share their belief that a mature woman who knows her way around a dick is a better fuck than a virgin. Unfortunately, it seems that they've now edged over into open revolt against the fashion for youth and freshness. They're holed up in their luxurious apartments, preparing a large number of older, sexually experienced slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`); - } else if (V.FSNonconformist === "Maturity Preferentialist") { + } else if (FSNonconformist === "Maturity Preferentialist") { r.push(`has never missed an opportunity to share their belief that a fresh girl is infinitely preferable to an old whore. Unfortunately, it seems that they've now edged over into open revolt against the fashion for maturity and experience. They're holed up in their luxurious apartments, preparing a large number of virgin slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`); - } else if (V.FSNonconformist === "Petite Admiration") { + } else if (FSNonconformist === "Petite Admiration") { r.push(`has never missed an opportunity to share their belief that being able to look into your lover's eyes while you fuck is the greatest thing in the world. Unfortunately, it seems that they've now edged over into open revolt against the fashion for mixing big and small. They're holed up in their luxurious apartments, preparing a large number of tall, undeniably gorgeous slaves for something big. The oligarchs suspect that some sort of event involving free sex may be planned to sway lower class opinion.`); - } else if (V.FSNonconformist === "Statuesque Glorification") { + } else if (FSNonconformist === "Statuesque Glorification") { r.push(`is an advocate for short slaves. They themselves stand barely over the acceptable threshold, and they insist on flaunting their midget slaves. Unfortunately, it seems that they've now edged over into open revolt against tall superiority. After a brutal but deserved public humiliation of a slave owner caught lying about their chattel's height by a group of concerned citizens, the nonconformist is planning on visiting the same horrors on some of their gorgeously tall slaves, on a very weak pretext.`); - } else if (V.FSNonconformist === "Physical Idealist") { + } else if (FSNonconformist === "Physical Idealist") { r.push(`rarely misses a chance to lecture on the perils of toxic masculinity and excessive public standards of beauty. Unfortunately, it seems that they've now edged over into open revolt against the Valhalla of physical perfection the arcology is rapidly becoming. They're rumored to be preparing a manifesto on beauty at any size, along with the necessary funds to bribe neutral third parties into going along.`); - } else if (V.FSNonconformist === "Hedonistic Decadence") { + } else if (FSNonconformist === "Hedonistic Decadence") { r.push(`has long been a vocal opponent of over-indulgence and its effects on society. Unfortunately, it seems that they've now edged over into open revolt against hedonism. They're planning to publish an exposé that reveals numerous statistics regarding average health and lifespans, the rising maintenance costs to accommodate the widening population, and a rather alarming report that the arcology has in fact //sunk// several `); - if (V.showInches === 2) { - r.push(`inches`); - } else { - r.push(`centimeters`); - } + if (V.showInches === 2) { + r.push(`inches`); + } else { + r.push(`centimeters`); + } r.push(` since hedonism became commonplace among the citizenry.`); - } else if (V.FSNonconformist === "Chattel Religionist") { + } else if (FSNonconformist === "Chattel Religionist") { r.push(`originally moved to the Free Cities to get away from religion entirely, and has never missed a chance to register disdain for the new faith. Unfortunately, it seems that they've now edged over into open heresy. Typically, they're going about it in a hypocritical way. It's rumored that they've engaged the services of a charismatic itinerant preacher of one of the more popular old world faiths, and intend to bring him to the arcology to inveigh against the chattel religion.`); - } else if (V.FSNonconformist === "Roman Revivalist") { + } else if (FSNonconformist === "Roman Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Rome has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Roman project, they're going to set up a competing Gaulish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); - } else if (V.FSNonconformist === "Neo Imperialist") { + } else if (FSNonconformist === "Neo Imperialist") { r.push(`has been a staunch and lifelong egalitarian, despite holding slaves for most of their later life, committed to the tenets of a free democratic society. They have loudly and openly criticzed Imperial society and its relegation of the lower classes to serfdom and subservience for the benefit of your Knights and Barons; now you hear they're planning to set up a competing societal design they call Neo-Republicanism, modifying the old world Republican style into a directly democratic arcology governance. The Barons fear that this might rile up a number of serfs against Imperial society.`); - } else if (V.FSNonconformist === "Aztec Revivalist") { + } else if (FSNonconformist === "Aztec Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Aztec has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Aztec project, they're going to set up a competing Spanish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); - } else if (V.FSNonconformist === "Edo Revivalist") { + } else if (FSNonconformist === "Edo Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Edo Japan has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Japanese project, they're going to set up a competing Korean Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); - } else if (V.FSNonconformist === "Arabian Revivalist") { + } else if (FSNonconformist === "Arabian Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the golden age of the Caliphate has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Arabian project, they're going to set up a competing Byzantine Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); - } else if (V.FSNonconformist === "Chinese Revivalist") { + } else if (FSNonconformist === "Chinese Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since ancient China has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the imperial project, they're going to set up a competing Mongol Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); } else { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the land of the Pharaohs has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Egyptian project, they're going to set up a competing Ancient Greek Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); @@ -163,213 +162,212 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv } else { r.push(`Faced with such a threat, the citizens naturally came to you. They ask you, as leader of the arcology, to both prevent the plan and get the nonconformist to move out.`); } - <br><br> + //<br><br> The nonconformist is far too prominent and prosperous to make this an easy dilemma to resolve. Your societal goals are at stake, as is your reputation among some of your best citizens, but the nonconformist has significant sway in the arcology's economy. Merely forcing them out of the arcology would damage its prosperity, and more decisive action could have more serious consequences still. - <br><br> + //<br><br> - <span id="result"> - <<link "Ignore the situation">> + //<span id="result"> + //<<link "Ignore the situation">> repX(-250, "event"); - <<replace "#result">> + //<<replace "#result">> r.push(`You communicate polite concern, but offer no specific plans. The prominent citizens go away muttering, <span class="red">very disappointed</span> that you are not taking their concerns seriously. The nonconformist`); - if (V.FSNonconformist === "Pastoralist") { + if (FSNonconformist === "Pastoralist") { r.push(`publishes the exposé, <span class="red">setting back adoption</span> of pastoralism.`); V.arcologies[0].FSPastoralist -= 10; - } else if (V.FSNonconformist === "Supremacist") { + } else if (FSNonconformist === "Supremacist") { r.push(`publicly flogs one of their ${V.arcologies[0].FSSupremacistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of V.arcologies[0].FSSupremacistRace supremacy.`); V.arcologies[0].FSSupremacist -= 10; - } else if (V.FSNonconformist === "Subjugationist") { + } else if (FSNonconformist === "Subjugationist") { r.push(`publicly flogs one of their non-${V.arcologies[0].FSSubjugationistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of V.arcologies[0].FSSubjugationistRace inferiority.`); V.arcologies[0].FSSubjugationist -= 10; - } else if (V.FSNonconformist === "Gender Radicalist") { + } else if (FSNonconformist === "Gender Radicalist") { r.push(`reveals the defeminized slave and then frees her, completing her return to maleness according to Gender Radicalism's own tenets, <span class="red">setting back acceptance</span> of the society model.`); V.arcologies[0].FSGenderRadicalist -= 10; - } else if (V.FSNonconformist === "Repopulation Efforts") { + } else if (FSNonconformist === "Repopulation Efforts") { r.push(`publishes his information, <span class="red">greatly hindering</span> the adoption of mass reproduction.`); if (V.PC.belly >= 1000) { r.push(` Your own fecundity is brought into question as well, <span class="red">hurting your public opinion.</span>`); repX(forceNeg(V.PC.preg*10), "event"); } V.arcologies[0].FSRepopulationFocus -= 10; - } else if (V.FSNonconformist === "Eugenics") { + } else if (FSNonconformist === "Eugenics") { r.push(`hosts a public wedding commemorating their love. This <span class="red">sets back acceptance</span> of your class system and hinders Eugenics.`); if (V.eugenicsFullControl !== 1) { r.push(` The Societal Elite are <span class="red">furious</span> at your inaction.`); - V.failedElite += 100; + V.failedElite += 100; } V.arcologies[0].FSRestart -= 20; - } else if (V.FSNonconformist === "Gender Fundamentalist") { + } else if (FSNonconformist === "Gender Fundamentalist") { r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. They're so filled with aphrodisiacs that they orgasm constantly when citizens use their asses. This <span class="red">setts back acceptance</span> of gender traditionalism.`); V.arcologies[0].FSGenderFundamentalist -= 10; - } else if (V.FSNonconformist === "Paternalist") { + } else if (FSNonconformist === "Paternalist") { r.push(`begins requiring his slaves to beat each other in public for the entertainment of passersby, <span class="red">setting back acceptance</span> of paternalism.`); V.arcologies[0].FSPaternalist -= 10; - } else if (V.FSNonconformist === "Degradationist") { + } else if (FSNonconformist === "Degradationist") { r.push(`begins building independent little lives for a few of their best slaves, <span class="red">setting back acceptance</span> of degradationism.`); V.arcologies[0].FSDegradationist -= 10; - } else if (V.FSNonconformist === "Intellectual Dependency") { + } else if (FSNonconformist === "Intellectual Dependency") { r.push(`publishes the exposé, <span class="red">setting back acceptance</span> of a totally dependent slave population as citizens scramble to slave-proof their homes.`); V.arcologies[0].FSIntellectualDependency -= 10; - } else if (V.FSNonconformist === "Slave Professionalism") { + } else if (FSNonconformist === "Slave Professionalism") { r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, striking fear into the citizenry and <span class="red">setting back acceptance</span> of slave professionalism.`); V.arcologies[0].FSSlaveProfessionalism -= 10; - } else if (V.FSNonconformist === "Body Purist") { + } else if (FSNonconformist === "Body Purist") { r.push(`is soon accompanied around the arcology by a slave with ten-liter breast implants, <span class="red">setting back acceptance</span> of body purism.`); V.arcologies[0].FSBodyPurist -= 10; - } else if (V.FSNonconformist === "Transformation Fetishist") { + } else if (FSNonconformist === "Transformation Fetishist") { r.push(`is soon accompanied around the arcology by the successfully made-over slave, whose transformation they never tire of extolling. This <span class="red">setting back acceptance</span> of transformation.`); V.arcologies[0].FSTransformationFetishist -= 10; - } else if (V.FSNonconformist === "Slimness Enthusiast") { + } else if (FSNonconformist === "Slimness Enthusiast") { r.push(`soon reveals their little project. The once-beautiful slave is now so fat she can scarcely walk; the unanswered insult <span class="red">sets back the fashion</span> for slim slaves.`); V.arcologies[0].FSSlimnessEnthusiast -= 10; - } else if (V.FSNonconformist === "Asset Expansionist") { + } else if (FSNonconformist === "Asset Expansionist") { r.push(`soon reveals their little project. A pair of the arcology's finest tits are gone forever; the unanswered insult <span class="red">sets back the fashion</span> for stacked slaves.`); V.arcologies[0].FSAssetExpansionist -= 10; - } else if (V.FSNonconformist === "Youth Preferentialist") { + } else if (FSNonconformist === "Youth Preferentialist") { r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. They're so filled with aphrodisiacs that they eagerly fuck anyone who shows the slightest interest. This <span class="red">dims the fashion</span> for fresh slaves.`); V.arcologies[0].FSYouthPreferentialist -= 10; - } else if (V.FSNonconformist === "Maturity Preferentialist") { + } else if (FSNonconformist === "Maturity Preferentialist") { r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. They're virgins, though not for very long. This <span class="red">dims the fashion</span> for mature slaves.`); V.arcologies[0].FSMaturityPreferentialist -= 10; - } else if (V.FSNonconformist === "Petite Admiration") { + } else if (FSNonconformist === "Petite Admiration") { r.push(`hosts a fancy ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. After a pleasant dance with a partner actually capable of it, many opt to share a second dance beneath the sheets. This <span class="red">dims the fashion</span> for short slaves.`); V.arcologies[0].FSPetiteAdmiration -= 10; - } else if (V.FSNonconformist === "Statuesque Glorification") { + } else if (FSNonconformist === "Statuesque Glorification") { r.push(`publicly berates each of their tall slaves to complete tears. As the group begins to gleefully join in, glorification of the tall <span class="red">becomes more a joke than a fashion.</span>`); V.arcologies[0].FSStatuesqueGlorification -= 10; - } else if (V.FSNonconformist === "Physical Idealist") { + } else if (FSNonconformist === "Physical Idealist") { r.push(`publishes their screed, and spreads money around to ensure its widespread dissemination. This <span class="red">sets back acceptance</span> of physical idealism.`); V.arcologies[0].FSPhysicalIdealist -= 10; - } else if (V.FSNonconformist === "Hedonistic Decadence") { + } else if (FSNonconformist === "Hedonistic Decadence") { r.push(`publishes their findings causing a tremendous panic, several heart attacks and a large number of clogged hallways, but ultimately a resurgence of healthy living practices. This <span class="red">sets back acceptance</span> of hedonistic decadence.`); V.arcologies[0].FSHedonisticDecadence -= 10; - } else if (V.FSNonconformist === "Chattel Religionist") { + } else if (FSNonconformist === "Chattel Religionist") { r.push(`brings in their pet dissenting preacher, whose clever invectives <span class="red">set back acceptance</span> of the new religion.`); V.arcologies[0].FSChattelReligionist -= 10; - } else if (V.FSNonconformist === "Roman Revivalist") { + } else if (FSNonconformist === "Roman Revivalist") { r.push(`offers their Gaulish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Roman revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSRomanRevivalist -= 10; - } else if (V.FSNonconformist === "Neo Imperialist") { + } else if (FSNonconformist === "Neo Imperialist") { r.push(`presents their Neo-Republicanism to society with great fanfare. While the slave population is much too indoctrinated to pay these ridiculous precepts much heed, Republican ideals stir debate and rabblerousing among a portion of the free serfs, before your guards brusquely push their preachers off the street and tear down the Republican posters littered around the arcology. This imbroglio <span class="red">sets back acceptance</span> of your Imperial Society.`); V.arcologies[0].FSNeoImperialist -= 10; - } else if (V.FSNonconformist === "Aztec Revivalist") { + } else if (FSNonconformist === "Aztec Revivalist") { r.push(`offers their Spanish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Aztec revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSAztecRevivalist -= 10; - } else if (V.FSNonconformist === "Edo Revivalist") { + } else if (FSNonconformist === "Edo Revivalist") { r.push(`offers their Korean Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Edo revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSEdoRevivalist -= 10; - } else if (V.FSNonconformist === "Arabian Revivalist") { + } else if (FSNonconformist === "Arabian Revivalist") { r.push(`offers their Byzantine Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Arabian revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSArabianRevivalist -= 10; - } else if (V.FSNonconformist === "Chinese Revivalist") { + } else if (FSNonconformist === "Chinese Revivalist") { r.push(`offers their Mongol Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Chinese revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSChineseRevivalist -= 10; } else { r.push(`offers their Ancient Greek Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Egyptian revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSEgyptianRevivalist -= 10; } - <</replace>> + //<</replace>> V.nextButton = "Continue"; - App.Utils.updateUserButton(); - r.push(` /* unlock Continue button *//link>> - <br> - <<link "Throw the nonconformist out of the arcology">> + App.Utils.updateUserButton();/* unlock Continue button */ + //<</link>> + //<br> + //<<link "Throw the nonconformist out of the arcology">> V.arcologies[0].prosperity -= 10; - <<replace "#result">> + //<<replace "#result">> r.push(`You agree with the prominent citizens, and promise to apply all of your considerable contractual and business power to get the nonconformist out of the arcology before they can put their plan into action. You manage it, but only just. Opinion on your actions is mixed: the oligarchs who came to you are pleased you satisfied their requests, but your maneuvers were offensive to the general preference for freedom. The impact on the arcology's economy on the other hand is entirely negative, since the sudden loss of a major player within the arcology's business field <span class="red">damages its prosperity.</span>`); - <</replace>> + //<</replace>> V.nextButton = "Continue"; App.Utils.updateUserButton(); r.push(` /* unlock Continue button */`); - <</link>> + //<</link>> if (V.PC.rumor === "force") { - <br> - <<link "Leverage your reputation with some credible threats">> + //<br> + //<<link "Leverage your reputation with some credible threats">> repX(500, "event"); - <<replace "#result"Resolving the situation takes you one call. Exactly what happened to your predecessor as owner of the arcology has never become publicly known, but your method of replacing them is rumored to have been somewhat ballistic in nature. It doesn't take much inflection in your voice to communicate threat, and the nonconformist hastily promises to abandon their plans and be less annoying in the future. The oligarchs are somewhat frightened by the rapidity with which you sorted things out, but they can't argue with the results and their <span class="green">respect for you deepens.</span>`); - <</replace>> + //<<replace "#result"Resolving the situation takes you one call. Exactly what happened to your predecessor as owner of the arcology has never become publicly known, but your method of replacing them is rumored to have been somewhat ballistic in nature. It doesn't take much inflection in your voice to communicate threat, and the nonconformist hastily promises to abandon their plans and be less annoying in the future. The oligarchs are somewhat frightened by the rapidity with which you sorted things out, but they can't argue with the results and their <span class="green">respect for you deepens.</span>`); + //<</replace>> V.nextButton = "Continue"; App.Utils.updateUserButton(); r.push(` /* unlock Continue button */`); - <</link>> + //<</link>> } else if (V.cash > 10000) { - <br> - <<link "Quickly manage a nuanced response">> + //<br> + //<<link "Quickly manage a nuanced response">> cashX(-10000, "event"); - <<replace "#result">> + //<<replace "#result">> if (V.arcologies[0].FSRestart !== "unset") { r.push(`You promise to deal with the situation. The Societal Elite trust you to not fail, and they are not disappointed. The fallen Elite`); } else { r.push(`You promise to deal with the situation. The prominent citizens trust you enough to leave the problem in your hands, and they are not disappointed. The nonconformist`); } - if (V.FSNonconformist === "Pastoralist") { + if (FSNonconformist === "Pastoralist") { r.push(`publishes the exposé, but finds it effectively defused by a nuanced pro-dairy campaign leveraging your dominance of the arcology's media.`); - } else if (V.FSNonconformist === "Supremacist") { + } else if (FSNonconformist === "Supremacist") { r.push(`is intent on publicly flogging the unfortunate ${V.arcologies[0].FSSupremacistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Subjugationist") { + } else if (FSNonconformist === "Subjugationist") { r.push(`is intent on publicly flogging the unfortunate non-${V.arcologies[0].FSSubjugationistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Repopulation Efforts") { + } else if (FSNonconformist === "Repopulation Efforts") { r.push(`publishes their information about pregnancy, but it has little effect thanks to a preemptive campaign leveraging your dominance over the arcology's media. Your reputation is protected by the promises of a large stock of future slaves, securing both money and ensuring a stable population in case of disaster. You also pointed out all the other slaveowners also partaking in the pleasures of a pregnant woman. Plus, what could a flock of heavily pregnant slaves do to overthrow their masters?`); - } else if (V.FSNonconformist === "Eugenics") { + } else if (FSNonconformist === "Eugenics") { r.push(`is ejected from the elite class following a leak of evidence proving he wasn't fit to be a member of the Societal Elite. Evidence tailored by you. Unfortunately, he was ready for this move; he and his wife had already fled the arcology. You did your job adequately, and managed to suppress any possible outrage in the city.`); - } else if (V.FSNonconformist === "Gender Radicalist") { + } else if (FSNonconformist === "Gender Radicalist") { r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Gender Fundamentalist") { + } else if (FSNonconformist === "Gender Fundamentalist") { r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring real girls in the main plaza, at the same time.`); - } else if (V.FSNonconformist === "Paternalist") { + } else if (FSNonconformist === "Paternalist") { r.push(`finds that you've manipulated their contracts with you to forbid them from displaying public slave beatings within the arcology. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Degradationist") { + } else if (FSNonconformist === "Degradationist") { r.push(`discovers that you've hastily set up subtle clauses within the rental contracts that make it all but inevitable that girls sent out on their own would be confiscated. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Intellectual Dependency") { + } else if (FSNonconformist === "Intellectual Dependency") { r.push(`publishes the exposé, but finds it effectively ignored while the public's attention is focused on a record breaking slave orgy. Some fruity drinks and club music were all it took.`); - } else if (V.FSNonconformist === "Slave Professionalism") { + } else if (FSNonconformist === "Slave Professionalism") { r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, but finds you've prepared a counter for each of his arguments. He's no fool and backs down before he makes things worse for himself.`); - } else if (V.FSNonconformist === "Body Purist") { + } else if (FSNonconformist === "Body Purist") { r.push(`finds that a mysterious actor has raised serious safety concerns about the new implant technology, causing a minor public outcry against them. The altered slave is not publicly displayed.`); - } else if (V.FSNonconformist === "Transformation Fetishist") { + } else if (FSNonconformist === "Transformation Fetishist") { r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Slimness Enthusiast") { + } else if (FSNonconformist === "Slimness Enthusiast") { r.push(`finds that you've manipulated their contracts with you to forbid them from showing off fat-bodied slaves within the arcology. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Asset Expansionist") { + } else if (FSNonconformist === "Asset Expansionist") { r.push(`finds that you've manipulated their contracts with you to forbid them from showing off ruined slaves within the arcology. Frustrated, they subside for now.`); - } else if (V.FSNonconformist === "Youth Preferentialist") { + } else if (FSNonconformist === "Youth Preferentialist") { r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring fresh virgins in the main plaza, at the same time.`); - } else if (V.FSNonconformist === "Maturity Preferentialist") { + } else if (FSNonconformist === "Maturity Preferentialist") { r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous MILF whores in the main plaza, at the same time.`); - } else if (V.FSNonconformist === "Petite Admiration") { + } else if (FSNonconformist === "Petite Admiration") { r.push(`hosts a huge public ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous shortstacks in the main plaza, at the same time.`); - } else if (V.FSNonconformist === "Statuesque Glorification") { + } else if (FSNonconformist === "Statuesque Glorification") { r.push(`is intent on publicly berating the unfortunate giants into mental breakdowns, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, but thankful you kept their true height out of it, they subside for now.`); - } else if (V.FSNonconformist === "Physical Idealist") { + } else if (FSNonconformist === "Physical Idealist") { r.push(`publishes their screed, and soon receives a challenge from you to a brief public debate. They offer a brief rant, to which you respond by removing your suit jacket and flexing, which almost pops the seams of your formal shirt. The public loses interest in the manifesto in the amusement.`); - } else if (V.FSNonconformist === "Hedonistic Decadence") { + } else if (FSNonconformist === "Hedonistic Decadence") { r.push(`publishes their report and immediately hosts a speech. This is easily countered; you throw a massive party for the arcology's citizens complete with all you can eat buffets, a variety of drugs and a massive orgy to top it off. While the citizens are distracted, the nonconformist's words go unheard and their report is quietly swept under the rug. Not that your population will care as long as there is adequate entertainment to keep their minds off any potential problems.`); - } else if (V.FSNonconformist === "Chattel Religionist") { + } else if (FSNonconformist === "Chattel Religionist") { r.push(`brings in their pet dissenting preacher, who finds himself caught in a duel from the pulpit with a noted cleric of the slave religion, brought in from outside the arcology on short notice. The debate receives a great deal of attention, and is generally agreed to have been a close-fought draw.`); - } else if (V.FSNonconformist === "Roman Revivalist") { + } else if (FSNonconformist === "Roman Revivalist") { r.push(`offers their Gaulish Revivalism alternative with fanfare, but fanfare is something that the Romans could certainly manage. The nasty little attempt is forgotten in a day of public gladiatorial combat, chariot racing, and giveaways for the poorer citizens.`); - } else if (V.FSNonconformist === "Neo Imperialist") { + } else if (FSNonconformist === "Neo Imperialist") { r.push(`offers their Neo-Republican alternative with fanfare, but their fanfare pales before the magnificence of your Imperial rule. The well-trained, heavily-armored, and socially pampered Imperial Knights of your arcology react to the mere proposal with an outrage so intense that the backers almost immediately retreat into hiding from your furious citizens.`); - } else if (V.FSNonconformist === "Aztec Revivalist") { + } else if (FSNonconformist === "Aztec Revivalist") { r.push(`offers their Spanish Revivalism alternative with fanfare, but fanfare is something that the Aztecs would never acknowledge. The nasty little attempt does nothing after a day of prayer, bloodletting and slave sacrifice.`); - } else if (V.FSNonconformist === "Edo Revivalist") { + } else if (FSNonconformist === "Edo Revivalist") { r.push(`offers their Korean Revivalism alternative with fanfare, but fanfare is inelegant next to Edo revivalism. The nasty little attempt has its day, but looks gauche next to the stately grace of your project.`); - } else if (V.FSNonconformist === "Arabian Revivalist") { + } else if (FSNonconformist === "Arabian Revivalist") { r.push(`offers their Byzantine Revivalism alternative with fanfare, but jihad may be waged with diplomacy as much as with the sword. The nasty little attempt founders on the growing conservatism of the arcology, whose citizens rally to you as their proper leader.`); - } else if (V.FSNonconformist === "Chinese Revivalist") { + } else if (FSNonconformist === "Chinese Revivalist") { r.push(`offers their Mongol Revivalism alternative with fanfare, but judicious strengthening of your imperial authority sees it off without trouble. The influence of Confucian ideas is spreading through your arcology, making it resistant to radical departures.`); } else { r.push(`offers their Ancient Greek Revivalism alternative with fanfare, but fanfare is something that the Egyptians could certainly manage. The nasty little attempt is barely noticed over the perfume and noise of a long and beautiful festival.`); } - r.push(`The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem./replace>> + r.push(`The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem.`); + ///replace>> V.nextButton = "Continue"; - App.Utils.updateUserButton(); - r.push(` /* unlock Continue button */`); - <</link //This will cost `); - V.cashFormat(10000)// + App.Utils.updateUserButton();/* unlock Continue button */ + //<</link //This will cost ${cashFormat(10000)}//`); } else { //You lack the necessary ready cash to manage a nuanced solution// } - </span> + //</span> } }; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 551e1615467..bd98ef14df7 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -125,7 +125,7 @@ App.Events.getNonindividualEvents = function() { new App.Events.REBusyMasterSuite(), new App.Events.REMalefactor(), new App.Events.REMaleCitizenHookup(), - + new App.Events.REFSNonconformist(), ]; }; -- GitLab From dda22366eb7f55d74fdc64f107c6c444f7f298a9 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 23:17:56 -0400 Subject: [PATCH 30/91] polish --- src/events/RE/reFSNonconformist.js | 294 +++++++++++++++-------------- 1 file changed, 155 insertions(+), 139 deletions(-) diff --git a/src/events/RE/reFSNonconformist.js b/src/events/RE/reFSNonconformist.js index 17099825c00..a99a91fdce0 100644 --- a/src/events/RE/reFSNonconformist.js +++ b/src/events/RE/reFSNonconformist.js @@ -8,13 +8,15 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv actorPrerequisites() { return []; } + execute(node) { let r = []; - V.nextButton = " ", V.nextLink = "RIE Eligibility Check", V.returnTo = "RIE Eligibility Check"; + V.nextButton = " "; + V.nextLink = "RIE Eligibility Check"; - const FSNonconformistArray = Object.keys(App.Data.FutureSociety.records).filter(fs => V.arcologies[0][fs] < 95 && V.arcologies[0][fs] > 50) + const FSNonconformistArray = Object.keys(App.Data.FutureSociety.records).filter(fs => V.arcologies[0][fs] < 95 && V.arcologies[0][fs] > 50); - /**@type {FC.FutureSocietyNoun} */ + /** @type {FC.FutureSocietyAdj} */ const FSNonconformist = App.Data.FutureSociety.records[FSNonconformistArray.random()].noun; if (V.arcologies[0].FSRestart !== "unset") { @@ -28,7 +30,7 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`committed to the ascendancy of the ${V.arcologies[0].FSSupremacistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time eagerly debating revisionist histories,`); } else if (FSNonconformist === "Subjugationist") { r.push(`involved in the subjugation of the ${V.arcologies[0].FSSubjugationistRace} race. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time competing to come up with ever more extreme ways to degrade mongrels,`); - } else if (FSNonconformist === "Repopulation Efforts") { + } else if (FSNonconformist === "Repopulationist") { r.push(`committed to perpetuating humanity. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time impregnating fertile women,`); } else if (FSNonconformist === "Eugenics") { r.push(`committed to restarting humanity. They're looking quite furious, an unusual mood for those with power second only to yours,`); @@ -42,7 +44,7 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`committed to the comprehensive degradation of slaves. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time cheerfully raping their slaves,`); } else if (FSNonconformist === "Intellectual Dependency") { r.push(`committed to slave advancement. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time being fawned over by horny sluts,`); - } else if (FSNonconformist === "Slave Professionalism") { + } else if (FSNonconformist === "Slave Professional") { r.push(`committed to crafting perfect slaves. They're looking quite grim, an unusual mood for a group of oligarchs with nothing short of masterful sources of stress release,`); } else if (FSNonconformist === "Body Purist") { r.push(`committed to body purism. They're looking quite grim, an unusual mood for a group of oligarchs whose various projects to improve the health of their chattel make them quite self-righteous,`); @@ -62,13 +64,13 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`obsessed with tallness. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time flaunting their stature,`); } else if (FSNonconformist === "Physical Idealist") { r.push(`involved in physical idealism. They're looking quite grim, an unusual mood for a group of oligarchs more inclined to spend their time lifting, tanning, and giving each other fist-bumps and bro-nods,`); - } else if (FSNonconformist === "Hedonistic Decadence") { + } else if (FSNonconformist === "Decadent Hedonist") { r.push(`committed to hedonistic decadence. They're looking quite grim, an unusual mood for a group of oligarchs who spend most of their time indulging themselves by any, and every, means possible,`); } else if (FSNonconformist === "Chattel Religionist") { r.push(`committed to the new faith. They're looking quite grim, an unusual mood for a group of oligarchs who occupy favored places in a new religious hierarchy that affords them ample pleasure,`); } else if (FSNonconformist === "Roman Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the upper-class Roman virtues of stoicism and self-possession,`); - } else if (FSNonconformist === "Neo Imperialist") { + } else if (FSNonconformist === "Neo-Imperialist") { r.push(`involved in your new Imperial vision. They're looking quite grim, an unusual mood for a group of noble oligarchs in a society that views them and their children as socially, physically, and even religiously superior to the serf-like masses,`); } else if (FSNonconformist === "Aztec Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who compete with each other to project the bloody virtues of their proud society,`); @@ -82,23 +84,20 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who partake of your serene confidence that your arcology is coming into a place as stable and long-lived as that of Ancient Egypt,`); } if (V.arcologies[0].FSRestart !== "unset") { - r.push(`so you hear them out. Apparently, they're here about a peer, another member of the Elite, who has chosen to perform certain undesirable actions. `); - V.capFirstChar(V.assistant.name) - r.push(` helpfully supplies a biography, but you were previously aware of the situation.`); + r.push(`so you hear them out. Apparently, they're here about a peer, another member of the Elite, who has chosen to perform certain undesirable actions. ${capFirstChar(V.assistant.name)} helpfully supplies a biography, but you were previously aware of the situation.`); } else { - r.push(`so you hear them out. Apparently, they're here about a peer, a fellow citizen with money and power who does not support your vision for the arcology's future. `); - V.capFirstChar(V.assistant.name) - r.push(` helpfully supplies a biography, but you were previously aware of the situation.`); + r.push(`so you hear them out. Apparently, they're here about a peer, a fellow citizen with money and power who does not support your vision for the arcology's future. ${capFirstChar(V.assistant.name)} helpfully supplies a biography, but you were previously aware of the situation.`); } - //<br><br> - The nonconformist + App.Events.addParagraph(node, r); + r = []; + r.push(`The nonconformist`); if (FSNonconformist === "Pastoralist") { r.push(`has long been a vocal skeptic of the tastefulness of grown citizens drinking milk from slaves' breasts. Unfortunately, it seems that they've now edged over into open revolt against pastoralism. They're planning to publish an exposé that purports to reveal abuses in the human milk industry.`); } else if (FSNonconformist === "Supremacist") { - r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are not ${V.arcologies[0].FSSupremacistRace}, and they insist on flaunting their V.arcologies[0].FSSupremacistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against V.arcologies[0].FSSupremacistRace supremacism. After a brutal but deserved public punishment of a non-V.arcologies[0].FSSupremacistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their V.arcologies[0].FSSupremacistRace slaves, on a very weak pretext.`); + r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are not ${V.arcologies[0].FSSupremacistRace}, and they insist on flaunting their ${V.arcologies[0].FSSupremacistRace} slaves. Unfortunately, it seems that they've now edged over into open revolt against ${V.arcologies[0].FSSupremacistRace} supremacism. After a brutal but deserved public punishment of a non-${V.arcologies[0].FSSupremacistRace} slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their ${V.arcologies[0].FSSupremacistRace} slaves, on a very weak pretext.`); } else if (FSNonconformist === "Subjugationist") { - r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are ${V.arcologies[0].FSSubjugationistRace}, and they insist on flaunting their non-V.arcologies[0].FSSubjugationistRace slaves. Unfortunately, it seems that they've now edged over into open revolt against V.arcologies[0].FSSubjugationistRace inferiority. After a brutal but deserved public punishment of a V.arcologies[0].FSSubjugationistRace slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their non-V.arcologies[0].FSSubjugationistRace slaves, on a very weak pretext.`); - } else if (FSNonconformist === "Repopulation Efforts") { + r.push(`is a hardline egalitarianist who believes that all men are created equal, even if some then become slaves. They themselves are ${V.arcologies[0].FSSubjugationistRace}, and they insist on flaunting their non-${V.arcologies[0].FSSubjugationistRace} slaves. Unfortunately, it seems that they've now edged over into open revolt against ${V.arcologies[0].FSSubjugationistRace} inferiority. After a brutal but deserved public punishment of a ${V.arcologies[0].FSSubjugationistRace} slave by one of the group of concerned citizens, the nonconformist is planning on visiting the same horrors on one of their non-${V.arcologies[0].FSSubjugationistRace} slaves, on a very weak pretext.`); + } else if (FSNonconformist === "Repopulationist") { r.push(`has long been skeptical of the point of your repopulation efforts when the world is not stable and the arcology only so big. They plan to publish information regarding overpopulation, the negatives of chain pregnancies, the dangers of inbreeding and the risks of having so high a concentration of slaves.`); } else if (FSNonconformist === "Eugenics") { r.push(`has recently knocked up his favorite pet, and instead of responsibly aborting the bastard, has freed and married her. Allowing such actions to come to the public's attention will create a huge scandal and massive trouble for the Societal Elite, as well as undoing much of the progress you've made towards a better future.`); @@ -112,7 +111,7 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`has never been shy about their belief that slaves are people too, and should be treated with respect. Unfortunately, it seems that they've now edged over into open revolt against degradationism. They're rumored to allow their slaves to decline sex. This perversion is bad enough, but the oligarchs are concerned that they may intend to take this practice public, setting favored slaves up with their own apartments and livelihoods.`); } else if (FSNonconformist === "Intellectual Dependency") { r.push(`has never been quiet about their grievances with having such a concentration of morons in one place. Unfortunately, it seems that they've now edged over into open revolt against intellectual dependency. They're planning to publish an exposé that reveals that the recent rise in prices is directly related to the number of accidents caused by the sheer lack of brains in the slave population.`); - } else if (FSNonconformist === "Slave Professionalism") { + } else if (FSNonconformist === "Slave Professional") { r.push(`has never been shy about their paranoia over the dangers of a smart slave population. Unfortunately, it seems that they've now edged out of sanity and into open revolt against slave professionalism. They're rumored to be training slaves to carry out their fears. There are indications that they may intend to set loose these slaves to wreak havoc and prove their point.`); } else if (FSNonconformist === "Body Purist") { r.push(`has always been known for their harem of implant-filled silicone dolls. Unfortunately, it seems that they've now edged over into open revolt against body purism. They've purchased a wonderfully healthy and pure slave one of the group of concerned citizens sold to a third party, and it's rumored that the slave has been outfitted with cutting-edge gradually expanding breast implants with no effective maximum size. The oligarchs are disgusted and mortified lest this project become public.`); @@ -132,19 +131,19 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`is an advocate for short slaves. They themselves stand barely over the acceptable threshold, and they insist on flaunting their midget slaves. Unfortunately, it seems that they've now edged over into open revolt against tall superiority. After a brutal but deserved public humiliation of a slave owner caught lying about their chattel's height by a group of concerned citizens, the nonconformist is planning on visiting the same horrors on some of their gorgeously tall slaves, on a very weak pretext.`); } else if (FSNonconformist === "Physical Idealist") { r.push(`rarely misses a chance to lecture on the perils of toxic masculinity and excessive public standards of beauty. Unfortunately, it seems that they've now edged over into open revolt against the Valhalla of physical perfection the arcology is rapidly becoming. They're rumored to be preparing a manifesto on beauty at any size, along with the necessary funds to bribe neutral third parties into going along.`); - } else if (FSNonconformist === "Hedonistic Decadence") { - r.push(`has long been a vocal opponent of over-indulgence and its effects on society. Unfortunately, it seems that they've now edged over into open revolt against hedonism. They're planning to publish an exposé that reveals numerous statistics regarding average health and lifespans, the rising maintenance costs to accommodate the widening population, and a rather alarming report that the arcology has in fact //sunk// several `); + } else if (FSNonconformist === "Decadent Hedonist") { + r.push(`has long been a vocal opponent of over-indulgence and its effects on society. Unfortunately, it seems that they've now edged over into open revolt against hedonism. They're planning to publish an exposé that reveals numerous statistics regarding average health and lifespans, the rising maintenance costs to accommodate the widening population, and a rather alarming report that the arcology has in fact <i>sunk</i> several`); if (V.showInches === 2) { r.push(`inches`); } else { r.push(`centimeters`); } - r.push(` since hedonism became commonplace among the citizenry.`); + r.push(`since hedonism became commonplace among the citizenry.`); } else if (FSNonconformist === "Chattel Religionist") { r.push(`originally moved to the Free Cities to get away from religion entirely, and has never missed a chance to register disdain for the new faith. Unfortunately, it seems that they've now edged over into open heresy. Typically, they're going about it in a hypocritical way. It's rumored that they've engaged the services of a charismatic itinerant preacher of one of the more popular old world faiths, and intend to bring him to the arcology to inveigh against the chattel religion.`); } else if (FSNonconformist === "Roman Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Rome has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Roman project, they're going to set up a competing Gaulish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); - } else if (FSNonconformist === "Neo Imperialist") { + } else if (FSNonconformist === "Neo-Imperialist") { r.push(`has been a staunch and lifelong egalitarian, despite holding slaves for most of their later life, committed to the tenets of a free democratic society. They have loudly and openly criticzed Imperial society and its relegation of the lower classes to serfdom and subservience for the benefit of your Knights and Barons; now you hear they're planning to set up a competing societal design they call Neo-Republicanism, modifying the old world Republican style into a directly democratic arcology governance. The Barons fear that this might rile up a number of serfs against Imperial society.`); } else if (FSNonconformist === "Aztec Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since Aztec has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Aztec project, they're going to set up a competing Spanish Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); @@ -162,40 +161,54 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv } else { r.push(`Faced with such a threat, the citizens naturally came to you. They ask you, as leader of the arcology, to both prevent the plan and get the nonconformist to move out.`); } - //<br><br> - The nonconformist is far too prominent and prosperous to make this an easy dilemma to resolve. Your societal goals are at stake, as is your reputation among some of your best citizens, but the nonconformist has significant sway in the arcology's economy. Merely forcing them out of the arcology would damage its prosperity, and more decisive action could have more serious consequences still. - //<br><br> + App.Events.addParagraph(node, r); + r = []; + r.push(`The nonconformist is far too prominent and prosperous to make this an easy dilemma to resolve. Your societal goals are at stake, as is your reputation among some of your best citizens, but the nonconformist has significant sway in the arcology's economy. Merely forcing them out of the arcology would damage its prosperity, and more decisive action could have more serious consequences still.`); + App.Events.addParagraph(node, r); + + const choices = []; + choices.push(new App.Events.Result(`Ignore the situation`, ignore)); + choices.push(new App.Events.Result(`Throw the nonconformist out of the arcology`, throwOut)); + if (V.PC.rumor === "force") { + choices.push(new App.Events.Result(`Leverage your reputation with some credible threats`, leverage)); + } else if (V.cash > 10000) { + choices.push(new App.Events.Result(`Quickly manage a nuanced response`, nuance, `This will cost ${cashFormat(10000)}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary ready cash to manage a nuanced solution`)); + } + + App.Events.addResponses(node, choices); - //<span id="result"> - //<<link "Ignore the situation">> + function ignore() { + const frag = new DocumentFragment(); + let r = []; repX(-250, "event"); - //<<replace "#result">> r.push(`You communicate polite concern, but offer no specific plans. The prominent citizens go away muttering, <span class="red">very disappointed</span> that you are not taking their concerns seriously. The nonconformist`); if (FSNonconformist === "Pastoralist") { r.push(`publishes the exposé, <span class="red">setting back adoption</span> of pastoralism.`); V.arcologies[0].FSPastoralist -= 10; } else if (FSNonconformist === "Supremacist") { - r.push(`publicly flogs one of their ${V.arcologies[0].FSSupremacistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of V.arcologies[0].FSSupremacistRace supremacy.`); + r.push(`publicly flogs one of their ${V.arcologies[0].FSSupremacistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of ${V.arcologies[0].FSSupremacistRace} supremacy.`); V.arcologies[0].FSSupremacist -= 10; } else if (FSNonconformist === "Subjugationist") { - r.push(`publicly flogs one of their non-${V.arcologies[0].FSSubjugationistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of V.arcologies[0].FSSubjugationistRace inferiority.`); + r.push(`publicly flogs one of their non-${V.arcologies[0].FSSubjugationistRace} slaves halfway to exsanguination, <span class="red">setting back acceptance</span> of ${V.arcologies[0].FSSubjugationistRace} inferiority.`); V.arcologies[0].FSSubjugationist -= 10; } else if (FSNonconformist === "Gender Radicalist") { r.push(`reveals the defeminized slave and then frees her, completing her return to maleness according to Gender Radicalism's own tenets, <span class="red">setting back acceptance</span> of the society model.`); V.arcologies[0].FSGenderRadicalist -= 10; - } else if (FSNonconformist === "Repopulation Efforts") { + } else if (FSNonconformist === "Repopulationist") { r.push(`publishes his information, <span class="red">greatly hindering</span> the adoption of mass reproduction.`); - if (V.PC.belly >= 1000) { - r.push(` Your own fecundity is brought into question as well, <span class="red">hurting your public opinion.</span>`); - repX(forceNeg(V.PC.preg*10), "event"); - } + if (V.PC.belly >= 1000) { + r.push(`Your own fecundity is brought into question as well, <span class="red">hurting your public opinion.</span>`); + repX(forceNeg(V.PC.preg*10), "event"); + } V.arcologies[0].FSRepopulationFocus -= 10; } else if (FSNonconformist === "Eugenics") { r.push(`hosts a public wedding commemorating their love. This <span class="red">sets back acceptance</span> of your class system and hinders Eugenics.`); - if (V.eugenicsFullControl !== 1) { - r.push(` The Societal Elite are <span class="red">furious</span> at your inaction.`); - V.failedElite += 100; - } + if (V.eugenicsFullControl !== 1) { + r.push(`The Societal Elite are <span class="red">furious</span> at your inaction.`); + V.failedElite += 100; + } V.arcologies[0].FSRestart -= 20; } else if (FSNonconformist === "Gender Fundamentalist") { r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. They're so filled with aphrodisiacs that they orgasm constantly when citizens use their asses. This <span class="red">setts back acceptance</span> of gender traditionalism.`); @@ -209,7 +222,7 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv } else if (FSNonconformist === "Intellectual Dependency") { r.push(`publishes the exposé, <span class="red">setting back acceptance</span> of a totally dependent slave population as citizens scramble to slave-proof their homes.`); V.arcologies[0].FSIntellectualDependency -= 10; - } else if (FSNonconformist === "Slave Professionalism") { + } else if (FSNonconformist === "Slave Professional") { r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, striking fear into the citizenry and <span class="red">setting back acceptance</span> of slave professionalism.`); V.arcologies[0].FSSlaveProfessionalism -= 10; } else if (FSNonconformist === "Body Purist") { @@ -239,7 +252,7 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv } else if (FSNonconformist === "Physical Idealist") { r.push(`publishes their screed, and spreads money around to ensure its widespread dissemination. This <span class="red">sets back acceptance</span> of physical idealism.`); V.arcologies[0].FSPhysicalIdealist -= 10; - } else if (FSNonconformist === "Hedonistic Decadence") { + } else if (FSNonconformist === "Decadent Hedonist") { r.push(`publishes their findings causing a tremendous panic, several heart attacks and a large number of clogged hallways, but ultimately a resurgence of healthy living practices. This <span class="red">sets back acceptance</span> of hedonistic decadence.`); V.arcologies[0].FSHedonisticDecadence -= 10; } else if (FSNonconformist === "Chattel Religionist") { @@ -248,7 +261,7 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv } else if (FSNonconformist === "Roman Revivalist") { r.push(`offers their Gaulish Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Roman revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSRomanRevivalist -= 10; - } else if (FSNonconformist === "Neo Imperialist") { + } else if (FSNonconformist === "Neo-Imperialist") { r.push(`presents their Neo-Republicanism to society with great fanfare. While the slave population is much too indoctrinated to pay these ridiculous precepts much heed, Republican ideals stir debate and rabblerousing among a portion of the free serfs, before your guards brusquely push their preachers off the street and tear down the Republican posters littered around the arcology. This imbroglio <span class="red">sets back acceptance</span> of your Imperial Society.`); V.arcologies[0].FSNeoImperialist -= 10; } else if (FSNonconformist === "Aztec Revivalist") { @@ -267,107 +280,110 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`offers their Ancient Greek Revivalism alternative with great fanfare. It fizzles out within a week, mostly because its main backer is privately against all revivalism, but during that time it serves as a focal point for many citizens who are privately impatient with Egyptian revivalism. This imbroglio <span class="red">sets back acceptance</span> of your revivalist project.`); V.arcologies[0].FSEgyptianRevivalist -= 10; } - //<</replace>> V.nextButton = "Continue"; - App.Utils.updateUserButton();/* unlock Continue button */ - //<</link>> - //<br> - //<<link "Throw the nonconformist out of the arcology">> + App.Utils.updateUserButton();/* unlock Continue button */ + + App.Events.addParagraph(frag, r); + return frag; + } + + function throwOut() { + const frag = new DocumentFragment(); + let r = []; V.arcologies[0].prosperity -= 10; - //<<replace "#result">> - r.push(`You agree with the prominent citizens, and promise to apply all of your considerable contractual and business power to get the nonconformist out of the arcology before they can put their plan into action. You manage it, but only just. Opinion on your actions is mixed: the oligarchs who came to you are pleased you satisfied their requests, but your maneuvers were offensive to the general preference for freedom. The impact on the arcology's economy on the other hand is entirely negative, since the sudden loss of a major player within the arcology's business field <span class="red">damages its prosperity.</span>`); - //<</replace>> + r.push(`You agree with the prominent citizens, and promise to apply all of your considerable contractual and business power to get the nonconformist out of the arcology before they can put their plan into action. You manage it, but only just. Opinion on your actions is mixed: the oligarchs who came to you are pleased you satisfied their requests, but your maneuvers were offensive to the general preference for freedom. The impact on the arcology's economy on the other hand is entirely negative, since the sudden loss of a major player within the arcology's business field <span class="red">damages its prosperity.</span>`); V.nextButton = "Continue"; - App.Utils.updateUserButton(); - r.push(` /* unlock Continue button */`); - //<</link>> - if (V.PC.rumor === "force") { - //<br> - //<<link "Leverage your reputation with some credible threats">> + App.Utils.updateUserButton();/* unlock Continue button */ + + App.Events.addParagraph(frag, r); + return frag; + } + + function leverage() { + const frag = new DocumentFragment(); + let r = []; repX(500, "event"); - //<<replace "#result"Resolving the situation takes you one call. Exactly what happened to your predecessor as owner of the arcology has never become publicly known, but your method of replacing them is rumored to have been somewhat ballistic in nature. It doesn't take much inflection in your voice to communicate threat, and the nonconformist hastily promises to abandon their plans and be less annoying in the future. The oligarchs are somewhat frightened by the rapidity with which you sorted things out, but they can't argue with the results and their <span class="green">respect for you deepens.</span>`); - //<</replace>> + r.push(`Resolving the situation takes you one call. Exactly what happened to your predecessor as owner of the arcology has never become publicly known, but your method of replacing them is rumored to have been somewhat ballistic in nature. It doesn't take much inflection in your voice to communicate threat, and the nonconformist hastily promises to abandon their plans and be less annoying in the future. The oligarchs are somewhat frightened by the rapidity with which you sorted things out, but they can't argue with the results and their <span class="green">respect for you deepens.</span>`); V.nextButton = "Continue"; - App.Utils.updateUserButton(); - r.push(` /* unlock Continue button */`); - //<</link>> - } else if (V.cash > 10000) { - //<br> - //<<link "Quickly manage a nuanced response">> - cashX(-10000, "event"); - //<<replace "#result">> - if (V.arcologies[0].FSRestart !== "unset") { - r.push(`You promise to deal with the situation. The Societal Elite trust you to not fail, and they are not disappointed. The fallen Elite`); - } else { - r.push(`You promise to deal with the situation. The prominent citizens trust you enough to leave the problem in your hands, and they are not disappointed. The nonconformist`); - } - if (FSNonconformist === "Pastoralist") { - r.push(`publishes the exposé, but finds it effectively defused by a nuanced pro-dairy campaign leveraging your dominance of the arcology's media.`); - } else if (FSNonconformist === "Supremacist") { - r.push(`is intent on publicly flogging the unfortunate ${V.arcologies[0].FSSupremacistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Subjugationist") { - r.push(`is intent on publicly flogging the unfortunate non-${V.arcologies[0].FSSubjugationistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Repopulation Efforts") { - r.push(`publishes their information about pregnancy, but it has little effect thanks to a preemptive campaign leveraging your dominance over the arcology's media. Your reputation is protected by the promises of a large stock of future slaves, securing both money and ensuring a stable population in case of disaster. You also pointed out all the other slaveowners also partaking in the pleasures of a pregnant woman. Plus, what could a flock of heavily pregnant slaves do to overthrow their masters?`); - } else if (FSNonconformist === "Eugenics") { - r.push(`is ejected from the elite class following a leak of evidence proving he wasn't fit to be a member of the Societal Elite. Evidence tailored by you. Unfortunately, he was ready for this move; he and his wife had already fled the arcology. You did your job adequately, and managed to suppress any possible outrage in the city.`); - } else if (FSNonconformist === "Gender Radicalist") { - r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Gender Fundamentalist") { - r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring real girls in the main plaza, at the same time.`); - } else if (FSNonconformist === "Paternalist") { - r.push(`finds that you've manipulated their contracts with you to forbid them from displaying public slave beatings within the arcology. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Degradationist") { - r.push(`discovers that you've hastily set up subtle clauses within the rental contracts that make it all but inevitable that girls sent out on their own would be confiscated. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Intellectual Dependency") { - r.push(`publishes the exposé, but finds it effectively ignored while the public's attention is focused on a record breaking slave orgy. Some fruity drinks and club music were all it took.`); - } else if (FSNonconformist === "Slave Professionalism") { - r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, but finds you've prepared a counter for each of his arguments. He's no fool and backs down before he makes things worse for himself.`); - } else if (FSNonconformist === "Body Purist") { - r.push(`finds that a mysterious actor has raised serious safety concerns about the new implant technology, causing a minor public outcry against them. The altered slave is not publicly displayed.`); - } else if (FSNonconformist === "Transformation Fetishist") { - r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Slimness Enthusiast") { - r.push(`finds that you've manipulated their contracts with you to forbid them from showing off fat-bodied slaves within the arcology. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Asset Expansionist") { - r.push(`finds that you've manipulated their contracts with you to forbid them from showing off ruined slaves within the arcology. Frustrated, they subside for now.`); - } else if (FSNonconformist === "Youth Preferentialist") { - r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring fresh virgins in the main plaza, at the same time.`); - } else if (FSNonconformist === "Maturity Preferentialist") { - r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous MILF whores in the main plaza, at the same time.`); - } else if (FSNonconformist === "Petite Admiration") { - r.push(`hosts a huge public ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous shortstacks in the main plaza, at the same time.`); - } else if (FSNonconformist === "Statuesque Glorification") { - r.push(`is intent on publicly berating the unfortunate giants into mental breakdowns, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, but thankful you kept their true height out of it, they subside for now.`); - } else if (FSNonconformist === "Physical Idealist") { - r.push(`publishes their screed, and soon receives a challenge from you to a brief public debate. They offer a brief rant, to which you respond by removing your suit jacket and flexing, which almost pops the seams of your formal shirt. The public loses interest in the manifesto in the amusement.`); - } else if (FSNonconformist === "Hedonistic Decadence") { - r.push(`publishes their report and immediately hosts a speech. This is easily countered; you throw a massive party for the arcology's citizens complete with all you can eat buffets, a variety of drugs and a massive orgy to top it off. While the citizens are distracted, the nonconformist's words go unheard and their report is quietly swept under the rug. Not that your population will care as long as there is adequate entertainment to keep their minds off any potential problems.`); - } else if (FSNonconformist === "Chattel Religionist") { - r.push(`brings in their pet dissenting preacher, who finds himself caught in a duel from the pulpit with a noted cleric of the slave religion, brought in from outside the arcology on short notice. The debate receives a great deal of attention, and is generally agreed to have been a close-fought draw.`); - } else if (FSNonconformist === "Roman Revivalist") { - r.push(`offers their Gaulish Revivalism alternative with fanfare, but fanfare is something that the Romans could certainly manage. The nasty little attempt is forgotten in a day of public gladiatorial combat, chariot racing, and giveaways for the poorer citizens.`); - } else if (FSNonconformist === "Neo Imperialist") { - r.push(`offers their Neo-Republican alternative with fanfare, but their fanfare pales before the magnificence of your Imperial rule. The well-trained, heavily-armored, and socially pampered Imperial Knights of your arcology react to the mere proposal with an outrage so intense that the backers almost immediately retreat into hiding from your furious citizens.`); - } else if (FSNonconformist === "Aztec Revivalist") { - r.push(`offers their Spanish Revivalism alternative with fanfare, but fanfare is something that the Aztecs would never acknowledge. The nasty little attempt does nothing after a day of prayer, bloodletting and slave sacrifice.`); - } else if (FSNonconformist === "Edo Revivalist") { - r.push(`offers their Korean Revivalism alternative with fanfare, but fanfare is inelegant next to Edo revivalism. The nasty little attempt has its day, but looks gauche next to the stately grace of your project.`); - } else if (FSNonconformist === "Arabian Revivalist") { - r.push(`offers their Byzantine Revivalism alternative with fanfare, but jihad may be waged with diplomacy as much as with the sword. The nasty little attempt founders on the growing conservatism of the arcology, whose citizens rally to you as their proper leader.`); - } else if (FSNonconformist === "Chinese Revivalist") { - r.push(`offers their Mongol Revivalism alternative with fanfare, but judicious strengthening of your imperial authority sees it off without trouble. The influence of Confucian ideas is spreading through your arcology, making it resistant to radical departures.`); - } else { - r.push(`offers their Ancient Greek Revivalism alternative with fanfare, but fanfare is something that the Egyptians could certainly manage. The nasty little attempt is barely noticed over the perfume and noise of a long and beautiful festival.`); - } - r.push(`The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem.`); - ///replace>> - V.nextButton = "Continue"; - App.Utils.updateUserButton();/* unlock Continue button */ - //<</link //This will cost ${cashFormat(10000)}//`); - } else { - //You lack the necessary ready cash to manage a nuanced solution// + App.Utils.updateUserButton();/* unlock Continue button */ + App.Events.addParagraph(frag, r); + return frag; + } + + function nuance() { + const frag = new DocumentFragment(); + let r = []; + cashX(-10000, "event"); + if (V.arcologies[0].FSRestart !== "unset") { + r.push(`You promise to deal with the situation. The Societal Elite trust you to not fail, and they are not disappointed. The fallen Elite`); + } else { + r.push(`You promise to deal with the situation. The prominent citizens trust you enough to leave the problem in your hands, and they are not disappointed. The nonconformist`); + } + if (FSNonconformist === "Pastoralist") { + r.push(`publishes the exposé, but finds it effectively defused by a nuanced pro-dairy campaign leveraging your dominance of the arcology's media.`); + } else if (FSNonconformist === "Supremacist") { + r.push(`is intent on publicly flogging the unfortunate ${V.arcologies[0].FSSupremacistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Subjugationist") { + r.push(`is intent on publicly flogging the unfortunate non-${V.arcologies[0].FSSubjugationistRace} slave, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Repopulationist") { + r.push(`publishes their information about pregnancy, but it has little effect thanks to a preemptive campaign leveraging your dominance over the arcology's media. Your reputation is protected by the promises of a large stock of future slaves, securing both money and ensuring a stable population in case of disaster. You also pointed out all the other slaveowners also partaking in the pleasures of a pregnant woman. Plus, what could a flock of heavily pregnant slaves do to overthrow their masters?`); + } else if (FSNonconformist === "Eugenics") { + r.push(`is ejected from the elite class following a leak of evidence proving he wasn't fit to be a member of the Societal Elite. Evidence tailored by you. Unfortunately, he was ready for this move; he and his wife had already fled the arcology. You did your job adequately, and managed to suppress any possible outrage in the city.`); + } else if (FSNonconformist === "Gender Radicalist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Gender Fundamentalist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of slaves with dicks. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring real girls in the main plaza, at the same time.`); + } else if (FSNonconformist === "Paternalist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from displaying public slave beatings within the arcology. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Degradationist") { + r.push(`discovers that you've hastily set up subtle clauses within the rental contracts that make it all but inevitable that girls sent out on their own would be confiscated. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Intellectual Dependency") { + r.push(`publishes the exposé, but finds it effectively ignored while the public's attention is focused on a record breaking slave orgy. Some fruity drinks and club music were all it took.`); + } else if (FSNonconformist === "Slave Professional") { + r.push(`hosts a public display of just how easy it would be to turn a slave into an effective assassin, but finds you've prepared a counter for each of his arguments. He's no fool and backs down before he makes things worse for himself.`); + } else if (FSNonconformist === "Body Purist") { + r.push(`finds that a mysterious actor has raised serious safety concerns about the new implant technology, causing a minor public outcry against them. The altered slave is not publicly displayed.`); + } else if (FSNonconformist === "Transformation Fetishist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off nonconforming slaves within the arcology. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Slimness Enthusiast") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off fat-bodied slaves within the arcology. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Asset Expansionist") { + r.push(`finds that you've manipulated their contracts with you to forbid them from showing off ruined slaves within the arcology. Frustrated, they subside for now.`); + } else if (FSNonconformist === "Youth Preferentialist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of older slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring fresh virgins in the main plaza, at the same time.`); + } else if (FSNonconformist === "Maturity Preferentialist") { + r.push(`hosts a huge public party in a lower-class area of the arcology, staffing it with a large number of young slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous MILF whores in the main plaza, at the same time.`); + } else if (FSNonconformist === "Petite Admiration") { + r.push(`hosts a huge public ball in a lower-class area of the arcology, staffing it with a large number of tall slaves. However, they're surprised by an unexpected lack of interest in the event, which is only explained when they find that you've organized a much superior event featuring famous shortstacks in the main plaza, at the same time.`); + } else if (FSNonconformist === "Statuesque Glorification") { + r.push(`is intent on publicly berating the unfortunate giants into mental breakdowns, but quickly finds that you've manipulated their contracts with you to forbid such displays. Frustrated, but thankful you kept their true height out of it, they subside for now.`); + } else if (FSNonconformist === "Physical Idealist") { + r.push(`publishes their screed, and soon receives a challenge from you to a brief public debate. They offer a brief rant, to which you respond by removing your suit jacket and flexing, which almost pops the seams of your formal shirt. The public loses interest in the manifesto in the amusement.`); + } else if (FSNonconformist === "Decadent Hedonist") { + r.push(`publishes their report and immediately hosts a speech. This is easily countered; you throw a massive party for the arcology's citizens complete with all you can eat buffets, a variety of drugs and a massive orgy to top it off. While the citizens are distracted, the nonconformist's words go unheard and their report is quietly swept under the rug. Not that your population will care as long as there is adequate entertainment to keep their minds off any potential problems.`); + } else if (FSNonconformist === "Chattel Religionist") { + r.push(`brings in their pet dissenting preacher, who finds himself caught in a duel from the pulpit with a noted cleric of the slave religion, brought in from outside the arcology on short notice. The debate receives a great deal of attention, and is generally agreed to have been a close-fought draw.`); + } else if (FSNonconformist === "Roman Revivalist") { + r.push(`offers their Gaulish Revivalism alternative with fanfare, but fanfare is something that the Romans could certainly manage. The nasty little attempt is forgotten in a day of public gladiatorial combat, chariot racing, and giveaways for the poorer citizens.`); + } else if (FSNonconformist === "Neo-Imperialist") { + r.push(`offers their Neo-Republican alternative with fanfare, but their fanfare pales before the magnificence of your Imperial rule. The well-trained, heavily-armored, and socially pampered Imperial Knights of your arcology react to the mere proposal with an outrage so intense that the backers almost immediately retreat into hiding from your furious citizens.`); + } else if (FSNonconformist === "Aztec Revivalist") { + r.push(`offers their Spanish Revivalism alternative with fanfare, but fanfare is something that the Aztecs would never acknowledge. The nasty little attempt does nothing after a day of prayer, bloodletting and slave sacrifice.`); + } else if (FSNonconformist === "Edo Revivalist") { + r.push(`offers their Korean Revivalism alternative with fanfare, but fanfare is inelegant next to Edo revivalism. The nasty little attempt has its day, but looks gauche next to the stately grace of your project.`); + } else if (FSNonconformist === "Arabian Revivalist") { + r.push(`offers their Byzantine Revivalism alternative with fanfare, but jihad may be waged with diplomacy as much as with the sword. The nasty little attempt founders on the growing conservatism of the arcology, whose citizens rally to you as their proper leader.`); + } else if (FSNonconformist === "Chinese Revivalist") { + r.push(`offers their Mongol Revivalism alternative with fanfare, but judicious strengthening of your imperial authority sees it off without trouble. The influence of Confucian ideas is spreading through your arcology, making it resistant to radical departures.`); + } else { + r.push(`offers their Ancient Greek Revivalism alternative with fanfare, but fanfare is something that the Egyptians could certainly manage. The nasty little attempt is barely noticed over the perfume and noise of a long and beautiful festival.`); + } + r.push(`The oligarchy is pleased by how you managed to defuse the situation without causing a spectacle. They're disappointed that you permitted their nonconforming peer to remain in the arcology's upper echelons for the time being, but they accept your solution to the problem.`); + V.nextButton = "Continue"; + App.Utils.updateUserButton();/* unlock Continue button */ + + App.Events.addParagraph(frag, r); + return frag; } - //</span> } }; -- GitLab From c0b66bd8230f1afbce9b2129beb89ee4d27ac89a Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 23:25:38 -0400 Subject: [PATCH 31/91] fix --- src/events/RE/reFSNonconformist.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/events/RE/reFSNonconformist.js b/src/events/RE/reFSNonconformist.js index a99a91fdce0..9d8e22ed44a 100644 --- a/src/events/RE/reFSNonconformist.js +++ b/src/events/RE/reFSNonconformist.js @@ -17,8 +17,7 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv const FSNonconformistArray = Object.keys(App.Data.FutureSociety.records).filter(fs => V.arcologies[0][fs] < 95 && V.arcologies[0][fs] > 50); /** @type {FC.FutureSocietyAdj} */ - const FSNonconformist = App.Data.FutureSociety.records[FSNonconformistArray.random()].noun; - + const FSNonconformist = App.Data.FutureSociety.records[FSNonconformistArray.random()].adj; if (V.arcologies[0].FSRestart !== "unset") { r.push(`A group of the Societal Elite arrives at your penthouse and is quickly ushered into your office. They're among the best members of the society you're building, uniformly wealthy, influential, and deeply`); } else { -- GitLab From b5f2fc697c5e310f45b78fc1b85a841551b199fa Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Sun, 30 May 2021 23:32:12 -0400 Subject: [PATCH 32/91] move egypt out of fallback to make room for error --- src/events/RE/reFSNonconformist.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/events/RE/reFSNonconformist.js b/src/events/RE/reFSNonconformist.js index 9d8e22ed44a..ebe0805cdde 100644 --- a/src/events/RE/reFSNonconformist.js +++ b/src/events/RE/reFSNonconformist.js @@ -79,8 +79,10 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to embody the confidence of the early Caliphate,`); } else if (FSNonconformist === "Chinese Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who do their best to project complete confidence that the arcology possesses the Mandate of Heaven,`); - } else { + } else if (FSNonconformist === "Egyptian Revivalist") { r.push(`involved in your Revivalist vision. They're looking quite grim, an unusual mood for a group of oligarchs who partake of your serene confidence that your arcology is coming into a place as stable and long-lived as that of Ancient Egypt,`); + } else { + throw `FS "${FSNonconformist}" not found `; } if (V.arcologies[0].FSRestart !== "unset") { r.push(`so you hear them out. Apparently, they're here about a peer, another member of the Elite, who has chosen to perform certain undesirable actions. ${capFirstChar(V.assistant.name)} helpfully supplies a biography, but you were previously aware of the situation.`); @@ -152,8 +154,10 @@ App.Events.REFSNonconformist = class REFSNonconformist extends App.Events.BaseEv r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the golden age of the Caliphate has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Arabian project, they're going to set up a competing Byzantine Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); } else if (FSNonconformist === "Chinese Revivalist") { r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since ancient China has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the imperial project, they're going to set up a competing Mongol Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); - } else { + } else if (FSNonconformist === "Egyptian Revivalist"){ r.push(`has been a longtime skeptic of historical revivalism, publicly deploring it as a childish game of dress-up. This never got much traction, since the land of the Pharaohs has become quite fashionable here. Frustrated, they're rumored to be planning a change of approach. Despairing of getting the population to give up the Egyptian project, they're going to set up a competing Ancient Greek Revivalism. The quixotic effort is almost certainly doomed to fail, but the oligarchs fear it will be a distraction.`); + } else { + throw `FS "${FSNonconformist}" not found `; } if (V.arcologies[0].FSRestart !== "unset") { r.push(`Faced with such a threat, the Elite naturally came to you. They ask you, as leader of the arcology, to both cover up the event and deal with the disgraced Elite.`); -- GitLab From 7382daed5cb98b12608f9c97bd2f59e710af4c99 Mon Sep 17 00:00:00 2001 From: Blank_Alt <12406-Blank_Alt@users.noreply.gitgud.io> Date: Mon, 31 May 2021 13:53:03 +0000 Subject: [PATCH 33/91] fixesPool --- src/002-config/fc-version.js | 2 +- src/events/RETS/reRepressedAnalVirgin.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index 2f2d540f2fb..f8ef89bcac4 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -1,6 +1,6 @@ App.Version = { base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed. - pmod: "4.0.0-alpha.0", + pmod: "4.0.0-alpha.2", commitHash: null, release: 1130 // When getting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. }; diff --git a/src/events/RETS/reRepressedAnalVirgin.js b/src/events/RETS/reRepressedAnalVirgin.js index 019583561ae..162d78038cf 100644 --- a/src/events/RETS/reRepressedAnalVirgin.js +++ b/src/events/RETS/reRepressedAnalVirgin.js @@ -184,10 +184,11 @@ App.Events.RETSAnalRepressedVirgin = class RETSAnalRepressedVirgin extends App.E t.push(`You tell ${him} that ${his} butt is your property, just like ${subSlave.slaveName}'s. ${He} looks <span class="trust dec">terrified.</span> You continue, telling ${him} to bring your property over to you. ${He} stumbles over, begging,`); t.push(Spoken(eventSlave, `"P-please, fuck me ${getWrittenTitle(eventSlave)}, please don't do stuff to my butt. It's going t-to h-hurt.`)); if (eventSlave.preg > eventSlave.pregData.normalBirth/2) { - t.push(`And I-I'm r-really pregnant."`); + t.push(`And I-I'm r-really pregnant.`); } else if (eventSlave.pregKnown === 1) { - t.push(`And I-I'm p-pregnant."`); + t.push(`And I-I'm p-pregnant.`); } + t.push(t.pop() + `"`); t.push(`You push ${him} down across your desk, giving ${him} a swat across the rump to warn ${him} to shut up. ${He} does, though ${he} makes a little squealing noise when you begin to grope ${his} ass, working your way in towards ${his} virgin backdoor. When ${he} feels`); if (pDick) { t.push(`your lubed cockhead`); -- GitLab From 36b6a7642001adb9a79b367b5d5e99784739b993 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Mon, 31 May 2021 10:24:23 -0400 Subject: [PATCH 34/91] fix "no clothing" birth scene --- src/js/birth/birth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js index d811de7dd9b..69a859b94b2 100644 --- a/src/js/birth/birth.js +++ b/src/js/birth/birth.js @@ -8505,7 +8505,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {}) } } } - } else if (App.Data.clothes.get(slave.clothes).exposure <= 3) { + } else if (App.Data.clothes.get(slave.clothes).exposure > 3) { if (slave.fetish === "mindbroken") { r.push(`Instinctively, ${he} begins to push out`); if (slave.broodmother > 0) { -- GitLab From e558e054c30e538dd6b73b0355ecd230d8620d58 Mon Sep 17 00:00:00 2001 From: klorpa <30924131+klorpa@users.noreply.github.com> Date: Mon, 31 May 2021 13:18:00 -0500 Subject: [PATCH 35/91] Fixes --- src/Mods/SecExp/events/attackOptions.js | 2 +- src/Mods/SecExp/events/attackReport.js | 2 +- src/Mods/SecExp/js/authorityReport.js | 2 +- src/Mods/SecExp/js/tradeReport.js | 4 +- src/events/intro/introSummary.js | 8 +- src/events/scheduled/murderAttempt.js | 6 +- src/interaction/policies/changeLanguage.js | 2 +- src/npc/children/childInteract.tw | 2 +- src/npc/generate/generateMarketSlave.js | 1 + src/npc/generate/generateNewSlaveJS.js | 12 +- .../passage/fSlaveSlaveDickConsummate.tw | 633 ------------------ src/pregmod/eliteTakeOverFight.tw | 2 +- src/uncategorized/seIndependenceDay.tw | 14 +- 13 files changed, 29 insertions(+), 661 deletions(-) delete mode 100644 src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw diff --git a/src/Mods/SecExp/events/attackOptions.js b/src/Mods/SecExp/events/attackOptions.js index c37eea41a67..1a122daa503 100644 --- a/src/Mods/SecExp/events/attackOptions.js +++ b/src/Mods/SecExp/events/attackOptions.js @@ -134,7 +134,7 @@ App.Events.attackOptions = class attackOptions extends App.Events.BaseEvent { r.push(`in`, App.UI.DOM.makeElement("span", `the wastelands`, "strong"), `outside the free city territory.`); } else if (V.SecExp.war.terrain === "international waters") { r.push(`in`, App.UI.DOM.makeElement("span", `the water surrounding`, "strong"), `the free city.`); - } else if (["an underwater cave", "a sunken ship"].includes(V.SecExp.war.terrain)) { + } else if (["a sunken ship", "an underwater cave"].includes(V.SecExp.war.terrain)) { r.push(`in`, App.UI.DOM.makeElement("span", `${V.SecExp.war.terrain}`, "strong"), `near the free city.`); } else if (V.SecExp.war.terrain === "error") { r.push(App.UI.DOM.makeElement("span", `Error: failed to assign terrain.`, "red"), `${V.SecExp.war.terrain} reads: ${V.SecExp.war.terrain}.`); diff --git a/src/Mods/SecExp/events/attackReport.js b/src/Mods/SecExp/events/attackReport.js index 04b854456f4..90b7e5ebdf6 100644 --- a/src/Mods/SecExp/events/attackReport.js +++ b/src/Mods/SecExp/events/attackReport.js @@ -92,7 +92,7 @@ App.Events.attackReport = function() { r.push(`in the wastelands outside the free city territory,`); } else if (V.SecExp.war.terrain === "international waters") { r.push(`in the water surrounding the free city,`); - } else if (["an underwater cave", "a sunken ship"].includes(V.SecExp.war.terrain)) { + } else if (["a sunken ship", "an underwater cave"].includes(V.SecExp.war.terrain)) { r.push(`in <strong>${V.SecExp.war.terrain}</strong> near the free city`); } if (V.SecExp.war.attacker.losses !== V.SecExp.war.attacker.troops) { diff --git a/src/Mods/SecExp/js/authorityReport.js b/src/Mods/SecExp/js/authorityReport.js index 5a4eac1c188..d21ba717cba 100644 --- a/src/Mods/SecExp/js/authorityReport.js +++ b/src/Mods/SecExp/js/authorityReport.js @@ -29,7 +29,7 @@ App.SecExp.authorityReport = function() { r.push(`Given your past life as a gang leader, you find it easier to assert your authority over the arcology and its inhabitants.`); } - if (["wealth", "escort", "servant", "BlackHat"].includes(V.PC.career)) { + if (["BlackHat", "escort", "servant", "wealth"].includes(V.PC.career)) { authGrowth -= (10 * random(5, 15)); } else if (["slaver", "slaver"].includes(V.PC.career)){ authGrowth += (10 * random(5, 15)); diff --git a/src/Mods/SecExp/js/tradeReport.js b/src/Mods/SecExp/js/tradeReport.js index eb8e0dc19a1..a4f66dce2be 100644 --- a/src/Mods/SecExp/js/tradeReport.js +++ b/src/Mods/SecExp/js/tradeReport.js @@ -39,9 +39,9 @@ App.SecExp.tradeReport = function() { tradeChange -= 0.5; } - if (["wealth", "capitalist", "celebrity", "BlackHat"].includes(V.PC.career)) { + if (["BlackHat", "capitalist", "celebrity", "wealth"].includes(V.PC.career)) { tradeChange += 1; - } else if (["escort", "servant", "gang"].includes(V.PC.career)) { + } else if (["escort", "gang", "servant"].includes(V.PC.career)) { tradeChange -= 0.5; } diff --git a/src/events/intro/introSummary.js b/src/events/intro/introSummary.js index d1b201b38fa..e15534fba66 100644 --- a/src/events/intro/introSummary.js +++ b/src/events/intro/introSummary.js @@ -387,11 +387,11 @@ App.Intro.summary = function() { V.PC.eyewear = "corrective glasses"; } if (V.PC.pubertyXX === 0 && V.PC.pubertyXY === 0) { - if (V.PC.age < 11) { + if (V.PC.actualAge < 11) { V.PC.energy = 20; - } else if (V.PC.age < 12) { + } else if (V.PC.actualAge < 12) { V.PC.energy = 30; - } else if (V.PC.age < 13) { + } else if (V.PC.actualAge < 13) { V.PC.energy = 40; } } @@ -406,7 +406,7 @@ App.Intro.summary = function() { } else { V.PC.rules.living = "luxurious"; } - } else if (["wealth", "trust fund", "rich kid", "celebrity", "rising star", "child star"].includes(V.PC.career)) { + } else if (["celebrity", "child star", "rich kid", "rising star", "trust fund", "wealth"].includes(V.PC.career)) { V.PC.rules.living = "normal"; } else { V.PC.rules.living = "spare"; diff --git a/src/events/scheduled/murderAttempt.js b/src/events/scheduled/murderAttempt.js index c77d789572d..748ff2ba97f 100644 --- a/src/events/scheduled/murderAttempt.js +++ b/src/events/scheduled/murderAttempt.js @@ -16,7 +16,7 @@ App.Events.MurderAttempt = class MurderAttempt extends App.Events.BaseEvent { // disable Continue V.nextButton = " "; const nextPassage = "Scheduled Event"; - const perceptiveCareers = ["mercenary", "gang", "hoodlum", "street urchin", "escort", "prostitute"]; + const perceptiveCareers = ["escort", "gang", "hoodlum", "mercenary", "prostitute", "street urchin"]; // event unique const variation = jsEither(["trade", "slave", "drug", "military"]); let isSincere = Math.random() > 0.6; @@ -63,7 +63,7 @@ App.Events.MurderAttempt = class MurderAttempt extends App.Events.BaseEvent { r.push("deal for a new drug."); break; case "military": - r.push("military endeavour."); + r.push("military endeavor."); break; } r.push("Despite being incredibly vague about the details of said business opportunity, they have references from multiple reputable businesses in the"); @@ -114,7 +114,7 @@ App.Events.MurderAttempt = class MurderAttempt extends App.Events.BaseEvent { let r = []; r.push(`${capFirstChar(V.assistant.name)} schedules a meeting a few days later to take place in your personal office, an oddity given these meetings are usually conducted in a more neutral, albeit less secure location, but ${companyName} insisted on it.`); - if (["capitalist", "mercenary", "recruit", "slaver", "slave overseer", "engineer", "escort"].includes(V.PC.career)) { + if (["capitalist", "engineer", "escort", "mercenary", "recruit", "slave overseer", "slaver"].includes(V.PC.career)) { r.push("You should prepare for anything; it's better to be prepared in case something goes awry."); } else { r.push("You can't really complain; it's easier for you and cheaper should nothing come of it."); diff --git a/src/interaction/policies/changeLanguage.js b/src/interaction/policies/changeLanguage.js index 657b32dd86b..22e1dcea899 100644 --- a/src/interaction/policies/changeLanguage.js +++ b/src/interaction/policies/changeLanguage.js @@ -6,7 +6,7 @@ App.Arcology.changeLanguage = function() { const options = new App.UI.OptionsGroup(); const languageList = new Set(["English", "Spanish", "Arabic", "Chinese", "Japanese", V.seed]); - if (["North America", "Western Europe", "Australia"].includes(V.continent)) { + if (["Australia", "North America", "Western Europe"].includes(V.continent)) { languageList.add("English"); } else if (V.continent === "South America") { languageList.add("Spanish"); diff --git a/src/npc/children/childInteract.tw b/src/npc/children/childInteract.tw index 53e4446fead..f25a21e6add 100644 --- a/src/npc/children/childInteract.tw +++ b/src/npc/children/childInteract.tw @@ -967,7 +967,7 @@ FIXME: <</if>> <</if>> <<if $dispensary == 1>> - <<if (["inverted", "partially inverted", "cute", "tiny", "puffy", "flat"].includes($activeChild.nipples))>> + <<if (["cute", "flat", "inverted", "partially inverted", "puffy", "tiny"].includes($activeChild.nipples))>> | <<link "Nipple enhancers">> <<set $activeChild.drugs = "nipple enhancers">> <</link>> diff --git a/src/npc/generate/generateMarketSlave.js b/src/npc/generate/generateMarketSlave.js index e17dfc3eb61..ee94ea7c68f 100644 --- a/src/npc/generate/generateMarketSlave.js +++ b/src/npc/generate/generateMarketSlave.js @@ -2316,6 +2316,7 @@ globalThis.generateMarketSlave = function(market = "kidnappers", numArcology = 1 slave.dick = 0; slave.balls = 0; slave.preg = 0; + slave.clitPiercing = 0; slave.eyebrowHStyle = "bald"; slave.underArmHStyle = "bald"; slave.pubicHStyle = "bald"; diff --git a/src/npc/generate/generateNewSlaveJS.js b/src/npc/generate/generateNewSlaveJS.js index 2401a43f416..f00bf0bb4b5 100644 --- a/src/npc/generate/generateNewSlaveJS.js +++ b/src/npc/generate/generateNewSlaveJS.js @@ -1850,13 +1850,13 @@ globalThis.GenerateNewSlave = (function() { globalThis.generateSalonModifications = function(slave) { /* hair dyes*/ if ((jsRandom(1, 50) === 1) || ((jsRandom(1, 20) === 1) && ["southern european", "white"].includes(slave.race))) { - slave.hColor = jsEither(["jet black", "black", "black", "dark brown", "brown", "chestnut", "chocolate brown", "amber", "golden", "blonde", "blonde", "blonde", "platinum blonde", "platinum blonde", "auburn", "ginger", "copper"]); - if (jsRandom(1, 10) === 1 || (["jet black", "black", "dark brown", "brown", "chestnut", "chocolate brown"].includes(slave.hColor) && jsRandom(1, 10) !== 1)) { + slave.hColor = jsEither(["amber", "auburn", "black", "black", "blonde", "blonde", "blonde", "brown", "chestnut", "chocolate brown", "copper", "dark brown", "ginger", "golden", "jet black", "platinum blonde", "platinum blonde"]); + if (jsRandom(1, 10) === 1 || (["black", "brown", "chestnut", "chocolate brown", "dark brown", "jet black"].includes(slave.hColor) && jsRandom(1, 10) !== 1)) { slave.eyebrowHColor = slave.hColor; } slave.override_H_Color = 1; - } else if ((jsRandom(1, 100) === 1) || ((jsRandom(1, 20) === 1) && ["a barber", "a barista", "a bimbo", "a blogger", "a camgirl", "a camwhore", "a cheerleader", "a child actress", "a clown", "a club recruiter", "a cocktail waitress", "a comedian", "a cosmetologist", "a dominatrix", "a gang member", "a house DJ", "an idol", "a juvenile delinquent", "a magician's assistant", "a medium", "a mime", "a musician", "a party girl", "a poet", "a political activist", "a porn star", "a radio show host", "a stage magician", "a street performer", "a stripper", "a student", "a video game streamer", "an actress", "an artist", "an aspiring pop star"].includes(slave.career))) { - slave.hColor = jsEither(["platinum blonde", "platinum blonde", "blazing red", "blue-violet", "blue", "burgundy", "dark blue", "deep red", "green-yellow", "green", "grey", "neon blue", "neon green", "neon pink", "pink", "ivory", "purple", "red", "sea green", "silver"]); + } else if ((jsRandom(1, 100) === 1) || ((jsRandom(1, 20) === 1) && ["a barber", "a barista", "a bimbo", "a blogger", "a camgirl", "a camwhore", "a cheerleader", "a child actress", "a clown", "a club recruiter", "a cocktail waitress", "a comedian", "a cosmetologist", "a dominatrix", "a gang member", "a house DJ", "a juvenile delinquent", "a magician's assistant", "a medium", "a mime", "a musician", "a party girl", "a poet", "a political activist", "a porn star", "a radio show host", "a stage magician", "a street performer", "a stripper", "a student", "a video game streamer", "an actress", "an artist", "an aspiring pop star", "an idol"].includes(slave.career))) { + slave.hColor = jsEither(["blazing red", "blue-violet", "blue", "burgundy", "dark blue", "deep red", "green-yellow", "green", "grey", "ivory", "neon blue", "neon green", "neon pink", "pink", "platinum blonde", "platinum blonde", "purple", "red", "sea green", "silver"]); if (jsRandom(1, 3) === 1) { slave.eyebrowHColor = slave.hColor; } @@ -1899,11 +1899,11 @@ globalThis.generateSalonModifications = function(slave) { tan_chance += 5; } /* certain jobs being more likely to expose you to harmful solar radiation*/ - if (["a beggar", "a bimbo", "a construction worker", "a courier", "a gardener", "a delivery woman", "a farm laborer", "a farmer's daughter", "a farmer", "a farmhand", "a lifeguard", "a personal trainer", "a rancher", "a shepherd", "a street performer", "a street vendor", "a student athlete", "a tour guide", "a trophy wife", "an athlete", "an exotic dancer", "homeless"].includes(slave.career)) { + if (["a beggar", "a bimbo", "a construction worker", "a courier", "a delivery woman", "a farm laborer", "a farmer's daughter", "a farmer", "a farmhand", "a gardener", "a lifeguard", "a personal trainer", "a rancher", "a shepherd", "a street performer", "a street vendor", "a student athlete", "a tour guide", "a trophy wife", "an athlete", "an exotic dancer", "homeless"].includes(slave.career)) { tan_chance += 10; } /* certain areas expose people to more harmful solar radiation*/ - if (["the Middle East", "South America", "Africa", "Australia"].includes(V.continent)) { + if (["Africa", "Australia", "South America", "the Middle East"].includes(V.continent)) { tan_chance += 5; } tan_chance += (skinToneLevel(slave.origSkin) - 8); diff --git a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw b/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw deleted file mode 100644 index cd224946456..00000000000 --- a/src/npc/interaction/passage/fSlaveSlaveDickConsummate.tw +++ /dev/null @@ -1,633 +0,0 @@ -:: FSlaveSlaveDick Consummate [nobr] - -<<run App.Utils.setLocalPronouns(getSlave($AS))>> -<<setLocalPronouns $slaverapistx 2>> - -<<if getSlave($AS).dick>> - <<if getSlave($AS).dick == 1>> - <<set _dickSize = "tiny">> - <<elseif (getSlave($AS).dick == 2)>> - <<set _dickSize = "tiny">> - <<elseif (getSlave($AS).dick == 3)>> - <<set _dickSize = "average">> - <<elseif (getSlave($AS).dick == 4)>> - <<set _dickSize = "big">> - <<elseif (getSlave($AS).dick == 5)>> - <<set _dickSize = "huge">> - <<elseif (getSlave($AS).dick == 6)>> - <<set _dickSize = "gigantic">> - <<elseif (getSlave($AS).dick == 7)>> - <<set _dickSize = "titanic">> - <<elseif (getSlave($AS).dick == 8)>> - <<set _dickSize = "absurd">> - <<elseif (getSlave($AS).dick >= 9)>> - <<set _dickSize = "inhuman">> - <</if>> -<</if>> - -<<if areRelated(getSlave($AS), $slaverapistx)>> - <<set _isIncest = 1>> -<</if>> - -You take a look at the bound cock toy. - - -<<if (getSlave($AS).fetish == "mindbroken") && (getSlave($AS).career != "a dairy cow") && (getSlave($AS).career != "a breeding bull")>> - Since <<= getSlave($AS).slaveName>> is mentally broken, the restraints don't do anything but set the scene. -<<elseif (getSlave($AS).devotion > 50)>> - Since <<= getSlave($AS).slaveName>> is devoted, $his restraints are more for the show than for practical purposes. -<<elseif (getSlave($AS).devotion > 20)>> - <<= getSlave($AS).slaveName>> is obedient but not devoted, so $his restraints are firm for $his own good. -<<else>> - <<= getSlave($AS).slaveName>> is unlikely to comply willingly, and is tied down tight, unable to budge more than <<if $showInches == 2>>an inch<<else>>a centimeter<</if>>. -<</if>> - -<<if isAmputee(getSlave($AS))>> - $His limbless torso lies on the bed, ready for $slaverapistx.slaveName. -<<elseif tooBigBelly(getSlave($AS))>> - $His huge belly will limit the number of possible positions for $slaverapistx.slaveName to take $him in. -<<elseif tooBigBreasts(getSlave($AS))>> - The weight of $his tits pins $him helplessly in place. -<<elseif tooBigButt(getSlave($AS))>> - $His huge ass pushes $his pelvis further up, making it look as if $he's trying to fuck the air. -<<elseif tooBigDick(getSlave($AS))>> - $His huge cock is clearly going to be a challenge. -<<elseif tooBigBalls(getSlave($AS))>> - $His huge balls might get a bit in the way in this position. -<<elseif tooFatSlave(getSlave($AS))>> - $His huge gut threatens to envelope $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>>. -<</if>> - -<<if (getSlave($AS).fetish == "mindbroken") && (getSlave($AS).career != "a dairy cow") && (getSlave($AS).career != "a breeding bull")>> - <<if getSlave($AS).energy > 40>> - <<= getSlave($AS).slaveName>> is broken mentally, but has a serviceable libido. After a bit of stimulation $he's good to go without any further reaction on $his own. - <<else>> - <<= getSlave($AS).slaveName>> is broken mentally, and $his low libido prevents $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> from becoming erect. A massive dose of vasodilators fixes this, and you think you see $his face twitch with the pain, but there is no further reaction. - <</if>> -<<elseif (getSlave($AS).fetish == "mindbroken") && (getSlave($AS).career == "a dairy cow")>> - <<if getSlave($AS).energy > 40>> - <<= getSlave($AS).slaveName>>, as a good cow with a good libido, takes only a little fondling before $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> becomes erect. When you let go, $he gives a needy moo with a sad expression to ask you to keep going. - <<else>> - <<= getSlave($AS).slaveName>> may be a cow, but $his low libido keeps $his mostly soft despite plenty of fondling. You inject $him with vasodilators so $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> becomes erect, and $he moos in discomfort and struggles against $his restraints. - <<set _bottomDrugged = 1>> - <</if>> -<<elseif (getSlave($AS).fetish == "mindbroken") && (getSlave($AS).career == "a breeding bull")>> - <<= getSlave($AS).slaveName>>, as a good bull, was already erect while being tied down. It seems $he knows what's going to happen to $him soon. Maybe someone at the Cattle Ranch has been sampling their bulls? -<<else>> - <<if getSlave($AS).devotion >= -20>> - <<if getSlave($AS).energy > 40>> - <<if (getSlave($AS).fetishKnown == 1)>> - <<if (getSlave($AS).fetish == "submissive")>> - <<= getSlave($AS).slaveName>> is a known sub, and seconds after $he is ordered to lie down to be restrained $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> is erect. $He knows $he's going to get used, and can't hide $his excitement. - <<elseif (getSlave($AS).fetish == "dom")>> - <<= getSlave($AS).slaveName>> is a known dom, and needs some stimulation before $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> becomes hard. Despite knowing $he's going to be used, $he can't hide $his curiosity to experience what the other side feels. - <<elseif (getSlave($AS).fetish == "masochist")>> - <<= getSlave($AS).slaveName>> almost gets off on being tied down tight, sporting a <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize erection<</if>> once you have finished. $His nipples are firm as well, and $he struggles against $his restraints to feel them dig into $him tighter. - <<elseif (getSlave($AS).fetish == "sadist")>> - <<= getSlave($AS).slaveName>> is a sadist, and finds $himself in the exact opposite position $he'd want to be in to get off. It's obvious $he's not going to get aroused soon, so you inject $him with vasodilators so $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> becomes erect and hope $he at least learns something from being on the receiving end for once. - <<set _bottomDrugged = 1>> - <<elseif (getSlave($AS).fetish == "humiliation")>> - <<= getSlave($AS).slaveName>> gets off on humiliation, and after being ordered to lay naked on a bed to be tied down, becomes flushed with arousal with $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> throbbing in anticipation at being used like a toy. - <<elseif (getSlave($AS).fetish == "pregnancy") && ($arcologies[0].FSRepopulationFocus != "unset") && canPenetrate(getSlave($AS))>> - <<= getSlave($AS).slaveName>> gets off thinking about pregnancy, and in your arcology most women are pregnant or fertile. $He knows someone's pussy will be around $his _dickSize cock soon, and is clearly lost in $his fantasies as $his cock swells to a throbbing erection. - <</if>> - <<elseif (getSlave($AS).attrXX > 65)>> - <<= getSlave($AS).slaveName>> has a good sex drive and likes pussy, even before $he's fully bound $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> is throbbing in anticipation. - <<else>> - Despite $his adequate sex drive, since <<= getSlave($AS).slaveName>> isn't turned on by the prospect of pussy, $he takes some manual stimulation before $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> stands erect. - <</if>> - <<else>> - <<if (getSlave($AS).attrXX > 65)>> - <<= getSlave($AS).slaveName>> isn't known for $his high libido, but since $he likes pussy all it takes is some teasing to get $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> erect and ready. - <<else>> - <<= getSlave($AS).slaveName>> doesn't have a high libido, and also isn't attracted to female slaves. A dose of vasodilators injected at the base of $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> causes $him to quickly reach painful readiness, and the unnatural pain makes $him strain at $his bonds. - <<set _bottomDrugged = 1>> - <</if>> - <</if>> - <<else>> - <<if getSlave($AS).energy > 60>> - <<if (getSlave($AS).attrXX > 65)>> - Although <<= getSlave($AS).slaveName>> does not like being a slave, $his high libido and love for pussy have $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize erection<</if>> ready for sex despite $his negative feelings. - <<else>> - <<= getSlave($AS).slaveName>> does not like being a slave, and isn't attracted to women, but with $his high libido all it takes is simple teasing for $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> to be ready for sex. - <</if>> - <<else>> - <<= getSlave($AS).slaveName>> does not like being a slave, and without a high sex drive $he is able to resist stimulation and stay soft. A quick dose of vasodilators changes that, and $he moans in pain and struggles against $his bonds in vain as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> becomes painfully hard. - <<set _bottomDrugged = 1>> - <</if>> - <</if>> -<</if>> - -<br><br> - -You call $slaverapistx.slaveName into the room. - -<br><br> - -<<if (getSlave($AS).fetish == "mindbroken") && (getSlave($AS).career != "a dairy cow") && (getSlave($AS).career != "a breeding bull")>> - <<= getSlave($AS).slaveName>> doesn't even notice - <<if _isIncest == 1>> - <<if getSlave($AS).father == $slaverapistx.ID && getSlave($AS).mother == $slaverapistx.ID>> - the slave that is both $his mother and $his father, - <<elseif $slaverapistx.mother == $AS || $slaverapistx.father == $AS>> - $his own <<print relativeTerm(getSlave($AS), $slaverapistx)>>, - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - $his own mother, - <<elseif getSlave($AS).father == $slaverapistx.ID>> - the slave that fathered $him, - <<else>> - $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>, - <</if>> - <<else>> - the other slave, - <</if>> - and simply lays still. -<<elseif (getSlave($AS).fetish == "mindbroken") && ((getSlave($AS).career == "a dairy cow") || (getSlave($AS).career == "a breeding bull"))>> - <<if _isIncest == 1>> - <<= getSlave($AS).slaveName>>'s simple mind does not even acknowledge that $slaverapistx.slaveName is - <<if getSlave($AS).father == $slaverapistx.ID && getSlave($AS).mother == $slaverapistx.ID>> - the slave that is both $his mother and $his father, - <<elseif $slaverapistx.mother == $AS || $slaverapistx.father == $AS>> - $his own <<print relativeTerm(getSlave($AS), $slaverapistx)>>, - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - $his own mother, - <<elseif getSlave($AS).father == $slaverapistx.ID>> - the slave that fathered $him, - <<else>> - $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>, - <</if>> - <<else>> - <<= getSlave($AS).slaveName>> <<if canSee(getSlave($AS))>>sees<<elseif canHear(getSlave($AS))>>hears<<else>>dimly acknowledges<</if>> the newcomer, and with $his simple mind - <</if>> - $he only knows that they have a pussy and $his <<if (getSlave($AS).clit >= 4)>>swollen clit<<else>>_dickSize penis<</if>> is erect. Naturally, $he seems quite eager to put them together. - <<set _incestMood = "Bottom">> -<<else>> - <<= getSlave($AS).slaveName>> is fully naked and <<if canSee(getSlave($AS))>>looking up at<<else>>waiting in front of<</if>> - <<if _isIncest == 1>> - <<if getSlave($AS).father == $slaverapistx.ID && getSlave($AS).mother == $slaverapistx.ID>> - the slave that is both $his mother and $his father, - <<elseif $slaverapistx.mother == $AS || $slaverapistx.father == $AS>> - $his own <<print relativeTerm(getSlave($AS), $slaverapistx)>>, - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - $his own mother, - <<elseif getSlave($AS).father == $slaverapistx.ID>> - the slave that fathered $him, - <<else>> - $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>, - <</if>> - <<if (getSlave($AS).sexualQuirk == "perverted") || (getSlave($AS).sexualQuirk == "sinful")>> - <<set _incestMood = "Bottom">> - unable to hide $his intense arousal at the impending <<if ($slaverapistx.sexualQuirk == "perverted")>>perverted<<else>>sinful<</if>> act.<<if canSee(getSlave($AS))>> $His eyes are locked on $slaverapistx.slaveName's pussy, and<</if>> $slaverapistx.slaveName can hear $him moan in anticipation<<if !canSee(getSlave($AS))>>, which surprises the blind slave<</if>>. - <<elseif (getSlave($AS).relationshipTarget == $slaverapistx.ID) && (getSlave($AS).relationship > 2)>> - <<set _incestMood = "Both">> - but since they're already in a sexual relationship, $he just shows a relaxed smile as $he waits for $slaverapistx.slaveName to mount $him. - <<else>> - <<if getSlave($AS).devotion > 95>> - <<set _incestMood = "Bottom">> - but $his deep acceptance of slavery means $he is eager to please you, <<if (getSlave($AS).clit >= 4)>>leaving $his massive clit flushed<<else>>making $his _dickSize cock drip precum<</if>>. - <<elseif getSlave($AS).devotion > 60>> - and is clearly struggling between keeping $himself hard and acknowledging the incest. A small dose of vasodilators and $his impressive desire to please you should keep $his <<if (getSlave($AS).clit >= 4)>>clit<<else>>penis<</if>> up for $slaverapistx.slaveName. - <<set _incestMood = "BottomFragile">> - <<else>> - <<if ndef _bottomDrugged>> - and once it becomes clear to $him that $slaverapistx.slaveName will be the one mounting $him, $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> shrinks away. A direct injection of vasodilators changes that, bringing $him back to readiness to $his horror. - <<set _bottomDrugged = 1>> - <<else>> - and to $his own horror the drugs $he was injected with keep $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> ready and waiting. - <</if>> - <</if>> - <</if>> - <<else>> - <<if (getSlave($AS).relationshipTarget == $slaverapistx.ID)>> - $his <<print relationshipTerm(getSlave($AS), $slaverapistx)>>, - <<if (getSlave($AS).relationship > 2)>> - but since they're already in a sexual relationship, $he just shows a relaxed smile as $he waits for $slaverapistx.slaveName to mount $him. - <<elseif getSlave($AS).partners.includes($slaverapistx.ID)>> - but since they're already done it before, $he just shows a relaxed smile as $he waits for $slaverapistx.slaveName to mount $him. - <<else>> - whom $he hasn't had sex with yet. $He smiles nervously as $he waits for $slaverapistx.slaveName to mount $him. - <</if>> - <<elseif (getSlave($AS).rivalryTarget == $slaverapistx.ID)>> - $his <<print rivalryTerm(getSlave($AS), $slaverapistx)>>, $slaverapistx.slaveName. - <<if getSlave($AS).partners.includes($slaverapistx.ID)>> - They've already fucked in the past, and by $his reaction, unwillingly. A - <<else>> - $He doesn't much like what is to come, but a - <</if>> - direct injection of vasodilators fixes that, forcing $him to readiness, much to $his chagrin. - <<elseif (getSlave($AS).origBodyOwnerID == $slaverapistx.ID)>> - $slaverapistx.slaveName, who inhabits $his prior body. - <<if (getSlave($AS).sexualQuirk == "perverted")>> - $He's enough of a pervert to get off over getting mounted by $his own form, <<if (getSlave($AS).clit >= 4)>>leaving $his massive clit flushed<<else>>making $his _dickSize cock drip precum<</if>>. - <<elseif getSlave($AS).devotion > 95>> - $His deep acceptance of slavery means $he is eager to please you, <<if (getSlave($AS).clit >= 4)>>leaving $his massive clit flushed<<else>>making $his _dickSize cock drip precum<</if>>, despite how odd it is to fuck one's own body. - <<elseif getSlave($AS).devotion > 60>> - $He is clearly struggling to keep $himself hard while acknowledging $he is expected to fuck $his former body. A small dose of vasodilators and $his impressive desire to please you should keep $his <<if (getSlave($AS).clit >= 4)>>clit<<else>>penis<</if>> at attention. - <<else>> - <<if ndef _bottomDrugged>> - Once it becomes clear to $him that "$he'll" be the one mounting $him, $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> shrinks away. A direct injection of vasodilators changes that, bringing $him back to readiness to $his horror. - <<set _bottomDrugged = 1>> - <<else>> - To $his own horror the drugs $he was injected with keep $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> ready and waiting. - <</if>> - <</if>> - <<else>> - <<if getSlave($AS).devotion > 95>> - $His deep acceptance of slavery means $he is eager to please you, <<if (getSlave($AS).clit >= 4)>>leaving $his massive clit flushed<<else>>making $his _dickSize cock drip precum<</if>>, eager for $slaverapistx.slaveName. - <<elseif getSlave($AS).devotion > 60>> - $He is eager enough to please you that $his <<if (getSlave($AS).clit >= 4)>>clit<<else>>penis<</if>> is at attention and waiting for $slaverapistx.slaveName. - <<else>> - <<if ndef _bottomDrugged>> - Once it becomes clear to $him that $slaverapistx.slaveName be the one mounting $him, $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> shrinks away. A direct injection of vasodilators changes that, bringing $him back to a proper hardness. - <<set _bottomDrugged = 1>> - <<else>> - To $his own horror the drugs $he was injected with keep $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> ready and waiting. - <</if>> - <</if>> - <</if>> - <</if>> -<</if>> - -<br><br> - -<<if $slaverapistx.fetish == "mindbroken" && ($slaverapistx.career != "a dairy cow") && ($slaverapistx.career != "a breeding bull")>> - $slaverapistx.slaveName stares blankly, and needs to be deliberately guided to straddle <<= getSlave($AS).slaveName>>. - <<if _isIncest == 1>> - Naturally, _he2 isn't even aware of the impending incest. - <</if>> - <<if (getSlave($AS).fetish == "mindbroken") && (getSlave($AS).career != "a dairy cow") && (getSlave($AS).career != "a breeding bull")>> - Since both slaves are essentially vegetables, this is shaping up to be a rather contrived sexual demonstration. The parts are all there, but the actors aren't going to contribute much to the show. - <</if>> -<<elseif $slaverapistx.fetish == "mindbroken" && ($slaverapistx.career == "a dairy cow")>> - $slaverapistx.slaveName sees the <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> ready and waiting, and catches on to why _he2's here quickly. _He2 takes it into _his2 mouth before you stop _him2 and tap _his2 pussy, and after a few seconds of thinking _he2 straddles <<= getSlave($AS).slaveName>>'s hips with a moo. - <<if _isIncest == 1>> - Naturally, since _he2 thinks _he2's a cow, incest means nothing to _him2. - <</if>> -<<elseif $slaverapistx.fetish == "mindbroken" && ($slaverapistx.career == "a breeding bull")>> - $slaverapistx.slaveName sees the <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize penis<</if>> ready and waiting, but isn't quite sure what to do with it. _He2's been brought up to use _his2 dick when thinking, after all. It takes a few minutes to get _him2 to straddle <<= getSlave($AS).slaveName>>'s hips with the intent to get _his2 pussy penetrated. - <<if _isIncest == 1>> - Naturally, since _he2 thinks _he2's a breeding bull, incest means nothing to _him2. - <</if>> -<<else>> - $slaverapistx.slaveName sees - <<if _isIncest == 1>> - <<if $slaverapistx.father == $AS && $slaverapistx.mother == $AS>> - the slave that is both _his2 mother and _his2 father - <<elseif getSlave($AS).mother == $slaverapistx.ID || getSlave($AS).father == $slaverapistx.ID>> - _his2 own <<print relativeTerm($slaverapistx, getSlave($AS))>> - <<elseif $slaverapistx.mother == $AS>> - _his2 own mother - <<elseif $slaverapistx.father == $AS>> - the slave that fathered _him2 - <<else>> - _his2 <<print relativeTerm($slaverapistx, getSlave($AS))>> - <</if>> - tied to the bed, - <<if ($slaverapistx.sexualQuirk == "perverted") || ($slaverapistx.sexualQuirk == "sinful")>> - <<if _incestMood == "Bottom">> - and can't hide _his2 <<if ($slaverapistx.sexualQuirk == "perverted")>>perverted<<else>>sinful<</if>> arousal at the excited glances they share. - <<set _incestMood = "Both">> - <<else>> - <<set _incestMood = "Top">> - and becomes indecently aroused at their horrified expressions for the <<if ($slaverapistx.sexualQuirk == "perverted")>>perverted<<else>>sinful<</if>> incest to come. - <</if>> - <<elseif ($slaverapistx.relationshipTarget == $AS) && ($slaverapistx.relationship > 2)>> - and licks _his2 lips involuntarily. - <<else>> - <<if $slaverapistx.devotion > 95>> - <<if _incestMood == "Bottom">> - as well as _his2 apparent lust. Since _he2 is a perfect slave for you, _his2 vagina becomes flushed with arousal quickly. - <<set _incestMood = "Both">> - <<else>> - <<set _incestMood = "Top">> - as well as $his worried expressions. $slaverapistx.slaveName seems aroused and determined to show $him how a proper slave should act. - <</if>> - <<elseif $slaverapistx.devotion > 60>> - <<if _incestMood == "BottomFragile">> - <<unset _incestMood>> - <</if>> - and after figuring out they're just as superficially prepared as _he2 is, resolves _himself2 to forget they're related to stay aroused. - <<else>> - and can't hide the look of horror that crosses _his2 face. You assure _him2 this is what _he2 needs to do. - <<if _incestMood == "Bottom">> - To _his2 growing disgust, _he2 can tell <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>erect clit<<else>>_dickSize erection<</if>> shows off genuine arousal despite their blood relation. - <<else>> - _He2 might find solace in the fact that the owner of the <<if (getSlave($AS).clit >= 4)>>erect clit<<else>>_dickSize erection<</if>> on display doesn't seem thrilled as well. - <</if>> - <</if>> - <</if>> - <<else>> - <<if (getSlave($AS).relationshipTarget == $slaverapistx.ID)>> - $his <<print relationshipTerm(getSlave($AS), $slaverapistx)>> - <<elseif (getSlave($AS).rivalryTarget == $slaverapistx.ID)>> - $his <<print rivalryTerm(getSlave($AS), $slaverapistx)>> - <<elseif (getSlave($AS).origBodyOwnerID == $slaverapistx.ID)>> - $his former body - <<else>> - <<= getSlave($AS).slaveName>> - <</if>> - tied to the bed, - <<if ($slaverapistx.relationshipTarget == $AS && $slaverapistx.relationship > 2) || ($slaverapistx.rivalryTarget == $AS)>> - and licks _his2 lips involuntarily. - <<else>> - <<if $slaverapistx.devotion > 95>> - <<if _incestMood == "Bottom">> - as well as _his2 apparent lust. Since _he2 is a perfect slave for you, _his2 vagina becomes flushed with arousal quickly. - <<set _incestMood = "Both">> - <<else>> - <<set _incestMood = "Top">> - as well as $his worried expressions. $slaverapistx.slaveName seems aroused and determined to show $him how a proper slave should act. - <</if>> - <<elseif $slaverapistx.devotion > 20>> - <<if _incestMood == "BottomFragile">> - <<unset _incestMood>> - <</if>> - and after figuring out they're just as superficially prepared as _he2 is, resolves _himself2 to try and make it pleasurable. - <<else>> - and can't hide the look of horror that crosses _his2 face. You assure _him2 this is what _he2 needs to do. - <<if _incestMood == "Bottom">> - To _his2 growing disgust, _he2 can tell <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>erect clit<<else>>_dickSize erection<</if>> shows off genuine arousal despite _his2 unwillingness. - <<else>> - _He2 might find solace in the fact that the owner of the <<if (getSlave($AS).clit >= 4)>>erect clit<<else>>_dickSize erection<</if>> on display doesn't seem thrilled as well. - <</if>> - <</if>> - <</if>> - <</if>> - - <<if _incestMood == "Top" || _incestMood == "Both" || ndef(_isIncest)>> - <<if ($slaverapistx.fetishKnown == 1)>> - <<if ($slaverapistx.fetish == "submissive")>> - $slaverapistx.slaveName usually prefers to be underneath someone with a <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> like that, which is obvious in _his2 expressions. Knowing _he2's riding it due to someone's orders is just about the only detail that plays to _his2 fetish. - <<elseif ($slaverapistx.fetish == "dom")>> - $slaverapistx.slaveName can't hide _his2 domineering smile at the <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>> tied up and presented to _him2. Being on top and controlling everything is what gets _him2 off, and you just gave _him2 a nice human dildo to dominate. - <<elseif ($slaverapistx.fetish == "masochist")>> - $slaverapistx.slaveName usually prefers to be the one being abused, which is clear from _his2 disappointed reaction as _he2 considers the <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize erection<</if>> tied before _him2. Maybe _he2 can delude _himself2 into thinking this is a denial play for _himself2 and enjoy the human dildo, or maybe not. - <<elseif ($slaverapistx.fetish == "sadist")>> - $slaverapistx.slaveName is a sadist, and seeing a human dildo tied town for _him2 to abuse and enjoy has _him2 almost panting in arousal. The ecstatic look of devotion _he2 flashes you makes it clear _he2's going to enjoy _himself2, regardless of how the <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize cock<</if>>'s owner feels. - <<elseif ($slaverapistx.fetish == "humiliation")>> - $slaverapistx.slaveName usually gets off on humiliation, and you know _he2 wishes the roles were reversed here. Despite that, having _his2 <<= getWrittenTitle($slaverapistx)>> order _him2 to get _himself2 off with the human dildo beneath _him2 is quite thrilling, sexually. - <</if>> - <</if>> - <</if>> -<</if>> - -<br><br> - - -<<if (getSlave($AS).devotion < -20) && ($slaverapistx.devotion < -20)>> - Since you have two restrained slaves, it's up to you to do all the work. Since <<= getSlave($AS).slaveName>> is already lying on the bed, you maneuver $slaverapistx.slaveName's pussy into place. The two slaves make no further moves until you deal $slaverapistx.slaveName a terrific swat across the ass and promise to give _him2 more of the same until _he2 gets going. $slaverapistx.slaveName starts lowering _himself2 very slowly, pulling back every time <<= getSlave($AS).slaveName>>'s dick prods _his2 womanhood. After watching the sad display for a while, you grab _him2 by the hips and slam _him2 down onto <<= getSlave($AS).slaveName>>, hilting _him2 in one, scream-inducing move. - <<if ($slaverapistx.vagina == 0)>> /* losing virginity */ - <<if ($slaverapistx.devotion > 20)>> - $slaverapistx.slaveName accepts your orders without comment and lowers _his2 virgin pussy on <<= getSlave($AS).slaveName>>'s ready <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>>. @@.hotpink;$slaverapistx.slaveName is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;will break in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 10>> - <<elseif ($slaverapistx.devotion >= -20)>> - $slaverapistx.slaveName is clearly unhappy at the idea of losing _his2 pearl of great price to <<= getSlave($AS).slaveName>>; this probably isn't what _he2 imagined _his2 first real sex would be like. _He2 fears _he2 might get pregnant. Nevertheless, @@.hotpink;$he is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 4>> - <<else>> - As you anticipated, $slaverapistx.slaveName refuses to give <<= getSlave($AS).slaveName>> _his2 virginity. However, since $slaverapistx.slaveName is restrained _his2 resistance amounts to @@.mediumorchid;horrified tears@@ and @@.gold;frightened begging.@@ Naturally, this cruel act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion -= 5, $slaverapistx.trust -= 5>> - <</if>> - <<if $slaverapistx.mother == $AS>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s vagina. - <</if>> - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his mother's — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his mother's vagina. - <</if>> - <</if>> - <</if>> /* closes losing virginity */ - $slaverapistx.slaveName seems more cooperative after that and you only have to occasionally prod them with an electrical jolt to keep them going at a faster pace. Both slaves resent what you made them do and fear you as a result. - -<<elseif (getSlave($AS).devotion < -20)>> - Since your dick slave is restrained, you order $slaverapistx.slaveName to kneel on the bed on top of <<= getSlave($AS).slaveName>>, and then maneuver _his2 pussy into place. <<= getSlave($AS).slaveName>> is uncooperative, so you prod and slap $him until $he starts to thrust $his cock into $slaverapistx.slaveName with urgency. - <<if ($slaverapistx.vagina == 0)>> /* losing virginity */ - <<if ($slaverapistx.devotion > 20)>> - $slaverapistx.slaveName accepts your orders without comment and lowers _his2 virgin pussy on <<= getSlave($AS).slaveName>>'s ready <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>>. @@.hotpink;$slaverapistx.slaveName is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;will break in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 10>> - <<elseif ($slaverapistx.devotion >= -20)>> - $slaverapistx.slaveName is clearly unhappy at the idea of losing _his2 pearl of great price to <<= getSlave($AS).slaveName>>; this probably isn't what _he2 imagined _his2 first real sex would be like. _He2 fears _h2e might get pregnant. Nevertheless, @@.hotpink;$he is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 4>> - <<else>> - As you anticipated, $slaverapistx.slaveName refuses to give <<= getSlave($AS).slaveName>> _his2 virginity. However, since $slaverapistx.slaveName is restrained _his2 resistance amounts to @@.mediumorchid;horrified tears@@ and @@.gold;frightened begging.@@ Naturally, this cruel act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion -= 5, $slaverapistx.trust -= 5>> - <</if>> - <<if $slaverapistx.mother == $AS>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s vagina. - <</if>> - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his mother's — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his mother's vagina. - <</if>> - <</if>> - <</if>> /* closes losing virginity */ - It doesn't take long for <<= getSlave($AS).slaveName>> to orgasm. $He resents what you made $him do and fears you as a result. - -<<elseif ($slaverapistx.fetish == "dom") && ($slaverapistx.fetishStrength > 20) && ($slaverapistx.devotion > 20)>> - You tell the randy $slaverapistx.slaveName that <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> is all _hers2. The slave life has so affected $slaverapistx.slaveName that _he2 is quite eager to rape another slave for _his2 pleasure. - <<if $slaverapistx.vagina == 0>> - Without further instruction, $slaverapistx.slaveName lowers _his2 virgin pussy onto <<= getSlave($AS).slaveName>> waiting <<if (getSlave($AS).clit >= 4)>>clit-dick<<else>>_dickSize dick<</if>>, impaling _himself2 slowly and teasing _his2 bound victim. This act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.fetishStrength += 1>> - <</if>> - _He2 begins playing with _him2 immediately, fondling, pinching and licking while bouncing on the meaty shaft. Occasionally _he2 stops, denying <<= getSlave($AS).slaveName>> release and teasing $him, fully enjoying _his2 dominant role. - <<if getSlave($AS).dick > 0>> - <<if (getSlave($AS).fetish == "submissive")>> - By the end of the session <<= getSlave($AS).slaveName>>'s abused, pent-up penis has shot a massive load into $slaverapistx.slaveName's welcoming pussy. $He is glad to be dominated. - <<else>> - By the end of the session <<= getSlave($AS).slaveName>>'s abused, pent-up penis has shot a massive load, to $his horror and resentment, into the blissfully satisfied $slaverapistx.slaveName. - <</if>> - <</if>> - -<<elseif ($slaverapistx.fetish == "sadist") && ($slaverapistx.fetishStrength > 20) && (getSlave($AS).devotion < -20)>> - You tell the grinning $slaverapistx.slaveName that <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> is all _hers2. The slave life has so affected $slaverapistx.slaveName that _he2 is quite eager to hurt and rape another slave for _his2 pleasure. - <<if ($slaverapistx.vagina == 0)>> /* losing virginity */ - <<if ($slaverapistx.devotion > 20)>> - $slaverapistx.slaveName accepts your orders without comment and lowers _his2 virgin pussy on <<= getSlave($AS).slaveName>>'s ready <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>>. @@.hotpink;$slaverapistx.slaveName is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;will break in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 10>> - <<elseif ($slaverapistx.devotion >= -20)>> - $slaverapistx.slaveName is clearly unhappy at the idea of losing _his2 pearl of great price to <<= getSlave($AS).slaveName>>; this probably isn't what _he2 imagined _his2 first real sex would be like. _He2 fears _he2 might get pregnant. Nevertheless, @@.hotpink;$he is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 4>> - <<else>> - As you anticipated, $slaverapistx.slaveName refuses to give <<= getSlave($AS).slaveName>> _his2 virginity. However, since $slaverapistx.slaveName is restrained _his2 resistance amounts to @@.mediumorchid;horrified tears@@ and @@.gold;frightened begging.@@ Naturally, this cruel act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion -= 5, $slaverapistx.trust -= 5>> - <</if>> - <<if $slaverapistx.mother == $AS>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s vagina. - <</if>> - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his mother's — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his mother's vagina. - <</if>> - <</if>> - <</if>> /* closes losing virginity */ - _He2 begins playing with $him immediately, slapping, pinching and licking $his boobs while bouncing on the meaty shaft. Occasionally _he2 stops, denying <<= getSlave($AS).slaveName>> release by painfully squeezing and smacking the sensitive shaft. By the end of the session <<= getSlave($AS).slaveName>>'s abused, pent-up penis has shot several massive and painful loads into the blissfully satisfied $slaverapistx.slaveName, leaving $him lying on the bed, shaking in horror and @@.health.dec;utter exhaustion,@@ while $slaverapistx.slaveName reaps the opportunity to continue painfully tormenting $him. - <<run healthDamage(getSlave($AS), 10)>> - <<set getSlave($AS).counter.penetrative += 3, $penetrativeTotal += 3, $slaverapistx.counter.vaginal += 3, $vaginalTotal += 3>> - -<<elseif ($slaverapistx.energy > 95) && ($slaverapistx.devotion > 20)>> - You tell the randy $slaverapistx.slaveName that <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> is all $hers. The slave life has so affected $slaverapistx.slaveName that _he2 is quite eager to rape another slave, just for the perverted novelty of the act. - <<if ($slaverapistx.vagina == 0)>> /* losing virginity */ - <<if ($slaverapistx.devotion > 20)>> - $slaverapistx.slaveName accepts your orders without comment and lowers _his2 virgin pussy on <<= getSlave($AS).slaveName>>'s ready <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>>. @@.hotpink;$slaverapistx.slaveName is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;will break in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 10>> - <<elseif ($slaverapistx.devotion >= -20)>> - $slaverapistx.slaveName is clearly unhappy at the idea of losing _his2 pearl of great price to <<= getSlave($AS).slaveName>>; this probably isn't what _he2 imagined _his2 first real sex would be like. _He2 fears _he2 might get pregnant. Nevertheless, @@.hotpink;$he is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 4>> - <<else>> - As you anticipated, $slaverapistx.slaveName refuses to give <<= getSlave($AS).slaveName>> _his2 virginity. However, since $slaverapistx.slaveName is restrained _his2 resistance amounts to @@.mediumorchid;horrified tears@@ and @@.gold;frightened begging.@@ Naturally, this cruel act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion -= 5, $slaverapistx.trust -= 5>> - <</if>> - <<if $slaverapistx.mother == $AS>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s vagina. - <</if>> - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his mother's — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his mother's vagina. - <</if>> - <</if>> - <</if>> /* closes losing virginity */ - _He2 rides the helpless <<= getSlave($AS).slaveName>> through several ejaculating orgasms. In the short breaks between them, _he2 teases $his pussy. By the end of the session $slaverapistx.slaveName's cunt is dripping cum, to _his2 obvious satiation and bliss. <<= getSlave($AS).slaveName>> is lying next to _him2 on the bed in a state of fatigue, the entire experience having thoroughly exhausted $him. - <<set getSlave($AS).counter.penetrative += 3, $penetrativeTotal += 3, $slaverapistx.counter.vaginal += 3, $vaginalTotal += 3>> - -<<elseif (getSlave($AS).devotion <= 20) || ($slaverapistx.devotion <= 20)>> - You toss <<= getSlave($AS).slaveName>> onto the bed and tell $slaverapistx.slaveName to get on with it. - <<if ($slaverapistx.vagina == 0)>> /* losing virginity */ - <<if ($slaverapistx.devotion > 20)>> - $slaverapistx.slaveName accepts your orders without comment and lowers _his2 virgin pussy on <<= getSlave($AS).slaveName>>'s ready <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>>. @@.hotpink;$slaverapistx.slaveName is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;will break in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 10>> - <<elseif ($slaverapistx.devotion >= -20)>> - $slaverapistx.slaveName is clearly unhappy at the idea of losing _his2 pearl of great price to <<= getSlave($AS).slaveName>>; this probably isn't what _he2 imagined _his2 first real sex would be like. _He2 fears _he2 might get pregnant. Nevertheless, @@.hotpink;_he2 is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 4>> - <<else>> - As you anticipated, $slaverapistx.slaveName refuses to give <<= getSlave($AS).slaveName>> _his2 virginity. However, since $slaverapistx.slaveName is restrained _his2 resistance amounts to @@.mediumorchid;horrified tears@@ and @@.gold;frightened begging.@@ Naturally, this cruel act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion -= 5, $slaverapistx.trust -= 5>> - <</if>> - <<if $slaverapistx.mother == $AS>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s vagina. - <</if>> - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his mother's — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his mother's vagina. - <</if>> - <</if>> - <</if>> /* closes losing virginity */ - They fuck mechanically, gazing with roiling emotions into each others' eyes. They do seem to come to some sort of a nonverbal 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 $slaverapistx.slaveName's <<if canSee($slaverapistx)>>looking a little more longingly at<<else>>acting a bit more softly with<</if>> <<= getSlave($AS).slaveName>>. - -<<elseif (getSlave($AS).devotion <= 50) || ($slaverapistx.devotion <= 50)>> - You order <<= getSlave($AS).slaveName>> and $slaverapistx.slaveName to get on with it. - <<if ($slaverapistx.vagina == 0)>> /* losing virginity */ - <<if ($slaverapistx.devotion > 20)>> - $slaverapistx.slaveName accepts your orders without comment and lowers _his2 virgin pussy on <<= getSlave($AS).slaveName>>'s ready <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>>. @@.hotpink;$slaverapistx.slaveName is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;will break in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 10>> - <<elseif ($slaverapistx.devotion >= -20)>> - $slaverapistx.slaveName is clearly unhappy at the idea of losing _his2 pearl of great price to <<= getSlave($AS).slaveName>>; this probably isn't what _he2 imagined _his2 first real sex would be like. _He2 fears _he2 might get pregnant. Nevertheless, @@.hotpink;$he is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 4>> - <<else>> - As you anticipated, $slaverapistx.slaveName refuses to give <<= getSlave($AS).slaveName>> _his2 virginity. However, since $slaverapistx.slaveName is restrained _his2 resistance amounts to @@.mediumorchid;horrified tears@@ and @@.gold;frightened begging.@@ Naturally, this cruel act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion -= 5, $slaverapistx.trust -= 5>> - <</if>> - <<if $slaverapistx.mother == $AS>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s vagina. - <</if>> - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his mother's — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his mother's vagina. - <</if>> - <</if>> - <</if>> /* closes losing virginity */ - 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 <<= getSlave($AS).slaveName>>'s <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> and dripping away with the contents of $slaverapistx.slaveName's cum-filled pussy. You notice $slaverapistx.slaveName's <<if canSee($slaverapistx)>>looking a little more longingly at<<else>>acting a bit more softly with<</if>> <<= getSlave($AS).slaveName>>. - -<<else>> - The two slaves turn eagerly to the business of sex. - <<if ($slaverapistx.vagina == 0)>> /* losing virginity */ - <<if ($slaverapistx.devotion > 20)>> - $slaverapistx.slaveName accepts your orders without comment and lowers _his2 virgin pussy on <<= getSlave($AS).slaveName>>'s ready <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>>. @@.hotpink;$slaverapistx.slaveName is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;will break in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 10>> - <<elseif ($slaverapistx.devotion >= -20)>> - $slaverapistx.slaveName is clearly unhappy at the idea of losing _his2 pearl of great price to <<= getSlave($AS).slaveName>>; this probably isn't what _he2 imagined _his2 first real sex would be like. _He2 fears _he2 might get pregnant. Nevertheless, @@.hotpink;$he is further broken to slavery@@ by this application of _his2 body, which naturally @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion += 4>> - <<else>> - As you anticipated, $slaverapistx.slaveName refuses to give <<= getSlave($AS).slaveName>> _his2 virginity. However, since $slaverapistx.slaveName is restrained _his2 resistance amounts to @@.mediumorchid;horrified tears@@ and @@.gold;frightened begging.@@ Naturally, this cruel act @@.lime;breaks in _his2 pussy.@@ - <<set $slaverapistx.vagina = 1, $slaverapistx.devotion -= 5, $slaverapistx.trust -= 5>> - <</if>> - <<if $slaverapistx.mother == $AS>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his <<print relativeTerm(getSlave($AS), $slaverapistx)>>'s vagina. - <</if>> - <<elseif getSlave($AS).mother == $slaverapistx.ID>> - <<if (getSlave($AS).counter.penetrative == 0)>> - <<= getSlave($AS).slaveName>> gasps and $his eyes widen as $he feels the tender folds of a pussy — and none other than $his mother's — embracing $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> for the first time. - <<else>> - <<= getSlave($AS).slaveName>>'s breath quickens as $his <<if (getSlave($AS).clit >= 4)>>massive clit<<else>>_dickSize dick<</if>> disappears into $his mother's vagina. - <</if>> - <</if>> - <</if>> /* closes losing virginity */ - $slaverapistx.slaveName happily rides <<= getSlave($AS).slaveName>>, who occasionally thrusts $his hips up. After a little while, when $slaverapistx.slaveName bends down to engage in passionate kissing, you come over and - <<if canDoAnal($slaverapistx) && $slaverapistx.anus > 0>> - penetrate $slaverapistx.slaveName's free asshole with your <<if $PC.dick != 0>>dick<<else>>strap-on<</if>>. With the extra stimulus of double penetration, _he2 comes indecently hard. The two of them collapse into an exhausted, satisfied pile of slave flesh. - <<set $slaverapistx.counter.anal++, $analTotal++>> - <<if canImpreg($slaverapistx, $PC)>> - <<= knockMeUp($slaverapistx, 5, 1, -1, 1)>> - <</if>> - <<elseif canDoVaginal(getSlave($AS))>> - penetrate <<= getSlave($AS).slaveName>>'s free pussy with your <<if $PC.dick != 0>>dick<<else>>strap-on<</if>>. With the double stimulus of penetrating a tight vagina and being penetrated while restrained, $he comes indecently hard. The two of them collapse into an exhausted, satisfied pile of slave flesh. - <<= VCheck.Vaginal(getSlave($AS), 1)>> - <<elseif canDoAnal(getSlave($AS))>> - penetrate <<= getSlave($AS).slaveName>>'s free asshole with your <<if $PC.dick != 0>>dick<<else>>strap-on<</if>>. With the double stimulus of penetrating a tight vagina and being penetrated while restrained, $he comes indecently hard. The two of them collapse into an exhausted, satisfied pile of slave flesh. - <<= VCheck.Anal(getSlave($AS), 1)>> - <<else>> - pull _his2 face to your crotch. All this penetration has got you horny and there are no free holes to fuck, so a little oral will have to do. It doesn't take long for all three of you to collapse into an exhausted, satisfied pile of flesh. - <<set $slaverapistx.counter.oral++, $oralTotal++>> - <</if>> -<</if>> - - -<br><br> - -<<set getSlave($AS).counter.penetrative += 1, $penetrativeTotal += 1, $slaverapistx.counter.vaginal += 1, $vaginalTotal += 1>> -<<run addPartner(getSlave($AS), $slaverapistx)>> - -/% Friendship/lust? %/ -<<if ([2].includes(getSlave($AS).relationship) && getSlave($AS).relationshipTarget == $slaverapistx.ID) && ([2].includes($slaverapistx.relationship) && $slaverapistx.relationshipTarget == $AS)>> - You keep <<= getSlave($AS).slaveName>>'s dick intimate with $slaverapistx.slaveName's pussy for awhile, something the two friends haven't been sharing with each other. In the end, you are certain they got closer, becoming @@.lightgreen;friends with benefits.@@ - <<set getSlave($AS).relationship++, $slaverapistx.relationship++>> -<</if>> - -/% pregnancy test %/ -<<if canImpreg($slaverapistx, getSlave($AS))>> - <<= knockMeUp($slaverapistx, 25, 0, $AS)>> -<</if>> - -/% save changes %/ -<<set $slaves[$slaveIndices[$slaverapistx.ID]] = $slaverapistx>> diff --git a/src/pregmod/eliteTakeOverFight.tw b/src/pregmod/eliteTakeOverFight.tw index dde5002f02a..680e22cdd9d 100644 --- a/src/pregmod/eliteTakeOverFight.tw +++ b/src/pregmod/eliteTakeOverFight.tw @@ -34,7 +34,7 @@ <br>You send a quick message to <<print App.SF.SFC()>> about your situation, then you pick up the revolver and quickly take aim. <<set $SpecialForcesMessageSent = 1>> <<case "enrage">> - <<if ["arcology owner", "wealth", "trust fund", "rich kid", "capitalist", "medicine", "medical assistant", "celebrity", "rising star", "BlackHat", "hacker", "escort", "prostitute", "child prostitute", "gang", "hoodlum"].includes($PC.career)>> + <<if ["arcology owner", "BlackHat", "capitalist", "celebrity", "child prostitute", "escort", "gang", "hacker", "hoodlum", "medical assistant", "medicine", "prostitute", "rich kid", "rising star", "trust fund", "wealth"].includes($PC.career)>> You know exactly what to say in order to enrage them. <<set _EliteEnraged = 1>> <<elseif random(0,100) > 50>> diff --git a/src/uncategorized/seIndependenceDay.tw b/src/uncategorized/seIndependenceDay.tw index 18d0c489ba1..ac9d237d870 100644 --- a/src/uncategorized/seIndependenceDay.tw +++ b/src/uncategorized/seIndependenceDay.tw @@ -151,27 +151,27 @@ In the Free Cities, Independence Day falls on the day when the Free City achieve <<elseif $PC.career == "mercenary" || $PC.career == "recruit" || ($PC.career == "child soldier" && $PC.actualAge >= 18)>> You share an impressive anecdote from your background as a mercenary; the moral of the story is that you know how to keep your head. <<elseif $PC.career == "child soldier">> - You share an impressive anecdote from your limited time as a mercenary; the moral of the story being that you know how to keep your head. From the murmers, you can tell they suspect the enemy may have hesitated due to your age. + You share an impressive anecdote from your limited time as a mercenary; the moral of the story being that you know how to keep your head. From the murmurs, you can tell they suspect the enemy may have hesitated due to your age. <<elseif $PC.career == "slaver" || $PC.career == "slave overseer">> You share a cruelly amusing anecdote from your background as a slaver; the moral of the story is that you're not one to spare the lash when it's necessary. <<elseif $PC.career == "slave tender">> <<if $PC.actualAge >= 18>> You share a cruelly amusing anecdote from your background working the slave pens; the moral of the story is that you recognize when a slave needs the lash. <<else>> - You share some cruelly amusing anecdotes from your time in the slave pens demonstrating you know what it takes to break a willful slave. From the murmers, you can tell you should have made it more clear that you were on the slaver's side of the cage, not the slave's. + You share some cruelly amusing anecdotes from your time in the slave pens demonstrating you know what it takes to break a willful slave. From the murmurs, you can tell you should have made it more clear that you were on the slaver's side of the cage, not the slave's. <</if>> <<elseif $PC.career == "engineer">> You reference your background as an arcology engineer, cleverly making it obvious that you know this huge building down to its very bones. <<elseif $PC.career == "construction" || ($PC.career == "worksite helper" && $PC.actualAge >= 18)>> - You reference your background in custruction, making it abundantly clear that you know what it takes to construct a building like $arcologies[0].name and, more importantly, how to keep it in working condition. + You reference your background in construction, making it abundantly clear that you know what it takes to construct a building like $arcologies[0].name and, more importantly, how to keep it in working condition. <<elseif $PC.career == "worksite helper">> - You reference your background in custruction, and that you've witnessed what it takes to build something like $arcologies[0].name. Of course, plenty of people have watched a building being built, so what you're saying isn't at all impressive. + You reference your background in construction, and that you've witnessed what it takes to build something like $arcologies[0].name. Of course, plenty of people have watched a building being built, so what you're saying isn't at all impressive. <<elseif $PC.career == "medicine">> You share an impressive anecdote from your background as a surgeon; the moral of the story is that you can be trusted with a delicate operation. <<elseif $PC.career == "medical assistant" || ($PC.career == "nurse" && $PC.actualAge >= 18)>> You share an impressive anecdote from your background in medicine; the moral of the story is that you are far more capable than you appear. <<elseif $PC.career == "nurse">> - You share some of the more impressive acts of care you've performed as a nurse; the moral of the story is that your heart is in the right place. From the murmers, it would seem the crowd favors strength over mercy. + You share some of the more impressive acts of care you've performed as a nurse; the moral of the story is that your heart is in the right place. From the murmurs, it would seem the crowd favors strength over mercy. <<elseif $PC.career == "gang" || $PC.career == "hoodlum" || ($PC.career == "street urchin" && $PC.actualAge >= 18)>> You share a bloody anecdote about the fate of one of your former gang members. The moral of the story is that you have to know your limits. <<elseif $PC.career == "street urchin">> @@ -182,7 +182,7 @@ In the Free Cities, Independence Day falls on the day when the Free City achieve <<if $PC.actualAge <= $minimumSlaveAge>> You start to share a rather sordid anecdote from your time selling your body in a brothel, but cut it short when it becomes apparent that the crowd is appalled at the thought of someone as young as you being forced to do such things. <<else>> - You share a rather sordid anecdote from your time selling your body in a brothel; the moral of the story is knowing the right peoples' dirty little secrets can get you quite far in life. From the murmers, it would appear the crowd is a little uncomfortable with someone as young as you being sa well-travled as you are. + You share a rather sordid anecdote from your time selling your body in a brothel; the moral of the story is knowing the right peoples' dirty little secrets can get you quite far in life. From the murmurs, it would appear the crowd is a little uncomfortable with someone as young as you being as well-traveled as you are. <</if>> <<elseif $PC.career == "servant" || $PC.career == "handmaiden" || ($PC.career == "child servant" && $PC.actualAge >= 18)>> You share some of the highlights of your late Master's life; the moral of the story is that you've seen how to lead from someone who was a leader... It didn't help your standing much. @@ -404,7 +404,7 @@ In the Free Cities, Independence Day falls on the day when the Free City achieve <</if>> <</if>> You conclude by briefly recounting the story of the founding of the Free City, the building of the arcology, and what is publicly known of your accession to ownership, before a ringing close that reminds your citizens that they have the freedom to decide where their stories in the Free Cities go from there. Your speech is @@.green;very well received.@@ - <<if (["rich kid", "business kid", "child soldier", "slave tender", "worksite helper", "child star", "script kiddy", "nurse", "child prostitute", "child servant", "street urchin"].includes($PC.career) && $PC.actualAge < 18) || $PC.career == "handmaiden" || $PC.career == "servant">> + <<if (["business kid", "child prostitute", "child servant", "child soldier", "child star", "nurse", "rich kid", "script kiddy", "slave tender", "street urchin", "worksite helper"].includes($PC.career) && $PC.actualAge < 18) || $PC.career == "handmaiden" || $PC.career == "servant">> <<run repX(500, "event")>> <<else>> <<run repX(1000, "event")>> -- GitLab From a4ec4391e43f855a216c8cd71ab2e5c23904070b Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Mon, 31 May 2021 16:57:02 -0400 Subject: [PATCH 36/91] move managePersonalAffairs.js --- src/{pregmod => player}/managePersonalAffairs.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{pregmod => player}/managePersonalAffairs.js (100%) diff --git a/src/pregmod/managePersonalAffairs.js b/src/player/managePersonalAffairs.js similarity index 100% rename from src/pregmod/managePersonalAffairs.js rename to src/player/managePersonalAffairs.js -- GitLab From ded64dc8cb8f7900343455a70b9f20a90661bad2 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 18:21:46 -0400 Subject: [PATCH 37/91] start --- src/uncategorized/resEndowment.js | 493 ++++++++++++++++++++++++++++++ 1 file changed, 493 insertions(+) create mode 100644 src/uncategorized/resEndowment.js diff --git a/src/uncategorized/resEndowment.js b/src/uncategorized/resEndowment.js new file mode 100644 index 00000000000..6afbf503259 --- /dev/null +++ b/src/uncategorized/resEndowment.js @@ -0,0 +1,493 @@ +App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.cash > 50000, + () => { + for (const [school, data] of App.Data.misc.schools) { + if (V[school].schoolUpgrade === 0 && data.requirements) { + if (V[school].studentsBought > 1 || V[school].schoolPresent !== 0) { + return true; + } + } + } + } + ]; + } + + actorPrerequisites() { + return []; + } + + get weight() { + let weight = 0; + for (const [school, data] of App.Data.misc.schools) { + if (V[school].schoolUpgrade === 0 && data.requirements) { + if (V[school].studentsBought > 1 || V[school].schoolPresent !== 0) { + weight++; + if (V[school].studentsBought > 2) { + weight++; + } + } + } + } + return weight; + } + + execute(node) { + let r = []; + V.nextButton = "Continue"; + V.nextLink = "RIE Eligibility Check"; + const missingSchools = []; + + for (const [school, data] of App.Data.misc.schools) { + if (V[school].schoolUpgrade === 0 && data.requirements) { + if (V[school].studentsBought > 1 || V[school].schoolPresent !== 0) { + missingSchools.push(school); + } + } + } + + /** @type {FC.SlaveSchoolName} */ + const selectedSchool = missingSchools.random(); + /** @type {FC.SlaveSchool} */ + const _SCH = App.Data.misc.schools.get(selectedSchool); + + if (selectedSchool === "TFS") { + r.push(`You receive a personal call from an older member of ${_SCH.title}. Like all of the Sisters, she's very beautiful, but you know how to judge age through the most cutting-edge treatments, and you guess she's in her early forties. That makes her one of the most senior Sisters, at the age when mandatory enslavement will happen very soon for her. She doesn't seem preoccupied by the prospect, though the pair of gorgeous young women cooperating to suck off her enormous cock may have something to do with that.`); + if (V.PC.slaveSurname) { + r.push(`"`); + if (V.PC.title) { + r.push(`Mr.`); + } else { + r.push(`Ms.`); + } + r.push(`${V.PC.slaveSurname},"`); + } else { + r.push(`"${V.PC.slaveName},"`); + } + r.push(`she says forthrightly,`); + if (V.PC.dick !== 0 && V.PC.vagina !== -1 && V.PC.boobs >= 300) { + r.push(`"You've become quite famous among us.`); + } else { + r.push(`"${V.TFS.studentsBought} of my Sisters have left us for you. You seem interested in us, and are clearly very wealthy.`); + } + r.push(`I would like to ask you for help." She explains that a schism is developing within the Sisters over whether the ideal futanari should have balls. "This is a serious matter," she says. "We must agree on our goals. I believe a futa's pussy is most exquisite without testicles to obscure it." She stands up, displacing her attendants and bringing her genitalia into view. She has scarcely a trace of scrotum. "Sadly, removal of our balls would reduce our ability to remain erect, and reduce our sex drives. So, the solution is clearly to carefully calibrate our transformations to ensure that our testicles never descend, like mine; or if they have descended, to reverse that with surgery. With your support, I can make this vision predominate. I hope," she says, turning to give one of her attendants a tender kiss, "that this will make us more loving, as well."`); + App.Events.addParagraph(node, r); + r = []; + r.push(`Scarcely has the call ended than another comes in. It's another matron of the Futanari Sisters; she looks so much like her Sister that you are momentarily confused. "I know what my Sister said, and I know what she asked for," she purrs. She manipulates the video call controls, zooming the camera out. It reveals that she has her equally enormous cock in a much younger Sister's pussy; another attendant is lavishing oral attention on her testicles, which are comically big. "She's wrong. We are more beautiful with balls, and the bigger, the better." She shudders, pulling out to blow a gigantic load all over all three of them. Her erection does not waver for an instant as she transfers it to the other futa's anus. "We are sexually superior like this, too. Lust is better than love. Support me instead, I beg you."`); + } else { + r.push(`You receive a personal call from a senior representative of ${_SCH.title}. It seems the ${_SCH.nickname} is raising funds, and since you've already`); + if (V[selectedSchool].schoolPresent === 0) { + r.push(`purchased ${V[selectedSchool].studentsBought} of its ${_SCH.nickname}`); + } else { + r.push(`encouraged them to open a ${_SCH.branchName} in your arcology`); + } + r.push(`and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`"A generous donation," the representative insists, "would help us advance our mission to`); + switch (selectedSchool) { + case "TUO": + r.push(`make slave children's dreams come true."`); + break; + case "GRI": + r.push(`truly make the 21st century the century of biology."`); + break; + case "SCP": + r.push(`build a reputation for infallible uniformity of product."`); + break; + case "LDE": + r.push(`create a new paradigm in anal sluttery."`); + break; + case "NUL": + r.push(`promote the Skoptic ideal."`); + break; + case "TGA": + case "HA": + r.push(`provide the very finest companions to persons of quality such as yourself."`); + break; + case "TCR": + r.push(`provide the very finest livestock to persons of quality such as yourself."`); + break; + default:/* TSS */ + r.push(`provide good quality slaves at competitive prices."`); + } + + r.push(`Getting down to the business advantages, he adds that "donors receive considerable price advantage on future ${_SCH.slaveNoun}," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent.`); + } + + App.Events.addParagraph(node, r); + + const choices = []; + choices.push(new App.Events.Result(``, sell)); + + App.Events.addResponses(node, choices); + // <span id="result"> + if (selectedSchool === "TSS") { + // <<link "Reorient the school to MILF training">> + // <<replace "#result">> + r.push(`You pause measuringly before forwarding facts and figures to the surprised representative. You matter-of-factly prove the school's shortsightedness in focusing on young slaves; it's a field with a lot of competition and brutal overhead. There's potential elsewhere: MILFs. They're never virgins and they go for lower prices, but their skills can be advanced without ruining them, and material costs are lower. After furious internal debate, the school agrees to your suggestion. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.TSS.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Endow better skills training">> + // <<replace "#result">> + r.push(`You and the representative discuss the school's focus on efficiency. You offer to endow a basic skill training program, and prove based on your own training methods that it won't unduly affect the low overhead and high volume the school relies on. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.TSS.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(10000)}//`); + } else if (selectedSchool === "TUO") { + // <<link "Stricter admission criteria">> + // <<replace "#result">> + r.push(`You express your interest in making the orphanage's admission criteria stricter. You want them to only teach the most beautiful and intelligent children, and focus all attention on raising these select few. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.TUO.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Encourage basic, theoretical sexual education">> + // <<replace "#result">> + r.push(`You propose giving the children a theoretical sex education, claiming that without it, their education is incomplete. The representative considers it, and agrees that it would be beneficial. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.TUO.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the institute. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(10000)}//`); + } else if (selectedSchool === "GRI") { + // <<link "Focus on curative research">> + // <<replace "#result">> + r.push(`You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving _SCH.nickname will probably leave testing programs at a unique level of vitality. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.GRI.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Support refined hormonal research to prevent shrinkage">> + // <<replace "#result">> + r.push(`You introduce your plans to the representative by forwarding the records of the GRI ${_SCH.nickname} you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.GRI.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the institute. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(10000)}//`); + } else if (selectedSchool === "SCP") { + // <<link "Endow a focus on loyalty at the cost of intelligence">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname} on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.SCP.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Support better skills training">> + // <<replace "#result">> + r.push(`You state general satisfaction with previous ${_SCH.nickname}, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.SCP.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(10000)}//`); + } else if (selectedSchool === "LDE") { + // <<link "Endow drug therapy designed to enhance infatuation">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.LDE.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Support refined hormonal research to prevent shrinkage">> + // <<replace "#result">> + r.push(`You state general satisfaction with previous ${_SCH.nickname}, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.LDE.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(10000)}//`); + } else if (selectedSchool === "TGA") { + // <<link "Endow an advanced training center to produce fanatical loyalty">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.TGA.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Endow a combat training program">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy _SCH.nickname lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.TGA.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost `); + cashFormat(10000);// + } else if (selectedSchool === "HA") { + // <<link "Support higher education training">> + // <<replace "#result">> + r.push(`You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the ${_SCH.nickname} without negatively affecting their physical development. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.HA.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + + // <br> + // <<link "Focus on growth stimulants research">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname powerful colossi. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.HA.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Focus on strongfat body type">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname strong yet graciously soft and feminine battlemaids. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.HA.schoolUpgrade = 3; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost `); + cashFormat(10000);// + } else if (selectedSchool === "TCR") { + // <<link "Encourage the sale of breeding bulls">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous cows, but point out that once they give birth, it's up to you to do all the work in keeping them lactating. It quickly dawns on the representative that purchasers may want to buy a bull to keep their herd naturally milky. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); + V.TCR.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Encourage the sale of heifers">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); + V.TCR.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the farm. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost `); + cashFormat(10000);// + } else if (selectedSchool === "NUL") { + // <<link "Fund a training program for non-sexual skills">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.NUL.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Fund a training program for sexual skills">> + // <<replace "#result">> + r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + V.NUL.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Make a generous contribution">> + // <<replace "#result">> + r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost `); + cashFormat(10000);// + } else { + // <<link "Fund the first matron">> + // <<replace "#result">> + r.push(`You forward funds to the first matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you lovingly. She reports that the future of the Futanari Sisters is decided; every effort will be made to keep their balls as unobtrusive as possible. "The younger Sisters," she says approvingly, "seem more submissive and caring already." She has a pretty young futa in her lap, nibbling one of her elder's ears. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from an excess of concern for ejaculation, she will serve the rest of us as a cum producer. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of ejaculate. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase the size of her anal stimulation to counteract that."`); + App.Events.addParagraph(node, r); + r = []; + r.push(`The grateful Sisters spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); + V.TFS.schoolUpgrade = 1; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Fund the second matron">> + // <<replace "#result">> + r.push(`You forward funds to the second matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you flirtily. She reports that the future of the Futanari Sisters is decided; every effort will be made to grow their balls as big as possible. "The younger Sisters," she says approvingly, "seem hornier already." She has a pretty young futa in her lap, bouncing lustily on her elder's cock. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from a lack of concern for ejaculation, she will serve the rest of us as a milk cow. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of creamy milk. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase her dosage of breast expansion drugs to counteract that."`); + App.Events.addParagraph(node, r); + r = []; + r.push(`The grateful Sisters spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); + V.TFS.schoolUpgrade = 2; + cashX(-50000, "capEx"); + repX(7500, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost ${cashFormat(50000)}//`); + // <br> + // <<link "Patronize them without taking sides">> + // <<replace "#result">> + r.push(`You donate funds to the Sisters with your compliments, ensuring that neither matron controls the contributed funds. They understand, and spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); + cashX(-10000, "capEx"); + repX(5000, "event"); + // <</replace>> + // <</link>> + r.push(` //This will cost `); + cashFormat(10000);// + if (V.cash >= 250000 || V.rep >= 10000) { + // <br> + // <<link "Propose a dynamic compromise that supports both visions">> + // <<replace "#result">> + r.push(`You reconnect the call you had with the first matron, splitting your desktop's display to accommodate both video call windows so that you can address both at once. Then you begin to suggest a compromise that should gratify both parties:`); + App.Events.addParagraph(node, r); + r = []; + r.push(`With their not so feminine voices, conspicuous Adam's apples, dry and barren artificial pussies, and naturally masculine hormonal balances, it is more or less an open secret that Futanari 'Sisters' are all biologically, well, men. It is considered poor taste to mention such a thing among polite company, however, as some men who own futas willfully try to ignore this fact or are otherwise are upset to be reminded of it. Your proposed remedy allows both sisters to have their way: With your extensive funding, those current Sisters who were biologically born male (all of them) will be endowed with bigger balls at the second matron's behest. Meanwhile, a new lineup of biologically female Futanari Sisters will be very rapidly inducted, transformed, cultured, trained, and readied for resale, under the expert leadership of the first matron. These new lady-futas will only have erect dicks to complement their natural fertile pussies, feminine hormones, and soft voices; nary a testicle in sight. Slaveowning society on the other hand will enjoy a wider variety of futanari slaves to choose from, opening up exciting new opportunities for owner to sate their personal preferences and perfect their harems. In 15 weeks, the absolute minimum time that all can be feasibly accomplished, everybody wins. Business will continue as usual in the Futanari Sisters until then, with no immediate change in merchandise.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`"Well, you aren't the first one to think of that." the first matron reluctantly states. "You see, there's this outcast group of Sisters who would be perfect for this, it's just... We haven't seen eye to eye for a long time." The second chimes in: "You could talk her into it, she approves of your build far more than mine. Will probably take several months though, to move them all over and integrate all the new Sisters into our fold, and to enjoy the new pussies, of course." After a moment of consideration, the first agrees. You donate the funds to the Sisters with your compliments, ensuring that neither matron completely controls the vast sum. They both understand what they have to do now, starting immediately.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`Days later, the grateful institution begins a mass marketing campaign all across the world's Free Cities, which includes adverts in FCNN, FCTV, and FC social media about the upcoming changes to their Sister inventory and their need for willing new blood and new specialists to help them bolster their ranks. You feature prominently in each and every promotional item as their foremost contributor. Thanks to this <span class="green">you will be a household name in the Free Cities for some time.</span> Such a public flex of your financial muscles has also made your relative power very clear to some in the New World, attracting important players who <span class="green">will start to show an interest</span> in doing business with you and your Free City.`); + V.TFS.schoolUpgrade = 3; + cashX(-250000, "capEx"); + repX(10000, "event"); + V.arcologies[0].prosperity += 1; + V.TFS.compromiseWeek = V.week; + // <</replace>> + // <</link>> + r.push(` //This will cost `); + cashFormat(250000); + r.push(` and take 15 weeks//`); + } + } + // </span> + function MILFTrain() { + const frag = new DocumentFragment(); + let r = []; + + App.Events.addParagraph(frag, r); + return frag; + } + + function skillTrain() { + const frag = new DocumentFragment(); + let r = []; + + App.Events.addParagraph(frag, r); + return frag; + } + } +}; -- GitLab From b227118b2b282a745c0d852a92433adf9e756c9e Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 18:49:12 -0400 Subject: [PATCH 38/91] endowment --- src/events/randomEvent.js | 1 + src/uncategorized/randomNonindividualEvent.tw | 100 ---- src/uncategorized/resEndowment.js | 464 ++++++++---------- src/uncategorized/resEndowment.tw | 348 ------------- 4 files changed, 213 insertions(+), 700 deletions(-) delete mode 100644 src/uncategorized/resEndowment.tw diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index bd98ef14df7..024eac91fd0 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -126,6 +126,7 @@ App.Events.getNonindividualEvents = function() { new App.Events.REMalefactor(), new App.Events.REMaleCitizenHookup(), new App.Events.REFSNonconformist(), + new App.Events.RESEndowment(), ]; }; diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index d78712cc1d5..86170968282 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -597,106 +597,6 @@ <</if>> /* SCHOOL EVENTS */ - - <<if $cash > 50000>> - <<set $RESEndowment = []>> - <<if $TSS.schoolUpgrade == 0>> - <<if ($TSS.studentsBought > 1) || ($TSS.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $TSS.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("TSS")>> - <</if>> - <</if>> - <<if $TUO.schoolUpgrade == 0>> - <<if ($TUO.studentsBought > 1) || ($TUO.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $TUO.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("TUO")>> - <</if>> - <</if>> - <<if $GRI.schoolUpgrade == 0>> - <<if ($GRI.studentsBought > 1) || ($GRI.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $GRI.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("GRI")>> - <</if>> - <</if>> - <<if $SCP.schoolUpgrade == 0>> - <<if ($SCP.studentsBought > 1) || ($SCP.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $SCP.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("SCP")>> - <</if>> - <</if>> - <<if $LDE.schoolUpgrade == 0>> - <<if ($LDE.studentsBought > 1) || ($LDE.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $LDE.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("LDE")>> - <</if>> - <</if>> - <<if $TGA.schoolUpgrade == 0>> - <<if ($TGA.studentsBought > 1) || ($TGA.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $TGA.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("TGA")>> - <</if>> - <</if>> - <<if $HA.schoolUpgrade == 0>> - <<if ($HA.studentsBought > 1) || ($HA.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $HA.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("HA")>> - <</if>> - <</if>> - <<if $TCR.schoolUpgrade == 0>> - <<if ($TCR.studentsBought > 1) || ($TCR.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $TCR.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("TCR")>> - <</if>> - <</if>> - <<if $NUL.schoolUpgrade == 0>> - <<if ($NUL.studentsBought > 1) || ($NUL.schoolPresent != 0)>> - <<set $events.push("RES Endowment")>> - <<if $NUL.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <</if>> - <<set $RESEndowment.push("NUL")>> - <</if>> - <</if>> - <<if $TFS.schoolUpgrade == 0>> - <<if ($TFS.studentsBought > 1) || ($TFS.schoolPresent != 0) || (($TFS.studentsBought > 0) && ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300))>> - <<set $events.push("RES Endowment")>> - <<set $RESEndowment.push("TFS")>> - <<if $TFS.studentsBought > 2>> - <<set $events.push("RES Endowment")>> - <<set $RESEndowment.push("TFS")>> - <</if>> - <<if ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>> - <<set $events.push("RES Endowment")>> - <<set $RESEndowment.push("TFS")>> - <</if>> - <</if>> - <</if>> - <</if>> - <<set $RESMove = []>> <<if ($seeDicks != 100)>> /* is the player ok with seeing vaginas? */ <<if $TSS.schoolUpgrade != 0>> diff --git a/src/uncategorized/resEndowment.js b/src/uncategorized/resEndowment.js index 6afbf503259..d6f88098bbc 100644 --- a/src/uncategorized/resEndowment.js +++ b/src/uncategorized/resEndowment.js @@ -119,301 +119,280 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { App.Events.addParagraph(node, r); const choices = []; - choices.push(new App.Events.Result(``, sell)); - App.Events.addResponses(node, choices); - // <span id="result"> if (selectedSchool === "TSS") { - // <<link "Reorient the school to MILF training">> - // <<replace "#result">> + choices.push(new App.Events.Result(`Reorient the school to MILF training`, MILFTrain, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Endow better skills training`, skillTrain, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "TUO") { + choices.push(new App.Events.Result(`Stricter admission criteria`, stricter, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Encourage basic, theoretical sexual education`, basic, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "GRI") { + choices.push(new App.Events.Result(`Focus on curative research`, cure, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Support refined hormonal research to prevent shrinkage`, antishrink, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "SCP") { + choices.push(new App.Events.Result(`Endow a focus on loyalty at the cost of intelligence`, loyalty, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Support better skills training`, skillsUp, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "LDE") { + choices.push(new App.Events.Result(`Endow drug therapy designed to enhance infatuation`, infatuation, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Support refined hormonal research to prevent shrinkage`, shrinkageDown, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "TGA") { + choices.push(new App.Events.Result(`Endow an advanced training center to produce fanatical loyalty`, TGALoyalty, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Endow a combat training program`, combat, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "HA") { + choices.push(new App.Events.Result(`Support higher education training`, higherEd, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Focus on growth stimulants research`, growStim, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Focus on strongfat body type`, strongFat, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "TCR") { + choices.push(new App.Events.Result(`Encourage the sale of breeding bulls`, bulls, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Encourage the sale of heifers`, heifers, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "NUL") { + choices.push(new App.Events.Result(`Fund a training program for non-sexual skills`, noSSkills, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Fund a training program for sexual skills`, sSkills, `This will cost ${cashFormat(50000)}`)); + } else if (selectedSchool === "TFS") { + choices.push(new App.Events.Result(`Fund the first matron`, TFSOne, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Fund the second matron`, TFSTwo, `This will cost ${cashFormat(50000)}`)); + choices.push(new App.Events.Result(`Patronize them without taking sides`, TFSGenerous, `This will cost ${cashFormat(50000)}`)); + if (V.cash >= 250000 && V.rep >= 10000) { + choices.push(new App.Events.Result(`Propose a dynamic compromise that supports both visions`, TFSBoth, `This will cost ${cashFormat(250000)} and take 15 weeks`)); + } + } + + if (selectedSchool !== "TFS") { + choices.push(new App.Events.Result(`Make a generous contribution`, generous, `This will cost ${cashFormat(10000)}`)); + } + App.Events.addResponses(node, choices); + + // TSS + function MILFTrain() { + const frag = new DocumentFragment(); + let r = []; r.push(`You pause measuringly before forwarding facts and figures to the surprised representative. You matter-of-factly prove the school's shortsightedness in focusing on young slaves; it's a field with a lot of competition and brutal overhead. There's potential elsewhere: MILFs. They're never virgins and they go for lower prices, but their skills can be advanced without ruining them, and material costs are lower. After furious internal debate, the school agrees to your suggestion. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TSS.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Endow better skills training">> - // <<replace "#result">> + function skillTrain() { + const frag = new DocumentFragment(); + let r = []; r.push(`You and the representative discuss the school's focus on efficiency. You offer to endow a basic skill training program, and prove based on your own training methods that it won't unduly affect the low overhead and high volume the school relies on. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TSS.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> + function generous() { + const frag = new DocumentFragment(); + let r = []; r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); cashX(-10000, "capEx"); repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(10000)}//`); - } else if (selectedSchool === "TUO") { - // <<link "Stricter admission criteria">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + // TUO + function stricter() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express your interest in making the orphanage's admission criteria stricter. You want them to only teach the most beautiful and intelligent children, and focus all attention on raising these select few. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TUO.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Encourage basic, theoretical sexual education">> - // <<replace "#result">> + function basic() { + const frag = new DocumentFragment(); + let r = []; r.push(`You propose giving the children a theoretical sex education, claiming that without it, their education is incomplete. The representative considers it, and agrees that it would be beneficial. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TUO.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the institute. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(10000)}//`); - } else if (selectedSchool === "GRI") { - // <<link "Focus on curative research">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + // GRI + function cure() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving _SCH.nickname will probably leave testing programs at a unique level of vitality. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.GRI.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Support refined hormonal research to prevent shrinkage">> - // <<replace "#result">> + function antishrink() { + const frag = new DocumentFragment(); + let r = []; r.push(`You introduce your plans to the representative by forwarding the records of the GRI ${_SCH.nickname} you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.GRI.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the institute. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(10000)}//`); - } else if (selectedSchool === "SCP") { - // <<link "Endow a focus on loyalty at the cost of intelligence">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + // SCP + function loyalty() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname} on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.SCP.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Support better skills training">> - // <<replace "#result">> + function skillsUp() { + const frag = new DocumentFragment(); + let r = []; r.push(`You state general satisfaction with previous ${_SCH.nickname}, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.SCP.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(10000)}//`); - } else if (selectedSchool === "LDE") { - // <<link "Endow drug therapy designed to enhance infatuation">> - // <<replace "#result">> + // LDE + function infatuation() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.LDE.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Support refined hormonal research to prevent shrinkage">> - // <<replace "#result">> + function shrinkageDown() { + const frag = new DocumentFragment(); + let r = []; r.push(`You state general satisfaction with previous ${_SCH.nickname}, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.LDE.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(10000)}//`); - } else if (selectedSchool === "TGA") { - // <<link "Endow an advanced training center to produce fanatical loyalty">> - // <<replace "#result">> + // TGA + function TGALoyalty() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TGA.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Endow a combat training program">> - // <<replace "#result">> + function combat() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy _SCH.nickname lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TGA.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost `); - cashFormat(10000);// - } else if (selectedSchool === "HA") { - // <<link "Support higher education training">> - // <<replace "#result">> + // HA + function higherEd() { + const frag = new DocumentFragment(); + let r = []; r.push(`You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the ${_SCH.nickname} without negatively affecting their physical development. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); + App.Events.addParagraph(frag, r); + return frag; + } - // <br> - // <<link "Focus on growth stimulants research">> - // <<replace "#result">> + function growStim() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname powerful colossi. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Focus on strongfat body type">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + function strongFat() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname strong yet graciously soft and feminine battlemaids. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 3; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost `); - cashFormat(10000);// - } else if (selectedSchool === "TCR") { - // <<link "Encourage the sale of breeding bulls">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + // TCR + function bulls() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous cows, but point out that once they give birth, it's up to you to do all the work in keeping them lactating. It quickly dawns on the representative that purchasers may want to buy a bull to keep their herd naturally milky. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); V.TCR.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Encourage the sale of heifers">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + function heifers() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); V.TCR.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the farm. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost `); - cashFormat(10000);// - } else if (selectedSchool === "NUL") { - // <<link "Fund a training program for non-sexual skills">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + // NUL + function noSSkills() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.NUL.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Fund a training program for sexual skills">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + function sSkills() { + const frag = new DocumentFragment(); + let r = []; r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.NUL.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Make a generous contribution">> - // <<replace "#result">> - r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost `); - cashFormat(10000);// - } else { - // <<link "Fund the first matron">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + // TFS + function TFSOne() { + const frag = new DocumentFragment(); + let r = []; r.push(`You forward funds to the first matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you lovingly. She reports that the future of the Futanari Sisters is decided; every effort will be made to keep their balls as unobtrusive as possible. "The younger Sisters," she says approvingly, "seem more submissive and caring already." She has a pretty young futa in her lap, nibbling one of her elder's ears. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from an excess of concern for ejaculation, she will serve the rest of us as a cum producer. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of ejaculate. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase the size of her anal stimulation to counteract that."`); App.Events.addParagraph(node, r); r = []; @@ -421,12 +400,13 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { V.TFS.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Fund the second matron">> - // <<replace "#result">> + App.Events.addParagraph(frag, r); + return frag; + } + + function TFSTwo() { + const frag = new DocumentFragment(); + let r = []; r.push(`You forward funds to the second matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you flirtily. She reports that the future of the Futanari Sisters is decided; every effort will be made to grow their balls as big as possible. "The younger Sisters," she says approvingly, "seem hornier already." She has a pretty young futa in her lap, bouncing lustily on her elder's cock. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from a lack of concern for ejaculation, she will serve the rest of us as a milk cow. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of creamy milk. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase her dosage of breast expansion drugs to counteract that."`); App.Events.addParagraph(node, r); r = []; @@ -434,58 +414,38 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { V.TFS.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost ${cashFormat(50000)}//`); - // <br> - // <<link "Patronize them without taking sides">> - // <<replace "#result">> - r.push(`You donate funds to the Sisters with your compliments, ensuring that neither matron controls the contributed funds. They understand, and spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); - cashX(-10000, "capEx"); - repX(5000, "event"); - // <</replace>> - // <</link>> - r.push(` //This will cost `); - cashFormat(10000);// - if (V.cash >= 250000 || V.rep >= 10000) { - // <br> - // <<link "Propose a dynamic compromise that supports both visions">> - // <<replace "#result">> - r.push(`You reconnect the call you had with the first matron, splitting your desktop's display to accommodate both video call windows so that you can address both at once. Then you begin to suggest a compromise that should gratify both parties:`); - App.Events.addParagraph(node, r); - r = []; - r.push(`With their not so feminine voices, conspicuous Adam's apples, dry and barren artificial pussies, and naturally masculine hormonal balances, it is more or less an open secret that Futanari 'Sisters' are all biologically, well, men. It is considered poor taste to mention such a thing among polite company, however, as some men who own futas willfully try to ignore this fact or are otherwise are upset to be reminded of it. Your proposed remedy allows both sisters to have their way: With your extensive funding, those current Sisters who were biologically born male (all of them) will be endowed with bigger balls at the second matron's behest. Meanwhile, a new lineup of biologically female Futanari Sisters will be very rapidly inducted, transformed, cultured, trained, and readied for resale, under the expert leadership of the first matron. These new lady-futas will only have erect dicks to complement their natural fertile pussies, feminine hormones, and soft voices; nary a testicle in sight. Slaveowning society on the other hand will enjoy a wider variety of futanari slaves to choose from, opening up exciting new opportunities for owner to sate their personal preferences and perfect their harems. In 15 weeks, the absolute minimum time that all can be feasibly accomplished, everybody wins. Business will continue as usual in the Futanari Sisters until then, with no immediate change in merchandise.`); - App.Events.addParagraph(node, r); - r = []; - r.push(`"Well, you aren't the first one to think of that." the first matron reluctantly states. "You see, there's this outcast group of Sisters who would be perfect for this, it's just... We haven't seen eye to eye for a long time." The second chimes in: "You could talk her into it, she approves of your build far more than mine. Will probably take several months though, to move them all over and integrate all the new Sisters into our fold, and to enjoy the new pussies, of course." After a moment of consideration, the first agrees. You donate the funds to the Sisters with your compliments, ensuring that neither matron completely controls the vast sum. They both understand what they have to do now, starting immediately.`); - App.Events.addParagraph(node, r); - r = []; - r.push(`Days later, the grateful institution begins a mass marketing campaign all across the world's Free Cities, which includes adverts in FCNN, FCTV, and FC social media about the upcoming changes to their Sister inventory and their need for willing new blood and new specialists to help them bolster their ranks. You feature prominently in each and every promotional item as their foremost contributor. Thanks to this <span class="green">you will be a household name in the Free Cities for some time.</span> Such a public flex of your financial muscles has also made your relative power very clear to some in the New World, attracting important players who <span class="green">will start to show an interest</span> in doing business with you and your Free City.`); - V.TFS.schoolUpgrade = 3; - cashX(-250000, "capEx"); - repX(10000, "event"); - V.arcologies[0].prosperity += 1; - V.TFS.compromiseWeek = V.week; - // <</replace>> - // <</link>> - r.push(` //This will cost `); - cashFormat(250000); - r.push(` and take 15 weeks//`); - } + App.Events.addParagraph(frag, r); + return frag; } - // </span> - function MILFTrain() { + + function TFSGenerous() { const frag = new DocumentFragment(); let r = []; - + r.push(`You donate funds to the Sisters with your compliments, ensuring that neither matron controls the contributed funds. They understand, and spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); + cashX(-10000, "capEx"); + repX(5000, "event"); App.Events.addParagraph(frag, r); return frag; } - function skillTrain() { + function TFSBoth() { const frag = new DocumentFragment(); let r = []; - + r.push(`You reconnect the call you had with the first matron, splitting your desktop's display to accommodate both video call windows so that you can address both at once. Then you begin to suggest a compromise that should gratify both parties:`); + App.Events.addParagraph(node, r); + r = []; + r.push(`With their not so feminine voices, conspicuous Adam's apples, dry and barren artificial pussies, and naturally masculine hormonal balances, it is more or less an open secret that Futanari 'Sisters' are all biologically, well, men. It is considered poor taste to mention such a thing among polite company, however, as some men who own futas willfully try to ignore this fact or are otherwise are upset to be reminded of it. Your proposed remedy allows both sisters to have their way: With your extensive funding, those current Sisters who were biologically born male (all of them) will be endowed with bigger balls at the second matron's behest. Meanwhile, a new lineup of biologically female Futanari Sisters will be very rapidly inducted, transformed, cultured, trained, and readied for resale, under the expert leadership of the first matron. These new lady-futas will only have erect dicks to complement their natural fertile pussies, feminine hormones, and soft voices; nary a testicle in sight. Slaveowning society on the other hand will enjoy a wider variety of futanari slaves to choose from, opening up exciting new opportunities for owner to sate their personal preferences and perfect their harems. In 15 weeks, the absolute minimum time that all can be feasibly accomplished, everybody wins. Business will continue as usual in the Futanari Sisters until then, with no immediate change in merchandise.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`"Well, you aren't the first one to think of that." the first matron reluctantly states. "You see, there's this outcast group of Sisters who would be perfect for this, it's just... We haven't seen eye to eye for a long time." The second chimes in: "You could talk her into it, she approves of your build far more than mine. Will probably take several months though, to move them all over and integrate all the new Sisters into our fold, and to enjoy the new pussies, of course." After a moment of consideration, the first agrees. You donate the funds to the Sisters with your compliments, ensuring that neither matron completely controls the vast sum. They both understand what they have to do now, starting immediately.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`Days later, the grateful institution begins a mass marketing campaign all across the world's Free Cities, which includes adverts in FCNN, FCTV, and FC social media about the upcoming changes to their Sister inventory and their need for willing new blood and new specialists to help them bolster their ranks. You feature prominently in each and every promotional item as their foremost contributor. Thanks to this <span class="green">you will be a household name in the Free Cities for some time.</span> Such a public flex of your financial muscles has also made your relative power very clear to some in the New World, attracting important players who <span class="green">will start to show an interest</span> in doing business with you and your Free City.`); + V.TFS.schoolUpgrade = 3; + cashX(-250000, "capEx"); + repX(10000, "event"); + V.arcologies[0].prosperity += 1; + V.TFS.compromiseWeek = V.week; App.Events.addParagraph(frag, r); return frag; } diff --git a/src/uncategorized/resEndowment.tw b/src/uncategorized/resEndowment.tw deleted file mode 100644 index 216d3c85d00..00000000000 --- a/src/uncategorized/resEndowment.tw +++ /dev/null @@ -1,348 +0,0 @@ -:: RES Endowment [nobr] - -<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">> - -<<set $RESEndowment = $RESEndowment.random()>> -<<set _SCH = App.Data.misc.schools.get($RESEndowment)>> - -<<if $RESEndowment == "TFS">> - You receive a personal call from an older member of _SCH.title. Like all of the Sisters, she's very beautiful, but you know how to judge age through the most cutting-edge treatments, and you guess she's in her early forties. That makes her one of the most senior Sisters, at the age when mandatory enslavement will happen very soon for her. She doesn't seem preoccupied by the prospect, though the pair of gorgeous young women cooperating to suck off her enormous cock may have something to do with that. - <<if $PC.slaveSurname>>"<<if $PC.title>>Mr.<<else>>Ms.<</if>> <<print $PC.slaveSurname>>,"<<else>>"<<print $PC.slaveName>>,"<</if>> - she says forthrightly, - <<if ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>> - "You've become quite famous among us. - <<else>> - "$TFS.studentsBought of my Sisters have left us for you. You seem interested in us, and are clearly very wealthy. - <</if>> - I would like to ask you for help." She explains that a schism is developing within the Sisters over whether the ideal futanari should have balls. "This is a serious matter," she says. "We must agree on our goals. I believe a futa's pussy is most exquisite without testicles to obscure it." She stands up, displacing her attendants and bringing her genitalia into view. She has scarcely a trace of scrotum. "Sadly, removal of our balls would reduce our ability to remain erect, and reduce our sex drives. So, the solution is clearly to carefully calibrate our transformations to ensure that our testicles never descend, like mine; or if they have descended, to reverse that with surgery. With your support, I can make this vision predominate. I hope," she says, turning to give one of her attendants a tender kiss, "that this will make us more loving, as well." - <br><br> - Scarcely has the call ended than another comes in. It's another matron of the Futanari Sisters; she looks so much like her Sister that you are momentarily confused. "I know what my Sister said, and I know what she asked for," she purrs. She manipulates the video call controls, zooming the camera out. It reveals that she has her equally enormous cock in a much younger Sister's pussy; another attendant is lavishing oral attention on her testicles, which are comically big. "She's wrong. We are more beautiful with balls, and the bigger, the better." She shudders, pulling out to blow a gigantic load all over all three of them. Her erection does not waver for an instant as she transfers it to the other futa's anus. "We are sexually superior like this, too. Lust is better than love. Support me instead, I beg you." -<<else>> - You receive a personal call from a senior representative of _SCH.title. It seems the _SCH.nickname is raising funds, and since you've already - <<if V[$RESEndowment].schoolPresent == 0>> - purchased <<= V[V.RESEndowment].studentsBought>> of its _SCH.nickname - <<else>> - encouraged them to open a _SCH.branchName in your arcology - <</if>> - and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to - <<switch $RESEndowment>> - <<case "TUO">> - make slave children's dreams come true." - <<case "GRI">> - truly make the 21st century the century of biology." - <<case "SCP">> - build a reputation for infallible uniformity of product." - <<case "LDE">> - create a new paradigm in anal sluttery." - <<case "NUL">> - promote the Skoptic ideal." - <<case "TGA" "HA">> - provide the very finest companions to persons of quality such as yourself." - <<case "TCR">> - provide the very finest livestock to persons of quality such as yourself." - <<default>> /* TSS */ - provide good quality slaves at competitive prices." - <</switch>> - - Getting down to the business advantages, he adds that "donors receive considerable price advantage on future _SCH.slaveNoun," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent. -<</if>> - -<br><br> - -<span id="result"> -<<if $RESEndowment == "TSS">> - <<link "Reorient the school to MILF training">> - <<replace "#result">> - You pause measuringly before forwarding facts and figures to the surprised representative. You matter-of-factly prove the school's shortsightedness in focusing on young slaves; it's a field with a lot of competition and brutal overhead. There's potential elsewhere: MILFs. They're never virgins and they go for lower prices, but their skills can be advanced without ruining them, and material costs are lower. After furious internal debate, the school agrees to your suggestion. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $TSS.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Endow better skills training">> - <<replace "#result">> - You and the representative discuss the school's focus on efficiency. You offer to endow a basic skill training program, and prove based on your own training methods that it won't unduly affect the low overhead and high volume the school relies on. The school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $TSS.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the school. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "TUO">> - <<link "Stricter admission criteria">> - <<replace "#result">> - You express your interest in making the orphanage's admission criteria stricter. You want them to only teach the most beautiful and intelligent children, and focus all attention on raising these select few. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $TUO.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Encourage basic, theoretical sexual education">> - <<replace "#result">> - You propose giving the children a theoretical sex education, claiming that without it, their education is incomplete. The representative considers it, and agrees that it would be beneficial. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $TUO.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the institute. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "GRI">> - <<link "Focus on curative research">> - <<replace "#result">> - You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving _SCH.nickname will probably leave testing programs at a unique level of vitality. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $GRI.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Support refined hormonal research to prevent shrinkage">> - <<replace "#result">> - You introduce your plans to the representative by forwarding the records of the GRI _SCH.nickname you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $GRI.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the institute. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "SCP">> - <<link "Endow a focus on loyalty at the cost of intelligence">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $SCP.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Support better skills training">> - <<replace "#result">> - You state general satisfaction with previous _SCH.nickname, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $SCP.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the school. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "LDE">> - <<link "Endow drug therapy designed to enhance infatuation">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $LDE.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Support refined hormonal research to prevent shrinkage">> - <<replace "#result">> - You state general satisfaction with previous _SCH.nickname, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $LDE.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the school. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "TGA">> - <<link "Endow an advanced training center to produce fanatical loyalty">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $TGA.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Endow a combat training program">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy _SCH.nickname lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $TGA.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the school. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "HA">> - <<link "Support higher education training">> - <<replace "#result">> - You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the _SCH.nickname without negatively affecting their physical development. The school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $HA.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Focus on growth stimulants research">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname powerful colossi. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $HA.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Focus on strongfat body type">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname strong yet graciously soft and feminine battlemaids. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $HA.schoolUpgrade = 3>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the school. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "TCR">> - <<link "Encourage the sale of breeding bulls">> - <<replace "#result">> - You express general satisfaction with previous cows, but point out that once they give birth, it's up to you to do all the work in keeping them lactating. It quickly dawns on the representative that purchasers may want to buy a bull to keep their herd naturally milky. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slave milking. - <<set $TCR.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Encourage the sale of heifers">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slave milking. - <<set $TCR.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the farm. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<elseif $RESEndowment == "NUL">> - <<link "Fund a training program for non-sexual skills">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $NUL.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Fund a training program for sexual skills">> - <<replace "#result">> - You express general satisfaction with previous _SCH.nickname, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<set $NUL.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Make a generous contribution">> - <<replace "#result">> - You make a generous contribution to the school. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// -<<else>> - <<link "Fund the first matron">> - <<replace "#result">> - You forward funds to the first matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you lovingly. She reports that the future of the Futanari Sisters is decided; every effort will be made to keep their balls as unobtrusive as possible. "The younger Sisters," she says approvingly, "seem more submissive and caring already." She has a pretty young futa in her lap, nibbling one of her elder's ears. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from an excess of concern for ejaculation, she will serve the rest of us as a cum producer. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of ejaculate. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase the size of her anal stimulation to counteract that." - <br><br> - The grateful Sisters spread @@.green;word of your generosity,@@ deflecting inquiries into their secretive world by praising you instead. - <<set $TFS.schoolUpgrade = 1>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Fund the second matron">> - <<replace "#result">> - You forward funds to the second matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you flirtily. She reports that the future of the Futanari Sisters is decided; every effort will be made to grow their balls as big as possible. "The younger Sisters," she says approvingly, "seem hornier already." She has a pretty young futa in her lap, bouncing lustily on her elder's cock. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from a lack of concern for ejaculation, she will serve the rest of us as a milk cow. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of creamy milk. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase her dosage of breast expansion drugs to counteract that." - <br><br> - The grateful Sisters spread @@.green;word of your generosity,@@ deflecting inquiries into their secretive world by praising you instead. - <<set $TFS.schoolUpgrade = 2>> - <<run cashX(-50000, "capEx")>> - <<run repX(7500, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(50000)>>// - <br> - <<link "Patronize them without taking sides">> - <<replace "#result">> - You donate funds to the Sisters with your compliments, ensuring that neither matron controls the contributed funds. They understand, and spread @@.green;word of your generosity,@@ deflecting inquiries into their secretive world by praising you instead. - <<run cashX(-10000, "capEx")>> - <<run repX(5000, "event")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(10000)>>// - <<if $cash >= 250000 || $rep >= 10000>> - <br> - <<link "Propose a dynamic compromise that supports both visions">> - <<replace "#result">> - You reconnect the call you had with the first matron, splitting your desktop's display to accommodate both video call windows so that you can address both at once. Then you begin to suggest a compromise that should gratify both parties: - <br><br> - With their not so feminine voices, conspicuous Adam's apples, dry and barren artificial pussies, and naturally masculine hormonal balances, it is more or less an open secret that Futanari 'Sisters' are all biologically, well, men. It is considered poor taste to mention such a thing among polite company, however, as some men who own futas willfully try to ignore this fact or are otherwise are upset to be reminded of it. Your proposed remedy allows both sisters to have their way: With your extensive funding, those current Sisters who were biologically born male (all of them) will be endowed with bigger balls at the second matron's behest. Meanwhile, a new lineup of biologically female Futanari Sisters will be very rapidly inducted, transformed, cultured, trained, and readied for resale, under the expert leadership of the first matron. These new lady-futas will only have erect dicks to complement their natural fertile pussies, feminine hormones, and soft voices; nary a testicle in sight. Slaveowning society on the other hand will enjoy a wider variety of futanari slaves to choose from, opening up exciting new opportunities for owner to sate their personal preferences and perfect their harems. In 15 weeks, the absolute minimum time that all can be feasibly accomplished, everybody wins. Business will continue as usual in the Futanari Sisters until then, with no immediate change in merchandise. - <br><br> - "Well, you aren't the first one to think of that." the first matron reluctantly states. "You see, there's this outcast group of Sisters who would be perfect for this, it's just... We haven't seen eye to eye for a long time." The second chimes in: "You could talk her into it, she approves of your build far more than mine. Will probably take several months though, to move them all over and integrate all the new Sisters into our fold, and to enjoy the new pussies, of course." After a moment of consideration, the first agrees. You donate the funds to the Sisters with your compliments, ensuring that neither matron completely controls the vast sum. They both understand what they have to do now, starting immediately. - <br><br> - Days later, the grateful institution begins a mass marketing campaign all across the world's Free Cities, which includes adverts in FCNN, FCTV, and FC social media about the upcoming changes to their Sister inventory and their need for willing new blood and new specialists to help them bolster their ranks. You feature prominently in each and every promotional item as their foremost contributor. Thanks to this @@.green;you will be a household name in the Free Cities for some time.@@ Such a public flex of your financial muscles has also made your relative power very clear to some in the New World, attracting important players who @@.green;will start to show an interest@@ in doing business with you and your Free City. - <<set $TFS.schoolUpgrade = 3>> - <<run cashX(-250000, "capEx")>> - <<run repX(10000, "event")>> - <<set $arcologies[0].prosperity += 1>> - <<set $TFS.compromiseWeek = $week>> - <</replace>> - <</link>> //This will cost <<print cashFormat(250000)>> and take 15 weeks// - <</if>> -<</if>> -</span> -- GitLab From 9b05a40e00cd1fc78e8a59862719e98fcb38a56a Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 18:52:40 -0400 Subject: [PATCH 39/91] fix --- src/uncategorized/resEndowment.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/uncategorized/resEndowment.js b/src/uncategorized/resEndowment.js index d6f88098bbc..01c787c7dc6 100644 --- a/src/uncategorized/resEndowment.js +++ b/src/uncategorized/resEndowment.js @@ -55,11 +55,10 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { if (selectedSchool === "TFS") { r.push(`You receive a personal call from an older member of ${_SCH.title}. Like all of the Sisters, she's very beautiful, but you know how to judge age through the most cutting-edge treatments, and you guess she's in her early forties. That makes her one of the most senior Sisters, at the age when mandatory enslavement will happen very soon for her. She doesn't seem preoccupied by the prospect, though the pair of gorgeous young women cooperating to suck off her enormous cock may have something to do with that.`); if (V.PC.slaveSurname) { - r.push(`"`); if (V.PC.title) { - r.push(`Mr.`); + r.push(`"Mr.`); } else { - r.push(`Ms.`); + r.push(`"Ms.`); } r.push(`${V.PC.slaveSurname},"`); } else { -- GitLab From 76039a16616b9c4130004bbd19845a52954de80f Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 18:53:54 -0400 Subject: [PATCH 40/91] fixes --- src/uncategorized/resEndowment.js | 40 +++++++++++++++---------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/uncategorized/resEndowment.js b/src/uncategorized/resEndowment.js index 01c787c7dc6..b14b29807c9 100644 --- a/src/uncategorized/resEndowment.js +++ b/src/uncategorized/resEndowment.js @@ -50,10 +50,10 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { /** @type {FC.SlaveSchoolName} */ const selectedSchool = missingSchools.random(); /** @type {FC.SlaveSchool} */ - const _SCH = App.Data.misc.schools.get(selectedSchool); + const schoolData = App.Data.misc.schools.get(selectedSchool); if (selectedSchool === "TFS") { - r.push(`You receive a personal call from an older member of ${_SCH.title}. Like all of the Sisters, she's very beautiful, but you know how to judge age through the most cutting-edge treatments, and you guess she's in her early forties. That makes her one of the most senior Sisters, at the age when mandatory enslavement will happen very soon for her. She doesn't seem preoccupied by the prospect, though the pair of gorgeous young women cooperating to suck off her enormous cock may have something to do with that.`); + r.push(`You receive a personal call from an older member of ${schoolData.title}. Like all of the Sisters, she's very beautiful, but you know how to judge age through the most cutting-edge treatments, and you guess she's in her early forties. That makes her one of the most senior Sisters, at the age when mandatory enslavement will happen very soon for her. She doesn't seem preoccupied by the prospect, though the pair of gorgeous young women cooperating to suck off her enormous cock may have something to do with that.`); if (V.PC.slaveSurname) { if (V.PC.title) { r.push(`"Mr.`); @@ -75,11 +75,11 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { r = []; r.push(`Scarcely has the call ended than another comes in. It's another matron of the Futanari Sisters; she looks so much like her Sister that you are momentarily confused. "I know what my Sister said, and I know what she asked for," she purrs. She manipulates the video call controls, zooming the camera out. It reveals that she has her equally enormous cock in a much younger Sister's pussy; another attendant is lavishing oral attention on her testicles, which are comically big. "She's wrong. We are more beautiful with balls, and the bigger, the better." She shudders, pulling out to blow a gigantic load all over all three of them. Her erection does not waver for an instant as she transfers it to the other futa's anus. "We are sexually superior like this, too. Lust is better than love. Support me instead, I beg you."`); } else { - r.push(`You receive a personal call from a senior representative of ${_SCH.title}. It seems the ${_SCH.nickname} is raising funds, and since you've already`); + r.push(`You receive a personal call from a senior representative of ${schoolData.title}. It seems the ${schoolData.nickname} is raising funds, and since you've already`); if (V[selectedSchool].schoolPresent === 0) { - r.push(`purchased ${V[selectedSchool].studentsBought} of its ${_SCH.nickname}`); + r.push(`purchased ${V[selectedSchool].studentsBought} of its ${schoolData.nickname}`); } else { - r.push(`encouraged them to open a ${_SCH.branchName} in your arcology`); + r.push(`encouraged them to open a ${schoolData.branchName} in your arcology`); } r.push(`and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole.`); App.Events.addParagraph(node, r); @@ -112,7 +112,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { r.push(`provide good quality slaves at competitive prices."`); } - r.push(`Getting down to the business advantages, he adds that "donors receive considerable price advantage on future ${_SCH.slaveNoun}," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent.`); + r.push(`Getting down to the business advantages, he adds that "donors receive considerable price advantage on future ${schoolData.slaveNoun}," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent.`); } App.Events.addParagraph(node, r); @@ -221,7 +221,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function cure() { const frag = new DocumentFragment(); let r = []; - r.push(`You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving _SCH.nickname will probably leave testing programs at a unique level of vitality. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving ${schoolData.nickname} will probably leave testing programs at a unique level of vitality. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.GRI.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -232,7 +232,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function antishrink() { const frag = new DocumentFragment(); let r = []; - r.push(`You introduce your plans to the representative by forwarding the records of the GRI ${_SCH.nickname} you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You introduce your plans to the representative by forwarding the records of the GRI ${schoolData.nickname} you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.GRI.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -244,7 +244,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function loyalty() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname} on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname} on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.SCP.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -255,7 +255,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function skillsUp() { const frag = new DocumentFragment(); let r = []; - r.push(`You state general satisfaction with previous ${_SCH.nickname}, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You state general satisfaction with previous ${schoolData.nickname}, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.SCP.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -267,7 +267,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function infatuation() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.LDE.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -278,7 +278,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function shrinkageDown() { const frag = new DocumentFragment(); let r = []; - r.push(`You state general satisfaction with previous ${_SCH.nickname}, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You state general satisfaction with previous ${schoolData.nickname}, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.LDE.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -290,7 +290,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function TGALoyalty() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TGA.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -301,7 +301,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function combat() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy _SCH.nickname lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy ${schoolData.nickname} lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TGA.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -313,7 +313,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function higherEd() { const frag = new DocumentFragment(); let r = []; - r.push(`You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the ${_SCH.nickname} without negatively affecting their physical development. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the ${schoolData.nickname} without negatively affecting their physical development. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -324,7 +324,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function growStim() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname powerful colossi. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy ${schoolData.nickname} powerful colossi. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -335,7 +335,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function strongFat() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname strong yet graciously soft and feminine battlemaids. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy ${schoolData.nickname} strong yet graciously soft and feminine battlemaids. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 3; cashX(-50000, "capEx"); repX(7500, "event"); @@ -357,7 +357,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function heifers() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); V.TCR.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -369,7 +369,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function noSSkills() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.NUL.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -380,7 +380,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function sSkills() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${_SCH.nickname}, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.NUL.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); -- GitLab From c36762bdd60c07c710e2e08242528cbb43af9c77 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 19:37:59 -0400 Subject: [PATCH 41/91] class tweak --- src/uncategorized/resEndowment.js | 48 +++++++++++++++---------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/uncategorized/resEndowment.js b/src/uncategorized/resEndowment.js index b14b29807c9..4ef3f188358 100644 --- a/src/uncategorized/resEndowment.js +++ b/src/uncategorized/resEndowment.js @@ -165,7 +165,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function MILFTrain() { const frag = new DocumentFragment(); let r = []; - r.push(`You pause measuringly before forwarding facts and figures to the surprised representative. You matter-of-factly prove the school's shortsightedness in focusing on young slaves; it's a field with a lot of competition and brutal overhead. There's potential elsewhere: MILFs. They're never virgins and they go for lower prices, but their skills can be advanced without ruining them, and material costs are lower. After furious internal debate, the school agrees to your suggestion. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You pause measuringly before forwarding facts and figures to the surprised representative. You matter-of-factly prove the school's shortsightedness in focusing on young slaves; it's a field with a lot of competition and brutal overhead. There's potential elsewhere: MILFs. They're never virgins and they go for lower prices, but their skills can be advanced without ruining them, and material costs are lower. After furious internal debate, the school agrees to your suggestion. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TSS.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -176,7 +176,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function skillTrain() { const frag = new DocumentFragment(); let r = []; - r.push(`You and the representative discuss the school's focus on efficiency. You offer to endow a basic skill training program, and prove based on your own training methods that it won't unduly affect the low overhead and high volume the school relies on. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You and the representative discuss the school's focus on efficiency. You offer to endow a basic skill training program, and prove based on your own training methods that it won't unduly affect the low overhead and high volume the school relies on. The school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TSS.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -187,7 +187,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function generous() { const frag = new DocumentFragment(); let r = []; - r.push(`You make a generous contribution to the school. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You make a generous contribution to the school. It spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); cashX(-10000, "capEx"); repX(5000, "event"); App.Events.addParagraph(frag, r); @@ -198,7 +198,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function stricter() { const frag = new DocumentFragment(); let r = []; - r.push(`You express your interest in making the orphanage's admission criteria stricter. You want them to only teach the most beautiful and intelligent children, and focus all attention on raising these select few. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express your interest in making the orphanage's admission criteria stricter. You want them to only teach the most beautiful and intelligent children, and focus all attention on raising these select few. It spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TUO.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -209,7 +209,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function basic() { const frag = new DocumentFragment(); let r = []; - r.push(`You propose giving the children a theoretical sex education, claiming that without it, their education is incomplete. The representative considers it, and agrees that it would be beneficial. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You propose giving the children a theoretical sex education, claiming that without it, their education is incomplete. The representative considers it, and agrees that it would be beneficial. It spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TUO.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -221,7 +221,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function cure() { const frag = new DocumentFragment(); let r = []; - r.push(`You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving ${schoolData.nickname} will probably leave testing programs at a unique level of vitality. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving ${schoolData.nickname} will probably leave testing programs at a unique level of vitality. It spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.GRI.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -232,7 +232,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function antishrink() { const frag = new DocumentFragment(); let r = []; - r.push(`You introduce your plans to the representative by forwarding the records of the GRI ${schoolData.nickname} you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You introduce your plans to the representative by forwarding the records of the GRI ${schoolData.nickname} you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.GRI.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -244,7 +244,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function loyalty() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname} on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname} on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.SCP.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -255,7 +255,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function skillsUp() { const frag = new DocumentFragment(); let r = []; - r.push(`You state general satisfaction with previous ${schoolData.nickname}, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You state general satisfaction with previous ${schoolData.nickname}, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.SCP.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -267,7 +267,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function infatuation() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.LDE.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -278,7 +278,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function shrinkageDown() { const frag = new DocumentFragment(); let r = []; - r.push(`You state general satisfaction with previous ${schoolData.nickname}, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You state general satisfaction with previous ${schoolData.nickname}, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.LDE.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -290,7 +290,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function TGALoyalty() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TGA.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -301,7 +301,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function combat() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy ${schoolData.nickname} lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy ${schoolData.nickname} lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.TGA.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -313,7 +313,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function higherEd() { const frag = new DocumentFragment(); let r = []; - r.push(`You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the ${schoolData.nickname} without negatively affecting their physical development. The school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the ${schoolData.nickname} without negatively affecting their physical development. The school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -324,7 +324,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function growStim() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy ${schoolData.nickname} powerful colossi. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy ${schoolData.nickname} powerful colossi. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -335,7 +335,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function strongFat() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy ${schoolData.nickname} strong yet graciously soft and feminine battlemaids. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy ${schoolData.nickname} strong yet graciously soft and feminine battlemaids. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.HA.schoolUpgrade = 3; cashX(-50000, "capEx"); repX(7500, "event"); @@ -347,7 +347,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function bulls() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous cows, but point out that once they give birth, it's up to you to do all the work in keeping them lactating. It quickly dawns on the representative that purchasers may want to buy a bull to keep their herd naturally milky. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); + r.push(`You express general satisfaction with previous cows, but point out that once they give birth, it's up to you to do all the work in keeping them lactating. It quickly dawns on the representative that purchasers may want to buy a bull to keep their herd naturally milky. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); V.TCR.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -357,7 +357,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function heifers() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slave milking.`); V.TCR.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -369,7 +369,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function noSSkills() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.NUL.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -380,7 +380,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function sSkills() { const frag = new DocumentFragment(); let r = []; - r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads <span class="green">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); + r.push(`You express general satisfaction with previous ${schoolData.nickname}, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads <span class="reputation inc">word of your generosity,</span> using you as an example of investment in the future of slaveowning.`); V.NUL.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -395,7 +395,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { r.push(`You forward funds to the first matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you lovingly. She reports that the future of the Futanari Sisters is decided; every effort will be made to keep their balls as unobtrusive as possible. "The younger Sisters," she says approvingly, "seem more submissive and caring already." She has a pretty young futa in her lap, nibbling one of her elder's ears. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from an excess of concern for ejaculation, she will serve the rest of us as a cum producer. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of ejaculate. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase the size of her anal stimulation to counteract that."`); App.Events.addParagraph(node, r); r = []; - r.push(`The grateful Sisters spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); + r.push(`The grateful Sisters spread <span class="reputation inc">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); V.TFS.schoolUpgrade = 1; cashX(-50000, "capEx"); repX(7500, "event"); @@ -409,7 +409,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { r.push(`You forward funds to the second matron. There is no response for a long time. When one comes, it's from the matron you supported. She looks more confident, if possible, and thanks you flirtily. She reports that the future of the Futanari Sisters is decided; every effort will be made to grow their balls as big as possible. "The younger Sisters," she says approvingly, "seem hornier already." She has a pretty young futa in her lap, bouncing lustily on her elder's cock. "My opponent," the matron continues, "will not be available for enslavement, if you're wondering." She looks smug. "We have decided that since she suffers from a lack of concern for ejaculation, she will serve the rest of us as a milk cow. The way we have her restrained is similar to an industrial arcology dairy." She reaches offscreen, taking up a glass full of creamy milk. "This is hers," she says, and drains it. Mulling the taste, she looks thoughtful. "Hm," she says. "The taste isn't perfect, but if we improve that, it might reduce the volume. Though we could always increase her dosage of breast expansion drugs to counteract that."`); App.Events.addParagraph(node, r); r = []; - r.push(`The grateful Sisters spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); + r.push(`The grateful Sisters spread <span class="reputation inc">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); V.TFS.schoolUpgrade = 2; cashX(-50000, "capEx"); repX(7500, "event"); @@ -420,7 +420,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { function TFSGenerous() { const frag = new DocumentFragment(); let r = []; - r.push(`You donate funds to the Sisters with your compliments, ensuring that neither matron controls the contributed funds. They understand, and spread <span class="green">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); + r.push(`You donate funds to the Sisters with your compliments, ensuring that neither matron controls the contributed funds. They understand, and spread <span class="reputation inc">word of your generosity,</span> deflecting inquiries into their secretive world by praising you instead.`); cashX(-10000, "capEx"); repX(5000, "event"); App.Events.addParagraph(frag, r); @@ -439,7 +439,7 @@ App.Events.RESEndowment = class RESEndowment extends App.Events.BaseEvent { r.push(`"Well, you aren't the first one to think of that." the first matron reluctantly states. "You see, there's this outcast group of Sisters who would be perfect for this, it's just... We haven't seen eye to eye for a long time." The second chimes in: "You could talk her into it, she approves of your build far more than mine. Will probably take several months though, to move them all over and integrate all the new Sisters into our fold, and to enjoy the new pussies, of course." After a moment of consideration, the first agrees. You donate the funds to the Sisters with your compliments, ensuring that neither matron completely controls the vast sum. They both understand what they have to do now, starting immediately.`); App.Events.addParagraph(node, r); r = []; - r.push(`Days later, the grateful institution begins a mass marketing campaign all across the world's Free Cities, which includes adverts in FCNN, FCTV, and FC social media about the upcoming changes to their Sister inventory and their need for willing new blood and new specialists to help them bolster their ranks. You feature prominently in each and every promotional item as their foremost contributor. Thanks to this <span class="green">you will be a household name in the Free Cities for some time.</span> Such a public flex of your financial muscles has also made your relative power very clear to some in the New World, attracting important players who <span class="green">will start to show an interest</span> in doing business with you and your Free City.`); + r.push(`Days later, the grateful institution begins a mass marketing campaign all across the world's Free Cities, which includes adverts in FCNN, FCTV, and FC social media about the upcoming changes to their Sister inventory and their need for willing new blood and new specialists to help them bolster their ranks. You feature prominently in each and every promotional item as their foremost contributor. Thanks to this <span class="reputation inc">you will be a household name in the Free Cities for some time.</span> Such a public flex of your financial muscles has also made your relative power very clear to some in the New World, attracting important players who <span class="green">will start to show an interest</span> in doing business with you and your Free City.`); V.TFS.schoolUpgrade = 3; cashX(-250000, "capEx"); repX(10000, "event"); -- GitLab From 889b5a8ad9ba4e3d3d8e964d1de4edf477654d29 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 20:24:03 -0400 Subject: [PATCH 42/91] star --- src/events/RE/resFailure.js | 860 ++++++++++++++++++++++++++++++++ src/events/nonRandomEvent.js | 4 +- src/js/utilsArcology.js | 7 - src/uncategorized/resFailure.tw | 797 ----------------------------- 4 files changed, 861 insertions(+), 807 deletions(-) create mode 100644 src/events/RE/resFailure.js delete mode 100644 src/uncategorized/resFailure.tw diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js new file mode 100644 index 00000000000..a78e36cb4b1 --- /dev/null +++ b/src/events/RE/resFailure.js @@ -0,0 +1,860 @@ +App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => !!Array.from(App.Data.misc.schools.keys()).some(s => V[s].schoolPresent && V[s].schoolProsperity <= -10) + ]; + } + + actorPrerequisites() { + return []; + } + + execute(node) { + let r = []; + + V.nextButton = "Continue"; + V.nextLink = "Scheduled Event"; + + const failedSchool = Array.from(App.Data.misc.schools.keys()).find(s => V[s].schoolPresent && V[s].schoolProsperity <= -10); + const _SCH = App.Data.misc.schools.get(failedSchool); + + repX(-200, "event"); + V.arcologies[0].prosperity -= 2; + const _slavesToAdd = 5; + V[failedSchool].schoolPresent = 0; + V[failedSchool].subsidize = 0; + V[failedSchool].schoolProsperity = 0; + V[failedSchool].schoolAnnexed = 1; + /** @type {App.Entity.SlaveState<>} */ + const slaveArray = []; + if (failedSchool === "TSS") { + for (let _i = 0; _i < _slavesToAdd-1; _i++) { + const _slave = GenerateNewSlave("XX", {ageOverridesPedoMode: 1}); + _slave.career = "a slave"; + _slave.butt = either(1, 2, 2, 3); + _slave.boobs = either(200, 300, 300, 400); + if (V.TSS.schoolUpgrade === 1) { + _slave.origin = "${He} was given to you by a failed branch campus of the Slavegirl School after ${he} was retrained as a slave ${girl}."; + _slave.butt++; + _slave.boobs += 200; + } else { + _slave.origin = "${He} was given to you by a failed branch campus of the Slavegirl School right after ${his} majority."; + } + _slave.actualAge = (V.TSS.schoolUpgrade === 1 ? random(36, 42) : 18); + _slave.anus = (V.TSS.schoolUpgrade === 1 ? 1 : 0); + _slave.vagina = (V.TSS.schoolUpgrade === 1 ? 1 : 0); + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.intelligenceImplant = 15; + _slave.teeth = "normal"; + _slave.intelligence = random(-50, 95); + _slave.devotion = random(25, 45); + _slave.trust = random(25, 45); + setHealth(_slave, jsRandom(50, 60), 0, 0, 0); + _slave.preg = 0; + _slave.weight = 0; + _slave.chem = 20; + _slave.skill.vaginal = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + _slave.skill.oral = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + _slave.skill.anal = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + _slave.skill.whoring = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + _slave.skill.entertainment = 15; + _slave.skill.combat = 0; + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + _slave.sexualFlaw = either("none"); + _slave.behavioralFlaw = either("none"); + _slave.hStyle = "tails"; + _slave.custom.tattoo = "${He} has the simple logo of the corporation that operates the Slavegirl School tattooed on ${his} left cheek."; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "TUO") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave(null, {minAge: V.minimumSlaveAge, maxAge: V.fertilityAge, disableDisability: 1}); + _slave.origin = "${He} was given to you by a failed branch of The Utopian Orphanage right after ${his} graduation."; + _slave.career = "a slave"; + setHealth(_slave, jsRandom(60, 80), 0, 0, 0); + _slave.devotion = random(50, 75); + _slave.trust = random(50, 75); + _slave.face = (V.TUO.schoolUpgrade === 1 ? random(30, 100) : random(10, 65)); + _slave.intelligence = (V.TUO.schoolUpgrade === 1 ? random(55, 100) : random(35, 75)); + _slave.intelligenceImplant = (V.TUO.schoolUpgrade === 1 ? 30 : 15); + _slave.accent = (V.TUO.schoolUpgrade === 1 ? 1 : either(0, 1)); + _slave.skill.entertainment = (V.TUO.schoolUpgrade === 1 ? 75 : 45); + _slave.skill.combat = (V.TUO.schoolUpgrade === 1 ? 1 : 0); + _slave.skill.vaginal = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.oral = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.anal = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.whoring = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + _slave.energy = (V.TUO.schoolUpgrade === 2 ? random(40, 95) : random(15, 65)); + _slave.faceImplant = 0; + _slave.weight = random(-17, 17); + _slave.muscles = random(0, 20); + _slave.lips = random(10, 40); + _slave.lipsImplant = 0; + _slave.boobs = 50; + _slave.boobsImplant = 0; + _slave.butt = random(0, 2); + _slave.buttImplant = 0; + _slave.vagina = 0; + _slave.anus = 0; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "TCR") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave("XX", { + minAge: V.fertilityAge+6, maxAge: 32, disableDisability: 1, ageOverridesPedoMode: 1 + }); + _slave.slaveName = setup.cowSlaveNames.random(); + _slave.slaveSurname = 0; + _slave.career = "a dairy cow"; + _slave.butt = either(5, 6, 6, 7, 7, 8, 9); + _slave.boobs = 30000; + _slave.lactation = 1; + _slave.lactationDuration = 2; + _slave.lactationAdaptation = 100; + _slave.origin = "${He} is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch."; + _slave.anus = 1; + _slave.vagina = 5; + _slave.vaginaLube = 2; + _slave.intelligence = either(-100, -100, -100, -96, -80, -70, -50); + _slave.devotion = 100; + _slave.trust = 100; + setHealth(_slave, jsRandom(50, 60), 0, 0, 0); + _slave.preg = random(30, 39); + _slave.pregType = random(3, 6); + _slave.pregKnown = 1; + _slave.pregWeek = _slave.preg; + SetBellySize(_slave); + _slave.bellySag = 10; + _slave.bellySagPreg = 10; + _slave.hips = either(2, 2, 2, 2, 3); + _slave.counter.birthsTotal = random(10, 15); + _slave.geneticQuirks.hyperFertility = 2; + _slave.weight = random(60, 160); + _slave.muscles = random(60, 80); + _slave.chem = 10; + _slave.skill.vaginal = 0; + _slave.skill.oral = 0; + _slave.skill.anal = 0; + _slave.skill.whoring = 0; + _slave.skill.entertainment = 0; + _slave.skill.combat = 0; + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + _slave.heels = 1; + _slave.fetish = "mindbroken"; + _slave.fetishStrength = 10; + _slave.fetishKnown = 1; + _slave.sexualFlaw = either("none"); + _slave.behavioralFlaw = either("none"); + _slave.sexualQuirk = either("none"); + _slave.behavioralQuirk = either("none"); + _slave.hStyle = "neat"; + _slave.collar = "leather with cowbell"; + _slave.brand["right thigh"] = "the logo of the Cattle Ranch"; + _slave.boobsTat = "bovine patterns"; + _slave.buttTat = "bovine patterns"; + _slave.vaginaTat = "bovine patterns"; + _slave.lipsTat = "bovine patterns"; + _slave.anusTat = "bovine patterns"; + _slave.shouldersTat = "bovine patterns"; + _slave.backTat = "bovine patterns"; + _slave.armsTat = "bovine patterns"; + _slave.legsTat = "bovine patterns"; + _slave.stampTat = "bovine patterns"; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "GRI") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave("XX", {disableDisability: 1}); + _slave.origin = "${He} was given to you by a failed subsidiary lab of the Growth Research Institute right after ${his} use as a test subject ended."; + _slave.career = "a slave"; + _slave.intelligenceImplant = 0; + _slave.devotion = random(-15, -5); + _slave.trust = random(-25, -45); + _slave.chem = 100; + if (V.GRI.schoolUpgrade === 1) { + setHealth(_slave, 200, 0, 0, 0); + } else { + setHealth(_slave, jsRandom(-70, 100), 0); + } + _slave.height = random(150, 190); + _slave.butt = random(4, 10); + _slave.boobs = 200 * (V.GRI.schoolUpgrade === 2 ? random(15, 30) : random(4, 20)); + if (V.GRI.schoolUpgrade === 2) { + _slave.lactation = _slave.lactationDuration = 2; + } + _slave.nipples = either("huge", "inverted"); + _slave.areolae = either(0, 1, 2, 3, 4); + _slave.clit = either(0, 1, 2, 3); + _slave.lips = random(5, 85); + _slave.anus = 0; + _slave.vagina = 0; + _slave.preg = 0; + _slave.weight = 0; + _slave.skill.vaginal = 0; + _slave.skill.oral = 0; + _slave.skill.anal = 0; + _slave.skill.whoring = 0; + _slave.skill.entertainment = 0; + _slave.skill.combat = 0; + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + _slave.actualAge = 19; + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.behavioralFlaw = either("odd"); + _slave.hStyle = "shaved"; + _slave.hLength = 0; + _slave.custom.tattoo = "${He} has a barcode that identified ${him} when ${he} was a test subject at the Growth Research Institute tattooed on ${his} left cheek."; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "SCP") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave("XX", {disableDisability: 1}); + _slave.origin = "${He} was given to you by a failed branch campus of St. Claver Preparatory after ${he} served as a plastic surgeon's passing final exam."; + _slave.chem = 20; + _slave.career = "a slave"; + _slave.intelligenceImplant = (V.SCP.schoolUpgrade === 1 ? 0 : 15); + _slave.intelligence = (V.SCP.schoolUpgrade === 1 ? -70 : random(-50, 50)); + _slave.devotion = _slave.trust = (V.SCP.schoolUpgrade === 1 ? 20 : random(25, 45)); + if (V.SCP.schoolUpgrade !== 1) { + _slave.teeth = "normal"; + } + setHealth(_slave, 100, 0, 0, 0); + _slave.heightImplant = 1; + _slave.height += 10; + _slave.buttImplant = (4-_slave.butt); + _slave.butt += _slave.buttImplant; + _slave.boobsImplantType = "normal"; + _slave.boobsImplant = (2000-_slave.boobs); + _slave.boobs += _slave.boobsImplant; + _slave.boobsImplantType = "fillable"; + _slave.nipples = "tiny"; + _slave.areolae = 0; + _slave.clit = 0; + _slave.lipsImplant = (75-_slave.lips); + _slave.lips += _slave.lipsImplant; + _slave.faceImplant = 35; + _slave.face = random(35, 80); + _slave.anus = 0; + _slave.vagina = 0; + _slave.preg = 0; + _slave.weight = -20; + _slave.skill.vaginal = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.oral = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.anal = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.whoring = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.entertainment = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + _slave.skill.combat = 0; + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + _slave.actualAge = 19; + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.sexualFlaw = either("none"); + _slave.behavioralFlaw = either("none"); + _slave.hStyle = "tails"; + _slave.hColor = "blonde"; + _slave.pubicHColor = "blonde"; + _slave.underArmHColor = "blonde"; + _slave.race = "white"; + _slave.skin = "sun tanned"; + _slave.override_H_Color = 1; + _slave.override_Arm_H_Color = 1; + _slave.override_Pubic_H_Color = 1; + _slave.override_Race = 1; + _slave.override_Skin = 1; + _slave.custom.tattoo = "${He} has the coat of arms of St. Claver Preparatory tattooed on ${his} left cheek."; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "LDE") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave("XY", {disableDisability: 1}); + _slave.origin = "${He} was given to you by a failed branch campus of the innovative École des Enculées right after ${his} graduation."; + _slave.career = "a slave"; + _slave.intelligenceImplant = 0; + _slave.chem = 100; + _slave.devotion = (V.LDE.schoolUpgrade === 1 ? 20 : random(60, 70)); + _slave.trust = (V.LDE.schoolUpgrade === 1 ? 20 : random(55, 60)); + setHealth(_slave, jsRandom(60, 80), 0, 0, 0); + _slave.muscles = 0; + if (random(1, 100) > 75) { + _slave.geneticQuirks.rearLipedema = 2; + _slave.butt = random(6, 16); + } else { + _slave.butt = random(4, 5); + } + _slave.face = random(20, 60); + _slave.boobs = either(500, 650, 800); + _slave.waist = -15; + _slave.lips = 35; + _slave.balls = (V.LDE.schoolUpgrade === 2 ? either(3, 4) : either(1, 1, 1, 2)); + _slave.dick = (V.LDE.schoolUpgrade === 2 ? either(3, 4) : either(1, 1, 1, 2)); + if (_slave.foreskin > 0) { + _slave.foreskin = _slave.dick; + } + if (_slave.balls > 0) { + _slave.scrotum = _slave.balls; + } + _slave.anus = 2; + _slave.vagina = -1; + _slave.preg = 0; + _slave.weight = random(0, 20); + _slave.skill.vaginal = 0; + _slave.skill.oral = 15; + _slave.skill.anal = 100; + _slave.skill.whoring = 15; + _slave.skill.entertainment = 15; + _slave.skill.combat = 0; + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + _slave.actualAge = 19; + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.sexualFlaw = "none"; + _slave.behavioralFlaw = either("none", "odd"); + _slave.fetishStrength = either(1, 2); + _slave.fetish = "buttslut"; + _slave.fetishKnown = 1; + _slave.attrKnown = 1; + _slave.hStyle = "tails"; + _slave.hLength = 100; + _slave.custom.tattoo = "${He} has the buttock-shaped symbol of the École des Enculées that created ${his} tattooed on ${his} left cheek."; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "NUL") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave(null, {minAge: 16, maxAge: 24, disableDisability: 1}); + _slave.origin = "${He} was given to you by a failed branch campus of Nueva Universidad de Libertad right after ${his} graduation."; + _slave.career = "a slave"; + setHealth(_slave, jsRandom(60, 80), 0, 0, 0); + _slave.devotion = random(60, 75); + _slave.trust = random(60, 75); + _slave.intelligenceImplant = 30; + _slave.intelligence = (V.NUL.schoolUpgrade === 1 ? random(50, 70) : random(20, 50)); + _slave.skill.whoring = (V.NUL.schoolUpgrade === 1 ? random(70, 80) : random(40, 50)); + _slave.skill.entertainment = (V.NUL.schoolUpgrade === 1 ? random(70, 80) : random(40, 50)); + _slave.skill.anal = (V.NUL.schoolUpgrade === 2 ? random(60, 80) : random(10, 30)); + _slave.skill.oral = (V.NUL.schoolUpgrade === 2 ? random(70, 90) : random(20, 40)); + _slave.anus = (V.NUL.schoolUpgrade === 2 ? random(1, 3) : either(0, 0, 0, 0, 1, 1, 1)); + _slave.muscles = 0; + _slave.face = random(15, 55); + _slave.faceShape = "androgynous"; + _slave.boobs = 50; + _slave.butt = 0; + _slave.vagina = -1; + _slave.clit = 0; + _slave.dick = 0; + _slave.balls = 0; + _slave.preg = 0; + _slave.eyebrowHStyle = "bald"; + _slave.underArmHStyle = "bald"; + _slave.pubicHStyle = "bald"; + _slave.hStyle = "bald"; + _slave.custom.tattoo = "${He} has the abstract symbol of Nueva Universidad de Libertad tattooed on ${his} left shoulder."; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "TGA") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave("XY", {disableDisability: 1}); + _slave.origin = "${He} was given to you by a failed branch campus of the intense Gymnasium-Academy right after ${his} majority."; + _slave.career = "a slave"; + _slave.intelligenceImplant = 15; + _slave.teeth = "normal"; + _slave.intelligence = random(-50, 95); + _slave.chem = 20; + _slave.devotion = (V.TGA.schoolUpgrade === 1 ? 20 : random(25, 45)); + _slave.trust = (V.TGA.schoolUpgrade === 1 ? 20 : random(25, 45)); + setHealth(_slave, 100, 0, 0, 0); + _slave.muscles = either(20, 50, 50); + _slave.butt = either(2, 2, 3); + _slave.boobs = either(100, 200); + _slave.dick = random(3, 5); + if (_slave.foreskin > 0) { + _slave.foreskin = _slave.dick; + } + if (_slave.balls > 0) { + _slave.scrotum = _slave.balls; + } + _slave.balls = random(3, 5); + _slave.anus = 0; + _slave.vagina = -1; + _slave.preg = 0; + _slave.weight = 0; + _slave.skill.vaginal = 0; + _slave.skill.oral = 0; + _slave.skill.anal = 0; + _slave.skill.whoring = 0; + _slave.skill.entertainment = 0; + _slave.skill.combat = (V.TGA.schoolUpgrade === 2 ? 1 : 0); + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + _slave.actualAge = 18; + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.sexualFlaw = either("apathetic", "none"); + _slave.behavioralFlaw = either("arrogant", "none", "odd"); + _slave.hStyle = "short"; + _slave.hLength = 2; + _slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained ${him}"; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "HA") { + for (let _i = 0; _i < _slavesToAdd; _i++) { + const _slave = GenerateNewSlave("XX", {disableDisability: 1}); + _slave.origin = "${He} was given to you by a failed branch campus of the Hippolyta Academy right after ${his} majority."; + _slave.career = "a slave"; + _slave.intelligenceImplant = 15; + _slave.teeth = "normal"; + _slave.intelligence = random(0, 95); + _slave.chem = 20; + _slave.devotion = (V.HA.schoolUpgrade === 1 ? 20 : random(25, 45)); + _slave.trust = (V.HA.schoolUpgrade === 1 ? 20 : random(25, 45)); + _slave.faceShape = either("cute", "normal"); + _slave.face = either(20, 20, 35, 35, 35, 50, 75, 100); + _slave.lips = either(0, 10, 25); + _slave.weight = -10; + setHealth(_slave, jsRandom(80, 100), 0, 0, 0); + _slave.actualAge = 18; + _slave.physicalAge = _slave.actualAge; + _slave.visualAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.hips = 0; + _slave.vagina = random(0, 1); + _slave.anus = random(0, 1); + _slave.butt = random(2, 4); + _slave.boobs = (random(30, 60) * 10); + _slave.preg = 0; + SetBellySize(_slave); + setHealth(_slave, jsRandom(60, 80), 0, 0, 0); + _slave.muscles = random(40, 60); + const _minHeight = random(170, 180); + _slave.height = Math.trunc(Math.clamp(Height.random(_slave, {limitMult: [2, 15], spread: .1}), _minHeight, 274)); + _slave.waist = -15; + _slave.shoulders = 0; + _slave.skill.vaginal = 10; + _slave.skill.oral = 10; + _slave.skill.anal = 10; + _slave.skill.whoring = 10; + _slave.skill.entertainment = either(10, 10, 30); + _slave.skill.combat = 1; + _slave.sexualFlaw = either("apathetic", "judgemental", "none", "none"); + _slave.behavioralFlaw = either("arrogant", "none"); + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + _slave.hStyle = either("braided", "bun", "neat", "ponytail", "tails"); + _slave.hLength = random(5, 50); + _slave.custom.tattoo = "${He} has the sword and eagle symbol of the Hippolyta Academy tattooed on ${his} left shoulder."; + newSlave(_slave);// skip New Slave Intro + } + } else if (failedSchool === "TFS") { + for (let _i = 0; _i < _slavesToAdd-1; _i++) { + const _slaveGenRange = random(1, 4); + let _slave; + if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { + _slave = GenerateNewSlave(null, {disableDisability: 1}); + } else { + _slave = GenerateNewSlave("XY", {disableDisability: 1}); + } + _slave.origin = "${He} was a Futanari Sister until you engineered ${his} early enslavement."; + _slave.career = "a Futanari Sister"; + _slave.faceShape = either("exotic", "sensual"); + if (_slaveGenRange === 1) { + _slave.intelligence = random(-50, -20); + _slave.chem = 150; + _slave.butt = either(5, 6); + _slave.hips = 1; + _slave.face = either(35, 35, 35, 75, 100); + _slave.boobs = 100*random(12, 20); + _slave.dick = random(2, 3); + if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { + if (_slave.genes === "XY") { + _slave.balls = _slave.scrotum = random(8, 9); + } else { + _slave.balls = 1; + _slave.scrotum = 0; + } + } else if (V.TFS.schoolUpgrade === 1) { + _slave.balls = 1; + _slave.scrotum = 0; + } else if (V.TFS.schoolUpgrade === 2) { + _slave.balls = _slave.scrotum = random(8, 9); + } else { + _slave.balls = _slave.scrotum = random(2, 3); + } + _slave.lips = 0; + _slave.weight = 0; + _slave.actualAge = random(25, 29); + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.vagina = 2; + _slave.anus = 2; + _slave.fetish = "submissive"; + } else if (_slaveGenRange === 2) { + _slave.intelligence = random(-15, 15); + _slave.chem = 200; + _slave.butt = either(6, 7); + _slave.hips = 2; + _slave.face = either(35, 35, 75, 75, 100); + _slave.boobs = 100*random(20, 32); + _slave.dick = random(3, 4); + if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { + if (_slave.genes === "XY") { + _slave.balls = _slave.scrotum = random(9, 10); + } else { + _slave.balls = 1; + _slave.scrotum = 0; + } + } else if (V.TFS.schoolUpgrade === 1) { + _slave.balls = 1; + _slave.scrotum = 0; + } else { + _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(9, 10) : random(3, 4)); + } + _slave.lips = random(15, 25); + _slave.weight = 20; + _slave.actualAge = random(30, 34); + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.vagina = 2; + _slave.anus = 2; + _slave.fetish = either("buttslut", "cumslut"); + } else if (_slaveGenRange === 3) { + _slave.intelligence = random(16, 50); + _slave.chem = 250; + _slave.butt = either(7, 8); + _slave.hips = 2; + _slave.face = either(35, 75, 75, 100, 100); + _slave.boobs = 100*random(32, 42); + _slave.dick = random(4, 5); + if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { + if (_slave.genes === "XY") { + _slave.balls = _slave.scrotum = random(6, 7); + } else { + _slave.balls = 1; + _slave.scrotum = 0; + } + } else if (V.TFS.schoolUpgrade === 1) { + _slave.balls = 1; + _slave.scrotum = 0; + } else { + _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(6, 7) : random(4, 5)); + } + _slave.lips = random(25, 55); + _slave.weight = 20; + _slave.actualAge = random(35, 39); + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.vagina = 3; + _slave.anus = 3; + _slave.fetish = either("buttslut", "cumslut"); + } else { + _slave.intelligence = random(51, 95); + _slave.chem = 300; + _slave.butt = either(8, 9); + _slave.hips = 2; + _slave.face = either(35, 75, 100, 100, 100); + _slave.boobs = 100*random(44, 60); + _slave.dick = random(5, 6); + _slave.geneticQuirks.wellHung = 2; + if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { + if (_slave.genes === "XY") { + _slave.balls = random(7, 8); + _slave.scrotum = _slave.balls; + } else { + _slave.balls = 1; + _slave.scrotum = 0; + } + } else if (V.TFS.schoolUpgrade === 1) { + _slave.balls = 1; + _slave.scrotum = 0; + } else { + _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(7, 8) : random(5, 6)); + } + _slave.lips = random(25, 55); + _slave.weight = 50; + _slave.actualAge = random(40, 42); + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.vagina = 3; + _slave.anus = 3; + _slave.fetish = "dom"; + } + if (_slave.foreskin > 0) { + r.push(` `); + _slave.foreskin = _slave.dick; + r.push(` `); + } + _slave.preg = -3; + if (V.TFS.farmUpgrade > 0) { + _slave.ovaries = 1; + if (V.TFS.farmUpgrade >= 2) { + _slave.preg = random(1, 41); + if (V.TFS.farmUpgrade === 3) { + _slave.pregType = random(10, 30); + _slave.pregAdaptation = 300; + } else { + _slave.pregType = 1; + } + _slave.pregSource = -9; + _slave.pregKnown = 1; + _slave.pregWeek = _slave.preg; + SetBellySize(_slave); + } + } + _slave.intelligenceImplant = 30; + _slave.teeth = "normal"; + _slave.energy = (V.TFS.schoolUpgrade === 2 ? 100 : _slave.physicalAge + random(20, 30)); + _slave.devotion = random(30, 35); + _slave.trust = random(-15, -5); + setHealth(_slave, jsRandom(60, 80), 0, 0, 0); + _slave.muscles = 20; + _slave.waist = -15; + if (_slave.genes === "XY") { + _slave.shoulders = 1; + } + _slave.skill.vaginal = 100; + _slave.skill.oral = 100; + _slave.skill.anal = 100; + _slave.skill.whoring = 15; + _slave.skill.entertainment = 100; + _slave.skill.combat = 0; + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + if (V.TFS.schoolUpgrade === 1) { + _slave.sexualQuirk = "caring"; + } + _slave.sexualFlaw = either("hates women", "none"); + _slave.behavioralFlaw = either("arrogant", "none"); + _slave.fetishStrength = 100; + _slave.fetishKnown = 0; + _slave.attrKnown = 0; + _slave.hStyle = "neat"; + _slave.hLength = 150; + _slave.custom.tattoo = "${He} has a simple pink heart tattooed on ${his} right temple."; + V.REFutaSisterCheckinIDs.push(_slave.ID); + newSlave(_slave);// skip New Slave Intro + } + const _slave = GenerateNewSlave("XY", {disableDisability: 1}); + _slave.origin = "${He} was the leader of your arcology's Futanari Sisters until you engineered ${his} community's failure and enslavement."; + _slave.career = "a Futanari Sister"; + _slave.intelligence = random(51, 95); + _slave.chem = 300; + _slave.butt = either(8, 9); + _slave.hips = 2; + _slave.face = 100; + _slave.boobs = 100*random(44, 60); + _slave.dick = random(5, 6); + if (_slave.foreskin > 0) { + _slave.foreskin = _slave.dick; + } + if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { + _slave.balls = _slave.scrotum = 10; + } else { + _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 1 ? 1 :10); + _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 1 ? 0 : random(5, 6)); + } + _slave.lips = random(25, 55); + _slave.weight = 50; + _slave.actualAge = random(40, 42); + _slave.visualAge = _slave.actualAge; + _slave.physicalAge = _slave.actualAge; + _slave.ovaryAge = _slave.actualAge; + _slave.vagina = 3; + _slave.anus = 3; + _slave.fetish = "dom"; + _slave.preg = -3; + if (V.TFS.farmUpgrade > 0) { + _slave.ovaries = 1; + if (V.TFS.farmUpgrade >= 2) { + _slave.preg = random(1, 41); + if (V.TFS.farmUpgrade === 3) { + _slave.pregType = random(20, 40); + _slave.pregAdaptation = 500; + } else { + _slave.pregType = 1; + } + _slave.pregKnown = 1; + _slave.pregWeek = _slave.preg; + SetBellySize(_slave); + } + } + _slave.intelligenceImplant = 30; + _slave.teeth = "normal"; + _slave.energy = (V.TFS.schoolUpgrade === 2 ? 100 : _slave.physicalAge + random(20, 30)); + _slave.devotion = random(25, 30); + _slave.trust = random(10, 15); + setHealth(_slave, jsRandom(60, 80), 0, 0, 0); + _slave.muscles = 20; + _slave.waist = -15; + _slave.shoulders = 1; + _slave.skill.vaginal = 100; + _slave.skill.oral = 100; + _slave.skill.anal = 100; + _slave.skill.whoring = 15; + _slave.skill.entertainment = 100; + _slave.skill.combat = 0; + _slave.pubicHStyle = "waxed"; + _slave.underArmHStyle = "waxed"; + if (V.TFS.schoolUpgrade === 1) { + _slave.sexualQuirk = "caring"; + } + _slave.sexualFlaw = either("hates women", "none"); + _slave.behavioralFlaw = either("arrogant", "none"); + _slave.fetishStrength = 100; + _slave.fetishKnown = 0; + _slave.attrKnown = 0; + _slave.hStyle = "neat"; + _slave.hLength = 150; + _slave.custom.tattoo = "${He} has a simple pink heart tattooed on ${his} right temple."; + newSlave(_slave);// skip New Slave Intro + } else { + r.push(`Error: school "${failedSchool}" not found.`); + } + + const { + He, His, + he, his, him, himself, girl + } =getPronouns(slaveArray[0]); + const _he = (failedSchool !== "NUL" ? "he" : "they"); + const _He = capFirstChar(_he); + const {title: Master} = getEnunciation(slaveArray[0]); + + if (failedSchool === "TFS") { + r.push(`The senior Sister of the community of Futanari Sisters in your arcology appears at your penthouse, as you've been expecting since their second missed rent payment. This is quite the occasion, since they never leave their little nest. ${He}'s delightfully nude, and it occurs to you that the Sisters probably do not own clothing at all. ${He} has obviously been crying; puffy eyes and a sniffling nose mar ${his} gorgeous face. ${He} must have caused quite the sensation as ${he} made ${his} way here, in tears, gigantic tits and huge cock bouncing around. To your surprise, ${he} flings ${himself} at your feet, ${his} dick making a painful-sounding slap against the floor and ${his} breasts squashing out to either side of ${him}.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`"Please," ${he} cries to your feet. "Please take us as slaves. We're indebted, and we'll all be enslaved. You're our friend, you'll treat us better than anyone." Then ${he} whispers, "Please, `); + if (V.PC.slaveSurname) { + if (V.PC.title) { + r.push(`Mr.`); + } else { + r.push(`Ms.`); + } + r.push(`${V.PC.slaveSurname},`); + } else { + r.push(`${V.PC.slaveName},`); + } + r.push(` don't make me beg." You tell the prostrate futa you accept. ${His} mood does not improve: ${he} scrabbles around to face away from you, plush body jiggling submissively, and raises ${his} buttocks to spread ${his} pussy and anus for you. "Thank you," ${he} weeps. "Now please rape me, ${Master}. I deserve it. My mismanagement stole my Sisters' years of idyll from them. Please, rape me."`); + App.Events.addParagraph(node, r); + r = []; + } else { + r.push(`You receive a personal call from a senior representative of ${_SCH.title} as you've been expecting since their second missed rent payment. "I apologize," _he says with some embarrassment, "but it seems our expansion into your arcology was a mistake. It's strange — the business climate seemed excellent, and other corporations are doing well."`); + r.push(`${_He} sighs "Nevertheless, nothing ever seemed to go as planned. We'll be shutting our ${_SCH.branchName} down immediately. In fact, it should be shut down within the hour.`); + if (failedSchool === "TCR") { + r.push(`However, we lack the funds to remove some of our finest ${_SCH.slaveNoun} and since we still owe you a little... We'd like to you to have them; we'll even have them delivered to your penthouse with the last of our credits."`); + } else { + r.push(`I regret to add," ${_he} says nervously, "that we're experiencing continued difficulty finding the liquidity to pay what we owe you.`); + if (failedSchool === "GRI") { + r.push(`The lab we're closing has five solid ${_SCH.slaveNoun}.`); + } else { + r.push(`The branch campus we're closing has five recent ${_SCH.slaveNoun}.`); + } + r.push(`We'd like to transfer them to you in lieu of payment."`); + r.push(`${_He} hurriedly end the call.`); + } + App.Events.addParagraph(node, r); + r = []; + } + + r.push(`The failure of a prominent organization within your arcology has <span class="red">affected your reputation</span> and <span class="red">your arcology's prosperity</span> slightly, but you've come out a long way ahead. You've acquired excellent slaves for a pitiful fraction of their fair price.`); + App.Events.addParagraph(node, r); + + // <span id="result"> + if (failedSchool === "TFS") { + // <<link "Rape ${him}">> + // <<replace "#result">> + for (const _slave of V.slaves) { + if (_slave.origin === "${He} was the leader of your arcology's Futanari Sisters until you engineered ${his} community's failure and enslavement.") { + _slave.devotion += 10; + actX(_slave, "anal"); + actX(_slave, "vaginal"); + } + } + r.push(`You `); + if (V.PC.dick !== 0) { + r.push(`whip out your dick`); + } else { + r.push(`pull on a strap-on, the one you use for disobedient slaves,`); + } + r.push(` and kneel down behind the sobbing futa matron. When ${he} feels it touching ${his} pussylips, ${he} whispers "Thank you, ${Master}," through ${his} tears. ${He}'s very, very sexually experienced, so it's harder to make ${him} feel it than it would be for a ${girl} with tighter holes. But you're an expert. You calibrate your pounding to pull just barely too far out, so that ${he} feels you ramming mercilessly into ${him} with each stroke, and so that the slightest mistake from ${him} sends `); + if (V.PC.dick !== 0) { + r.push(`your cock`); + } else { + r.push(`the phallus`); + } + r.push(` right up the other hole. Despite ${his} anguish and the brutal fuck, or perhaps because of them, ${he} slowly manages to get hard, and orgasms painfully when you do. ${He} <span class="hotpink">can't seem to stop thanking you,</span> but is quiet when you tell ${him} to be.`); + // <</replace>> + // <</link>> + // <br> + } + // <<link "Sell your prizes immediately">> + // <<replace "#result">> + if (failedSchool === "TSS") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the Slavegirl School right after ${his} majority." || s.origin === "${He} was given to you by a failed branch campus of the Slavegirl School after ${he} was retrained as a slave ${girl}.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "TUO") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch of The Utopian Orphanage right after ${his} graduation.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "TCR") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "GRI") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed subsidiary lab of the Growth Research Institute right after ${his} use as a test subject ended.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "SCP") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of St. Claver Preparatory after ${he} served as a plastic surgeon's passing final exam.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "LDE") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the innovative École des Enculées right after ${his} graduation.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "NUL") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of Nueva Universidad de Libertad right after ${his} graduation.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "TGA") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the intense Gymnasium-Academy right after ${his} majority.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "HA") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the Hippolyta Academy right after ${his} majority.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } else if (failedSchool === "TFS") { + for (const _slave of V.slaves.filter(s => s.origin === "${He} was the leader of your arcology's Futanari Sisters until you engineered ${his} community's failure and enslavement." || s.origin === "${He} was a Futanari Sister until you engineered ${his} early enslavement.")) { + cashX(slaveCost(_slave), "slaveTransfer"); + removeSlave(_slave); + } + } + r.push(`Prizes sold.`); + // <</replace>> + // <</link>> + // </span> + } +}; diff --git a/src/events/nonRandomEvent.js b/src/events/nonRandomEvent.js index ae60cccd6d6..03f7cfe0b96 100644 --- a/src/events/nonRandomEvent.js +++ b/src/events/nonRandomEvent.js @@ -71,9 +71,7 @@ App.Events.getNonrandomEvents = function() { () => V.bioreactorPerfectedID !== 0, () => (V.bioreactorsAnnounced !== 1) ], "P bioreactor perfected"), - new App.Events.TwineEvent().wrapPassage([ - () => !!App.Utils.schoolFailure() - ], "RES Failure"), + new App.Events.RESFailure(), new App.Events.TwineEvent().wrapPassage([ () => V.TFS.schoolPresent === 1, () => V.organFarmUpgrade !== 0, diff --git a/src/js/utilsArcology.js b/src/js/utilsArcology.js index d55caf049e6..d224befe09c 100644 --- a/src/js/utilsArcology.js +++ b/src/js/utilsArcology.js @@ -39,13 +39,6 @@ App.Utils.schoolCounter = function() { return Array.from(App.Data.misc.schools.keys()).filter(s => V[s].schoolPresent).length; }; -/** - * @returns {string} - */ -App.Utils.schoolFailure = function() { - return Array.from(App.Data.misc.schools.keys()).find(s => V[s].schoolPresent && V[s].schoolProsperity <= -10); -}; - /** * @typedef {Object} menialObject * @property {string} text diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw deleted file mode 100644 index 5929c62df5c..00000000000 --- a/src/uncategorized/resFailure.tw +++ /dev/null @@ -1,797 +0,0 @@ -:: RES Failure [nobr] - -<<set $nextButton = "Continue", $nextLink = "Scheduled Event", $returnTo = "Scheduled Event">> - -<<set $RESFailure = App.Utils.schoolFailure()>> -<<set _SCH = App.Data.misc.schools.get($RESFailure)>> - -<<run repX(-200, "event")>> -<<set $arcologies[0].prosperity -= 2>> -<<set _slavesToAdd = 5>> -<<set V[$RESFailure].schoolPresent = 0>> -<<set V[$RESFailure].subsidize = 0>> -<<set V[$RESFailure].schoolProsperity = 0>> -<<set V[$RESFailure].schoolAnnexed = 1>> -<<if $RESFailure == "TSS">> - <<for _i = 0; _i < _slavesToAdd-1; _i++>> - <<set _slave = GenerateNewSlave("XX", {ageOverridesPedoMode: 1})>> - <<set _slave.career = "a slave">> - <<set _slave.butt = either(1, 2, 2, 3)>> - <<set _slave.boobs = either(200, 300, 300, 400)>> - <<if $TSS.schoolUpgrade == 1>> - <<set _slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School after $he was retrained as a slave $girl.">> - <<set _slave.butt++>> - <<set _slave.boobs += 200>> - <<else>> - <<set _slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School right after $his majority.">> - <</if>> - <<set _slave.actualAge = ($TSS.schoolUpgrade == 1 ? random(36,42) : 18)>> - <<set _slave.anus = ($TSS.schoolUpgrade == 1 ? 1 : 0)>> - <<set _slave.vagina = ($TSS.schoolUpgrade == 1 ? 1 : 0)>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.intelligenceImplant = 15>> - <<set _slave.teeth = "normal">> - <<set _slave.intelligence = random(-50,95)>> - <<set _slave.devotion = random(25,45)>> - <<set _slave.trust = random(25,45)>> - <<run setHealth(_slave, jsRandom(50, 60), 0, 0, 0)>> - <<set _slave.preg = 0>> - <<set _slave.weight = 0>> - <<set _slave.chem = 20>> - <<set _slave.skill.vaginal = ($TUO.schoolUpgrade !== 0 ? 15 : 0)>> - <<set _slave.skill.oral = ($TUO.schoolUpgrade !== 0 ? 15 : 0)>> - <<set _slave.skill.anal = ($TUO.schoolUpgrade !== 0 ? 15 : 0)>> - <<set _slave.skill.whoring = ($TUO.schoolUpgrade !== 0 ? 15 : 0)>> - <<set _slave.skill.entertainment = 15>> - <<set _slave.skill.combat = 0>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.sexualFlaw = either("none")>> - <<set _slave.behavioralFlaw = either("none")>> - <<set _slave.hStyle = "tails">> - <<set _slave.custom.tattoo = "$He has the simple logo of the corporation that operates the Slavegirl School tattooed on $his left cheek.">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "TUO">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave(null, {minAge: $minimumSlaveAge, maxAge: $fertilityAge, disableDisability: 1})>> - <<set _slave.origin = "$He was given to you by a failed branch of The Utopian Orphanage right after $his graduation.">> - <<set _slave.career = "a slave">> - <<run setHealth(_slave, jsRandom(60, 80), 0, 0, 0)>> - <<set _slave.devotion = random(50,75)>> - <<set _slave.trust = random(50,75)>> - <<set _slave.face = ($TUO.schoolUpgrade == 1 ? random(30, 100) : random(10, 65))>> - <<set _slave.intelligence = ($TUO.schoolUpgrade == 1 ? random(55, 100) : random(35, 75))>> - <<set _slave.intelligenceImplant = ($TUO.schoolUpgrade == 1 ? 30 : 15)>> - <<set _slave.accent = ($TUO.schoolUpgrade == 1 ? 1 : either(0, 1))>> - <<set _slave.skill.entertainment = ($TUO.schoolUpgrade == 1 ? 75 : 45)>> - <<set _slave.skill.combat = ($TUO.schoolUpgrade == 1 ? 1 : 0)>> - <<set _slave.skill.vaginal = ($TUO.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.oral = ($TUO.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.anal = ($TUO.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.whoring = ($TUO.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.energy = ($TUO.schoolUpgrade == 2 ? random(40,95) : random(15,65))>> - <<set _slave.faceImplant = 0>> - <<set _slave.weight = random(-17,17)>> - <<set _slave.muscles = random(0,20)>> - <<set _slave.lips = random(10,40)>> - <<set _slave.lipsImplant = 0>> - <<set _slave.boobs = 50>> - <<set _slave.boobsImplant = 0>> - <<set _slave.butt = random(0,2)>> - <<set _slave.buttImplant = 0>> - <<set _slave.vagina = 0>> - <<set _slave.anus = 0>> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "TCR">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave("XX", {minAge: $fertilityAge+6, maxAge: 32, disableDisability: 1, ageOverridesPedoMode: 1})>> - <<set _slave.slaveName = setup.cowSlaveNames.random()>> - <<set _slave.slaveSurname = 0>> - <<set _slave.career = "a dairy cow">> - <<set _slave.butt = either(5, 6, 6, 7, 7, 8, 9)>> - <<set _slave.boobs = 30000>> - <<set _slave.lactation = 1>> - <<set _slave.lactationDuration = 2>> - <<set _slave.lactationAdaptation = 100>> - <<set _slave.origin = "$He is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.">> - <<set _slave.anus = 1>> - <<set _slave.vagina = 5>> - <<set _slave.vaginaLube = 2>> - <<set _slave.intelligence = either(-100, -100, -100, -96, -80, -70, -50)>> - <<set _slave.devotion = 100>> - <<set _slave.trust = 100>> - <<run setHealth(_slave, jsRandom(50, 60), 0, 0, 0)>> - <<set _slave.preg = random(30,39)>> - <<set _slave.pregType = random(3,6)>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<run SetBellySize(_slave)>> - <<set _slave.bellySag = 10>> - <<set _slave.bellySagPreg = 10>> - <<set _slave.hips = either(2, 2, 2, 2, 3)>> - <<set _slave.counter.birthsTotal = random(10,15)>> - <<set _slave.geneticQuirks.hyperFertility = 2>> - <<set _slave.weight = random(60,160)>> - <<set _slave.muscles = random(60,80)>> - <<set _slave.chem = 10>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.oral = 0>> - <<set _slave.skill.anal = 0>> - <<set _slave.skill.whoring = 0>> - <<set _slave.skill.entertainment = 0>> - <<set _slave.skill.combat = 0>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.heels = 1>> - <<set _slave.fetish = "mindbroken">> - <<set _slave.fetishStrength = 10>> - <<set _slave.fetishKnown = 1>> - <<set _slave.sexualFlaw = either("none")>> - <<set _slave.behavioralFlaw = either("none")>> - <<set _slave.sexualQuirk = either("none")>> - <<set _slave.behavioralQuirk = either("none")>> - <<set _slave.hStyle = "neat">> - <<set _slave.collar = "leather with cowbell">> - <<set _slave.brand["right thigh"] = "the logo of the Cattle Ranch">> - <<set _slave.boobsTat = "bovine patterns">> - <<set _slave.buttTat = "bovine patterns">> - <<set _slave.vaginaTat = "bovine patterns">> - <<set _slave.lipsTat = "bovine patterns">> - <<set _slave.anusTat = "bovine patterns">> - <<set _slave.shouldersTat = "bovine patterns">> - <<set _slave.backTat = "bovine patterns">> - <<set _slave.armsTat = "bovine patterns">> - <<set _slave.legsTat = "bovine patterns">> - <<set _slave.stampTat = "bovine patterns">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "GRI">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave("XX", {disableDisability: 1})>> - <<set _slave.origin = "$He was given to you by a failed subsidiary lab of the Growth Research Institute right after $his use as a test subject ended.">> - <<set _slave.career = "a slave">> - <<set _slave.intelligenceImplant = 0>> - <<set _slave.devotion = random(-15,-5)>> - <<set _slave.trust = random(-25,-45)>> - <<set _slave.chem = 100>> - <<if $GRI.schoolUpgrade == 1>> - <<run setHealth(_slave, 200, 0, 0, 0)>> - <<else>> - <<run setHealth(_slave, jsRandom(-70, 100), 0)>> - <</if>> - <<set _slave.height = random(150,190)>> - <<set _slave.butt = random(4,10)>> - <<set _slave.boobs = 200 * ($GRI.schoolUpgrade == 2 ? random(15,30) : random(4,20))>> - <<if $GRI.schoolUpgrade == 2>> - <<set _slave.lactation = _slave.lactationDuration = 2>> - <</if>> - <<set _slave.nipples = either("huge", "inverted")>> - <<set _slave.areolae = either(0, 1, 2, 3, 4)>> - <<set _slave.clit = either(0, 1, 2, 3)>> - <<set _slave.lips = random(5,85)>> - <<set _slave.anus = 0>> - <<set _slave.vagina = 0>> - <<set _slave.preg = 0>> - <<set _slave.weight = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.oral = 0>> - <<set _slave.skill.anal = 0>> - <<set _slave.skill.whoring = 0>> - <<set _slave.skill.entertainment = 0>> - <<set _slave.skill.combat = 0>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.actualAge = 19>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.behavioralFlaw = either("odd")>> - <<set _slave.hStyle = "shaved">> - <<set _slave.hLength = 0>> - <<set _slave.custom.tattoo = "$He has a barcode that identified $him when $he was a test subject at the Growth Research Institute tattooed on $his left cheek.">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "SCP">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave("XX", {disableDisability: 1})>> - <<set _slave.origin = "$He was given to you by a failed branch campus of St. Claver Preparatory after $he served as a plastic surgeon's passing final exam.">> - <<set _slave.chem = 20>> - <<set _slave.career = "a slave">> - <<set _slave.intelligenceImplant = ($SCP.schoolUpgrade == 1 ? 0 : 15)>> - <<set _slave.intelligence = ($SCP.schoolUpgrade == 1 ? -70 : random(-50, 50))>> - <<set _slave.devotion = _slave.trust = ($SCP.schoolUpgrade == 1 ? 20 : random(25, 45))>> - <<if $SCP.schoolUpgrade !== 1>> - <<set _slave.teeth = "normal">> - <</if>> - <<run setHealth(_slave, 100, 0, 0, 0)>> - <<set _slave.heightImplant = 1>> - <<set _slave.height += 10>> - <<set _slave.buttImplant = (4-_slave.butt)>> - <<set _slave.butt += _slave.buttImplant>> - <<set _slave.boobsImplantType = "normal">> - <<set _slave.boobsImplant = (2000-_slave.boobs)>> - <<set _slave.boobs += _slave.boobsImplant>> - <<set _slave.boobsImplantType = "fillable">> - <<set _slave.nipples = "tiny">> - <<set _slave.areolae = 0>> - <<set _slave.clit = 0>> - <<set _slave.lipsImplant = (75-_slave.lips)>> - <<set _slave.lips += _slave.lipsImplant>> - <<set _slave.faceImplant = 35>> - <<set _slave.face = random(35,80)>> - <<set _slave.anus = 0>> - <<set _slave.vagina = 0>> - <<set _slave.preg = 0>> - <<set _slave.weight = -20>> - <<set _slave.skill.vaginal = ($SCP.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.oral = ($SCP.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.anal = ($SCP.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.whoring = ($SCP.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.entertainment = ($SCP.schoolUpgrade == 2 ? 15 : 0)>> - <<set _slave.skill.combat = 0>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.actualAge = 19>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.sexualFlaw = either("none")>> - <<set _slave.behavioralFlaw = either("none")>> - <<set _slave.hStyle = "tails">> - <<set _slave.hColor = "blonde">> - <<set _slave.pubicHColor = "blonde">> - <<set _slave.underArmHColor = "blonde">> - <<set _slave.race = "white">> - <<set _slave.skin = "sun tanned">> - <<set _slave.override_H_Color = 1>> - <<set _slave.override_Arm_H_Color = 1>> - <<set _slave.override_Pubic_H_Color = 1>> - <<set _slave.override_Race = 1>> - <<set _slave.override_Skin = 1>> - <<set _slave.custom.tattoo = "$He has the coat of arms of St. Claver Preparatory tattooed on $his left cheek.">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "LDE">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave("XY", {disableDisability: 1})>> - <<set _slave.origin = "$He was given to you by a failed branch campus of the innovative École des Enculées right after $his graduation.">> - <<set _slave.career = "a slave">> - <<set _slave.intelligenceImplant = 0>> - <<set _slave.chem = 100>> - <<set _slave.devotion = ($LDE.schoolUpgrade == 1 ? 20 : random(60,70))>> - <<set _slave.trust = ($LDE.schoolUpgrade == 1 ? 20 : random(55,60))>> - <<run setHealth(_slave, jsRandom(60, 80), 0, 0, 0)>> - <<set _slave.muscles = 0>> - <<if random(1,100) > 75>> - <<set _slave.geneticQuirks.rearLipedema = 2>> - <<set _slave.butt = random(6,16)>> - <<else>> - <<set _slave.butt = random(4,5)>> - <</if>> - <<set _slave.face = random(20,60)>> - <<set _slave.boobs = either(500,650,800)>> - <<set _slave.waist = -15>> - <<set _slave.lips = 35>> - <<set _slave.balls = ($LDE.schoolUpgrade == 2 ? either(3,4) : either(1,1,1,2))>> - <<set _slave.dick = ($LDE.schoolUpgrade == 2 ? either(3,4) : either(1,1,1,2))>> - <<if _slave.foreskin > 0>><<set _slave.foreskin = _slave.dick>><</if>> - <<if _slave.balls > 0>><<set _slave.scrotum = _slave.balls>><</if>> - <<set _slave.anus = 2>> - <<set _slave.vagina = -1>> - <<set _slave.preg = 0>> - <<set _slave.weight = random(0,20)>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.oral = 15>> - <<set _slave.skill.anal = 100>> - <<set _slave.skill.whoring = 15>> - <<set _slave.skill.entertainment = 15>> - <<set _slave.skill.combat = 0>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.actualAge = 19>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.sexualFlaw = "none">> - <<set _slave.behavioralFlaw = either("none", "odd")>> - <<set _slave.fetishStrength = either(1, 2)>> - <<set _slave.fetish = "buttslut">> - <<set _slave.fetishKnown = 1>> - <<set _slave.attrKnown = 1>> - <<set _slave.hStyle = "tails">> - <<set _slave.hLength = 100>> - <<set _slave.custom.tattoo = "$He has the buttock-shaped symbol of the École des Enculées that created $his tattooed on $his left cheek.">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "NUL">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave(null, {minAge: 16, maxAge: 24, disableDisability: 1})>> - <<set _slave.origin = "$He was given to you by a failed branch campus of Nueva Universidad de Libertad right after $his graduation.">> - <<set _slave.career = "a slave">> - <<run setHealth(_slave, jsRandom(60, 80), 0, 0, 0)>> - <<set _slave.devotion = random(60,75)>> - <<set _slave.trust = random(60,75)>> - <<set _slave.intelligenceImplant = 30>> - <<set _slave.intelligence = ($NUL.schoolUpgrade == 1 ? random(50, 70) : random(20, 50))>> - <<set _slave.skill.whoring = ($NUL.schoolUpgrade == 1 ? random(70, 80) : random(40, 50))>> - <<set _slave.skill.entertainment = ($NUL.schoolUpgrade == 1 ? random(70, 80) : random(40, 50))>> - <<set _slave.skill.anal = ($NUL.schoolUpgrade == 2 ? random(60, 80) : random(10, 30))>> - <<set _slave.skill.oral = ($NUL.schoolUpgrade == 2 ? random(70, 90) : random(20, 40))>> - <<set _slave.anus = ($NUL.schoolUpgrade == 2 ? random(1, 3) : either(0, 0, 0, 0, 1, 1, 1))>> - <<set _slave.muscles = 0>> - <<set _slave.face = random(15,55)>> - <<set _slave.faceShape = "androgynous">> - <<set _slave.boobs = 50>> - <<set _slave.butt = 0>> - <<set _slave.vagina = -1>> - <<set _slave.clit = 0>> - <<set _slave.dick = 0>> - <<set _slave.balls = 0>> - <<set _slave.preg = 0>> - <<set _slave.eyebrowHStyle = "bald">> - <<set _slave.underArmHStyle = "bald">> - <<set _slave.pubicHStyle = "bald">> - <<set _slave.hStyle = "bald">> - <<set _slave.custom.tattoo = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder.">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "TGA">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave("XY", {disableDisability: 1})>> - <<set _slave.origin = "$He was given to you by a failed branch campus of the intense Gymnasium-Academy right after $his majority.">> - <<set _slave.career = "a slave">> - <<set _slave.intelligenceImplant = 15>> - <<set _slave.teeth = "normal">> - <<set _slave.intelligence = random(-50,95)>> - <<set _slave.chem = 20>> - <<set _slave.devotion = ($TGA.schoolUpgrade == 1 ? 20 : random(25,45))>> - <<set _slave.trust = ($TGA.schoolUpgrade == 1 ? 20 : random(25,45))>> - <<run setHealth(_slave, 100, 0, 0, 0)>> - <<set _slave.muscles = either(20, 50, 50)>> - <<set _slave.butt = either(2, 2, 3)>> - <<set _slave.boobs = either(100, 200)>> - <<set _slave.dick = random(3,5)>> - <<if _slave.foreskin > 0>><<set _slave.foreskin = _slave.dick>><</if>> - <<if _slave.balls > 0>><<set _slave.scrotum = _slave.balls>><</if>> - <<set _slave.balls = random(3,5)>> - <<set _slave.anus = 0>> - <<set _slave.vagina = -1>> - <<set _slave.preg = 0>> - <<set _slave.weight = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.oral = 0>> - <<set _slave.skill.anal = 0>> - <<set _slave.skill.whoring = 0>> - <<set _slave.skill.entertainment = 0>> - <<set _slave.skill.combat = ($TGA.schoolUpgrade == 2 ? 1 : 0)>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.actualAge = 18>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.sexualFlaw = either("apathetic", "none")>> - <<set _slave.behavioralFlaw = either("arrogant", "none", "odd")>> - <<set _slave.hStyle = "short">> - <<set _slave.hLength = 2>> - <<set _slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained $him">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "HA">> - <<for _i = 0; _i < _slavesToAdd; _i++>> - <<set _slave = GenerateNewSlave("XX", {disableDisability: 1})>> - <<set _slave.origin = "$He was given to you by a failed branch campus of the Hippolyta Academy right after $his majority.">> - <<set _slave.career = "a slave">> - <<set _slave.intelligenceImplant = 15>> - <<set _slave.teeth = "normal">> - <<set _slave.intelligence = random(0,95)>> - <<set _slave.chem = 20>> - <<set _slave.devotion = ($HA.schoolUpgrade == 1 ? 20 : random(25,45))>> - <<set _slave.trust = ($HA.schoolUpgrade == 1 ? 20 : random(25,45))>> - <<set _slave.faceShape = either("cute", "normal")>> - <<set _slave.face = either(20,20,35,35,35,50,75,100)>> - <<set _slave.lips = either(0,10,25)>> - <<set _slave.weight = -10>> - <<run setHealth(_slave, jsRandom(80, 100), 0, 0, 0)>> - <<set _slave.actualAge = 18>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.hips = 0>> - <<set _slave.vagina = random(0,1)>> - <<set _slave.anus = random(0,1)>> - <<set _slave.butt = random(2,4)>> - <<set _slave.boobs = (random(30,60) * 10)>> - <<set _slave.preg = 0>> - <<run SetBellySize(_slave)>> - <<run setHealth(_slave, jsRandom(60, 80), 0, 0, 0)>> - <<set _slave.muscles = random(40,60)>> - <<set _minHeight = random(170,180)>> - <<set _slave.height = Math.trunc(Math.clamp(Height.random(_slave, {limitMult: [2, 15], spread: .1}),_minHeight, 274))>> - <<set _slave.waist = -15>> - <<set _slave.shoulders = 0>> - <<set _slave.skill.vaginal = 10>> - <<set _slave.skill.oral = 10>> - <<set _slave.skill.anal = 10>> - <<set _slave.skill.whoring = 10>> - <<set _slave.skill.entertainment = either(10,10,30)>> - <<set _slave.skill.combat = 1>> - <<set _slave.sexualFlaw = either("apathetic", "judgemental", "none", "none")>> - <<set _slave.behavioralFlaw = either("arrogant", "none")>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.hStyle = either("braided", "bun", "neat", "ponytail", "tails")>> - <<set _slave.hLength = random(5,50)>> - <<set _slave.custom.tattoo = "$He has the sword and eagle symbol of the Hippolyta Academy tattooed on $his left shoulder.">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> -<<elseif $RESFailure == "TFS">> - <<for _i = 0; _i < _slavesToAdd-1; _i++>> - <<set _slaveGenRange = random(1,4)>> - <<if $TFS.schoolUpgrade == 3 && $TFS.compromiseWeek+15 <= $week>> - <<set _slave = GenerateNewSlave(null, {disableDisability: 1})>> - <<else>> - <<set _slave = GenerateNewSlave("XY", {disableDisability: 1})>> - <</if>> - <<set _slave.origin = "$He was a Futanari Sister until you engineered $his early enslavement.">> - <<set _slave.career = "a Futanari Sister">> - <<set _slave.faceShape = either("exotic", "sensual")>> - <<if _slaveGenRange == 1>> - <<set _slave.intelligence = random(-50,-20)>> - <<set _slave.chem = 150>> - <<set _slave.butt = either(5,6)>> - <<set _slave.hips = 1>> - <<set _slave.face = either(35,35,35,75,100)>> - <<set _slave.boobs = 100*random(12,20)>> - <<set _slave.dick = random(2,3)>> - <<if $TFS.schoolUpgrade == 3 && $TFS.compromiseWeek+15 <= $week>> - <<if _slave.genes == "XY">> - <<set _slave.balls = _slave.scrotum = random(8,9)>> - <<else>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <</if>> - <<elseif $TFS.schoolUpgrade == 1>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <<elseif $TFS.schoolUpgrade == 2>> - <<set _slave.balls = _slave.scrotum = random(8,9)>> - <<else>> - <<set _slave.balls = _slave.scrotum = random(2,3)>> - <</if>> - <<set _slave.lips = 0>> - <<set _slave.weight = 0>> - <<set _slave.actualAge = random(25,29)>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.vagina = 2>> - <<set _slave.anus = 2>> - <<set _slave.fetish = "submissive">> - <<elseif _slaveGenRange == 2>> - <<set _slave.intelligence = random(-15,15)>> - <<set _slave.chem = 200>> - <<set _slave.butt = either(6,7)>> - <<set _slave.hips = 2>> - <<set _slave.face = either(35,35,75,75,100)>> - <<set _slave.boobs = 100*random(20,32)>> - <<set _slave.dick = random(3,4)>> - <<if $TFS.schoolUpgrade == 3 && $TFS.compromiseWeek+15 <= $week>> - <<if _slave.genes == "XY">> - <<set _slave.balls = _slave.scrotum = random(9,10)>> - <<else>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <</if>> - <<elseif $TFS.schoolUpgrade == 1>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <<else>> - <<set _slave.balls = _slave.scrotum = ($TFS.schoolUpgrade == 2 ? random(9,10) : random(3,4))>> - <</if>> - <<set _slave.lips = random(15,25)>> - <<set _slave.weight = 20>> - <<set _slave.actualAge = random(30,34)>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.vagina = 2>> - <<set _slave.anus = 2>> - <<set _slave.fetish = either("buttslut", "cumslut")>> - <<elseif _slaveGenRange == 3>> - <<set _slave.intelligence = random(16,50)>> - <<set _slave.chem = 250>> - <<set _slave.butt = either(7,8)>> - <<set _slave.hips = 2>> - <<set _slave.face = either(35,75,75,100,100)>> - <<set _slave.boobs = 100*random(32,42)>> - <<set _slave.dick = random(4,5)>> - <<if $TFS.schoolUpgrade == 3 && $TFS.compromiseWeek+15 <= $week>> - <<if _slave.genes == "XY">> - <<set _slave.balls = _slave.scrotum = random(6,7)>> - <<else>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <</if>> - <<elseif $TFS.schoolUpgrade == 1>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <<else>> - <<set _slave.balls = _slave.scrotum = ($TFS.schoolUpgrade == 2 ? random(6,7) : random(4,5))>> - <</if>> - <<set _slave.lips = random(25,55)>> - <<set _slave.weight = 20>> - <<set _slave.actualAge = random(35,39)>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.vagina = 3>> - <<set _slave.anus = 3>> - <<set _slave.fetish = either("buttslut", "cumslut")>> - <<else>> - <<set _slave.intelligence = random(51,95)>> - <<set _slave.chem = 300>> - <<set _slave.butt = either(8,9)>> - <<set _slave.hips = 2>> - <<set _slave.face = either(35,75,100,100,100)>> - <<set _slave.boobs = 100*random(44,60)>> - <<set _slave.dick = random(5,6)>> - <<set _slave.geneticQuirks.wellHung = 2>> - <<if $TFS.schoolUpgrade == 3 && $TFS.compromiseWeek+15 <= $week>> - <<if _slave.genes == "XY">> - <<set _slave.balls = random(7,8), _slave.scrotum = _slave.balls>> - <<else>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <</if>> - <<elseif $TFS.schoolUpgrade == 1>> - <<set _slave.balls = 1>> - <<set _slave.scrotum = 0>> - <<else>> - <<set _slave.balls = _slave.scrotum = ($TFS.schoolUpgrade == 2 ? random(7,8) : random(5,6))>> - <</if>> - <<set _slave.lips = random(25,55)>> - <<set _slave.weight = 50>> - <<set _slave.actualAge = random(40,42)>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.vagina = 3>> - <<set _slave.anus = 3>> - <<set _slave.fetish = "dom">> - <</if>> - <<if _slave.foreskin > 0>> <<set _slave.foreskin = _slave.dick>> <</if>> - <<set _slave.preg = -3>> - <<if $TFS.farmUpgrade > 0>> - <<set _slave.ovaries = 1>> - <<if $TFS.farmUpgrade >= 2>> - <<set _slave.preg = random(1,41)>> - <<if $TFS.farmUpgrade == 3>> - <<set _slave.pregType = random(10,30)>> - <<set _slave.pregAdaptation = 300>> - <<else>> - <<set _slave.pregType = 1>> - <</if>> - <<set _slave.pregSource = -9>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<run SetBellySize(_slave)>> - <</if>> - <</if>> - <<set _slave.intelligenceImplant = 30>> - <<set _slave.teeth = "normal">> - <<set _slave.energy = ($TFS.schoolUpgrade == 2 ? 100 : _slave.physicalAge + random(20, 30))>> - <<set _slave.devotion = random(30,35)>> - <<set _slave.trust = random(-15,-5)>> - <<run setHealth(_slave, jsRandom(60, 80), 0, 0, 0)>> - <<set _slave.muscles = 20>> - <<set _slave.waist = -15>> - <<if _slave.genes == "XY">> - <<set _slave.shoulders = 1>> - <</if>> - <<set _slave.skill.vaginal = 100>> - <<set _slave.skill.oral = 100>> - <<set _slave.skill.anal = 100>> - <<set _slave.skill.whoring = 15>> - <<set _slave.skill.entertainment = 100>> - <<set _slave.skill.combat = 0>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<if $TFS.schoolUpgrade == 1>> - <<set _slave.sexualQuirk = "caring">> - <</if>> - <<set _slave.sexualFlaw = either("hates women", "none")>> - <<set _slave.behavioralFlaw = either("arrogant", "none")>> - <<set _slave.fetishStrength = 100>> - <<set _slave.fetishKnown = 0>> - <<set _slave.attrKnown = 0>> - <<set _slave.hStyle = "neat">> - <<set _slave.hLength = 150>> - <<set _slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple.">> - <<set $REFutaSisterCheckinIDs.push(_slave.ID)>> - <<run newSlave(_slave)>> /* skip New Slave Intro */ - <</for>> - <<set _slave = GenerateNewSlave("XY", {disableDisability: 1})>> - <<set _slave.origin = "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement.">> - <<set _slave.career = "a Futanari Sister">> - <<set _slave.intelligence = random(51,95)>> - <<set _slave.chem = 300>> - <<set _slave.butt = either(8,9)>> - <<set _slave.hips = 2>> - <<set _slave.face = 100>> - <<set _slave.boobs = 100*random(44,60)>> - <<set _slave.dick = random(5,6)>> - <<if _slave.foreskin > 0>><<set _slave.foreskin = _slave.dick>><</if>> - <<if $TFS.schoolUpgrade == 3 && $TFS.compromiseWeek+15 <= $week>> - <<set _slave.balls = _slave.scrotum = 10>> - <<else>> - <<set _slave.balls = _slave.scrotum = ($TFS.schoolUpgrade == 1 ? 1 :10)>> - <<set _slave.balls = _slave.scrotum = ($TFS.schoolUpgrade == 1 ? 0 : random(5,6))>> - <</if>> - <<set _slave.lips = random(25,55)>> - <<set _slave.weight = 50>> - <<set _slave.actualAge = random(40,42)>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.vagina = 3>> - <<set _slave.anus = 3>> - <<set _slave.fetish = "dom">> - <<set _slave.preg = -3>> - <<if $TFS.farmUpgrade > 0>> - <<set _slave.ovaries = 1>> - <<if $TFS.farmUpgrade >= 2>> - <<set _slave.preg = random(1,41)>> - <<if $TFS.farmUpgrade == 3>> - <<set _slave.pregType = random(20,40)>> - <<set _slave.pregAdaptation = 500>> - <<else>> - <<set _slave.pregType = 1>> - <</if>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<run SetBellySize(_slave)>> - <</if>> - <</if>> - <<set _slave.intelligenceImplant = 30>> - <<set _slave.teeth = "normal">> - <<set _slave.energy = ($TFS.schoolUpgrade == 2 ? 100 : _slave.physicalAge + random(20, 30))>> - <<set _slave.devotion = random(25,30)>> - <<set _slave.trust = random(10,15)>> - <<run setHealth(_slave, jsRandom(60, 80), 0, 0, 0)>> - <<set _slave.muscles = 20>> - <<set _slave.waist = -15>> - <<set _slave.shoulders = 1>> - <<set _slave.skill.vaginal = 100>> - <<set _slave.skill.oral = 100>> - <<set _slave.skill.anal = 100>> - <<set _slave.skill.whoring = 15>> - <<set _slave.skill.entertainment = 100>> - <<set _slave.skill.combat = 0>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<if $TFS.schoolUpgrade == 1>> - <<set _slave.sexualQuirk = "caring">> - <</if>> - <<set _slave.sexualFlaw = either("hates women", "none")>> - <<set _slave.behavioralFlaw = either("arrogant", "none")>> - <<set _slave.fetishStrength = 100>> - <<set _slave.fetishKnown = 0>> - <<set _slave.attrKnown = 0>> - <<set _slave.hStyle = "neat">> - <<set _slave.hLength = 150>> - <<set _slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple.">> - <<run newSlave(_slave)>> /* skip New Slave Intro */ -<<else>> - Error: school "$RESFailure" not found. -<</if>> - -<<run App.Utils.setLocalPronouns(_slave)>> -<<set _he = ($RESFailure !== "NUL" ? "he" : "they")>> -<<set _He = capFirstChar(_he)>> - -<<if $RESFailure == "TFS">> - The senior Sister of the community of Futanari Sisters in your arcology appears at your penthouse, as you've been expecting since their second missed rent payment. This is quite the occasion, since they never leave their little nest. $He's delightfully nude, and it occurs to you that the Sisters probably do not own clothing at all. $He has obviously been crying; puffy eyes and a sniffling nose mar $his gorgeous face. $He must have caused quite the sensation as $he made $his way here, in tears, gigantic tits and huge cock bouncing around. To your surprise, $he flings $himself at your feet, $his dick making a painful-sounding slap against the floor and $his breasts squashing out to either side of $him. - <p> - "Please," $he cries to your feet. "Please take us as slaves. We're indebted, and we'll all be enslaved. You're our friend, you'll treat us better than anyone." Then $he whispers, "Please, <<if $PC.slaveSurname>><<if $PC.title>>Mr.<<else>>Ms.<</if>> <<print $PC.slaveSurname>>,<<else>><<print $PC.slaveName>>,<</if>> don't make me beg." You tell the prostrate futa you accept. $His mood does not improve: $he scrabbles around to face away from you, plush body jiggling submissively, and raises $his buttocks to spread $his pussy and anus for you. "Thank you," $he weeps. "Now please rape me, <<Master>>. I deserve it. My mismanagement stole my Sisters' years of idyll from them. Please, rape me." - </p> -<<else>> - <p> - You receive a personal call from a senior representative of _SCH.title as you've been expecting since their second missed rent payment. "I apologize," _he says with some embarrassment, "but it seems our expansion into your arcology was a mistake. It's strange — the business climate seemed excellent, and other corporations are doing well." - _He sighs "Nevertheless, nothing ever seemed to go as planned. We'll be shutting our _SCH.branchName down immediately. In fact, it should be shut down within the hour. - <<if $RESFailure == "TCR">> - However, we lack the funds to remove some of our finest _SCH.slaveNoun and since we still owe you a little... We'd like to you to have them; we'll even have them delivered to your penthouse with the last of our credits." - <<else>> - I regret to add," _he says nervously, "that we're experiencing continued difficulty finding the liquidity to pay what we owe you. - <<if $RESFailure == "GRI">> - The lab we're closing has five solid _SCH.slaveNoun. - <<else>> - The branch campus we're closing has five recent _SCH.slaveNoun. - <</if>> - We'd like to transfer them to you in lieu of payment." - _He hurriedly end the call. - <</if>> - </p> -<</if>> - -<p> - The failure of a prominent organization within your arcology has @@.red;affected your reputation@@ and @@.red;your arcology's prosperity@@ slightly, but you've come out a long way ahead. You've acquired excellent slaves for a pitiful fraction of their fair price. -</p> - -<span id="result"> -<<if $RESFailure == "TFS">> - <<link "Rape $him">> - <<replace "#result">> - <<for _slave range $slaves>> - <<if (_slave.origin == "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement.")>> - <<set _slave.devotion += 10>> - <<run actX(_slave, "anal")>> - <<run actX(_slave, "vaginal")>> - <</if>> - <</for>> - You <<if $PC.dick != 0>>whip out your dick<<else>>pull on a strap-on, the one you use for disobedient slaves,<</if>> and kneel down behind the sobbing futa matron. When $he feels it touching $his pussylips, $he whispers "Thank you, <<Master>>," through $his tears. $He's very, very sexually experienced, so it's harder to make $him feel it than it would be for a $girl with tighter holes. But you're an expert. You calibrate your pounding to pull just barely too far out, so that $he feels you ramming mercilessly into $him with each stroke, and so that the slightest mistake from $him sends <<if $PC.dick != 0>>your cock<<else>>the phallus<</if>> right up the other hole. Despite $his anguish and the brutal fuck, or perhaps because of them, $he slowly manages to get hard, and orgasms painfully when you do. $He @@.hotpink;can't seem to stop thanking you,@@ but is quiet when you tell $him to be. - <</replace>> - <</link>> - <br> -<</if>> -<<link "Sell your prizes immediately">> - <<replace "#result">> - <<if $RESFailure == "TSS">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the Slavegirl School right after $his majority." || s.origin === "$He was given to you by a failed branch campus of the Slavegirl School after $he was retrained as a slave $girl.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "TUO">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed branch of The Utopian Orphanage right after $his graduation.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "TCR">> - <<for _slave range $slaves.filter(s => s.origin === "$He is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "GRI">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed subsidiary lab of the Growth Research Institute right after $his use as a test subject ended.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "SCP">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of St. Claver Preparatory after $he served as a plastic surgeon's passing final exam.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "LDE">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the innovative École des Enculées right after $his graduation.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "NUL">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of Nueva Universidad de Libertad right after $his graduation.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "TGA">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the intense Gymnasium-Academy right after $his majority.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "HA">> - <<for _slave range $slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the Hippolyta Academy right after $his majority.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <<elseif $RESFailure == "TFS">> - <<for _slave range $slaves.filter(s => s.origin === "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement." || s.origin === "$He was a Futanari Sister until you engineered $his early enslavement.")>> - <<run cashX(slaveCost(_slave), "slaveTransfer")>> - <<run removeSlave(_slave)>> - <</for>> - <</if>> - Prizes sold. - <</replace>> -<</link>> -</span> \ No newline at end of file -- GitLab From f7d95a90008cb7e0626c1ed3cdf93c14c14afe4d Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 20:25:52 -0400 Subject: [PATCH 43/91] fixes --- src/events/RE/resFailure.js | 46 ++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index a78e36cb4b1..dfa69088cef 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -34,11 +34,11 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.butt = either(1, 2, 2, 3); _slave.boobs = either(200, 300, 300, 400); if (V.TSS.schoolUpgrade === 1) { - _slave.origin = "${He} was given to you by a failed branch campus of the Slavegirl School after ${he} was retrained as a slave ${girl}."; + _slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School after $he was retrained as a slave $girl."; _slave.butt++; _slave.boobs += 200; } else { - _slave.origin = "${He} was given to you by a failed branch campus of the Slavegirl School right after ${his} majority."; + _slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School right after $his majority."; } _slave.actualAge = (V.TSS.schoolUpgrade === 1 ? random(36, 42) : 18); _slave.anus = (V.TSS.schoolUpgrade === 1 ? 1 : 0); @@ -72,7 +72,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else if (failedSchool === "TUO") { for (let _i = 0; _i < _slavesToAdd; _i++) { const _slave = GenerateNewSlave(null, {minAge: V.minimumSlaveAge, maxAge: V.fertilityAge, disableDisability: 1}); - _slave.origin = "${He} was given to you by a failed branch of The Utopian Orphanage right after ${his} graduation."; + _slave.origin = "$He was given to you by a failed branch of The Utopian Orphanage right after $his graduation."; _slave.career = "a slave"; setHealth(_slave, jsRandom(60, 80), 0, 0, 0); _slave.devotion = random(50, 75); @@ -114,7 +114,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.lactation = 1; _slave.lactationDuration = 2; _slave.lactationAdaptation = 100; - _slave.origin = "${He} is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch."; + _slave.origin = "$He is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch."; _slave.anus = 1; _slave.vagina = 5; _slave.vaginaLube = 2; @@ -169,7 +169,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else if (failedSchool === "GRI") { for (let _i = 0; _i < _slavesToAdd; _i++) { const _slave = GenerateNewSlave("XX", {disableDisability: 1}); - _slave.origin = "${He} was given to you by a failed subsidiary lab of the Growth Research Institute right after ${his} use as a test subject ended."; + _slave.origin = "$He was given to you by a failed subsidiary lab of the Growth Research Institute right after $his use as a test subject ended."; _slave.career = "a slave"; _slave.intelligenceImplant = 0; _slave.devotion = random(-15, -5); @@ -215,7 +215,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else if (failedSchool === "SCP") { for (let _i = 0; _i < _slavesToAdd; _i++) { const _slave = GenerateNewSlave("XX", {disableDisability: 1}); - _slave.origin = "${He} was given to you by a failed branch campus of St. Claver Preparatory after ${he} served as a plastic surgeon's passing final exam."; + _slave.origin = "$He was given to you by a failed branch campus of St. Claver Preparatory after $he served as a plastic surgeon's passing final exam."; _slave.chem = 20; _slave.career = "a slave"; _slave.intelligenceImplant = (V.SCP.schoolUpgrade === 1 ? 0 : 15); @@ -275,7 +275,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else if (failedSchool === "LDE") { for (let _i = 0; _i < _slavesToAdd; _i++) { const _slave = GenerateNewSlave("XY", {disableDisability: 1}); - _slave.origin = "${He} was given to you by a failed branch campus of the innovative École des Enculées right after ${his} graduation."; + _slave.origin = "$He was given to you by a failed branch campus of the innovative École des Enculées right after $his graduation."; _slave.career = "a slave"; _slave.intelligenceImplant = 0; _slave.chem = 100; @@ -331,7 +331,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else if (failedSchool === "NUL") { for (let _i = 0; _i < _slavesToAdd; _i++) { const _slave = GenerateNewSlave(null, {minAge: 16, maxAge: 24, disableDisability: 1}); - _slave.origin = "${He} was given to you by a failed branch campus of Nueva Universidad de Libertad right after ${his} graduation."; + _slave.origin = "$He was given to you by a failed branch campus of Nueva Universidad de Libertad right after $his graduation."; _slave.career = "a slave"; setHealth(_slave, jsRandom(60, 80), 0, 0, 0); _slave.devotion = random(60, 75); @@ -363,7 +363,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else if (failedSchool === "TGA") { for (let _i = 0; _i < _slavesToAdd; _i++) { const _slave = GenerateNewSlave("XY", {disableDisability: 1}); - _slave.origin = "${He} was given to you by a failed branch campus of the intense Gymnasium-Academy right after ${his} majority."; + _slave.origin = "$He was given to you by a failed branch campus of the intense Gymnasium-Academy right after $his majority."; _slave.career = "a slave"; _slave.intelligenceImplant = 15; _slave.teeth = "normal"; @@ -409,7 +409,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else if (failedSchool === "HA") { for (let _i = 0; _i < _slavesToAdd; _i++) { const _slave = GenerateNewSlave("XX", {disableDisability: 1}); - _slave.origin = "${He} was given to you by a failed branch campus of the Hippolyta Academy right after ${his} majority."; + _slave.origin = "$He was given to you by a failed branch campus of the Hippolyta Academy right after $his majority."; _slave.career = "a slave"; _slave.intelligenceImplant = 15; _slave.teeth = "normal"; @@ -463,7 +463,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else { _slave = GenerateNewSlave("XY", {disableDisability: 1}); } - _slave.origin = "${He} was a Futanari Sister until you engineered ${his} early enslavement."; + _slave.origin = "$He was a Futanari Sister until you engineered $his early enslavement."; _slave.career = "a Futanari Sister"; _slave.faceShape = either("exotic", "sensual"); if (_slaveGenRange === 1) { @@ -647,7 +647,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { newSlave(_slave);// skip New Slave Intro } const _slave = GenerateNewSlave("XY", {disableDisability: 1}); - _slave.origin = "${He} was the leader of your arcology's Futanari Sisters until you engineered ${his} community's failure and enslavement."; + _slave.origin = "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement."; _slave.career = "a Futanari Sister"; _slave.intelligence = random(51, 95); _slave.chem = 300; @@ -776,7 +776,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { // <<link "Rape ${him}">> // <<replace "#result">> for (const _slave of V.slaves) { - if (_slave.origin === "${He} was the leader of your arcology's Futanari Sisters until you engineered ${his} community's failure and enslavement.") { + if (_slave.origin === "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement.") { _slave.devotion += 10; actX(_slave, "anal"); actX(_slave, "vaginal"); @@ -802,52 +802,52 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { // <<link "Sell your prizes immediately">> // <<replace "#result">> if (failedSchool === "TSS") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the Slavegirl School right after ${his} majority." || s.origin === "${He} was given to you by a failed branch campus of the Slavegirl School after ${he} was retrained as a slave ${girl}.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the Slavegirl School right after $his majority." || s.origin === "$He was given to you by a failed branch campus of the Slavegirl School after $he was retrained as a slave $girl.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "TUO") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch of The Utopian Orphanage right after ${his} graduation.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch of The Utopian Orphanage right after $his graduation.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "TCR") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "GRI") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed subsidiary lab of the Growth Research Institute right after ${his} use as a test subject ended.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed subsidiary lab of the Growth Research Institute right after $his use as a test subject ended.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "SCP") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of St. Claver Preparatory after ${he} served as a plastic surgeon's passing final exam.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of St. Claver Preparatory after $he served as a plastic surgeon's passing final exam.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "LDE") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the innovative École des Enculées right after ${his} graduation.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the innovative École des Enculées right after $his graduation.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "NUL") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of Nueva Universidad de Libertad right after ${his} graduation.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of Nueva Universidad de Libertad right after $his graduation.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "TGA") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the intense Gymnasium-Academy right after ${his} majority.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the intense Gymnasium-Academy right after $his majority.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "HA") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was given to you by a failed branch campus of the Hippolyta Academy right after ${his} majority.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the Hippolyta Academy right after $his majority.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } } else if (failedSchool === "TFS") { - for (const _slave of V.slaves.filter(s => s.origin === "${He} was the leader of your arcology's Futanari Sisters until you engineered ${his} community's failure and enslavement." || s.origin === "${He} was a Futanari Sister until you engineered ${his} early enslavement.")) { + for (const _slave of V.slaves.filter(s => s.origin === "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement." || s.origin === "$He was a Futanari Sister until you engineered $his early enslavement.")) { cashX(slaveCost(_slave), "slaveTransfer"); removeSlave(_slave); } -- GitLab From 092005fb933230032f3fa27967a83bba2d1d9d1b Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 20:29:49 -0400 Subject: [PATCH 44/91] fixes --- src/events/RE/resFailure.js | 42 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index dfa69088cef..a0d0c1baad6 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -25,7 +25,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { V[failedSchool].subsidize = 0; V[failedSchool].schoolProsperity = 0; V[failedSchool].schoolAnnexed = 1; - /** @type {App.Entity.SlaveState<>} */ + /** @type {App.Entity.SlaveState[]} */ const slaveArray = []; if (failedSchool === "TSS") { for (let _i = 0; _i < _slavesToAdd-1; _i++) { @@ -66,8 +66,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.sexualFlaw = either("none"); _slave.behavioralFlaw = either("none"); _slave.hStyle = "tails"; - _slave.custom.tattoo = "${He} has the simple logo of the corporation that operates the Slavegirl School tattooed on ${his} left cheek."; - newSlave(_slave);// skip New Slave Intro + _slave.custom.tattoo = "$He has the simple logo of the corporation that operates the Slavegirl School tattooed on $his left cheek."; + slaveArray.push(_slave); } } else if (failedSchool === "TUO") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -99,7 +99,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.buttImplant = 0; _slave.vagina = 0; _slave.anus = 0; - newSlave(_slave);// skip New Slave Intro + slaveArray.push(_slave); } } else if (failedSchool === "TCR") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -164,7 +164,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.armsTat = "bovine patterns"; _slave.legsTat = "bovine patterns"; _slave.stampTat = "bovine patterns"; - newSlave(_slave);// skip New Slave Intro + slaveArray.push(_slave); } } else if (failedSchool === "GRI") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -209,8 +209,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.behavioralFlaw = either("odd"); _slave.hStyle = "shaved"; _slave.hLength = 0; - _slave.custom.tattoo = "${He} has a barcode that identified ${him} when ${he} was a test subject at the Growth Research Institute tattooed on ${his} left cheek."; - newSlave(_slave);// skip New Slave Intro + _slave.custom.tattoo = "$He has a barcode that identified $him when $he was a test subject at the Growth Research Institute tattooed on $his left cheek."; + slaveArray.push(_slave); } } else if (failedSchool === "SCP") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -269,8 +269,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.override_Pubic_H_Color = 1; _slave.override_Race = 1; _slave.override_Skin = 1; - _slave.custom.tattoo = "${He} has the coat of arms of St. Claver Preparatory tattooed on ${his} left cheek."; - newSlave(_slave);// skip New Slave Intro + _slave.custom.tattoo = "$He has the coat of arms of St. Claver Preparatory tattooed on $his left cheek."; + slaveArray.push(_slave); } } else if (failedSchool === "LDE") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -325,8 +325,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.attrKnown = 1; _slave.hStyle = "tails"; _slave.hLength = 100; - _slave.custom.tattoo = "${He} has the buttock-shaped symbol of the École des Enculées that created ${his} tattooed on ${his} left cheek."; - newSlave(_slave);// skip New Slave Intro + _slave.custom.tattoo = "$He has the buttock-shaped symbol of the École des Enculées that created $his tattooed on $his left cheek."; + slaveArray.push(_slave); } } else if (failedSchool === "NUL") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -357,8 +357,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.underArmHStyle = "bald"; _slave.pubicHStyle = "bald"; _slave.hStyle = "bald"; - _slave.custom.tattoo = "${He} has the abstract symbol of Nueva Universidad de Libertad tattooed on ${his} left shoulder."; - newSlave(_slave);// skip New Slave Intro + _slave.custom.tattoo = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder."; + slaveArray.push(_slave); } } else if (failedSchool === "TGA") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -404,7 +404,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.hStyle = "short"; _slave.hLength = 2; _slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained ${him}"; - newSlave(_slave);// skip New Slave Intro + slaveArray.push(_slave); } } else if (failedSchool === "HA") { for (let _i = 0; _i < _slavesToAdd; _i++) { @@ -451,8 +451,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.underArmHStyle = "waxed"; _slave.hStyle = either("braided", "bun", "neat", "ponytail", "tails"); _slave.hLength = random(5, 50); - _slave.custom.tattoo = "${He} has the sword and eagle symbol of the Hippolyta Academy tattooed on ${his} left shoulder."; - newSlave(_slave);// skip New Slave Intro + _slave.custom.tattoo = "$He has the sword and eagle symbol of the Hippolyta Academy tattooed on $his left shoulder."; + slaveArray.push(_slave); } } else if (failedSchool === "TFS") { for (let _i = 0; _i < _slavesToAdd-1; _i++) { @@ -592,9 +592,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.fetish = "dom"; } if (_slave.foreskin > 0) { - r.push(` `); _slave.foreskin = _slave.dick; - r.push(` `); } _slave.preg = -3; if (V.TFS.farmUpgrade > 0) { @@ -642,9 +640,9 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.attrKnown = 0; _slave.hStyle = "neat"; _slave.hLength = 150; - _slave.custom.tattoo = "${He} has a simple pink heart tattooed on ${his} right temple."; + _slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple."; V.REFutaSisterCheckinIDs.push(_slave.ID); - newSlave(_slave);// skip New Slave Intro + slaveArray.push(_slave); } const _slave = GenerateNewSlave("XY", {disableDisability: 1}); _slave.origin = "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement."; @@ -717,8 +715,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { _slave.attrKnown = 0; _slave.hStyle = "neat"; _slave.hLength = 150; - _slave.custom.tattoo = "${He} has a simple pink heart tattooed on ${his} right temple."; - newSlave(_slave);// skip New Slave Intro + _slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple."; + slaveArray.push(_slave); } else { r.push(`Error: school "${failedSchool}" not found.`); } -- GitLab From d16b2736ee08f0c1f2ddc78402072ce3ade10b86 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 20:47:40 -0400 Subject: [PATCH 45/91] polish --- src/events/RE/resFailure.js | 89 ++++++++++--------------------------- 1 file changed, 24 insertions(+), 65 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index a0d0c1baad6..e2b352d3117 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -747,8 +747,11 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { r.push(` don't make me beg." You tell the prostrate futa you accept. ${His} mood does not improve: ${he} scrabbles around to face away from you, plush body jiggling submissively, and raises ${his} buttocks to spread ${his} pussy and anus for you. "Thank you," ${he} weeps. "Now please rape me, ${Master}. I deserve it. My mismanagement stole my Sisters' years of idyll from them. Please, rape me."`); App.Events.addParagraph(node, r); r = []; + App.Events.addResponses(node, [ + new App.Events.Result(`Rape ${him}`, TFSRape, `This will cost ${cashFormat(10000)}`) + ]); } else { - r.push(`You receive a personal call from a senior representative of ${_SCH.title} as you've been expecting since their second missed rent payment. "I apologize," _he says with some embarrassment, "but it seems our expansion into your arcology was a mistake. It's strange — the business climate seemed excellent, and other corporations are doing well."`); + r.push(`You receive a personal call from a senior representative of ${_SCH.title} as you've been expecting since their second missed rent payment. "I apologize," ${_he} says with some embarrassment, "but it seems our expansion into your arcology was a mistake. It's strange — the business climate seemed excellent, and other corporations are doing well."`); r.push(`${_He} sighs "Nevertheless, nothing ever seemed to go as planned. We'll be shutting our ${_SCH.branchName} down immediately. In fact, it should be shut down within the hour.`); if (failedSchool === "TCR") { r.push(`However, we lack the funds to remove some of our finest ${_SCH.slaveNoun} and since we still owe you a little... We'd like to you to have them; we'll even have them delivered to your penthouse with the last of our credits."`); @@ -769,10 +772,24 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { r.push(`The failure of a prominent organization within your arcology has <span class="red">affected your reputation</span> and <span class="red">your arcology's prosperity</span> slightly, but you've come out a long way ahead. You've acquired excellent slaves for a pitiful fraction of their fair price.`); App.Events.addParagraph(node, r); - // <span id="result"> - if (failedSchool === "TFS") { - // <<link "Rape ${him}">> - // <<replace "#result">> + App.Events.addResponses(node, [ + new App.Events.Result(`Enslave the students`, enslave), + new App.Events.Result(`Sell your prizes immediately`, sell) + ]); + + function enslave() { + slaveArray.forEach(s => newSlave(s)); // TODO: bulk intro + return `${capFirstChar(_SCH.slaveNoun)} acquired.`; + } + + function sell() { + slaveArray.forEach(s => cashX(slaveCost(s), "slaveTransfer")); + return `Prizes sold.`; + } + + function TFSRape() { + const frag = new DocumentFragment(); + let r = []; for (const _slave of V.slaves) { if (_slave.origin === "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement.") { _slave.devotion += 10; @@ -793,66 +810,8 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { r.push(`the phallus`); } r.push(` right up the other hole. Despite ${his} anguish and the brutal fuck, or perhaps because of them, ${he} slowly manages to get hard, and orgasms painfully when you do. ${He} <span class="hotpink">can't seem to stop thanking you,</span> but is quiet when you tell ${him} to be.`); - // <</replace>> - // <</link>> - // <br> - } - // <<link "Sell your prizes immediately">> - // <<replace "#result">> - if (failedSchool === "TSS") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the Slavegirl School right after $his majority." || s.origin === "$He was given to you by a failed branch campus of the Slavegirl School after $he was retrained as a slave $girl.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "TUO") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch of The Utopian Orphanage right after $his graduation.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "TCR") { - for (const _slave of V.slaves.filter(s => s.origin === "$He is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "GRI") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed subsidiary lab of the Growth Research Institute right after $his use as a test subject ended.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "SCP") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of St. Claver Preparatory after $he served as a plastic surgeon's passing final exam.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "LDE") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the innovative École des Enculées right after $his graduation.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "NUL") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of Nueva Universidad de Libertad right after $his graduation.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "TGA") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the intense Gymnasium-Academy right after $his majority.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "HA") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was given to you by a failed branch campus of the Hippolyta Academy right after $his majority.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } - } else if (failedSchool === "TFS") { - for (const _slave of V.slaves.filter(s => s.origin === "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement." || s.origin === "$He was a Futanari Sister until you engineered $his early enslavement.")) { - cashX(slaveCost(_slave), "slaveTransfer"); - removeSlave(_slave); - } + App.Events.addParagraph(frag, r); + return frag; } - r.push(`Prizes sold.`); - // <</replace>> - // <</link>> - // </span> } }; -- GitLab From 7e042d0a75b494957c4e12c074fd17aeaa8619f0 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 20:48:59 -0400 Subject: [PATCH 46/91] fix --- src/events/RE/resFailure.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index e2b352d3117..1b241e958e7 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -733,7 +733,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { r.push(`The senior Sister of the community of Futanari Sisters in your arcology appears at your penthouse, as you've been expecting since their second missed rent payment. This is quite the occasion, since they never leave their little nest. ${He}'s delightfully nude, and it occurs to you that the Sisters probably do not own clothing at all. ${He} has obviously been crying; puffy eyes and a sniffling nose mar ${his} gorgeous face. ${He} must have caused quite the sensation as ${he} made ${his} way here, in tears, gigantic tits and huge cock bouncing around. To your surprise, ${he} flings ${himself} at your feet, ${his} dick making a painful-sounding slap against the floor and ${his} breasts squashing out to either side of ${him}.`); App.Events.addParagraph(node, r); r = []; - r.push(`"Please," ${he} cries to your feet. "Please take us as slaves. We're indebted, and we'll all be enslaved. You're our friend, you'll treat us better than anyone." Then ${he} whispers, "Please, `); + r.push(`"Please," ${he} cries to your feet. "Please take us as slaves. We're indebted, and we'll all be enslaved. You're our friend, you'll treat us better than anyone." Then ${he} whispers, "Please,`); if (V.PC.slaveSurname) { if (V.PC.title) { r.push(`Mr.`); @@ -744,7 +744,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { } else { r.push(`${V.PC.slaveName},`); } - r.push(` don't make me beg." You tell the prostrate futa you accept. ${His} mood does not improve: ${he} scrabbles around to face away from you, plush body jiggling submissively, and raises ${his} buttocks to spread ${his} pussy and anus for you. "Thank you," ${he} weeps. "Now please rape me, ${Master}. I deserve it. My mismanagement stole my Sisters' years of idyll from them. Please, rape me."`); + r.push(`don't make me beg." You tell the prostrate futa you accept. ${His} mood does not improve: ${he} scrabbles around to face away from you, plush body jiggling submissively, and raises ${his} buttocks to spread ${his} pussy and anus for you. "Thank you," ${he} weeps. "Now please rape me, ${Master}. I deserve it. My mismanagement stole my Sisters' years of idyll from them. Please, rape me."`); App.Events.addParagraph(node, r); r = []; App.Events.addResponses(node, [ @@ -797,19 +797,19 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { actX(_slave, "vaginal"); } } - r.push(`You `); + r.push(`You`); if (V.PC.dick !== 0) { r.push(`whip out your dick`); } else { r.push(`pull on a strap-on, the one you use for disobedient slaves,`); } - r.push(` and kneel down behind the sobbing futa matron. When ${he} feels it touching ${his} pussylips, ${he} whispers "Thank you, ${Master}," through ${his} tears. ${He}'s very, very sexually experienced, so it's harder to make ${him} feel it than it would be for a ${girl} with tighter holes. But you're an expert. You calibrate your pounding to pull just barely too far out, so that ${he} feels you ramming mercilessly into ${him} with each stroke, and so that the slightest mistake from ${him} sends `); + r.push(`and kneel down behind the sobbing futa matron. When ${he} feels it touching ${his} pussylips, ${he} whispers "Thank you, ${Master}," through ${his} tears. ${He}'s very, very sexually experienced, so it's harder to make ${him} feel it than it would be for a ${girl} with tighter holes. But you're an expert. You calibrate your pounding to pull just barely too far out, so that ${he} feels you ramming mercilessly into ${him} with each stroke, and so that the slightest mistake from ${him} sends`); if (V.PC.dick !== 0) { r.push(`your cock`); } else { r.push(`the phallus`); } - r.push(` right up the other hole. Despite ${his} anguish and the brutal fuck, or perhaps because of them, ${he} slowly manages to get hard, and orgasms painfully when you do. ${He} <span class="hotpink">can't seem to stop thanking you,</span> but is quiet when you tell ${him} to be.`); + r.push(`right up the other hole. Despite ${his} anguish and the brutal fuck, or perhaps because of them, ${he} slowly manages to get hard, and orgasms painfully when you do. ${He} <span class="hotpink">can't seem to stop thanking you,</span> but is quiet when you tell ${him} to be.`); App.Events.addParagraph(frag, r); return frag; } -- GitLab From 64525438a53c9230cf1af7ed3bc0e2770e14e295 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Mon, 31 May 2021 20:53:11 -0400 Subject: [PATCH 47/91] 4.0.0 player desc work --- src/player/managePersonalAffairs.js | 76 ++--------------------------- 1 file changed, 3 insertions(+), 73 deletions(-) diff --git a/src/player/managePersonalAffairs.js b/src/player/managePersonalAffairs.js index af95308071c..e126f5728a9 100644 --- a/src/player/managePersonalAffairs.js +++ b/src/player/managePersonalAffairs.js @@ -43,82 +43,12 @@ App.UI.managePersonalAffairs = function() { const text = []; - let freckled = ''; - let ageDifference = ''; - - if (PC.markings === "freckles") { - freckled = ` freckled`; - } else if (PC.markings === "heavily freckled") { - freckled = ` heavily freckled`; - } - App.UI.DOM.appendNewElement("h2", appearanceDiv, `Appearance`); text.push(`You pause for a moment from your busy day to day life to return to ${V.masterSuite ? V.masterSuiteName : `your room`} to consider some things about yourself.`); - - if (V.geneticMappingUpgrade >= 1 && PC.genes === "XY" && V.seeDicksAffectsPregnancy === 0) { - text.push(`Analysis of your sperm shows that you have a ${PC.spermY}% chance of fathering a son.`); - } - - text.push(App.UI.DOM.makeElement("div", `You take yourself in in a full length mirror. You are ${addA(PC.race)} ${PC.dick && PC.vagina !== -1 ? `futanari` : PC.dick ? `man` : `woman`} with${freckled} ${PC.skin} skin, ${PC.hColor} hair, ${App.Desc.eyesColor(PC)} and a perfect ${PC.faceShape} face.`)); - - if (PC.actualAge >= 65) { - if (PC.visualAge > PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge},</span> though perhaps it might be time to undo it.`; - } else if (PC.visualAge < PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge}.</span> If only your body agreed with your looks.`; - } - - text.push(`You're <span class="orange">${PC.actualAge}</span> and definitely feeling it.`, ageDifference); - } else if (PC.actualAge >= 50) { - if (PC.visualAge > PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge}.</span>`; - } else if (PC.visualAge < PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge}.</span>`; - } - - text.push(`You're <span class="orange">${PC.actualAge}</span> and starting to feel it.`, ageDifference); - } else if (PC.actualAge >= 35) { - if (PC.visualAge > PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge}</span> and reap the respect that comes with it.`; - } else if (PC.visualAge < PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge},</span> recapturing your youth.`; - } - - text.push(`You're <span class="orange">${PC.actualAge}</span> and strong.`, ageDifference); - } else { - if (PC.visualAge > PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge}</span> and reap the respect that comes with it.`; - } else if (PC.visualAge < PC.actualAge) { - ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge},</span> even though society may find your looks uncomfortable.`; - } - - text.push(`You're <span class="orange">${PC.actualAge}</span> and full of vigor.`, ageDifference); - } - - if (V.playerAging) { - text.push(`Your birthday is ${PC.birthWeek === 51 ? `next week` : `in ${52 - PC.birthWeek} weeks`}.`); - } - - text.push( - `Looking down`, - App.Desc.Player.boobs(), - App.Desc.Player.belly(), - ); - - if (PC.prostate > 2 && PC.belly < 10000) { - text.push(`Your pubic mound bulges outward noticeably thanks to your massive prostate.`); - } else if (PC.prostate === 2 && PC.belly < 5000) { - text.push(`Your pubic mound swells outward slightly due to your oversized prostate.`); - } - - text.push( - `Beneath all that,`, - App.Desc.Player.crotch(), - `Around back,`, - App.Desc.Player.butt(), - ); - + // double return + text.push(App.Desc.Player.longDescription(PC)); + // double return if (V.playerSurgery === 0) { text.push(App.UI.DOM.passageLink(`Visit your plastic surgeon`, "Elective Surgery", () => { V.playerSurgery = 4; -- GitLab From b7948ac208fa4f5d16d3bbcb5eb4500688924fb1 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Mon, 31 May 2021 20:54:20 -0400 Subject: [PATCH 48/91] push the actual description file --- src/player/desc/playerDescription.js | 74 ++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/player/desc/playerDescription.js diff --git a/src/player/desc/playerDescription.js b/src/player/desc/playerDescription.js new file mode 100644 index 00000000000..02595890532 --- /dev/null +++ b/src/player/desc/playerDescription.js @@ -0,0 +1,74 @@ +App.Desc.Player.longDescription = function(PC = V.PC) { + let r = []; + + let freckled = ''; + let ageDifference = ''; + + if (PC.markings === "freckles") { + freckled = ` freckled`; + } else if (PC.markings === "heavily freckled") { + freckled = ` heavily freckled`; + } + + r.push(App.UI.DOM.makeElement("div", `You take yourself in in a full length mirror. You are ${addA(PC.race)} ${PC.dick && PC.vagina !== -1 ? `futanari` : PC.dick ? `man` : `woman`} with${freckled} ${PC.skin} skin, ${PC.hColor} hair, ${App.Desc.eyesColor(PC)} and a perfect ${PC.faceShape} face.`)); + + if (PC.actualAge >= 65) { + if (PC.visualAge > PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge},</span> though perhaps it might be time to undo it.`; + } else if (PC.visualAge < PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge}.</span> If only your body agreed with your looks.`; + } + + r.push(`You're <span class="orange">${PC.actualAge}</span> and definitely feeling it.`, ageDifference); + } else if (PC.actualAge >= 50) { + if (PC.visualAge > PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge}.</span>`; + } else if (PC.visualAge < PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge}.</span>`; + } + + r.push(`You're <span class="orange">${PC.actualAge}</span> and starting to feel it.`, ageDifference); + } else if (PC.actualAge >= 35) { + if (PC.visualAge > PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge}</span> and reap the respect that comes with it.`; + } else if (PC.visualAge < PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge},</span> recapturing your youth.`; + } + + r.push(`You're <span class="orange">${PC.actualAge}</span> and strong.`, ageDifference); + } else { + if (PC.visualAge > PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look an older ${PC.visualAge}</span> and reap the respect that comes with it.`; + } else if (PC.visualAge < PC.actualAge) { + ageDifference = `You've taken measures to <span class="lime">look a younger ${PC.visualAge},</span> even though society may find your looks uncomfortable.`; + } + + r.push(`You're <span class="orange">${PC.actualAge}</span> and full of vigor.`, ageDifference); + } + + if (V.playerAging) { + r.push(`Your birthday is ${PC.birthWeek === 51 ? `next week` : `in ${52 - PC.birthWeek} weeks`}.`); + } + + r.push( + `Looking down`, + App.Desc.Player.boobs(), + App.Desc.Player.belly(), + ); + + if (PC.prostate > 2 && PC.belly < 10000) { + r.push(`Your pubic mound bulges outward noticeably thanks to your massive prostate.`); + } else if (PC.prostate === 2 && PC.belly < 5000) { + r.push(`Your pubic mound swells outward slightly due to your oversized prostate.`); + } + + r.push(`Beneath all that,`); + r.push(App.Desc.Player.crotch()); + if (V.geneticMappingUpgrade >= 1 && PC.genes === "XY" && V.seeDicksAffectsPregnancy === 0) { + r.push(`Analysis of your sperm shows that you have a ${PC.spermY}% chance of fathering a son.`); + } + r.push(`Around back,`); + r.push(App.Desc.Player.butt()); + + return r.join(" "); +}; \ No newline at end of file -- GitLab From d03f707302f7b2c918f1e6e714647c0f974c203d Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 21:14:38 -0400 Subject: [PATCH 49/91] remove underscore --- src/events/RE/resFailure.js | 1204 +++++++++++++++++------------------ 1 file changed, 602 insertions(+), 602 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index 1b241e958e7..1d8fb23ab41 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -20,7 +20,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { repX(-200, "event"); V.arcologies[0].prosperity -= 2; - const _slavesToAdd = 5; + const slavesToAdd = 5; V[failedSchool].schoolPresent = 0; V[failedSchool].subsidize = 0; V[failedSchool].schoolProsperity = 0; @@ -28,695 +28,695 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { /** @type {App.Entity.SlaveState[]} */ const slaveArray = []; if (failedSchool === "TSS") { - for (let _i = 0; _i < _slavesToAdd-1; _i++) { - const _slave = GenerateNewSlave("XX", {ageOverridesPedoMode: 1}); - _slave.career = "a slave"; - _slave.butt = either(1, 2, 2, 3); - _slave.boobs = either(200, 300, 300, 400); + for (let _i = 0; _i < slavesToAdd-1; _i++) { + const slave = GenerateNewSlave("XX", {ageOverridesPedoMode: 1}); + slave.career = "a slave"; + slave.butt = either(1, 2, 2, 3); + slave.boobs = either(200, 300, 300, 400); if (V.TSS.schoolUpgrade === 1) { - _slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School after $he was retrained as a slave $girl."; - _slave.butt++; - _slave.boobs += 200; + slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School after $he was retrained as a slave $girl."; + slave.butt++; + slave.boobs += 200; } else { - _slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School right after $his majority."; + slave.origin = "$He was given to you by a failed branch campus of the Slavegirl School right after $his majority."; } - _slave.actualAge = (V.TSS.schoolUpgrade === 1 ? random(36, 42) : 18); - _slave.anus = (V.TSS.schoolUpgrade === 1 ? 1 : 0); - _slave.vagina = (V.TSS.schoolUpgrade === 1 ? 1 : 0); - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.intelligenceImplant = 15; - _slave.teeth = "normal"; - _slave.intelligence = random(-50, 95); - _slave.devotion = random(25, 45); - _slave.trust = random(25, 45); - setHealth(_slave, jsRandom(50, 60), 0, 0, 0); - _slave.preg = 0; - _slave.weight = 0; - _slave.chem = 20; - _slave.skill.vaginal = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); - _slave.skill.oral = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); - _slave.skill.anal = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); - _slave.skill.whoring = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); - _slave.skill.entertainment = 15; - _slave.skill.combat = 0; - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; - _slave.sexualFlaw = either("none"); - _slave.behavioralFlaw = either("none"); - _slave.hStyle = "tails"; - _slave.custom.tattoo = "$He has the simple logo of the corporation that operates the Slavegirl School tattooed on $his left cheek."; - slaveArray.push(_slave); + slave.actualAge = (V.TSS.schoolUpgrade === 1 ? random(36, 42) : 18); + slave.anus = (V.TSS.schoolUpgrade === 1 ? 1 : 0); + slave.vagina = (V.TSS.schoolUpgrade === 1 ? 1 : 0); + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.intelligenceImplant = 15; + slave.teeth = "normal"; + slave.intelligence = random(-50, 95); + slave.devotion = random(25, 45); + slave.trust = random(25, 45); + setHealth(slave, jsRandom(50, 60), 0, 0, 0); + slave.preg = 0; + slave.weight = 0; + slave.chem = 20; + slave.skill.vaginal = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + slave.skill.oral = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + slave.skill.anal = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + slave.skill.whoring = (V.TUO.schoolUpgrade !== 0 ? 15 : 0); + slave.skill.entertainment = 15; + slave.skill.combat = 0; + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; + slave.sexualFlaw = either("none"); + slave.behavioralFlaw = either("none"); + slave.hStyle = "tails"; + slave.custom.tattoo = "$He has the simple logo of the corporation that operates the Slavegirl School tattooed on $his left cheek."; + slaveArray.push(slave); } } else if (failedSchool === "TUO") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave(null, {minAge: V.minimumSlaveAge, maxAge: V.fertilityAge, disableDisability: 1}); - _slave.origin = "$He was given to you by a failed branch of The Utopian Orphanage right after $his graduation."; - _slave.career = "a slave"; - setHealth(_slave, jsRandom(60, 80), 0, 0, 0); - _slave.devotion = random(50, 75); - _slave.trust = random(50, 75); - _slave.face = (V.TUO.schoolUpgrade === 1 ? random(30, 100) : random(10, 65)); - _slave.intelligence = (V.TUO.schoolUpgrade === 1 ? random(55, 100) : random(35, 75)); - _slave.intelligenceImplant = (V.TUO.schoolUpgrade === 1 ? 30 : 15); - _slave.accent = (V.TUO.schoolUpgrade === 1 ? 1 : either(0, 1)); - _slave.skill.entertainment = (V.TUO.schoolUpgrade === 1 ? 75 : 45); - _slave.skill.combat = (V.TUO.schoolUpgrade === 1 ? 1 : 0); - _slave.skill.vaginal = (V.TUO.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.oral = (V.TUO.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.anal = (V.TUO.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.whoring = (V.TUO.schoolUpgrade === 2 ? 15 : 0); - _slave.energy = (V.TUO.schoolUpgrade === 2 ? random(40, 95) : random(15, 65)); - _slave.faceImplant = 0; - _slave.weight = random(-17, 17); - _slave.muscles = random(0, 20); - _slave.lips = random(10, 40); - _slave.lipsImplant = 0; - _slave.boobs = 50; - _slave.boobsImplant = 0; - _slave.butt = random(0, 2); - _slave.buttImplant = 0; - _slave.vagina = 0; - _slave.anus = 0; - slaveArray.push(_slave); + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave(null, {minAge: V.minimumSlaveAge, maxAge: V.fertilityAge, disableDisability: 1}); + slave.origin = "$He was given to you by a failed branch of The Utopian Orphanage right after $his graduation."; + slave.career = "a slave"; + setHealth(slave, jsRandom(60, 80), 0, 0, 0); + slave.devotion = random(50, 75); + slave.trust = random(50, 75); + slave.face = (V.TUO.schoolUpgrade === 1 ? random(30, 100) : random(10, 65)); + slave.intelligence = (V.TUO.schoolUpgrade === 1 ? random(55, 100) : random(35, 75)); + slave.intelligenceImplant = (V.TUO.schoolUpgrade === 1 ? 30 : 15); + slave.accent = (V.TUO.schoolUpgrade === 1 ? 1 : either(0, 1)); + slave.skill.entertainment = (V.TUO.schoolUpgrade === 1 ? 75 : 45); + slave.skill.combat = (V.TUO.schoolUpgrade === 1 ? 1 : 0); + slave.skill.vaginal = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + slave.skill.oral = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + slave.skill.anal = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + slave.skill.whoring = (V.TUO.schoolUpgrade === 2 ? 15 : 0); + slave.energy = (V.TUO.schoolUpgrade === 2 ? random(40, 95) : random(15, 65)); + slave.faceImplant = 0; + slave.weight = random(-17, 17); + slave.muscles = random(0, 20); + slave.lips = random(10, 40); + slave.lipsImplant = 0; + slave.boobs = 50; + slave.boobsImplant = 0; + slave.butt = random(0, 2); + slave.buttImplant = 0; + slave.vagina = 0; + slave.anus = 0; + slaveArray.push(slave); } } else if (failedSchool === "TCR") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave("XX", { + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave("XX", { minAge: V.fertilityAge+6, maxAge: 32, disableDisability: 1, ageOverridesPedoMode: 1 }); - _slave.slaveName = setup.cowSlaveNames.random(); - _slave.slaveSurname = 0; - _slave.career = "a dairy cow"; - _slave.butt = either(5, 6, 6, 7, 7, 8, 9); - _slave.boobs = 30000; - _slave.lactation = 1; - _slave.lactationDuration = 2; - _slave.lactationAdaptation = 100; - _slave.origin = "$He is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch."; - _slave.anus = 1; - _slave.vagina = 5; - _slave.vaginaLube = 2; - _slave.intelligence = either(-100, -100, -100, -96, -80, -70, -50); - _slave.devotion = 100; - _slave.trust = 100; - setHealth(_slave, jsRandom(50, 60), 0, 0, 0); - _slave.preg = random(30, 39); - _slave.pregType = random(3, 6); - _slave.pregKnown = 1; - _slave.pregWeek = _slave.preg; - SetBellySize(_slave); - _slave.bellySag = 10; - _slave.bellySagPreg = 10; - _slave.hips = either(2, 2, 2, 2, 3); - _slave.counter.birthsTotal = random(10, 15); - _slave.geneticQuirks.hyperFertility = 2; - _slave.weight = random(60, 160); - _slave.muscles = random(60, 80); - _slave.chem = 10; - _slave.skill.vaginal = 0; - _slave.skill.oral = 0; - _slave.skill.anal = 0; - _slave.skill.whoring = 0; - _slave.skill.entertainment = 0; - _slave.skill.combat = 0; - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; - _slave.heels = 1; - _slave.fetish = "mindbroken"; - _slave.fetishStrength = 10; - _slave.fetishKnown = 1; - _slave.sexualFlaw = either("none"); - _slave.behavioralFlaw = either("none"); - _slave.sexualQuirk = either("none"); - _slave.behavioralQuirk = either("none"); - _slave.hStyle = "neat"; - _slave.collar = "leather with cowbell"; - _slave.brand["right thigh"] = "the logo of the Cattle Ranch"; - _slave.boobsTat = "bovine patterns"; - _slave.buttTat = "bovine patterns"; - _slave.vaginaTat = "bovine patterns"; - _slave.lipsTat = "bovine patterns"; - _slave.anusTat = "bovine patterns"; - _slave.shouldersTat = "bovine patterns"; - _slave.backTat = "bovine patterns"; - _slave.armsTat = "bovine patterns"; - _slave.legsTat = "bovine patterns"; - _slave.stampTat = "bovine patterns"; - slaveArray.push(_slave); + slave.slaveName = setup.cowSlaveNames.random(); + slave.slaveSurname = 0; + slave.career = "a dairy cow"; + slave.butt = either(5, 6, 6, 7, 7, 8, 9); + slave.boobs = 30000; + slave.lactation = 1; + slave.lactationDuration = 2; + slave.lactationAdaptation = 100; + slave.origin = "$He is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch."; + slave.anus = 1; + slave.vagina = 5; + slave.vaginaLube = 2; + slave.intelligence = either(-100, -100, -100, -96, -80, -70, -50); + slave.devotion = 100; + slave.trust = 100; + setHealth(slave, jsRandom(50, 60), 0, 0, 0); + slave.preg = random(30, 39); + slave.pregType = random(3, 6); + slave.pregKnown = 1; + slave.pregWeek = slave.preg; + SetBellySize(slave); + slave.bellySag = 10; + slave.bellySagPreg = 10; + slave.hips = either(2, 2, 2, 2, 3); + slave.counter.birthsTotal = random(10, 15); + slave.geneticQuirks.hyperFertility = 2; + slave.weight = random(60, 160); + slave.muscles = random(60, 80); + slave.chem = 10; + slave.skill.vaginal = 0; + slave.skill.oral = 0; + slave.skill.anal = 0; + slave.skill.whoring = 0; + slave.skill.entertainment = 0; + slave.skill.combat = 0; + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; + slave.heels = 1; + slave.fetish = "mindbroken"; + slave.fetishStrength = 10; + slave.fetishKnown = 1; + slave.sexualFlaw = either("none"); + slave.behavioralFlaw = either("none"); + slave.sexualQuirk = either("none"); + slave.behavioralQuirk = either("none"); + slave.hStyle = "neat"; + slave.collar = "leather with cowbell"; + slave.brand["right thigh"] = "the logo of the Cattle Ranch"; + slave.boobsTat = "bovine patterns"; + slave.buttTat = "bovine patterns"; + slave.vaginaTat = "bovine patterns"; + slave.lipsTat = "bovine patterns"; + slave.anusTat = "bovine patterns"; + slave.shouldersTat = "bovine patterns"; + slave.backTat = "bovine patterns"; + slave.armsTat = "bovine patterns"; + slave.legsTat = "bovine patterns"; + slave.stampTat = "bovine patterns"; + slaveArray.push(slave); } } else if (failedSchool === "GRI") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave("XX", {disableDisability: 1}); - _slave.origin = "$He was given to you by a failed subsidiary lab of the Growth Research Institute right after $his use as a test subject ended."; - _slave.career = "a slave"; - _slave.intelligenceImplant = 0; - _slave.devotion = random(-15, -5); - _slave.trust = random(-25, -45); - _slave.chem = 100; + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave("XX", {disableDisability: 1}); + slave.origin = "$He was given to you by a failed subsidiary lab of the Growth Research Institute right after $his use as a test subject ended."; + slave.career = "a slave"; + slave.intelligenceImplant = 0; + slave.devotion = random(-15, -5); + slave.trust = random(-25, -45); + slave.chem = 100; if (V.GRI.schoolUpgrade === 1) { - setHealth(_slave, 200, 0, 0, 0); + setHealth(slave, 200, 0, 0, 0); } else { - setHealth(_slave, jsRandom(-70, 100), 0); + setHealth(slave, jsRandom(-70, 100), 0); } - _slave.height = random(150, 190); - _slave.butt = random(4, 10); - _slave.boobs = 200 * (V.GRI.schoolUpgrade === 2 ? random(15, 30) : random(4, 20)); + slave.height = random(150, 190); + slave.butt = random(4, 10); + slave.boobs = 200 * (V.GRI.schoolUpgrade === 2 ? random(15, 30) : random(4, 20)); if (V.GRI.schoolUpgrade === 2) { - _slave.lactation = _slave.lactationDuration = 2; + slave.lactation = slave.lactationDuration = 2; } - _slave.nipples = either("huge", "inverted"); - _slave.areolae = either(0, 1, 2, 3, 4); - _slave.clit = either(0, 1, 2, 3); - _slave.lips = random(5, 85); - _slave.anus = 0; - _slave.vagina = 0; - _slave.preg = 0; - _slave.weight = 0; - _slave.skill.vaginal = 0; - _slave.skill.oral = 0; - _slave.skill.anal = 0; - _slave.skill.whoring = 0; - _slave.skill.entertainment = 0; - _slave.skill.combat = 0; - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; - _slave.actualAge = 19; - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.behavioralFlaw = either("odd"); - _slave.hStyle = "shaved"; - _slave.hLength = 0; - _slave.custom.tattoo = "$He has a barcode that identified $him when $he was a test subject at the Growth Research Institute tattooed on $his left cheek."; - slaveArray.push(_slave); + slave.nipples = either("huge", "inverted"); + slave.areolae = either(0, 1, 2, 3, 4); + slave.clit = either(0, 1, 2, 3); + slave.lips = random(5, 85); + slave.anus = 0; + slave.vagina = 0; + slave.preg = 0; + slave.weight = 0; + slave.skill.vaginal = 0; + slave.skill.oral = 0; + slave.skill.anal = 0; + slave.skill.whoring = 0; + slave.skill.entertainment = 0; + slave.skill.combat = 0; + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; + slave.actualAge = 19; + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.behavioralFlaw = either("odd"); + slave.hStyle = "shaved"; + slave.hLength = 0; + slave.custom.tattoo = "$He has a barcode that identified $him when $he was a test subject at the Growth Research Institute tattooed on $his left cheek."; + slaveArray.push(slave); } } else if (failedSchool === "SCP") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave("XX", {disableDisability: 1}); - _slave.origin = "$He was given to you by a failed branch campus of St. Claver Preparatory after $he served as a plastic surgeon's passing final exam."; - _slave.chem = 20; - _slave.career = "a slave"; - _slave.intelligenceImplant = (V.SCP.schoolUpgrade === 1 ? 0 : 15); - _slave.intelligence = (V.SCP.schoolUpgrade === 1 ? -70 : random(-50, 50)); - _slave.devotion = _slave.trust = (V.SCP.schoolUpgrade === 1 ? 20 : random(25, 45)); + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave("XX", {disableDisability: 1}); + slave.origin = "$He was given to you by a failed branch campus of St. Claver Preparatory after $he served as a plastic surgeon's passing final exam."; + slave.chem = 20; + slave.career = "a slave"; + slave.intelligenceImplant = (V.SCP.schoolUpgrade === 1 ? 0 : 15); + slave.intelligence = (V.SCP.schoolUpgrade === 1 ? -70 : random(-50, 50)); + slave.devotion = slave.trust = (V.SCP.schoolUpgrade === 1 ? 20 : random(25, 45)); if (V.SCP.schoolUpgrade !== 1) { - _slave.teeth = "normal"; + slave.teeth = "normal"; } - setHealth(_slave, 100, 0, 0, 0); - _slave.heightImplant = 1; - _slave.height += 10; - _slave.buttImplant = (4-_slave.butt); - _slave.butt += _slave.buttImplant; - _slave.boobsImplantType = "normal"; - _slave.boobsImplant = (2000-_slave.boobs); - _slave.boobs += _slave.boobsImplant; - _slave.boobsImplantType = "fillable"; - _slave.nipples = "tiny"; - _slave.areolae = 0; - _slave.clit = 0; - _slave.lipsImplant = (75-_slave.lips); - _slave.lips += _slave.lipsImplant; - _slave.faceImplant = 35; - _slave.face = random(35, 80); - _slave.anus = 0; - _slave.vagina = 0; - _slave.preg = 0; - _slave.weight = -20; - _slave.skill.vaginal = (V.SCP.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.oral = (V.SCP.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.anal = (V.SCP.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.whoring = (V.SCP.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.entertainment = (V.SCP.schoolUpgrade === 2 ? 15 : 0); - _slave.skill.combat = 0; - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; - _slave.actualAge = 19; - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.sexualFlaw = either("none"); - _slave.behavioralFlaw = either("none"); - _slave.hStyle = "tails"; - _slave.hColor = "blonde"; - _slave.pubicHColor = "blonde"; - _slave.underArmHColor = "blonde"; - _slave.race = "white"; - _slave.skin = "sun tanned"; - _slave.override_H_Color = 1; - _slave.override_Arm_H_Color = 1; - _slave.override_Pubic_H_Color = 1; - _slave.override_Race = 1; - _slave.override_Skin = 1; - _slave.custom.tattoo = "$He has the coat of arms of St. Claver Preparatory tattooed on $his left cheek."; - slaveArray.push(_slave); + setHealth(slave, 100, 0, 0, 0); + slave.heightImplant = 1; + slave.height += 10; + slave.buttImplant = (4-slave.butt); + slave.butt += slave.buttImplant; + slave.boobsImplantType = "normal"; + slave.boobsImplant = (2000-slave.boobs); + slave.boobs += slave.boobsImplant; + slave.boobsImplantType = "fillable"; + slave.nipples = "tiny"; + slave.areolae = 0; + slave.clit = 0; + slave.lipsImplant = (75-slave.lips); + slave.lips += slave.lipsImplant; + slave.faceImplant = 35; + slave.face = random(35, 80); + slave.anus = 0; + slave.vagina = 0; + slave.preg = 0; + slave.weight = -20; + slave.skill.vaginal = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + slave.skill.oral = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + slave.skill.anal = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + slave.skill.whoring = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + slave.skill.entertainment = (V.SCP.schoolUpgrade === 2 ? 15 : 0); + slave.skill.combat = 0; + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; + slave.actualAge = 19; + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.sexualFlaw = either("none"); + slave.behavioralFlaw = either("none"); + slave.hStyle = "tails"; + slave.hColor = "blonde"; + slave.pubicHColor = "blonde"; + slave.underArmHColor = "blonde"; + slave.race = "white"; + slave.skin = "sun tanned"; + slave.override_H_Color = 1; + slave.override_Arm_H_Color = 1; + slave.override_Pubic_H_Color = 1; + slave.override_Race = 1; + slave.override_Skin = 1; + slave.custom.tattoo = "$He has the coat of arms of St. Claver Preparatory tattooed on $his left cheek."; + slaveArray.push(slave); } } else if (failedSchool === "LDE") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave("XY", {disableDisability: 1}); - _slave.origin = "$He was given to you by a failed branch campus of the innovative École des Enculées right after $his graduation."; - _slave.career = "a slave"; - _slave.intelligenceImplant = 0; - _slave.chem = 100; - _slave.devotion = (V.LDE.schoolUpgrade === 1 ? 20 : random(60, 70)); - _slave.trust = (V.LDE.schoolUpgrade === 1 ? 20 : random(55, 60)); - setHealth(_slave, jsRandom(60, 80), 0, 0, 0); - _slave.muscles = 0; + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave("XY", {disableDisability: 1}); + slave.origin = "$He was given to you by a failed branch campus of the innovative École des Enculées right after $his graduation."; + slave.career = "a slave"; + slave.intelligenceImplant = 0; + slave.chem = 100; + slave.devotion = (V.LDE.schoolUpgrade === 1 ? 20 : random(60, 70)); + slave.trust = (V.LDE.schoolUpgrade === 1 ? 20 : random(55, 60)); + setHealth(slave, jsRandom(60, 80), 0, 0, 0); + slave.muscles = 0; if (random(1, 100) > 75) { - _slave.geneticQuirks.rearLipedema = 2; - _slave.butt = random(6, 16); + slave.geneticQuirks.rearLipedema = 2; + slave.butt = random(6, 16); } else { - _slave.butt = random(4, 5); + slave.butt = random(4, 5); } - _slave.face = random(20, 60); - _slave.boobs = either(500, 650, 800); - _slave.waist = -15; - _slave.lips = 35; - _slave.balls = (V.LDE.schoolUpgrade === 2 ? either(3, 4) : either(1, 1, 1, 2)); - _slave.dick = (V.LDE.schoolUpgrade === 2 ? either(3, 4) : either(1, 1, 1, 2)); - if (_slave.foreskin > 0) { - _slave.foreskin = _slave.dick; + slave.face = random(20, 60); + slave.boobs = either(500, 650, 800); + slave.waist = -15; + slave.lips = 35; + slave.balls = (V.LDE.schoolUpgrade === 2 ? either(3, 4) : either(1, 1, 1, 2)); + slave.dick = (V.LDE.schoolUpgrade === 2 ? either(3, 4) : either(1, 1, 1, 2)); + if (slave.foreskin > 0) { + slave.foreskin = slave.dick; } - if (_slave.balls > 0) { - _slave.scrotum = _slave.balls; + if (slave.balls > 0) { + slave.scrotum = slave.balls; } - _slave.anus = 2; - _slave.vagina = -1; - _slave.preg = 0; - _slave.weight = random(0, 20); - _slave.skill.vaginal = 0; - _slave.skill.oral = 15; - _slave.skill.anal = 100; - _slave.skill.whoring = 15; - _slave.skill.entertainment = 15; - _slave.skill.combat = 0; - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; - _slave.actualAge = 19; - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.sexualFlaw = "none"; - _slave.behavioralFlaw = either("none", "odd"); - _slave.fetishStrength = either(1, 2); - _slave.fetish = "buttslut"; - _slave.fetishKnown = 1; - _slave.attrKnown = 1; - _slave.hStyle = "tails"; - _slave.hLength = 100; - _slave.custom.tattoo = "$He has the buttock-shaped symbol of the École des Enculées that created $his tattooed on $his left cheek."; - slaveArray.push(_slave); + slave.anus = 2; + slave.vagina = -1; + slave.preg = 0; + slave.weight = random(0, 20); + slave.skill.vaginal = 0; + slave.skill.oral = 15; + slave.skill.anal = 100; + slave.skill.whoring = 15; + slave.skill.entertainment = 15; + slave.skill.combat = 0; + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; + slave.actualAge = 19; + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.sexualFlaw = "none"; + slave.behavioralFlaw = either("none", "odd"); + slave.fetishStrength = either(1, 2); + slave.fetish = "buttslut"; + slave.fetishKnown = 1; + slave.attrKnown = 1; + slave.hStyle = "tails"; + slave.hLength = 100; + slave.custom.tattoo = "$He has the buttock-shaped symbol of the École des Enculées that created $his tattooed on $his left cheek."; + slaveArray.push(slave); } } else if (failedSchool === "NUL") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave(null, {minAge: 16, maxAge: 24, disableDisability: 1}); - _slave.origin = "$He was given to you by a failed branch campus of Nueva Universidad de Libertad right after $his graduation."; - _slave.career = "a slave"; - setHealth(_slave, jsRandom(60, 80), 0, 0, 0); - _slave.devotion = random(60, 75); - _slave.trust = random(60, 75); - _slave.intelligenceImplant = 30; - _slave.intelligence = (V.NUL.schoolUpgrade === 1 ? random(50, 70) : random(20, 50)); - _slave.skill.whoring = (V.NUL.schoolUpgrade === 1 ? random(70, 80) : random(40, 50)); - _slave.skill.entertainment = (V.NUL.schoolUpgrade === 1 ? random(70, 80) : random(40, 50)); - _slave.skill.anal = (V.NUL.schoolUpgrade === 2 ? random(60, 80) : random(10, 30)); - _slave.skill.oral = (V.NUL.schoolUpgrade === 2 ? random(70, 90) : random(20, 40)); - _slave.anus = (V.NUL.schoolUpgrade === 2 ? random(1, 3) : either(0, 0, 0, 0, 1, 1, 1)); - _slave.muscles = 0; - _slave.face = random(15, 55); - _slave.faceShape = "androgynous"; - _slave.boobs = 50; - _slave.butt = 0; - _slave.vagina = -1; - _slave.clit = 0; - _slave.dick = 0; - _slave.balls = 0; - _slave.preg = 0; - _slave.eyebrowHStyle = "bald"; - _slave.underArmHStyle = "bald"; - _slave.pubicHStyle = "bald"; - _slave.hStyle = "bald"; - _slave.custom.tattoo = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder."; - slaveArray.push(_slave); + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave(null, {minAge: 16, maxAge: 24, disableDisability: 1}); + slave.origin = "$He was given to you by a failed branch campus of Nueva Universidad de Libertad right after $his graduation."; + slave.career = "a slave"; + setHealth(slave, jsRandom(60, 80), 0, 0, 0); + slave.devotion = random(60, 75); + slave.trust = random(60, 75); + slave.intelligenceImplant = 30; + slave.intelligence = (V.NUL.schoolUpgrade === 1 ? random(50, 70) : random(20, 50)); + slave.skill.whoring = (V.NUL.schoolUpgrade === 1 ? random(70, 80) : random(40, 50)); + slave.skill.entertainment = (V.NUL.schoolUpgrade === 1 ? random(70, 80) : random(40, 50)); + slave.skill.anal = (V.NUL.schoolUpgrade === 2 ? random(60, 80) : random(10, 30)); + slave.skill.oral = (V.NUL.schoolUpgrade === 2 ? random(70, 90) : random(20, 40)); + slave.anus = (V.NUL.schoolUpgrade === 2 ? random(1, 3) : either(0, 0, 0, 0, 1, 1, 1)); + slave.muscles = 0; + slave.face = random(15, 55); + slave.faceShape = "androgynous"; + slave.boobs = 50; + slave.butt = 0; + slave.vagina = -1; + slave.clit = 0; + slave.dick = 0; + slave.balls = 0; + slave.preg = 0; + slave.eyebrowHStyle = "bald"; + slave.underArmHStyle = "bald"; + slave.pubicHStyle = "bald"; + slave.hStyle = "bald"; + slave.custom.tattoo = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder."; + slaveArray.push(slave); } } else if (failedSchool === "TGA") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave("XY", {disableDisability: 1}); - _slave.origin = "$He was given to you by a failed branch campus of the intense Gymnasium-Academy right after $his majority."; - _slave.career = "a slave"; - _slave.intelligenceImplant = 15; - _slave.teeth = "normal"; - _slave.intelligence = random(-50, 95); - _slave.chem = 20; - _slave.devotion = (V.TGA.schoolUpgrade === 1 ? 20 : random(25, 45)); - _slave.trust = (V.TGA.schoolUpgrade === 1 ? 20 : random(25, 45)); - setHealth(_slave, 100, 0, 0, 0); - _slave.muscles = either(20, 50, 50); - _slave.butt = either(2, 2, 3); - _slave.boobs = either(100, 200); - _slave.dick = random(3, 5); - if (_slave.foreskin > 0) { - _slave.foreskin = _slave.dick; + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave("XY", {disableDisability: 1}); + slave.origin = "$He was given to you by a failed branch campus of the intense Gymnasium-Academy right after $his majority."; + slave.career = "a slave"; + slave.intelligenceImplant = 15; + slave.teeth = "normal"; + slave.intelligence = random(-50, 95); + slave.chem = 20; + slave.devotion = (V.TGA.schoolUpgrade === 1 ? 20 : random(25, 45)); + slave.trust = (V.TGA.schoolUpgrade === 1 ? 20 : random(25, 45)); + setHealth(slave, 100, 0, 0, 0); + slave.muscles = either(20, 50, 50); + slave.butt = either(2, 2, 3); + slave.boobs = either(100, 200); + slave.dick = random(3, 5); + if (slave.foreskin > 0) { + slave.foreskin = slave.dick; } - if (_slave.balls > 0) { - _slave.scrotum = _slave.balls; + if (slave.balls > 0) { + slave.scrotum = slave.balls; } - _slave.balls = random(3, 5); - _slave.anus = 0; - _slave.vagina = -1; - _slave.preg = 0; - _slave.weight = 0; - _slave.skill.vaginal = 0; - _slave.skill.oral = 0; - _slave.skill.anal = 0; - _slave.skill.whoring = 0; - _slave.skill.entertainment = 0; - _slave.skill.combat = (V.TGA.schoolUpgrade === 2 ? 1 : 0); - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; - _slave.actualAge = 18; - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.sexualFlaw = either("apathetic", "none"); - _slave.behavioralFlaw = either("arrogant", "none", "odd"); - _slave.hStyle = "short"; - _slave.hLength = 2; - _slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained ${him}"; - slaveArray.push(_slave); + slave.balls = random(3, 5); + slave.anus = 0; + slave.vagina = -1; + slave.preg = 0; + slave.weight = 0; + slave.skill.vaginal = 0; + slave.skill.oral = 0; + slave.skill.anal = 0; + slave.skill.whoring = 0; + slave.skill.entertainment = 0; + slave.skill.combat = (V.TGA.schoolUpgrade === 2 ? 1 : 0); + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; + slave.actualAge = 18; + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.sexualFlaw = either("apathetic", "none"); + slave.behavioralFlaw = either("arrogant", "none", "odd"); + slave.hStyle = "short"; + slave.hLength = 2; + slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained ${him}"; + slaveArray.push(slave); } } else if (failedSchool === "HA") { - for (let _i = 0; _i < _slavesToAdd; _i++) { - const _slave = GenerateNewSlave("XX", {disableDisability: 1}); - _slave.origin = "$He was given to you by a failed branch campus of the Hippolyta Academy right after $his majority."; - _slave.career = "a slave"; - _slave.intelligenceImplant = 15; - _slave.teeth = "normal"; - _slave.intelligence = random(0, 95); - _slave.chem = 20; - _slave.devotion = (V.HA.schoolUpgrade === 1 ? 20 : random(25, 45)); - _slave.trust = (V.HA.schoolUpgrade === 1 ? 20 : random(25, 45)); - _slave.faceShape = either("cute", "normal"); - _slave.face = either(20, 20, 35, 35, 35, 50, 75, 100); - _slave.lips = either(0, 10, 25); - _slave.weight = -10; - setHealth(_slave, jsRandom(80, 100), 0, 0, 0); - _slave.actualAge = 18; - _slave.physicalAge = _slave.actualAge; - _slave.visualAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.hips = 0; - _slave.vagina = random(0, 1); - _slave.anus = random(0, 1); - _slave.butt = random(2, 4); - _slave.boobs = (random(30, 60) * 10); - _slave.preg = 0; - SetBellySize(_slave); - setHealth(_slave, jsRandom(60, 80), 0, 0, 0); - _slave.muscles = random(40, 60); + for (let _i = 0; _i < slavesToAdd; _i++) { + const slave = GenerateNewSlave("XX", {disableDisability: 1}); + slave.origin = "$He was given to you by a failed branch campus of the Hippolyta Academy right after $his majority."; + slave.career = "a slave"; + slave.intelligenceImplant = 15; + slave.teeth = "normal"; + slave.intelligence = random(0, 95); + slave.chem = 20; + slave.devotion = (V.HA.schoolUpgrade === 1 ? 20 : random(25, 45)); + slave.trust = (V.HA.schoolUpgrade === 1 ? 20 : random(25, 45)); + slave.faceShape = either("cute", "normal"); + slave.face = either(20, 20, 35, 35, 35, 50, 75, 100); + slave.lips = either(0, 10, 25); + slave.weight = -10; + setHealth(slave, jsRandom(80, 100), 0, 0, 0); + slave.actualAge = 18; + slave.physicalAge = slave.actualAge; + slave.visualAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.hips = 0; + slave.vagina = random(0, 1); + slave.anus = random(0, 1); + slave.butt = random(2, 4); + slave.boobs = (random(30, 60) * 10); + slave.preg = 0; + SetBellySize(slave); + setHealth(slave, jsRandom(60, 80), 0, 0, 0); + slave.muscles = random(40, 60); const _minHeight = random(170, 180); - _slave.height = Math.trunc(Math.clamp(Height.random(_slave, {limitMult: [2, 15], spread: .1}), _minHeight, 274)); - _slave.waist = -15; - _slave.shoulders = 0; - _slave.skill.vaginal = 10; - _slave.skill.oral = 10; - _slave.skill.anal = 10; - _slave.skill.whoring = 10; - _slave.skill.entertainment = either(10, 10, 30); - _slave.skill.combat = 1; - _slave.sexualFlaw = either("apathetic", "judgemental", "none", "none"); - _slave.behavioralFlaw = either("arrogant", "none"); - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; - _slave.hStyle = either("braided", "bun", "neat", "ponytail", "tails"); - _slave.hLength = random(5, 50); - _slave.custom.tattoo = "$He has the sword and eagle symbol of the Hippolyta Academy tattooed on $his left shoulder."; - slaveArray.push(_slave); + slave.height = Math.trunc(Math.clamp(Height.random(slave, {limitMult: [2, 15], spread: .1}), _minHeight, 274)); + slave.waist = -15; + slave.shoulders = 0; + slave.skill.vaginal = 10; + slave.skill.oral = 10; + slave.skill.anal = 10; + slave.skill.whoring = 10; + slave.skill.entertainment = either(10, 10, 30); + slave.skill.combat = 1; + slave.sexualFlaw = either("apathetic", "judgemental", "none", "none"); + slave.behavioralFlaw = either("arrogant", "none"); + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; + slave.hStyle = either("braided", "bun", "neat", "ponytail", "tails"); + slave.hLength = random(5, 50); + slave.custom.tattoo = "$He has the sword and eagle symbol of the Hippolyta Academy tattooed on $his left shoulder."; + slaveArray.push(slave); } } else if (failedSchool === "TFS") { - for (let _i = 0; _i < _slavesToAdd-1; _i++) { - const _slaveGenRange = random(1, 4); - let _slave; + for (let _i = 0; _i < slavesToAdd-1; _i++) { + const slaveGenRange = random(1, 4); + let slave; if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { - _slave = GenerateNewSlave(null, {disableDisability: 1}); + slave = GenerateNewSlave(null, {disableDisability: 1}); } else { - _slave = GenerateNewSlave("XY", {disableDisability: 1}); + slave = GenerateNewSlave("XY", {disableDisability: 1}); } - _slave.origin = "$He was a Futanari Sister until you engineered $his early enslavement."; - _slave.career = "a Futanari Sister"; - _slave.faceShape = either("exotic", "sensual"); - if (_slaveGenRange === 1) { - _slave.intelligence = random(-50, -20); - _slave.chem = 150; - _slave.butt = either(5, 6); - _slave.hips = 1; - _slave.face = either(35, 35, 35, 75, 100); - _slave.boobs = 100*random(12, 20); - _slave.dick = random(2, 3); + slave.origin = "$He was a Futanari Sister until you engineered $his early enslavement."; + slave.career = "a Futanari Sister"; + slave.faceShape = either("exotic", "sensual"); + if (slaveGenRange === 1) { + slave.intelligence = random(-50, -20); + slave.chem = 150; + slave.butt = either(5, 6); + slave.hips = 1; + slave.face = either(35, 35, 35, 75, 100); + slave.boobs = 100*random(12, 20); + slave.dick = random(2, 3); if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { - if (_slave.genes === "XY") { - _slave.balls = _slave.scrotum = random(8, 9); + if (slave.genes === "XY") { + slave.balls = slave.scrotum = random(8, 9); } else { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } } else if (V.TFS.schoolUpgrade === 1) { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } else if (V.TFS.schoolUpgrade === 2) { - _slave.balls = _slave.scrotum = random(8, 9); + slave.balls = slave.scrotum = random(8, 9); } else { - _slave.balls = _slave.scrotum = random(2, 3); + slave.balls = slave.scrotum = random(2, 3); } - _slave.lips = 0; - _slave.weight = 0; - _slave.actualAge = random(25, 29); - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.vagina = 2; - _slave.anus = 2; - _slave.fetish = "submissive"; - } else if (_slaveGenRange === 2) { - _slave.intelligence = random(-15, 15); - _slave.chem = 200; - _slave.butt = either(6, 7); - _slave.hips = 2; - _slave.face = either(35, 35, 75, 75, 100); - _slave.boobs = 100*random(20, 32); - _slave.dick = random(3, 4); + slave.lips = 0; + slave.weight = 0; + slave.actualAge = random(25, 29); + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.vagina = 2; + slave.anus = 2; + slave.fetish = "submissive"; + } else if (slaveGenRange === 2) { + slave.intelligence = random(-15, 15); + slave.chem = 200; + slave.butt = either(6, 7); + slave.hips = 2; + slave.face = either(35, 35, 75, 75, 100); + slave.boobs = 100*random(20, 32); + slave.dick = random(3, 4); if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { - if (_slave.genes === "XY") { - _slave.balls = _slave.scrotum = random(9, 10); + if (slave.genes === "XY") { + slave.balls = slave.scrotum = random(9, 10); } else { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } } else if (V.TFS.schoolUpgrade === 1) { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } else { - _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(9, 10) : random(3, 4)); + slave.balls = slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(9, 10) : random(3, 4)); } - _slave.lips = random(15, 25); - _slave.weight = 20; - _slave.actualAge = random(30, 34); - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.vagina = 2; - _slave.anus = 2; - _slave.fetish = either("buttslut", "cumslut"); - } else if (_slaveGenRange === 3) { - _slave.intelligence = random(16, 50); - _slave.chem = 250; - _slave.butt = either(7, 8); - _slave.hips = 2; - _slave.face = either(35, 75, 75, 100, 100); - _slave.boobs = 100*random(32, 42); - _slave.dick = random(4, 5); + slave.lips = random(15, 25); + slave.weight = 20; + slave.actualAge = random(30, 34); + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.vagina = 2; + slave.anus = 2; + slave.fetish = either("buttslut", "cumslut"); + } else if (slaveGenRange === 3) { + slave.intelligence = random(16, 50); + slave.chem = 250; + slave.butt = either(7, 8); + slave.hips = 2; + slave.face = either(35, 75, 75, 100, 100); + slave.boobs = 100*random(32, 42); + slave.dick = random(4, 5); if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { - if (_slave.genes === "XY") { - _slave.balls = _slave.scrotum = random(6, 7); + if (slave.genes === "XY") { + slave.balls = slave.scrotum = random(6, 7); } else { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } } else if (V.TFS.schoolUpgrade === 1) { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } else { - _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(6, 7) : random(4, 5)); + slave.balls = slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(6, 7) : random(4, 5)); } - _slave.lips = random(25, 55); - _slave.weight = 20; - _slave.actualAge = random(35, 39); - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.vagina = 3; - _slave.anus = 3; - _slave.fetish = either("buttslut", "cumslut"); + slave.lips = random(25, 55); + slave.weight = 20; + slave.actualAge = random(35, 39); + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.vagina = 3; + slave.anus = 3; + slave.fetish = either("buttslut", "cumslut"); } else { - _slave.intelligence = random(51, 95); - _slave.chem = 300; - _slave.butt = either(8, 9); - _slave.hips = 2; - _slave.face = either(35, 75, 100, 100, 100); - _slave.boobs = 100*random(44, 60); - _slave.dick = random(5, 6); - _slave.geneticQuirks.wellHung = 2; + slave.intelligence = random(51, 95); + slave.chem = 300; + slave.butt = either(8, 9); + slave.hips = 2; + slave.face = either(35, 75, 100, 100, 100); + slave.boobs = 100*random(44, 60); + slave.dick = random(5, 6); + slave.geneticQuirks.wellHung = 2; if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { - if (_slave.genes === "XY") { - _slave.balls = random(7, 8); - _slave.scrotum = _slave.balls; + if (slave.genes === "XY") { + slave.balls = random(7, 8); + slave.scrotum = slave.balls; } else { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } } else if (V.TFS.schoolUpgrade === 1) { - _slave.balls = 1; - _slave.scrotum = 0; + slave.balls = 1; + slave.scrotum = 0; } else { - _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(7, 8) : random(5, 6)); + slave.balls = slave.scrotum = (V.TFS.schoolUpgrade === 2 ? random(7, 8) : random(5, 6)); } - _slave.lips = random(25, 55); - _slave.weight = 50; - _slave.actualAge = random(40, 42); - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.vagina = 3; - _slave.anus = 3; - _slave.fetish = "dom"; + slave.lips = random(25, 55); + slave.weight = 50; + slave.actualAge = random(40, 42); + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.vagina = 3; + slave.anus = 3; + slave.fetish = "dom"; } - if (_slave.foreskin > 0) { - _slave.foreskin = _slave.dick; + if (slave.foreskin > 0) { + slave.foreskin = slave.dick; } - _slave.preg = -3; + slave.preg = -3; if (V.TFS.farmUpgrade > 0) { - _slave.ovaries = 1; + slave.ovaries = 1; if (V.TFS.farmUpgrade >= 2) { - _slave.preg = random(1, 41); + slave.preg = random(1, 41); if (V.TFS.farmUpgrade === 3) { - _slave.pregType = random(10, 30); - _slave.pregAdaptation = 300; + slave.pregType = random(10, 30); + slave.pregAdaptation = 300; } else { - _slave.pregType = 1; + slave.pregType = 1; } - _slave.pregSource = -9; - _slave.pregKnown = 1; - _slave.pregWeek = _slave.preg; - SetBellySize(_slave); + slave.pregSource = -9; + slave.pregKnown = 1; + slave.pregWeek = slave.preg; + SetBellySize(slave); } } - _slave.intelligenceImplant = 30; - _slave.teeth = "normal"; - _slave.energy = (V.TFS.schoolUpgrade === 2 ? 100 : _slave.physicalAge + random(20, 30)); - _slave.devotion = random(30, 35); - _slave.trust = random(-15, -5); - setHealth(_slave, jsRandom(60, 80), 0, 0, 0); - _slave.muscles = 20; - _slave.waist = -15; - if (_slave.genes === "XY") { - _slave.shoulders = 1; + slave.intelligenceImplant = 30; + slave.teeth = "normal"; + slave.energy = (V.TFS.schoolUpgrade === 2 ? 100 : slave.physicalAge + random(20, 30)); + slave.devotion = random(30, 35); + slave.trust = random(-15, -5); + setHealth(slave, jsRandom(60, 80), 0, 0, 0); + slave.muscles = 20; + slave.waist = -15; + if (slave.genes === "XY") { + slave.shoulders = 1; } - _slave.skill.vaginal = 100; - _slave.skill.oral = 100; - _slave.skill.anal = 100; - _slave.skill.whoring = 15; - _slave.skill.entertainment = 100; - _slave.skill.combat = 0; - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; + slave.skill.vaginal = 100; + slave.skill.oral = 100; + slave.skill.anal = 100; + slave.skill.whoring = 15; + slave.skill.entertainment = 100; + slave.skill.combat = 0; + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; if (V.TFS.schoolUpgrade === 1) { - _slave.sexualQuirk = "caring"; + slave.sexualQuirk = "caring"; } - _slave.sexualFlaw = either("hates women", "none"); - _slave.behavioralFlaw = either("arrogant", "none"); - _slave.fetishStrength = 100; - _slave.fetishKnown = 0; - _slave.attrKnown = 0; - _slave.hStyle = "neat"; - _slave.hLength = 150; - _slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple."; - V.REFutaSisterCheckinIDs.push(_slave.ID); - slaveArray.push(_slave); + slave.sexualFlaw = either("hates women", "none"); + slave.behavioralFlaw = either("arrogant", "none"); + slave.fetishStrength = 100; + slave.fetishKnown = 0; + slave.attrKnown = 0; + slave.hStyle = "neat"; + slave.hLength = 150; + slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple."; + V.REFutaSisterCheckinIDs.push(slave.ID); + slaveArray.push(slave); } - const _slave = GenerateNewSlave("XY", {disableDisability: 1}); - _slave.origin = "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement."; - _slave.career = "a Futanari Sister"; - _slave.intelligence = random(51, 95); - _slave.chem = 300; - _slave.butt = either(8, 9); - _slave.hips = 2; - _slave.face = 100; - _slave.boobs = 100*random(44, 60); - _slave.dick = random(5, 6); - if (_slave.foreskin > 0) { - _slave.foreskin = _slave.dick; + const slave = GenerateNewSlave("XY", {disableDisability: 1}); + slave.origin = "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement."; + slave.career = "a Futanari Sister"; + slave.intelligence = random(51, 95); + slave.chem = 300; + slave.butt = either(8, 9); + slave.hips = 2; + slave.face = 100; + slave.boobs = 100*random(44, 60); + slave.dick = random(5, 6); + if (slave.foreskin > 0) { + slave.foreskin = slave.dick; } if (V.TFS.schoolUpgrade === 3 && V.TFS.compromiseWeek+15 <= V.week) { - _slave.balls = _slave.scrotum = 10; + slave.balls = slave.scrotum = 10; } else { - _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 1 ? 1 :10); - _slave.balls = _slave.scrotum = (V.TFS.schoolUpgrade === 1 ? 0 : random(5, 6)); + slave.balls = slave.scrotum = (V.TFS.schoolUpgrade === 1 ? 1 :10); + slave.balls = slave.scrotum = (V.TFS.schoolUpgrade === 1 ? 0 : random(5, 6)); } - _slave.lips = random(25, 55); - _slave.weight = 50; - _slave.actualAge = random(40, 42); - _slave.visualAge = _slave.actualAge; - _slave.physicalAge = _slave.actualAge; - _slave.ovaryAge = _slave.actualAge; - _slave.vagina = 3; - _slave.anus = 3; - _slave.fetish = "dom"; - _slave.preg = -3; + slave.lips = random(25, 55); + slave.weight = 50; + slave.actualAge = random(40, 42); + slave.visualAge = slave.actualAge; + slave.physicalAge = slave.actualAge; + slave.ovaryAge = slave.actualAge; + slave.vagina = 3; + slave.anus = 3; + slave.fetish = "dom"; + slave.preg = -3; if (V.TFS.farmUpgrade > 0) { - _slave.ovaries = 1; + slave.ovaries = 1; if (V.TFS.farmUpgrade >= 2) { - _slave.preg = random(1, 41); + slave.preg = random(1, 41); if (V.TFS.farmUpgrade === 3) { - _slave.pregType = random(20, 40); - _slave.pregAdaptation = 500; + slave.pregType = random(20, 40); + slave.pregAdaptation = 500; } else { - _slave.pregType = 1; + slave.pregType = 1; } - _slave.pregKnown = 1; - _slave.pregWeek = _slave.preg; - SetBellySize(_slave); + slave.pregKnown = 1; + slave.pregWeek = slave.preg; + SetBellySize(slave); } } - _slave.intelligenceImplant = 30; - _slave.teeth = "normal"; - _slave.energy = (V.TFS.schoolUpgrade === 2 ? 100 : _slave.physicalAge + random(20, 30)); - _slave.devotion = random(25, 30); - _slave.trust = random(10, 15); - setHealth(_slave, jsRandom(60, 80), 0, 0, 0); - _slave.muscles = 20; - _slave.waist = -15; - _slave.shoulders = 1; - _slave.skill.vaginal = 100; - _slave.skill.oral = 100; - _slave.skill.anal = 100; - _slave.skill.whoring = 15; - _slave.skill.entertainment = 100; - _slave.skill.combat = 0; - _slave.pubicHStyle = "waxed"; - _slave.underArmHStyle = "waxed"; + slave.intelligenceImplant = 30; + slave.teeth = "normal"; + slave.energy = (V.TFS.schoolUpgrade === 2 ? 100 : slave.physicalAge + random(20, 30)); + slave.devotion = random(25, 30); + slave.trust = random(10, 15); + setHealth(slave, jsRandom(60, 80), 0, 0, 0); + slave.muscles = 20; + slave.waist = -15; + slave.shoulders = 1; + slave.skill.vaginal = 100; + slave.skill.oral = 100; + slave.skill.anal = 100; + slave.skill.whoring = 15; + slave.skill.entertainment = 100; + slave.skill.combat = 0; + slave.pubicHStyle = "waxed"; + slave.underArmHStyle = "waxed"; if (V.TFS.schoolUpgrade === 1) { - _slave.sexualQuirk = "caring"; + slave.sexualQuirk = "caring"; } - _slave.sexualFlaw = either("hates women", "none"); - _slave.behavioralFlaw = either("arrogant", "none"); - _slave.fetishStrength = 100; - _slave.fetishKnown = 0; - _slave.attrKnown = 0; - _slave.hStyle = "neat"; - _slave.hLength = 150; - _slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple."; - slaveArray.push(_slave); + slave.sexualFlaw = either("hates women", "none"); + slave.behavioralFlaw = either("arrogant", "none"); + slave.fetishStrength = 100; + slave.fetishKnown = 0; + slave.attrKnown = 0; + slave.hStyle = "neat"; + slave.hLength = 150; + slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple."; + slaveArray.push(slave); } else { r.push(`Error: school "${failedSchool}" not found.`); } @@ -790,11 +790,11 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { function TFSRape() { const frag = new DocumentFragment(); let r = []; - for (const _slave of V.slaves) { - if (_slave.origin === "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement.") { - _slave.devotion += 10; - actX(_slave, "anal"); - actX(_slave, "vaginal"); + for (const slave of V.slaves) { + if (slave.origin === "$He was the leader of your arcology's Futanari Sisters until you engineered $his community's failure and enslavement.") { + slave.devotion += 10; + actX(slave, "anal"); + actX(slave, "vaginal"); } } r.push(`You`); -- GitLab From 2ad2692de8c18bfe6fe02ec4c5b32e9fc8e8c312 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 21:23:51 -0400 Subject: [PATCH 50/91] futa fix --- src/events/RE/resFailure.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index 1d8fb23ab41..9c5e24a46ce 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -633,7 +633,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { if (V.TFS.schoolUpgrade === 1) { slave.sexualQuirk = "caring"; } - slave.sexualFlaw = either("hates women", "none"); + slave.sexualFlaw = either("judgemental", "none"); slave.behavioralFlaw = either("arrogant", "none"); slave.fetishStrength = 100; slave.fetishKnown = 0; @@ -641,7 +641,6 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { slave.hStyle = "neat"; slave.hLength = 150; slave.custom.tattoo = "$He has a simple pink heart tattooed on $his right temple."; - V.REFutaSisterCheckinIDs.push(slave.ID); slaveArray.push(slave); } const slave = GenerateNewSlave("XY", {disableDisability: 1}); @@ -778,6 +777,12 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { ]); function enslave() { + for (const slave of slaveArray) { + newSlave(slave); + if (failedSchool === "TFS") { + V.REFutaSisterCheckinIDs.push(slave.ID); + } + } slaveArray.forEach(s => newSlave(s)); // TODO: bulk intro return `${capFirstChar(_SCH.slaveNoun)} acquired.`; } -- GitLab From e566f709c271c4e181afa632e923f854669fe96f Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 21:24:22 -0400 Subject: [PATCH 51/91] neat --- src/npc/generate/generateMarketSlave.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/npc/generate/generateMarketSlave.js b/src/npc/generate/generateMarketSlave.js index ee94ea7c68f..0e5d7d268a1 100644 --- a/src/npc/generate/generateMarketSlave.js +++ b/src/npc/generate/generateMarketSlave.js @@ -1808,7 +1808,7 @@ globalThis.generateMarketSlave = function(market = "kidnappers", numArcology = 1 slave.birthWeek = 0; slave.sexualFlaw = jsEither(["apathetic", "none"]); slave.behavioralFlaw = jsEither(["arrogant", "none", "odd"]); - slave.hStyle = "short"; + slave.hStyle = "neat"; slave.hLength = 2; slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained $him"; break; -- GitLab From ce164669c180b01b60ac6b21b46f83006ef276c1 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 21:25:15 -0400 Subject: [PATCH 52/91] fix --- src/events/RE/resFailure.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index 9c5e24a46ce..747323464b5 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -783,7 +783,6 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { V.REFutaSisterCheckinIDs.push(slave.ID); } } - slaveArray.forEach(s => newSlave(s)); // TODO: bulk intro return `${capFirstChar(_SCH.slaveNoun)} acquired.`; } -- GitLab From 59b6148e110fd7e992cb97bf181d6e3c25b5ac54 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 21:28:35 -0400 Subject: [PATCH 53/91] fixes --- src/events/RE/resFailure.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index 747323464b5..06e621e4a06 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -707,7 +707,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { if (V.TFS.schoolUpgrade === 1) { slave.sexualQuirk = "caring"; } - slave.sexualFlaw = either("hates women", "none"); + slave.sexualFlaw = either("judgemental", "none"); slave.behavioralFlaw = either("arrogant", "none"); slave.fetishStrength = 100; slave.fetishKnown = 0; -- GitLab From bef088c5197b43b7af5642a55f45fc2d86319f59 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 21:36:15 -0400 Subject: [PATCH 54/91] polish --- src/events/RE/resFailure.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index 06e621e4a06..dc3eacca987 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -768,11 +768,11 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { r = []; } - r.push(`The failure of a prominent organization within your arcology has <span class="red">affected your reputation</span> and <span class="red">your arcology's prosperity</span> slightly, but you've come out a long way ahead. You've acquired excellent slaves for a pitiful fraction of their fair price.`); + r.push(`The failure of a prominent organization within your arcology has <span class="red">affected your reputation</span> and <span class="red">your arcology's prosperity</span> slightly, but you've come out a long way ahead. You can acquire these excellent ${_SCH.slaveNoun} for a pitiful fraction of their fair price.`); App.Events.addParagraph(node, r); App.Events.addResponses(node, [ - new App.Events.Result(`Enslave the students`, enslave), + new App.Events.Result(`Enslave the ${_SCH.slaveNoun} for no cost`, enslave), new App.Events.Result(`Sell your prizes immediately`, sell) ]); -- GitLab From 5884065aecfb986503960db0497a23e3e01057e6 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 21:38:22 -0400 Subject: [PATCH 55/91] typo --- src/events/RE/resFailure.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index dc3eacca987..c749b8ac216 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -762,7 +762,7 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { r.push(`The branch campus we're closing has five recent ${_SCH.slaveNoun}.`); } r.push(`We'd like to transfer them to you in lieu of payment."`); - r.push(`${_He} hurriedly end the call.`); + r.push(`${_He} hurriedly ends the call.`); } App.Events.addParagraph(node, r); r = []; -- GitLab From e694ef209796c860a620ff93a4f6b5042cac1c63 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 22:05:03 -0400 Subject: [PATCH 56/91] make assignCareerByAge more flexible --- src/events/intro/pcAppearance.js | 70 +++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 24 deletions(-) diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index 188d9d15eae..72d8113c6ac 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -407,73 +407,95 @@ App.UI.Player.syncAgeBasedParameters = function() { App.UI.Player.assignCareerByAge = function(selection) { let career; - if (V.disableForcedCareers || V.PC.actualAge >= 22) { + if (V.disableForcedCareers) { career = selection; - } else if (selection === "wealth") { + } else if (isPCCareerInCategory("wealth")) { if (V.PC.actualAge < 14) { career = "rich kid"; - } else { + } else if (V.PC.actualAge < 10) { career = "trust fund"; + } else { + career = "wealth"; } - } else if (selection === "capitalist") { + } else if (isPCCareerInCategory("capitalist")) { if (V.PC.actualAge < 14) { career = "business kid"; - } else { + } else if (V.PC.actualAge < 10) { career = "entrepreneur"; + } else { + career = "capitalist"; } - } else if (selection === "mercenary") { + } else if (isPCCareerInCategory("mercenary")) { if (V.PC.actualAge < 14) { career = "child soldier"; - } else { + } else if (V.PC.actualAge < 10) { career = "recruit"; + } else { + career = "mercenary"; } - } else if (selection === "slaver") { + } else if (isPCCareerInCategory("slaver")) { if (V.PC.actualAge < 14) { career = "slave tender"; - } else { + } else if (V.PC.actualAge < 10) { career = "slave overseer"; + } else { + career = "slaver"; } - } else if (selection === "engineer") { + } else if (isPCCareerInCategory("engineer")) { if (V.PC.actualAge < 14) { career = "worksite helper"; - } else { + } else if (V.PC.actualAge < 10) { career = "construction"; + } else { + career = "engineer"; } - } else if (selection === "medicine") { + } else if (isPCCareerInCategory("medicine")) { if (V.PC.actualAge < 14) { career = "nurse"; - } else { + } else if (V.PC.actualAge < 10) { career = "medical assistant"; + } else { + career = "medicine"; } - } else if (selection === "celebrity") { + } else if (isPCCareerInCategory("celebrity")) { if (V.PC.actualAge < 14) { career = "child star"; - } else { + } else if (V.PC.actualAge < 10) { career = "rising star"; + } else { + career = "celebrity"; } - } else if (selection === "BlackHat") { + } else if (isPCCareerInCategory("BlackHat")) { if (V.PC.actualAge < 14) { career = "script kiddy"; - } else { + } else if (V.PC.actualAge < 10) { career = "hacker"; + } else { + career = "BlackHat"; } - } else if (selection === "escort") { + } else if (isPCCareerInCategory("escort")) { if (V.PC.actualAge < 14) { career = "child prostitute"; - } else { + } else if (V.PC.actualAge < 10) { career = "prostitute"; + } else { + career = "escort"; } - } else if (selection === "servant") { + } else if (isPCCareerInCategory("servant")) { if (V.PC.actualAge < 14) { career = "child servant"; - } else { + } else if (V.PC.actualAge < 10) { career = "handmaiden"; + } else { + career = "servant"; } - } else if (selection === "gang") { + } else if (isPCCareerInCategory("gang")) { if (V.PC.actualAge < 14) { career = "street urchin"; - } else { + } else if (V.PC.actualAge < 10) { career = "hoodlum"; + } else { + career = "gang"; } } @@ -702,7 +724,7 @@ App.UI.Player.design = function() { ["Servant", "servant"], ["Gang leader", "gang"]] ); - option = options.addCustomOption() + option = options.addCustomOption("") .addButton( "Adjust career for age", () => V.PC.career = App.UI.Player.assignCareerByAge(V.PC.career), -- GitLab From dbf6427d8d4516182e6e6e6006789395ef73ea32 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Mon, 31 May 2021 22:52:34 -0400 Subject: [PATCH 57/91] foundation --- src/player/desc/playerDescription.js | 4 ++-- src/player/managePersonalAffairs.js | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/player/desc/playerDescription.js b/src/player/desc/playerDescription.js index 02595890532..1ae56f2444c 100644 --- a/src/player/desc/playerDescription.js +++ b/src/player/desc/playerDescription.js @@ -1,5 +1,5 @@ App.Desc.Player.longDescription = function(PC = V.PC) { - let r = []; + const r = []; let freckled = ''; let ageDifference = ''; @@ -10,7 +10,7 @@ App.Desc.Player.longDescription = function(PC = V.PC) { freckled = ` heavily freckled`; } - r.push(App.UI.DOM.makeElement("div", `You take yourself in in a full length mirror. You are ${addA(PC.race)} ${PC.dick && PC.vagina !== -1 ? `futanari` : PC.dick ? `man` : `woman`} with${freckled} ${PC.skin} skin, ${PC.hColor} hair, ${App.Desc.eyesColor(PC)} and a perfect ${PC.faceShape} face.`)); + r.push(`You take yourself in in a full length mirror. You are ${addA(PC.race)} ${PC.dick && PC.vagina !== -1 ? `futanari` : PC.dick ? `man` : `woman`} with${freckled} ${PC.skin} skin, ${PC.hColor} hair, ${App.Desc.eyesColor(PC)} and a perfect ${PC.faceShape} face.`); if (PC.actualAge >= 65) { if (PC.visualAge > PC.actualAge) { diff --git a/src/player/managePersonalAffairs.js b/src/player/managePersonalAffairs.js index e126f5728a9..e2d5a5da172 100644 --- a/src/player/managePersonalAffairs.js +++ b/src/player/managePersonalAffairs.js @@ -41,14 +41,18 @@ App.UI.managePersonalAffairs = function() { const weddingDiv = document.createElement("div"); const FCTVDiv = document.createElement("div"); - const text = []; + let text = []; App.UI.DOM.appendNewElement("h2", appearanceDiv, `Appearance`); text.push(`You pause for a moment from your busy day to day life to return to ${V.masterSuite ? V.masterSuiteName : `your room`} to consider some things about yourself.`); - // double return + App.Events.addParagraph(appearanceDiv, text); + text = []; + text.push(App.Desc.Player.longDescription(PC)); - // double return + App.Events.addParagraph(appearanceDiv, text); + text = []; + if (V.playerSurgery === 0) { text.push(App.UI.DOM.passageLink(`Visit your plastic surgeon`, "Elective Surgery", () => { V.playerSurgery = 4; -- GitLab From 357959e7e02f670b13106591c60cbb9b20fb82ac Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 23:07:50 -0400 Subject: [PATCH 58/91] start --- src/events/RE/resSale.js | 571 ++++++++++++++++++ src/uncategorized/randomNonindividualEvent.tw | 58 -- src/uncategorized/resSale.tw | 392 ------------ 3 files changed, 571 insertions(+), 450 deletions(-) create mode 100644 src/events/RE/resSale.js delete mode 100644 src/uncategorized/resSale.tw diff --git a/src/events/RE/resSale.js b/src/events/RE/resSale.js new file mode 100644 index 00000000000..6fbe2a8ab14 --- /dev/null +++ b/src/events/RE/resSale.js @@ -0,0 +1,571 @@ +App.Events.RESSale = class RESSale extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.cash > 10000, + () => V.rep > 6000, + () => { + for (const [school, data] of App.Data.misc.schools) { + if (V[school].studentsBought === 0 && data.requirements) { + return true; + } + } + } + ]; + } + + actorPrerequisites() { + return []; + } + + execute(node) { + let r = []; + + const validSchools = []; + for (const [school, data] of App.Data.misc.schools) { + if (V[school].studentsBought === 0 && data.requirements) { + validSchools.push(school); + } + } + + V.nextButton = "Continue"; + V.nextLink = "RIE Eligibility Check"; + + /** @type {FC.SlaveSchoolName} */ + const school = validSchools.random(); + + /* generate sales slave for images and pronouns */ + V[school].schoolSale = 1; + const _marketResult = generateMarketSlave(school); + const _salesSlave = _marketResult.slave; + r.push(_marketResult.text); + if (school === "TSS") { + _salesSlave.clothes = "a schoolgirl outfit"; + } else if (school === "TUO") { + _salesSlave.clothes = "nice business attire"; + } else if (school === "GRI") { + _salesSlave.clothes = "a slave gown"; + } else if (school === "SCP") { + _salesSlave.clothes = "a string bikini"; + } else if (school === "HA") { + _salesSlave.clothes = "a nice maid outfit"; + } + const { + He, His, + he, his, him, himself, girl + } = getPronouns(_salesSlave); + + App.Events.drawEventArt(node, _salesSlave); + + r.push(`You receive a personal call from`); + if (school === "TSS") { + r.push(`The Slavegirl School, a rising slave training organization known for its reliably unremarkable products, offered at a competitive price.`); + } else if (school === "TUO") { + r.push(`The Utopian Orphanage, a school that educates intelligent slaves until they reach their majority.`); + } else if (school === "GRI") { + r.push(`The Growth Research Institute, a drug development group breaking new ground on human experimentation.`); + } else if (school === "SCP") { + r.push(`St. Claver Preparatory, an unusual combination of slave school and implant surgery training institution.`); + } else if (school === "LDE") { + r.push(`L'École des Enculées, an innovative slave school making new and interesting developments in sodomy.`); + } else if (school === "TGA") { + r.push(`The Gymnasium-Academy, an intense slave school with a reputation for producing fit bitches with combat skills and stiff dicks.`); + } else if (school === "TCR") { + r.push(`The Cattle Ranch, a pastoralist based slave school built around breeding the perfect cowgirl.`); + } else if (school === "HA") { + r.push(`The Hippolyta Academy, a famous slave school known to produce highly skilled battle maids.`); + } else if (school === "NUL") { + r.push(`Nueva Universidad de Libertad, a unique slave school promoting androgyny to the point of surgical modification.`); + } else { + r.push(`the Futanari Sisters, an enigmatic group of transformation enthusiasts that sells beautiful hermaphrodites.`); + } + if (school === "TCR") { + r.push(`It's from a farmhand, not leadership, and they are offering a cow for sale. Before you can hang up on him and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the man hurriedly says, "`); + if (V.PC.title !== 0) { + r.push(`Sir`); + } else { + r.push(`Ma'am`); + } + r.push(`, ${he}'s half off!"`); + // <br><br> + r.push(`You pause for a moment, and he plunges on: "`); + if (V.PC.title !== 0) { + r.push(`Sir`); + } else { + r.push(`Ma'am`); + } + r.push(`, <span class="yellow">your first cow purchase from us this week is half price.</span> And, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`, this milky beauty is up for grabs. Keep ${him} by your desk for fresh squeezed milk, knock on wood and ${he}'ll suck you right off, grab ${him} by the hips and ${he}'ll take anything in ${his} rear; ${he}'s plenty of fun! Come on down and get yourself a young, affectionate little cow${girl}!"`); + } else { + r.push(`It's from a piece of merchandise, not leadership, and ${he}'s offering ${himself} for sale. Before you can hang up on ${him} and reprimand V.assistant.name for allowing this Free Cities version of telemarketing to get through to you, the slave hurriedly says, "`); + if (V.PC.title !== 0) { + r.push(`Sir`); + } else { + r.push(`Ma'am`); + } + r.push(`, I'm half off!"`); + + // <br><br> + + r.push(`You pause for a moment, and ${he} plunges on: "`); + if (V.PC.title !== 0) { + r.push(`Sir`); + } else { + r.push(`Ma'am`); + } + r.push(`, <span class="yellow">your first slave purchase from us this week is half price.</span> And, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`, I'm one of the slaves for sale.`); + if (school === "TSS") { + r.push(`I've got the very best skills I could learn as a virgin. I'm healthy, obedient, and educated. And I'm fresh, and willing, and really eager." ${He} rips ${his} white school${girl} blouse open to show off a fresh pair of tits, and shakes them for you. "I would love to be your sex slave, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); + } else if (school === "TUO") { + r.push(`I'm smart and cute. I'm well educated and obedient, I will serve you well." ${He} blushes and maintains eye contact as ${he} continues. "I'm unexperienced when it comes to sexual matters, I hope you will treat me well." ${He} bows to you and finished. "I would love to be your slave, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been taught.`); + } else if (school === "GRI") { + r.push(`I've, uh, been trained to obey." ${His} eyes flick to one side, like ${he}'s reading ${his} cues. "And, um, I have really big boobs." ${He}'s wearing a bathrobe, and ${he} suddenly jerks it open to reveal a bigger pair of breasts than anyone that age could possibly have grown ${himself}. "I would love to be your sex slave, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`," ${he} says, doing ${his} very best to sound appealing. No doubt ${he}'d prefer not to be part of any more testing.`); + } else if (school === "SCP") { + r.push(`I'm ready to be the perfect bimbo slave, and the young surgeon who did my implants was very skilled." ${He}'s wearing a bikini, and ${he} pulls it down to flash you, revealing that ${his} tits resist gravity almost perfectly. They're gorgeous, but quite fake. "I would love to be your sex slave, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); + } else if (school === "LDE") { + r.push(`I've been trained to need cock up my ass." ${He}'s nude, and spins around to point ${his} ass at the camera. ${He} begins to wink ${his} big butthole, ${his} tiny, soft cock dangling limply below it. ${He} cranes ${his} head around to continue. "I can come from nothing but buttsex," ${he} says proudly. "I would love to be your anal slut, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`," ${he} says, sounding very eager to begin.`); + } else if (school === "TGA") { + r.push(`My tutelage has been long and hard, and I'm very eager to begin my life as a slave." ${He}'s nude, and stands up to reveal ${his} hard-on. ${He} spins for the camera, showing ${himself} off. "I can help protect you, too: I'm proficient in unarmed combat, and I have weapons training. I would love to be your bitch, or your bodyguard, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been told.`); + } else if (school === "HA") { + r.push(`I am ready to serve you in any way you deem fit and do everything I can to protect your life." ${He}'s wearing a delicate maid uniform, beautifully contrasting ${his} powerful physique and towering stature. "The academy has given me the opportunity to learn many valuable skills and I look forward to putting them at your service."`); + } else if (school === "NUL") { + r.push(`My education is complete, and I am ready to unveil the perfection of my form to the world." Naturally, ${he}'s totally nude, yet you still are unable to even guess what sort of equipment ${he} was born with. "It is my duty and my honor to share myself in eternal servitude, in all manners and mechanisms," ${he} says in an unnervingly upbeat monotone.`); + } else { + r.push(`The time has come for me to serve my Sisters by leaving my community and becoming a slave. Our sex skills are unparalleled," ${he} says proudly. ${He}'s nude, and reclines luxuriantly for the camera, showing ${his} remarkable body off in all its gorgeous strangeness. ${His} boobs are huge, ${his} dick is hard, ${his} pussy is wet, and ${his} ass is relaxed. "I love to fuck, `); + if (V.PC.title !== 0) { + r.push(`sir`); + } else { + r.push(`ma'am`); + } + r.push(`," ${he} says, and you believe ${him}.`); + if (V.PC.dick !== 0 && V.PC.vagina !== -1) { + // <br><br> + if (V.PC.boobs >= 300) { + r.push(`"I would also adore serving someone like you," ${he} adds sincerely, ${his} emphasis making it quite clear the Sisters have heard rumors about your hermaphroditism. "We can't offer any further discount, but I promise I'd worship you with all my heart." ${He} bats ${his} eyes at you. "And my other parts, too!"`); + } else { + r.push(`${His} eyes flick downward momentarily, and ${he} looks nervous, swallowing before continuing. "Please let me be your slave," ${he} almost begs. "Serving another futa would, oh," and ${he} pauses, shivering a little. Recollecting ${himself}, ${he} goes on, "Wonderful. Serving you would be a dream come true."`); + } + } + } + }/* closes Cattle Ranch exception */ + + // <br><br> + + // <<setAssistantPronouns>> + const { + heA, hisA, girlA, womanA, + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + r.push(`${capFirstChar(V.assistant.name)}'s ${V.assistant.appearance} avatar appears on the screen next to the video call.`); + if (V.assistant.personality <= 0) { + r.push(`"I have stored the confirmation code, ${properMaster()}," it notes. "If you wish to take advantage of this promotion, use the slave buying menu to navigate to the appropriate school next week. I have appended a note to that school's entry to remind you."`); + } else { + if (school === "TSS" || school === "SCP") { + r.push(`"And I would love to`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`break both ${his} virgin holes at once," the monster${girlA} exclaims, and shakes ${hisA} dicks for emphasis.`); + break; + case "shemale": + r.push(`wreck ${his} virgin asshole," the shemale exclaims, and starts to jack off.`); + break; + case "amazon": + r.push(`fist ${his} virgin cunt," the amazon exclaims, and helpfully raises the fist in question.`); + break; + case "businesswoman": + r.push(`sell ${his} fresh pussy to the highest bidder," the business${womanA} exclaims.`); + break; + case "fairy": + r.push(`play with ${his} clit and lap up those sweet virgin juices!" the fairy exclaims, licking ${hisA} lips.`); + break; + case "pregnant fairy": + r.push(`play with ${his} clit and lap up those sweet motherly juices!" the fairy exclaims, licking ${hisA} lips.`); + break; + case "goddess": + r.push(`teach ${him} all about being a real woman," the goddess exclaims, rubbing ${hisA} belly in anticipation.`); + break; + case "hypergoddess": + r.push(`teach ${him} all about being a real woman," the goddess exclaims, rubbing ${hisA} massive belly in anticipation.`); + break; + case "loli": + r.push(`play with ${him}!" the little ${girlA} exclaims happily while jumping up and down.`); + break; + case "preggololi": + r.push(`play with ${him}!" the little ${girlA} exclaims happily while caressing hisA belly.`); + break; + case "angel": + r.push(`keep ${him} safe and craft the perfect future slavewife for someone," the angel says, crossing ${hisA} arms under hisA chest.`); + break; + case "cherub": + r.push(`pretty ${him} up for ${his} first love!" the cherub says, clasping ${hisA} hands together and fluttering back and forth.`); + break; + case "incubus": + r.push(`brutally stretch both those holes until ${he} is a slave to my dick," the incubus says, stroking ${hisA} cock to erection.`); + break; + case "succubus": + r.push(`shape ${him} into the perfect ${girl} for ${properMaster()}," the succubus says, licking ${hisA} lips with anticipation. "I'll make a real sex demon out of ${him}!"`); + break; + case "imp": + r.push(`tease ${him} until ${he} is begging to have ${his} virginity taken," the imp says, rubbing ${hisA} hands together with anticipation.`); + break; + case "witch": + r.push(`play with ${his} body," the witch says. "Test my spells on someone else for once."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`break both ${his} virgin holes at once," the avatar exclaims, ${hisA} chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill ${him} with young until ${he} is a bloated hive."`); + break; + case "schoolgirl": + r.push(`make out with ${him}. ${He}'s cute!" the school${girlA} exclaims.`); + break; + default: + r.push(`fuck ${his} virgin holes," ${heA} says.`); + } + } else if (school === "GRI" || school === "TCR") { + r.push(`"And I would love to`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`get my tentacles on those tits," the monster${girlA} exclaims.`); + break; + case "shemale": + r.push(`fuck those titties," the shemale exclaims, and starts to jack off.`); + break; + case "amazon": + r.push(`put ${him} out to pasture," the amazon exclaims, indicating the skin of milk on ${hisA} belt.`); + break; + case "businesswoman": + r.push(`put that cow in the dairy," the business${womanA} exclaims.`); + break; + case "fairy": + r.push(`bounce on those nipples until they fill me with milk!" the fairy exclaims, rubbing ${hisA} belly.`); + break; + case "pregnant fairy": + r.push(`bounce on those nipples until my babies are fed!" the fairy exclaims, rubbing ${hisA} swollen belly.`); + break; + case "goddess": + case "hypergoddess": + r.push(`taste those bountiful breasts," the goddess exclaims, licking ${hisA} lips.`); + break; + case "loli": + r.push(`play with ${his} tits!" the little ${girlA} exclaims happily while jumping up and down.`); + break; + case "preggololi": + r.push(`play with ${his} tits!" the little ${girlA} exclaims happily while caressing hisA belly.`); + break; + case "angel": + r.push(`feed all the hungry with those motherly breasts," the angel says, blushing at the thought.`); + break; + case "cherub": + r.push(`have a pair just like them!" the cherub says, clasping ${hisA} hands to hisA breasts.`); + break; + case "incubus": + r.push(`wrap them around my shaft and blow a load right into ${his} face," the incubus says, stroking ${hisA} cock to erection.`); + break; + case "succubus": + r.push(`teach ${him} the perfect way to tease ${properMaster()} with those boobs," ${heA} says, swelling ${hisA} own tits and pressing them against the screen.`); + break; + case "imp": + r.push(`tease ${him} until ${he} cums to the slightest touch of ${his} nipples," the imp says, rubbing ${hisA} hands together with anticipation.`); + break; + case "witch": + r.push(`play with their breasts," the witch says. "Test my lactation and breast growth spells on someone else for once."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`penetrate those nipples," the avatar exclaims, ${hisA} chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill ${him} with young until they pin ${him} to the floor. Then ${his} defenseless holes will be filled too."`); + break; + case "schoolgirl": + r.push(`suck on those titties!" the school${girlA} exclaims.`); + break; + default: + r.push(`make those breasts bounce," ${heA} says.`); + } + } else if (school === "LDE" || school === "NUL") { + r.push(`"And I would love to`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`shove both my cocks up there," the monster${girlA} exclaims.`); + break; + case "shemale": + r.push(`fuck that butt even bigger," the shemale exclaims, and starts to jack off.`); + break; + case "amazon": + r.push(`fist that butthole," the amazon exclaims, and helpfully raises the fist in question.`); + break; + case "businesswoman": + r.push(`see how many customers that asshole can bear," the business${womanA} exclaims.`); + break; + case "fairy": + r.push(`use that butt as a pillow!" the fairy exclaims.`); + break; + case "pregnant fairy": + r.push(`see if I can impregnate ${his} butt!" the fairy exclaims.`); + break; + case "goddess": + case "hypergoddess": + r.push(`see just how obedient ${he} really is," the goddess exclaims, flexing a hand for emphasis.`); + break; + case "loli": + r.push(`play with ${his} big butt!" the little ${girlA} exclaims happily while jumping up and down.`); + break; + case "preggololi": + r.push(`play with ${his} big butt!" the little ${girlA} exclaims happily while caressing hisA belly.`); + break; + case "angel": + r.push(`have an ass like that..." the angel trails off, a finger to ${hisA} lips as heA fantasizes.`); + break; + case "cherub": + r.push(`take a seat on that ass," the cherub sighs. "Flying all the time gets tiring."`); + break; + case "incubus": + r.push(`wrap that ass around my shaft and blow a load across ${his} back," the incubus says, stroking ${hisA} cock to erection.`); + break; + case "succubus": + r.push(`teach ${him} the perfect way to tease ${properMaster()} with that ass," ${heA} says, swelling ${hisA} own behind, pressing it against the screen and winking hisA butthole tantalizingly at you.`); + break; + case "imp": + r.push(`spank that ass till it's big and red then take a nap on it," the imp says, rubbing ${hisA} hands together with anticipation and yawning.`); + break; + case "witch": + r.push(`play with ${his} ass," the witch says. "Test my butt growth spells on someone else for once. Last time I was hobbling around with a pair of tits as a rear for a week..."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`split ${his} asshole," the avatar exclaims, ${hisA} chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill ${his} ass with larva until ${his} belly reaches the floor, swell ${his} bottom with aphrodisiacs, and watch ${him} birth until ${he} breaks."`); + break; + case "schoolgirl": + r.push(`lick ${his} big soft behind," the school${girlA} exclaims, and sticks out ${hisA} tongue.`); + break; + default: + r.push(`fuck that ass," ${heA} says.`); + } + } else if (school === "TGA") { + r.push(`"And I would love to`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`shove both my cocks up ${his} virgin anus," the monster${girlA} exclaims.`); + break; + case "shemale": + r.push(`fuck that virgin asshole," the shemale exclaims, and starts to jack off.`); + break; + case "amazon": + r.push(`finger fuck ${his} virgin ass," the amazon exclaims, and helpfully raises the fingers in question.`); + break; + case "businesswoman": + r.push(`sell ${his} anal virginity to the highest bidder," the business${womanA} exclaims.`); + break; + case "fairy": + r.push(`give the dick a great big hug and suckle out all the precum!" the fairy exclaims, rubbing ${hisA} legs together.`); + break; + case "pregnant fairy": + r.push(`play meet the baby! ...Well, maybe just with you, `); + if (V.PC.title === 0) { + r.push(`Big Sis`); + } else { + r.push(`Big Bro`); + } + r.push(`," the fairy exclaims, rubbing ${hisA} legs together.`); + break; + case "goddess": + case "hypergoddess": + r.push(`see ${him} put that dick to work," the goddess exclaims, one sultry finger at ${hisA} lips.`); + break; + case "loli": + r.push(`play with ${his} dick!" the little ${girlA} exclaims happily while jumping up and down.`); + break; + case "preggololi": + r.push(`get that dick in me!" the little ${girlA} exclaims happily while caressing hisA belly and licking hisA lips.`); + break; + case "angel": + r.push(`wrap that penis up in a nice bow for ${his} wife to untie," the angel says, blushing and swaying side to side.`); + break; + case "cherub": + r.push(`know how long ${he} could go for," the cherub says. "${He} could probably fuck all night long!"`); + break; + case "incubus": + r.push(`plow ${his} ass and watch ${him} ejaculate against ${his} will," the incubus says, stroking ${hisA} cock to erection.`); + break; + case "succubus": + r.push(`teach ${him} the perfect way to tease ${properMaster()} with that cock," ${heA} says, hisA clit steadily enlarging until it's the size of hisA leg. _HeA hefts it to hisA mouth and enthusiastically tongues hisA urethra.`); + break; + case "imp": + r.push(`ride that cock until I'm too heavy to fly," the imp says, rubbing ${hisA} belly and spreading hisA legs.`); + break; + case "witch": + r.push(`play with that dick," the witch says. "Test my cock growth and cum amplification spells on someone else for once. Last time I sprouted a cock bigger than me and my belly steadily swelled with cum until I jacked off. I got so tired I couldn't do it anymore and nearly burst like a cum balloon..."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`fuck ${his} cock," the avatar exclaims, ${hisA} chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Squirm down to ${his} balls and pump them full of larva and watch ${him} birth them until ${he} breaks."`); + break; + case "schoolgirl": + r.push(`suck that dick," the school${girlA} exclaims, and sticks out ${hisA} tongue.`); + break; + default: + r.push(`train that body," ${heA} says.`); + } + } else if (school === "HA") { + r.push(`"And I would love to`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`break both ${his} holes at once," the monster${girlA} exclaims, and shakes ${hisA} dicks for emphasis.`); + break; + case "shemale": + r.push(`wreck ${his} amazonian asshole," the shemale exclaims, and starts to jack off.`); + break; + case "amazon": + r.push(`fist ${his} cunt," the amazon exclaims, and helpfully raises the fist in question.`); + break; + case "businesswoman": + r.push(`sell ${his} fresh pussy to the highest bidder," the business${womanA} exclaims.`); + break; + case "fairy": + r.push(`play with ${his} clit and lap up those sweet juices!" the fairy exclaims, licking ${hisA} lips.`); + break; + case "pregnant fairy": + r.push(`play with ${his} clit and lap up those sweet juices!" the fairy exclaims, licking ${hisA} lips.`); + break; + case "goddess": + r.push(`teach ${him} all about being a real woman," the goddess exclaims, rubbing ${hisA} belly in anticipation.`); + break; + case "hypergoddess": + r.push(`teach ${him} all about being a real woman," the goddess exclaims, rubbing ${hisA} massive belly in anticipation.`); + break; + case "loli": + r.push(`play with ${him}!" the little ${girlA} exclaims happily while jumping up and down.`); + break; + case "preggololi": + r.push(`play with ${him}!" the little ${girlA} exclaims happily while caressing hisA belly.`); + break; + case "angel": + r.push(`keep ${him} safe and craft the perfect future slavewife for someone," the angel says, crossing ${hisA} arms under hisA chest.`); + break; + case "cherub": + r.push(`pretty ${him} up for ${his} first love!" the cherub says, clasping ${hisA} hands together and fluttering back and forth.`); + break; + case "incubus": + r.push(`brutally stretch both those holes until ${he} is a slave to my dick," the incubus says, stroking ${hisA} cock to erection.`); + break; + case "succubus": + r.push(`shape ${him} into the perfect ${girl} for ${properMaster()}," the succubus says, licking ${hisA} lips with anticipation. "I'll make a real sex demon out of ${him}!"`); + break; + case "imp": + r.push(`tease ${him} until ${he} is begging to have ${his} virginity taken," the imp says, rubbing ${hisA} hands together with anticipation.`); + break; + case "witch": + r.push(`play with ${his} body," the witch says. "Test my spells on someone else for once."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`break both ${his} virgin holes at once," the avatar exclaims, ${hisA} chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill ${him} with young until ${he} is a bloated hive."`); + break; + case "schoolgirl": + r.push(`make out with ${him}. ${He}'s cute!" the school${girlA} exclaims.`); + break; + default: + r.push(`fuck ${his} amazonian holes," ${heA} says.`); + } + } else { + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`"And I love to fuck futas!" heA shouts, dicks painfully erect.`); + break; + case "shemale": + r.push(`"And I love to fuck futas!" heA shouts, cock painfully erect.`); + break; + case "amazon": + r.push(`"And I love to fuck futas!" heA howls, and then adds more quietly, "A-and get fucked by futas."`); + break; + case "businesswoman": + r.push(`"And I love to fuck futas!" heA exclaims, and then blushes furiously.`); + break; + case "fairy": + case "pregnant fairy": + r.push(`"And I love to fuck futas!" heA exclaims, flying circles around you.`); + break; + case "goddess": + case "hypergoddess": + r.push(`"And I love to fuck futas!" heA exclaims, awestruck with anticipation.`); + break; + case "cherub": + case "loli": + r.push(`"And I love to fuck futas!" heA exclaims, then blushes beet red when heA realizes what heA said.`); + break; + case "preggololi": + r.push(`"And I love to fuck futas!" heA exclaims, rubbing hisA bulging belly with anticipation.`); + break; + case "angel": + r.push(`"Keep it away from me! It is an aberration!" heA shouts, before flying off screen in a huff.`); + break; + case "incubus": + r.push(`"And I love to fuck futas!" heA exclaims, hisA erect dick throbbing with anticipation.`); + break; + case "succubus": + r.push(`"And I love to get fucked by futas!" heA exclaims, `); + if (V.PC.dick !== 0 && V.PC.vagina !== -1) { + r.push(`blowing you a kiss`); + } else { + r.push(`hisA pussy already wet with anticipation`); + } + r.push(`.`); + break; + case "imp": + r.push(`"And I love to get fucked by futas till I'm too heavy to fly," heA exclaims, rubbing hisA belly and spreading hisA legs.`); + break; + case "witch": + r.push(`"And I love to fuck futas!" heA exclaims, readying a spell to make them last longer.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`"And I love to fuck futas!" heA exclaims, hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "So many holes to force young into! I can't wait to turn ${him} into a bulging, squirming, bursting nursery!"`); + break; + case "schoolgirl": + r.push(`"And I love to fuck futas!" heA exclaims, bouncing with excitement.`); + break; + default: + r.push(`"And I love to fuck futas!" heA exclaims.`); + } + } + r.push(`"Ahem. I have stored the confirmation code, ${properMaster()}," ${heA} notes. "If you wish to take advantage of this promotion, use the slave buying menu to navigate to the appropriate school next week. I have appended a note to that school's entry to remind you."`); + } + } +}; diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 86170968282..c4d34d9d480 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -695,64 +695,6 @@ <</if>> <</if>> - <<set $RESSale = []>> - <<if $cash > 10000>> - <<if $rep > 6000>> - <<if $seeDicks != 100>> - <<if $TSS.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("TSS")>> - <</if>> - <<if $TUO.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("TUO")>> - <</if>> - <<if $GRI.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("GRI")>> - <</if>> - <<if $SCP.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("SCP")>> - <</if>> - <<if $seePreg != 0>> - <<if $TCR.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("TCR")>> - <</if>> - <</if>> - <<if $HA.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("HA")>> - <</if>> - <</if>> - <<if $seeDicks != 0>> - <<if $LDE.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("LDE")>> - <</if>> - <<if $TGA.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("TGA")>> - <</if>> - <<if ($TFS.studentsBought == 0)>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("TFS")>> - <<if ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>> - <<set $events.push("RES Sale")>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("TFS")>> - <<set $RESSale.push("TFS")>> - <</if>> - <</if>> - <</if>> - <<if $NUL.studentsBought == 0>> - <<set $events.push("RES Sale")>> - <<set $RESSale.push("NUL")>> - <</if>> - <</if>> - <</if>> - <<if $justiceEvents.length > 0>> <<if ($seeExtreme == 0) || ($seeDicks == 0)>> <<set $justiceEvents.delete("slave training")>> diff --git a/src/uncategorized/resSale.tw b/src/uncategorized/resSale.tw deleted file mode 100644 index facf1b377ac..00000000000 --- a/src/uncategorized/resSale.tw +++ /dev/null @@ -1,392 +0,0 @@ -:: RES Sale [nobr] - -<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">> - -<<set $RESSale = $RESSale.random()>> - -/* generate sales slave for images and pronouns */ -<<if $RESSale == "TSS">> - <<set $TSS.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("TSS")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> - <<set _salesSlave.clothes = "a schoolgirl outfit">> -<<elseif $RESSale == "TUO">> - <<set $TUO.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("TUO")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> - <<set _salesSlave.clothes = "nice business attire">> -<<elseif $RESSale == "GRI">> - <<set $GRI.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("GRI")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> - <<set _salesSlave.clothes = "a slave gown">> -<<elseif $RESSale == "SCP">> - <<set $SCP.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("SCP")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> - <<set _salesSlave.clothes = "a string bikini">> -<<elseif $RESSale == "LDE">> - <<set $LDE.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("LDE")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> -<<elseif $RESSale == "TGA">> - <<set $TGA.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("TGA")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> -<<elseif $RESSale == "TCR">> - <<set $TCR.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("TCR")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> -<<elseif $RESSale == "HA">> - <<set $HA.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("HA")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> - <<set _salesSlave.clothes = "a nice maid outfit">> -<<elseif $RESSale == "NUL">> - <<set $NUL.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("NUL")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> -<<else>> - <<set $TFS.schoolSale = 1>> - <<set _marketResult = generateMarketSlave("TFS")>> - <<set _salesSlave = _marketResult.slave>> - <<print _marketResult.text>> -<</if>> -<<run App.Utils.setLocalPronouns(_salesSlave)>> - -<span id="art-frame"> - /* 000-250-006 */ - <<if $seeImages == 1>> - <<set _salesSlave.trust = 100>> - <<set _salesSlave.devotion = 100>> - <div class="imageColumn"> - <<if $imageChoice == 1>> - <div class="imageRef lrgVector"><div class="mask"> </div><<SlaveArt _salesSlave 3 0>></div> - <<else>> - <div class="imageRef lrgRender"><div class="mask"> </div><<SlaveArt _salesSlave 3 0>></div> - <</if>> - <<= assistantArt(3)>> - </div> - <</if>> - /* 000-250-006 */ -</span> - -You receive a personal call from -<<if $RESSale == "TSS">> - The Slavegirl School, a rising slave training organization known for its reliably unremarkable products, offered at a competitive price. -<<elseif $RESSale == "TUO">> - The Utopian Orphanage, a school that educates intelligent slaves until they reach their majority. -<<elseif $RESSale == "GRI">> - The Growth Research Institute, a drug development group breaking new ground on human experimentation. -<<elseif $RESSale == "SCP">> - St. Claver Preparatory, an unusual combination of slave school and implant surgery training institution. -<<elseif $RESSale == "LDE">> - L'École des Enculées, an innovative slave school making new and interesting developments in sodomy. -<<elseif $RESSale == "TGA">> - The Gymnasium-Academy, an intense slave school with a reputation for producing fit bitches with combat skills and stiff dicks. -<<elseif $RESSale == "TCR">> - The Cattle Ranch, a pastoralist based slave school built around breeding the perfect cowgirl. -<<elseif $RESSale == "HA">> - The Hippolyta Academy, a famous slave school known to produce highly skilled battle maids. -<<elseif $RESSale == "NUL">> - Nueva Universidad de Libertad, a unique slave school promoting androgyny to the point of surgical modification. -<<else>> - the Futanari Sisters, an enigmatic group of transformation enthusiasts that sells beautiful hermaphrodites. -<</if>> -<<if $RESSale == "TCR">> - It's from a farmhand, not leadership, and they are offering a cow for sale. Before you can hang up on him and reprimand $assistant.name for allowing this Free Cities version of telemarketing to get through to you, the man hurriedly says, "<<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, $he's half off!" - <br><br> - You pause for a moment, and he plunges on: "<<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, @@.yellow;your first cow purchase from us this week is half price.@@ And, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>, this milky beauty is up for grabs. Keep $him by your desk for fresh squeezed milk, knock on wood and $he'll suck you right off, grab $him by the hips and $he'll take anything in $his rear; $he's plenty of fun! Come on down and get yourself a young, affectionate little cow<<= $girl>>!" -<<else>> -It's from a piece of merchandise, not leadership, and $he's offering $himself for sale. Before you can hang up on $him and reprimand $assistant.name for allowing this Free Cities version of telemarketing to get through to you, the slave hurriedly says, "<<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, I'm half off!" - -<br><br> - -You pause for a moment, and $he plunges on: "<<if $PC.title != 0>>Sir<<else>>Ma'am<</if>>, @@.yellow;your first slave purchase from us this week is half price.@@ And, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>, I'm one of the slaves for sale. -<<if $RESSale == "TSS">> - I've got the very best skills I could learn as a virgin. I'm healthy, obedient, and educated. And I'm fresh, and willing, and really eager." $He rips $his white school<<= $girl>> blouse open to show off a fresh pair of tits, and shakes them for you. "I would love to be your sex slave, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>," $he says, doing $his very best to sound appealing, like $he's been trained. -<<elseif $RESSale == "TUO">> - I'm smart and cute. I'm well educated and obedient, I will serve you well." $He blushes and maintains eye contact as $he continues. "I'm unexperienced when it comes to sexual matters, I hope you will treat me well." $He bows to you and finished. "I would love to be your slave, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>," $he says, doing $his very best to sound appealing, like $he's been taught. -<<elseif $RESSale == "GRI">> - I've, uh, been trained to obey." $His eyes flick to one side, like $he's reading $his cues. "And, um, I have really big boobs." $He's wearing a bathrobe, and $he suddenly jerks it open to reveal a bigger pair of breasts than anyone that age could possibly have grown $himself. "I would love to be your sex slave, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>," $he says, doing $his very best to sound appealing. No doubt $he'd prefer not to be part of any more testing. -<<elseif $RESSale == "SCP">> - I'm ready to be the perfect bimbo slave, and the young surgeon who did my implants was very skilled." $He's wearing a bikini, and $he pulls it down to flash you, revealing that $his tits resist gravity almost perfectly. They're gorgeous, but quite fake. "I would love to be your sex slave, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>," $he says, doing $his very best to sound appealing, like $he's been trained. -<<elseif $RESSale == "LDE">> - I've been trained to need cock up my ass." $He's nude, and spins around to point $his ass at the camera. $He begins to wink $his big butthole, $his tiny, soft cock dangling limply below it. $He cranes $his head around to continue. "I can come from nothing but buttsex," $he says proudly. "I would love to be your anal slut, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>," $he says, sounding very eager to begin. -<<elseif $RESSale == "TGA">> - My tutelage has been long and hard, and I'm very eager to begin my life as a slave." $He's nude, and stands up to reveal $his hard-on. $He spins for the camera, showing $himself off. "I can help protect you, too: I'm proficient in unarmed combat, and I have weapons training. I would love to be your bitch, or your bodyguard, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>," $he says, doing $his very best to sound appealing, like $he's been told. -<<elseif $RESSale == "HA">> - I am ready to serve you in any way you deem fit and do everything I can to protect your life." $He's wearing a delicate maid uniform, beautifully contrasting $his powerful physique and towering stature. "The academy has given me the opportunity to learn many valuable skills and I look forward to putting them at your service." -<<elseif $RESSale == "NUL">> - My education is complete, and I am ready to unveil the perfection of my form to the world." Naturally, $he's totally nude, yet you still are unable to even guess what sort of equipment $he was born with. "It is my duty and my honor to share myself in eternal servitude, in all manners and mechanisms," $he says in an unnervingly upbeat monotone. -<<else>> - The time has come for me to serve my Sisters by leaving my community and becoming a slave. Our sex skills are unparalleled," $he says proudly. $He's nude, and reclines luxuriantly for the camera, showing $his remarkable body off in all its gorgeous strangeness. $His boobs are huge, $his dick is hard, $his pussy is wet, and $his ass is relaxed. "I love to fuck, <<if $PC.title != 0>>sir<<else>>ma'am<</if>>," $he says, and you believe $him. - <<if ($PC.dick != 0) && ($PC.vagina != -1)>> - <br><br> - <<if ($PC.boobs >= 300)>> - "I would also adore serving someone like you," $he adds sincerely, $his emphasis making it quite clear the Sisters have heard rumors about your hermaphroditism. "We can't offer any further discount, but I promise I'd worship you with all my heart." $He bats $his eyes at you. "And my other parts, too!" - <<else>> - $His eyes flick downward momentarily, and $he looks nervous, swallowing before continuing. "Please let me be your slave," $he almost begs. "Serving another futa would, oh," and $he pauses, shivering a little. Recollecting $himself, $he goes on, "Wonderful. Serving you would be a dream come true." - <</if>> - <</if>> -<</if>> -<</if>> /* closes Cattle Ranch exception */ - -<br><br> - -<<setAssistantPronouns>> -<<= capFirstChar($assistant.name)>>'s $assistant.appearance avatar appears on the screen next to the video call. -<<if $assistant.personality <= 0>> - "I have stored the confirmation code, <<= properMaster()>>," it notes. "If you wish to take advantage of this promotion, use the slave buying menu to navigate to the appropriate school next week. I have appended a note to that school's entry to remind you." -<<else>> - <<if ($RESSale == "TSS") || ($RESSale == "SCP")>> - "And I would love to - <<switch $assistant.appearance>> - <<case "monstergirl">> - break both $his virgin holes at once," the monster<<= _girlA>> exclaims, and shakes _hisA dicks for emphasis. - <<case "shemale">> - wreck $his virgin asshole," the shemale exclaims, and starts to jack off. - <<case "amazon">> - fist $his virgin cunt," the amazon exclaims, and helpfully raises the fist in question. - <<case "businesswoman">> - sell $his fresh pussy to the highest bidder," the business<<= _womanA>> exclaims. - <<case "fairy">> - play with $his clit and lap up those sweet virgin juices!" the fairy exclaims, licking _hisA lips. - <<case "pregnant fairy">> - play with $his clit and lap up those sweet motherly juices!" the fairy exclaims, licking _hisA lips. - <<case "goddess">> - teach $him all about being a real $woman," the goddess exclaims, rubbing _hisA belly in anticipation. - <<case "hypergoddess">> - teach $him all about being a real $woman," the goddess exclaims, rubbing _hisA massive belly in anticipation. - <<case "loli">> - play with $him!" the little _girlA exclaims happily while jumping up and down. - <<case "preggololi">> - play with $him!" the little _girlA exclaims happily while caressing _hisA belly. - <<case "angel">> - keep $him safe and craft the perfect future slavewife for someone," the angel says, crossing _hisA arms under _hisA chest. - <<case "cherub">> - pretty $him up for $his first love!" the cherub says, clasping _hisA hands together and fluttering back and forth. - <<case "incubus">> - brutally stretch both those holes until $he is a slave to my dick," the incubus says, stroking _hisA cock to erection. - <<case "succubus">> - shape $him into the perfect $girl for <<= properMaster()>>," the succubus says, licking _hisA lips with anticipation. "I'll make a real sex demon out of $him!" - <<case "imp">> - tease $him until $he is begging to have $his virginity taken," the imp says, rubbing _hisA hands together with anticipation. - <<case "witch">> - play with $his body," the witch says. "Test my spells on someone else for once." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - break both $his virgin holes at once," the avatar exclaims, _hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill $him with young until $he is a bloated hive." - <<case "schoolgirl">> - make out with $him. $He's cute!" the school<<= _girlA>> exclaims. - <<default>> - fuck $his virgin holes," _heA says. - <</switch>> - <<elseif $RESSale == "GRI" || $RESSale == "TCR">> - "And I would love to - <<switch $assistant.appearance>> - <<case "monstergirl">> - get my tentacles on those tits," the monster<<= _girlA>> exclaims. - <<case "shemale">> - fuck those titties," the shemale exclaims, and starts to jack off. - <<case "amazon">> - put $him out to pasture," the amazon exclaims, indicating the skin of milk on _hisA belt. - <<case "businesswoman">> - put that cow in the dairy," the business<<= _womanA>> exclaims. - <<case "fairy">> - bounce on those nipples until they fill me with milk!" the fairy exclaims, rubbing _hisA belly. - <<case "pregnant fairy">> - bounce on those nipples until my babies are fed!" the fairy exclaims, rubbing _hisA swollen belly. - <<case "goddess" "hypergoddess">> - taste those bountiful breasts," the goddess exclaims, licking _hisA lips. - <<case "loli">> - play with $his tits!" the little _girlA exclaims happily while jumping up and down. - <<case "preggololi">> - play with $his tits!" the little _girlA exclaims happily while caressing _hisA belly. - <<case "angel">> - feed all the hungry with those motherly breasts," the angel says, blushing at the thought. - <<case "cherub">> - have a pair just like them!" the cherub says, clasping _hisA hands to _hisA breasts. - <<case "incubus">> - wrap them around my shaft and blow a load right into $his face," the incubus says, stroking _hisA cock to erection. - <<case "succubus">> - teach $him the perfect way to tease <<= properMaster()>> with those boobs," _heA says, swelling _hisA own tits and pressing them against the screen. - <<case "imp">> - tease $him until $he cums to the slightest touch of $his nipples," the imp says, rubbing _hisA hands together with anticipation. - <<case "witch">> - play with their breasts," the witch says. "Test my lactation and breast growth spells on someone else for once." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - penetrate those nipples," the avatar exclaims, _hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill $him with young until they pin $him to the floor. Then $his defenseless holes will be filled too." - <<case "schoolgirl">> - suck on those titties!" the school<<= _girlA>> exclaims. - <<default>> - make those breasts bounce," _heA says. - <</switch>> - <<elseif $RESSale == "LDE" || $RESSale == "NUL">> - "And I would love to - <<switch $assistant.appearance>> - <<case "monstergirl">> - shove both my cocks up there," the monster<<= _girlA>> exclaims. - <<case "shemale">> - fuck that butt even bigger," the shemale exclaims, and starts to jack off. - <<case "amazon">> - fist that butthole," the amazon exclaims, and helpfully raises the fist in question. - <<case "businesswoman">> - see how many customers that asshole can bear," the business<<= _womanA>> exclaims. - <<case "fairy">> - use that butt as a pillow!" the fairy exclaims. - <<case "pregnant fairy">> - see if I can impregnate $his butt!" the fairy exclaims. - <<case "goddess" "hypergoddess">> - see just how obedient $he really is," the goddess exclaims, flexing a hand for emphasis. - <<case "loli">> - play with $his big butt!" the little _girlA exclaims happily while jumping up and down. - <<case "preggololi">> - play with $his big butt!" the little _girlA exclaims happily while caressing _hisA belly. - <<case "angel">> - have an ass like that..." the angel trails off, a finger to _hisA lips as _heA fantasizes. - <<case "cherub">> - take a seat on that ass," the cherub sighs. "Flying all the time gets tiring." - <<case "incubus">> - wrap that ass around my shaft and blow a load across $his back," the incubus says, stroking _hisA cock to erection. - <<case "succubus">> - teach $him the perfect way to tease <<= properMaster()>> with that ass," _heA says, swelling _hisA own behind, pressing it against the screen and winking _hisA butthole tantalizingly at you. - <<case "imp">> - spank that ass till it's big and red then take a nap on it," the imp says, rubbing _hisA hands together with anticipation and yawning. - <<case "witch">> - play with $his ass," the witch says. "Test my butt growth spells on someone else for once. Last time I was hobbling around with a pair of tits as a rear for a week..." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - split $his asshole," the avatar exclaims, _hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill $his ass with larva until $his belly reaches the floor, swell $his bottom with aphrodisiacs, and watch $him birth until $he breaks." - <<case "schoolgirl">> - lick $his big soft behind," the school<<= _girlA>> exclaims, and sticks out _hisA tongue. - <<default>> - fuck that ass," _heA says. - <</switch>> - <<elseif $RESSale == "TGA">> - "And I would love to - <<switch $assistant.appearance>> - <<case "monstergirl">> - shove both my cocks up $his virgin anus," the monster<<= _girlA>> exclaims. - <<case "shemale">> - fuck that virgin asshole," the shemale exclaims, and starts to jack off. - <<case "amazon">> - finger fuck $his virgin ass," the amazon exclaims, and helpfully raises the fingers in question. - <<case "businesswoman">> - sell $his anal virginity to the highest bidder," the business<<= _womanA>> exclaims. - <<case "fairy">> - give the dick a great big hug and suckle out all the precum!" the fairy exclaims, rubbing _hisA legs together. - <<case "pregnant fairy">> - play meet the baby! ...Well, maybe just with you, <<if ($PC.title == 0)>>Big Sis<<else>>Big Bro<</if>>," the fairy exclaims, rubbing _hisA legs together. - <<case "goddess" "hypergoddess">> - see $him put that dick to work," the goddess exclaims, one sultry finger at _hisA lips. - <<case "loli">> - play with $his dick!" the little _girlA exclaims happily while jumping up and down. - <<case "preggololi">> - get that dick in me!" the little _girlA exclaims happily while caressing _hisA belly and licking _hisA lips. - <<case "angel">> - wrap that penis up in a nice bow for $his wife to untie," the angel says, blushing and swaying side to side. - <<case "cherub">> - know how long $he could go for," the cherub says. "$He could probably fuck all night long!" - <<case "incubus">> - plow $his ass and watch $him ejaculate against $his will," the incubus says, stroking _hisA cock to erection. - <<case "succubus">> - teach $him the perfect way to tease <<= properMaster()>> with that cock," _heA says, _hisA clit steadily enlarging until it's the size of _hisA leg. _HeA hefts it to _hisA mouth and enthusiastically tongues _hisA urethra. - <<case "imp">> - ride that cock until I'm too heavy to fly," the imp says, rubbing _hisA belly and spreading _hisA legs. - <<case "witch">> - play with that dick," the witch says. "Test my cock growth and cum amplification spells on someone else for once. Last time I sprouted a cock bigger than me and my belly steadily swelled with cum until I jacked off. I got so tired I couldn't do it anymore and nearly burst like a cum balloon..." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - fuck $his cock," the avatar exclaims, _hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Squirm down to $his balls and pump them full of larva and watch $him birth them until $he breaks." - <<case "schoolgirl">> - suck that dick," the school<<= _girlA>> exclaims, and sticks out _hisA tongue. - <<default>> - train that body," _heA says. - <</switch>> - <<elseif $RESSale == "HA">> - "And I would love to - <<switch $assistant.appearance>> - <<case "monstergirl">> - break both $his holes at once," the monster<<= _girlA>> exclaims, and shakes _hisA dicks for emphasis. - <<case "shemale">> - wreck $his amazonian asshole," the shemale exclaims, and starts to jack off. - <<case "amazon">> - fist $his cunt," the amazon exclaims, and helpfully raises the fist in question. - <<case "businesswoman">> - sell $his fresh pussy to the highest bidder," the business<<= _womanA>> exclaims. - <<case "fairy">> - play with $his clit and lap up those sweet juices!" the fairy exclaims, licking _hisA lips. - <<case "pregnant fairy">> - play with $his clit and lap up those sweet juices!" the fairy exclaims, licking _hisA lips. - <<case "goddess">> - teach $him all about being a real $woman," the goddess exclaims, rubbing _hisA belly in anticipation. - <<case "hypergoddess">> - teach $him all about being a real $woman," the goddess exclaims, rubbing _hisA massive belly in anticipation. - <<case "loli">> - play with $him!" the little _girlA exclaims happily while jumping up and down. - <<case "preggololi">> - play with $him!" the little _girlA exclaims happily while caressing _hisA belly. - <<case "angel">> - keep $him safe and craft the perfect future slavewife for someone," the angel says, crossing _hisA arms under _hisA chest. - <<case "cherub">> - pretty $him up for $his first love!" the cherub says, clasping _hisA hands together and fluttering back and forth. - <<case "incubus">> - brutally stretch both those holes until $he is a slave to my dick," the incubus says, stroking _hisA cock to erection. - <<case "succubus">> - shape $him into the perfect $girl for <<= properMaster()>>," the succubus says, licking _hisA lips with anticipation. "I'll make a real sex demon out of $him!" - <<case "imp">> - tease $him until $he is begging to have $his virginity taken," the imp says, rubbing _hisA hands together with anticipation. - <<case "witch">> - play with $his body," the witch says. "Test my spells on someone else for once." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - break both $his virgin holes at once," the avatar exclaims, _hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "Fill $him with young until $he is a bloated hive." - <<case "schoolgirl">> - make out with $him. $He's cute!" the school<<= _girlA>> exclaims. - <<default>> - fuck $his amazonian holes," _heA says. - <</switch>> - <<else>> - <<switch $assistant.appearance>> - <<case "monstergirl">> - "And I love to fuck futas!" _heA shouts, dicks painfully erect. - <<case "shemale">> - "And I love to fuck futas!" _heA shouts, cock painfully erect. - <<case "amazon">> - "And I love to fuck futas!" _heA howls, and then adds more quietly, "A-and get fucked by futas." - <<case "businesswoman">> - "And I love to fuck futas!" _heA exclaims, and then blushes furiously. - <<case "fairy" "pregnant fairy">> - "And I love to fuck futas!" _heA exclaims, flying circles around you. - <<case "goddess" "hypergoddess">> - "And I love to fuck futas!" _heA exclaims, awestruck with anticipation. - <<case "cherub" "loli">> - "And I love to fuck futas!" _heA exclaims, then blushes beet red when _heA realizes what _heA said. - <<case "preggololi">> - "And I love to fuck futas!" _heA exclaims, rubbing _hisA bulging belly with anticipation. - <<case "angel">> - "Keep it away from me! It is an aberration!" _heA shouts, before flying off screen in a huff. - <<case "incubus">> - "And I love to fuck futas!" _heA exclaims, _hisA erect dick throbbing with anticipation. - <<case "succubus">> - "And I love to get fucked by futas!" _heA exclaims, <<if $PC.dick != 0 && $PC.vagina != -1>>blowing you a kiss<<else>>_hisA pussy already wet with anticipation<</if>>. - <<case "imp">> - "And I love to get fucked by futas till I'm too heavy to fly," _heA exclaims, rubbing _hisA belly and spreading _hisA legs. - <<case "witch">> - "And I love to fuck futas!" _heA exclaims, readying a spell to make them last longer. - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - "And I love to fuck futas!" _heA exclaims, _hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "So many holes to force young into! I can't wait to turn $him into a bulging, squirming, bursting nursery!" - <<case "schoolgirl">> - "And I love to fuck futas!" _heA exclaims, bouncing with excitement. - <<default>> - "And I love to fuck futas!" _heA exclaims. - <</switch>> - <</if>> - "Ahem. I have stored the confirmation code, <<= properMaster()>>," _heA notes. "If you wish to take advantage of this promotion, use the slave buying menu to navigate to the appropriate school next week. I have appended a note to that school's entry to remind you." -<</if>> -- GitLab From 778ab71cda699a68208e5ba21b23a2d84d32531b Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 23:09:34 -0400 Subject: [PATCH 59/91] paragraphs --- src/events/RE/resSale.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/events/RE/resSale.js b/src/events/RE/resSale.js index 6fbe2a8ab14..58624949a7b 100644 --- a/src/events/RE/resSale.js +++ b/src/events/RE/resSale.js @@ -86,7 +86,8 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`Ma'am`); } r.push(`, ${he}'s half off!"`); - // <br><br> + App.Events.addParagraph(node, r); + r = []; r.push(`You pause for a moment, and he plunges on: "`); if (V.PC.title !== 0) { r.push(`Sir`); @@ -109,7 +110,8 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { } r.push(`, I'm half off!"`); - // <br><br> + App.Events.addParagraph(node, r); + r = []; r.push(`You pause for a moment, and ${he} plunges on: "`); if (V.PC.title !== 0) { @@ -185,7 +187,8 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { } r.push(`," ${he} says, and you believe ${him}.`); if (V.PC.dick !== 0 && V.PC.vagina !== -1) { - // <br><br> + App.Events.addParagraph(node, r); + r = []; if (V.PC.boobs >= 300) { r.push(`"I would also adore serving someone like you," ${he} adds sincerely, ${his} emphasis making it quite clear the Sisters have heard rumors about your hermaphroditism. "We can't offer any further discount, but I promise I'd worship you with all my heart." ${He} bats ${his} eyes at you. "And my other parts, too!"`); } else { @@ -193,11 +196,11 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { } } } - }/* closes Cattle Ranch exception */ + } - // <br><br> + App.Events.addParagraph(node, r); + r = []; - // <<setAssistantPronouns>> const { heA, hisA, girlA, womanA, } = getPronouns(assistant.pronouns().main).appendSuffix("A"); -- GitLab From 1f941803d717e006ff3ceed2ac2fd533f59ca282 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 23:19:40 -0400 Subject: [PATCH 60/91] text fixes --- src/events/RE/resSale.js | 170 +++++++++++++++++++-------------------- 1 file changed, 85 insertions(+), 85 deletions(-) diff --git a/src/events/RE/resSale.js b/src/events/RE/resSale.js index 58624949a7b..94d1609f3db 100644 --- a/src/events/RE/resSale.js +++ b/src/events/RE/resSale.js @@ -79,113 +79,113 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`the Futanari Sisters, an enigmatic group of transformation enthusiasts that sells beautiful hermaphrodites.`); } if (school === "TCR") { - r.push(`It's from a farmhand, not leadership, and they are offering a cow for sale. Before you can hang up on him and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the man hurriedly says, "`); + r.push(`It's from a farmhand, not leadership, and they are offering a cow for sale. Before you can hang up on him and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the man hurriedly says,`); if (V.PC.title !== 0) { - r.push(`Sir`); + r.push(`"Sir,`); } else { - r.push(`Ma'am`); + r.push(`"Ma'am,`); } - r.push(`, ${he}'s half off!"`); + r.push(`${he}'s half off!"`); App.Events.addParagraph(node, r); r = []; - r.push(`You pause for a moment, and he plunges on: "`); + r.push(`You pause for a moment, and he plunges on:`); if (V.PC.title !== 0) { - r.push(`Sir`); + r.push(`"Sir,`); } else { - r.push(`Ma'am`); + r.push(`"Ma'am,`); } - r.push(`, <span class="yellow">your first cow purchase from us this week is half price.</span> And, `); + r.push(`<span class="yellow">your first cow purchase from us this week is half price.</span> And,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,`); } else { - r.push(`ma'am`); + r.push(`ma'am,`); } - r.push(`, this milky beauty is up for grabs. Keep ${him} by your desk for fresh squeezed milk, knock on wood and ${he}'ll suck you right off, grab ${him} by the hips and ${he}'ll take anything in ${his} rear; ${he}'s plenty of fun! Come on down and get yourself a young, affectionate little cow${girl}!"`); + r.push(`this milky beauty is up for grabs. Keep ${him} by your desk for fresh squeezed milk, knock on wood and ${he}'ll suck you right off, grab ${him} by the hips and ${he}'ll take anything in ${his} rear; ${he}'s plenty of fun! Come on down and get yourself a young, affectionate little cow${girl}!"`); } else { - r.push(`It's from a piece of merchandise, not leadership, and ${he}'s offering ${himself} for sale. Before you can hang up on ${him} and reprimand V.assistant.name for allowing this Free Cities version of telemarketing to get through to you, the slave hurriedly says, "`); + r.push(`It's from a piece of merchandise, not leadership, and ${he}'s offering ${himself} for sale. Before you can hang up on ${him} and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the slave hurriedly says,`); if (V.PC.title !== 0) { - r.push(`Sir`); + r.push(`"Sir,`); } else { - r.push(`Ma'am`); + r.push(`"Ma'am,`); } - r.push(`, I'm half off!"`); + r.push(`I'm half off!"`); App.Events.addParagraph(node, r); r = []; - r.push(`You pause for a moment, and ${he} plunges on: "`); + r.push(`You pause for a moment, and ${he} plunges on:`); if (V.PC.title !== 0) { - r.push(`Sir`); + r.push(`"Sir,`); } else { - r.push(`Ma'am`); + r.push(`"Ma'am,`); } - r.push(`, <span class="yellow">your first slave purchase from us this week is half price.</span> And, `); + r.push(`<span class="yellow">your first slave purchase from us this week is half price.</span> And,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,`); } else { - r.push(`ma'am`); + r.push(`ma'am,`); } - r.push(`, I'm one of the slaves for sale.`); + r.push(`I'm one of the slaves for sale.`); if (school === "TSS") { - r.push(`I've got the very best skills I could learn as a virgin. I'm healthy, obedient, and educated. And I'm fresh, and willing, and really eager." ${He} rips ${his} white school${girl} blouse open to show off a fresh pair of tits, and shakes them for you. "I would love to be your sex slave, `); + r.push(`I've got the very best skills I could learn as a virgin. I'm healthy, obedient, and educated. And I'm fresh, and willing, and really eager." ${He} rips ${his} white school${girl} blouse open to show off a fresh pair of tits, and shakes them for you. "I would love to be your sex slave,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,"`); } else { - r.push(`ma'am`); + r.push(`ma'am,"`); } - r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); + r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); } else if (school === "TUO") { - r.push(`I'm smart and cute. I'm well educated and obedient, I will serve you well." ${He} blushes and maintains eye contact as ${he} continues. "I'm unexperienced when it comes to sexual matters, I hope you will treat me well." ${He} bows to you and finished. "I would love to be your slave, `); + r.push(`I'm smart and cute. I'm well educated and obedient, I will serve you well." ${He} blushes and maintains eye contact as ${he} continues. "I'm unexperienced when it comes to sexual matters, I hope you will treat me well." ${He} bows to you and finished. "I would love to be your slave,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,"`); } else { - r.push(`ma'am`); + r.push(`ma'am,"`); } - r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been taught.`); + r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been taught.`); } else if (school === "GRI") { - r.push(`I've, uh, been trained to obey." ${His} eyes flick to one side, like ${he}'s reading ${his} cues. "And, um, I have really big boobs." ${He}'s wearing a bathrobe, and ${he} suddenly jerks it open to reveal a bigger pair of breasts than anyone that age could possibly have grown ${himself}. "I would love to be your sex slave, `); + r.push(`I've, uh, been trained to obey." ${His} eyes flick to one side, like ${he}'s reading ${his} cues. "And, um, I have really big boobs." ${He}'s wearing a bathrobe, and ${he} suddenly jerks it open to reveal a bigger pair of breasts than anyone that age could possibly have grown ${himself}. "I would love to be your sex slave,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,"`); } else { - r.push(`ma'am`); + r.push(`ma'am,"`); } - r.push(`," ${he} says, doing ${his} very best to sound appealing. No doubt ${he}'d prefer not to be part of any more testing.`); + r.push(`${he} says, doing ${his} very best to sound appealing. No doubt ${he}'d prefer not to be part of any more testing.`); } else if (school === "SCP") { - r.push(`I'm ready to be the perfect bimbo slave, and the young surgeon who did my implants was very skilled." ${He}'s wearing a bikini, and ${he} pulls it down to flash you, revealing that ${his} tits resist gravity almost perfectly. They're gorgeous, but quite fake. "I would love to be your sex slave, `); + r.push(`I'm ready to be the perfect bimbo slave, and the young surgeon who did my implants was very skilled." ${He}'s wearing a bikini, and ${he} pulls it down to flash you, revealing that ${his} tits resist gravity almost perfectly. They're gorgeous, but quite fake. "I would love to be your sex slave,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,"`); } else { - r.push(`ma'am`); + r.push(`ma'am,"`); } - r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); + r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); } else if (school === "LDE") { - r.push(`I've been trained to need cock up my ass." ${He}'s nude, and spins around to point ${his} ass at the camera. ${He} begins to wink ${his} big butthole, ${his} tiny, soft cock dangling limply below it. ${He} cranes ${his} head around to continue. "I can come from nothing but buttsex," ${he} says proudly. "I would love to be your anal slut, `); + r.push(`I've been trained to need cock up my ass." ${He}'s nude, and spins around to point ${his} ass at the camera. ${He} begins to wink ${his} big butthole, ${his} tiny, soft cock dangling limply below it. ${He} cranes ${his} head around to continue. "I can come from nothing but buttsex," ${he} says proudly. "I would love to be your anal slut,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,"`); } else { - r.push(`ma'am`); + r.push(`ma'am,"`); } - r.push(`," ${he} says, sounding very eager to begin.`); + r.push(`${he} says, sounding very eager to begin.`); } else if (school === "TGA") { - r.push(`My tutelage has been long and hard, and I'm very eager to begin my life as a slave." ${He}'s nude, and stands up to reveal ${his} hard-on. ${He} spins for the camera, showing ${himself} off. "I can help protect you, too: I'm proficient in unarmed combat, and I have weapons training. I would love to be your bitch, or your bodyguard, `); + r.push(`My tutelage has been long and hard, and I'm very eager to begin my life as a slave." ${He}'s nude, and stands up to reveal ${his} hard-on. ${He} spins for the camera, showing ${himself} off. "I can help protect you, too: I'm proficient in unarmed combat, and I have weapons training. I would love to be your bitch, or your bodyguard,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,"`); } else { - r.push(`ma'am`); + r.push(`ma'am,"`); } - r.push(`," ${he} says, doing ${his} very best to sound appealing, like ${he}'s been told.`); + r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been told.`); } else if (school === "HA") { r.push(`I am ready to serve you in any way you deem fit and do everything I can to protect your life." ${He}'s wearing a delicate maid uniform, beautifully contrasting ${his} powerful physique and towering stature. "The academy has given me the opportunity to learn many valuable skills and I look forward to putting them at your service."`); } else if (school === "NUL") { r.push(`My education is complete, and I am ready to unveil the perfection of my form to the world." Naturally, ${he}'s totally nude, yet you still are unable to even guess what sort of equipment ${he} was born with. "It is my duty and my honor to share myself in eternal servitude, in all manners and mechanisms," ${he} says in an unnervingly upbeat monotone.`); } else { - r.push(`The time has come for me to serve my Sisters by leaving my community and becoming a slave. Our sex skills are unparalleled," ${he} says proudly. ${He}'s nude, and reclines luxuriantly for the camera, showing ${his} remarkable body off in all its gorgeous strangeness. ${His} boobs are huge, ${his} dick is hard, ${his} pussy is wet, and ${his} ass is relaxed. "I love to fuck, `); + r.push(`The time has come for me to serve my Sisters by leaving my community and becoming a slave. Our sex skills are unparalleled," ${he} says proudly. ${He}'s nude, and reclines luxuriantly for the camera, showing ${his} remarkable body off in all its gorgeous strangeness. ${His} boobs are huge, ${his} dick is hard, ${his} pussy is wet, and ${his} ass is relaxed. "I love to fuck,`); if (V.PC.title !== 0) { - r.push(`sir`); + r.push(`sir,"`); } else { - r.push(`ma'am`); + r.push(`ma'am,"`); } - r.push(`," ${he} says, and you believe ${him}.`); + r.push(`${he} says, and you believe ${him}.`); if (V.PC.dick !== 0 && V.PC.vagina !== -1) { App.Events.addParagraph(node, r); r = []; @@ -202,6 +202,7 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r = []; const { + HeA, heA, hisA, girlA, womanA, } = getPronouns(assistant.pronouns().main).appendSuffix("A"); r.push(`${capFirstChar(V.assistant.name)}'s ${V.assistant.appearance} avatar appears on the screen next to the video call.`); @@ -239,10 +240,10 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`play with ${him}!" the little ${girlA} exclaims happily while jumping up and down.`); break; case "preggololi": - r.push(`play with ${him}!" the little ${girlA} exclaims happily while caressing hisA belly.`); + r.push(`play with ${him}!" the little ${girlA} exclaims happily while caressing ${hisA} belly.`); break; case "angel": - r.push(`keep ${him} safe and craft the perfect future slavewife for someone," the angel says, crossing ${hisA} arms under hisA chest.`); + r.push(`keep ${him} safe and craft the perfect future slavewife for someone," the angel says, crossing ${hisA} arms under ${hisA} chest.`); break; case "cherub": r.push(`pretty ${him} up for ${his} first love!" the cherub says, clasping ${hisA} hands together and fluttering back and forth.`); @@ -297,13 +298,13 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`play with ${his} tits!" the little ${girlA} exclaims happily while jumping up and down.`); break; case "preggololi": - r.push(`play with ${his} tits!" the little ${girlA} exclaims happily while caressing hisA belly.`); + r.push(`play with ${his} tits!" the little ${girlA} exclaims happily while caressing ${hisA} belly.`); break; case "angel": r.push(`feed all the hungry with those motherly breasts," the angel says, blushing at the thought.`); break; case "cherub": - r.push(`have a pair just like them!" the cherub says, clasping ${hisA} hands to hisA breasts.`); + r.push(`have a pair just like them!" the cherub says, clasping ${hisA} hands to ${hisA} breasts.`); break; case "incubus": r.push(`wrap them around my shaft and blow a load right into ${his} face," the incubus says, stroking ${hisA} cock to erection.`); @@ -355,10 +356,10 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`play with ${his} big butt!" the little ${girlA} exclaims happily while jumping up and down.`); break; case "preggololi": - r.push(`play with ${his} big butt!" the little ${girlA} exclaims happily while caressing hisA belly.`); + r.push(`play with ${his} big butt!" the little ${girlA} exclaims happily while caressing ${hisA} belly.`); break; case "angel": - r.push(`have an ass like that..." the angel trails off, a finger to ${hisA} lips as heA fantasizes.`); + r.push(`have an ass like that..." the angel trails off, a finger to ${hisA} lips as ${heA} fantasizes.`); break; case "cherub": r.push(`take a seat on that ass," the cherub sighs. "Flying all the time gets tiring."`); @@ -367,7 +368,7 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`wrap that ass around my shaft and blow a load across ${his} back," the incubus says, stroking ${hisA} cock to erection.`); break; case "succubus": - r.push(`teach ${him} the perfect way to tease ${properMaster()} with that ass," ${heA} says, swelling ${hisA} own behind, pressing it against the screen and winking hisA butthole tantalizingly at you.`); + r.push(`teach ${him} the perfect way to tease ${properMaster()} with that ass," ${heA} says, swelling ${hisA} own behind, pressing it against the screen and winking ${hisA} butthole tantalizingly at you.`); break; case "imp": r.push(`spank that ass till it's big and red then take a nap on it," the imp says, rubbing ${hisA} hands together with anticipation and yawning.`); @@ -403,13 +404,13 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`give the dick a great big hug and suckle out all the precum!" the fairy exclaims, rubbing ${hisA} legs together.`); break; case "pregnant fairy": - r.push(`play meet the baby! ...Well, maybe just with you, `); + r.push(`play meet the baby! ...Well, maybe just with you,`); if (V.PC.title === 0) { - r.push(`Big Sis`); + r.push(`Big Sis,"`); } else { - r.push(`Big Bro`); + r.push(`Big Bro,"`); } - r.push(`," the fairy exclaims, rubbing ${hisA} legs together.`); + r.push(`the fairy exclaims, rubbing ${hisA} legs together.`); break; case "goddess": case "hypergoddess": @@ -419,7 +420,7 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`play with ${his} dick!" the little ${girlA} exclaims happily while jumping up and down.`); break; case "preggololi": - r.push(`get that dick in me!" the little ${girlA} exclaims happily while caressing hisA belly and licking hisA lips.`); + r.push(`get that dick in me!" the little ${girlA} exclaims happily while caressing ${hisA} belly and licking ${hisA} lips.`); break; case "angel": r.push(`wrap that penis up in a nice bow for ${his} wife to untie," the angel says, blushing and swaying side to side.`); @@ -431,10 +432,10 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`plow ${his} ass and watch ${him} ejaculate against ${his} will," the incubus says, stroking ${hisA} cock to erection.`); break; case "succubus": - r.push(`teach ${him} the perfect way to tease ${properMaster()} with that cock," ${heA} says, hisA clit steadily enlarging until it's the size of hisA leg. _HeA hefts it to hisA mouth and enthusiastically tongues hisA urethra.`); + r.push(`teach ${him} the perfect way to tease ${properMaster()} with that cock," ${heA} says, ${hisA} clit steadily enlarging until it's the size of ${hisA} leg. ${HeA} hefts it to ${hisA} mouth and enthusiastically tongues ${hisA} urethra.`); break; case "imp": - r.push(`ride that cock until I'm too heavy to fly," the imp says, rubbing ${hisA} belly and spreading hisA legs.`); + r.push(`ride that cock until I'm too heavy to fly," the imp says, rubbing ${hisA} belly and spreading ${hisA} legs.`); break; case "witch": r.push(`play with that dick," the witch says. "Test my cock growth and cum amplification spells on someone else for once. Last time I sprouted a cock bigger than me and my belly steadily swelled with cum until I jacked off. I got so tired I couldn't do it anymore and nearly burst like a cum balloon..."`); @@ -479,10 +480,10 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`play with ${him}!" the little ${girlA} exclaims happily while jumping up and down.`); break; case "preggololi": - r.push(`play with ${him}!" the little ${girlA} exclaims happily while caressing hisA belly.`); + r.push(`play with ${him}!" the little ${girlA} exclaims happily while caressing ${hisA} belly.`); break; case "angel": - r.push(`keep ${him} safe and craft the perfect future slavewife for someone," the angel says, crossing ${hisA} arms under hisA chest.`); + r.push(`keep ${him} safe and craft the perfect future slavewife for someone," the angel says, crossing ${hisA} arms under ${hisA} chest.`); break; case "cherub": r.push(`pretty ${him} up for ${his} first love!" the cherub says, clasping ${hisA} hands together and fluttering back and forth.`); @@ -511,61 +512,60 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { } else { switch (V.assistant.appearance) { case "monstergirl": - r.push(`"And I love to fuck futas!" heA shouts, dicks painfully erect.`); + r.push(`"And I love to fuck futas!" ${heA} shouts, dicks painfully erect.`); break; case "shemale": - r.push(`"And I love to fuck futas!" heA shouts, cock painfully erect.`); + r.push(`"And I love to fuck futas!" ${heA} shouts, cock painfully erect.`); break; case "amazon": - r.push(`"And I love to fuck futas!" heA howls, and then adds more quietly, "A-and get fucked by futas."`); + r.push(`"And I love to fuck futas!" ${heA} howls, and then adds more quietly, "A-and get fucked by futas."`); break; case "businesswoman": - r.push(`"And I love to fuck futas!" heA exclaims, and then blushes furiously.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, and then blushes furiously.`); break; case "fairy": case "pregnant fairy": - r.push(`"And I love to fuck futas!" heA exclaims, flying circles around you.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, flying circles around you.`); break; case "goddess": case "hypergoddess": - r.push(`"And I love to fuck futas!" heA exclaims, awestruck with anticipation.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, awestruck with anticipation.`); break; case "cherub": case "loli": - r.push(`"And I love to fuck futas!" heA exclaims, then blushes beet red when heA realizes what heA said.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, then blushes beet red when ${heA} realizes what ${heA} said.`); break; case "preggololi": - r.push(`"And I love to fuck futas!" heA exclaims, rubbing hisA bulging belly with anticipation.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, rubbing ${hisA} bulging belly with anticipation.`); break; case "angel": - r.push(`"Keep it away from me! It is an aberration!" heA shouts, before flying off screen in a huff.`); + r.push(`"Keep it away from me! It is an aberration!" ${heA} shouts, before flying off screen in a huff.`); break; case "incubus": - r.push(`"And I love to fuck futas!" heA exclaims, hisA erect dick throbbing with anticipation.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, ${hisA} erect dick throbbing with anticipation.`); break; case "succubus": - r.push(`"And I love to get fucked by futas!" heA exclaims, `); + r.push(`"And I love to get fucked by futas!" ${heA} exclaims,`); if (V.PC.dick !== 0 && V.PC.vagina !== -1) { - r.push(`blowing you a kiss`); + r.push(`blowing you a kiss.`); } else { - r.push(`hisA pussy already wet with anticipation`); + r.push(`${hisA} pussy already wet with anticipation.`); } - r.push(`.`); break; case "imp": - r.push(`"And I love to get fucked by futas till I'm too heavy to fly," heA exclaims, rubbing hisA belly and spreading hisA legs.`); + r.push(`"And I love to get fucked by futas till I'm too heavy to fly," ${heA} exclaims, rubbing ${hisA} belly and spreading ${hisA} legs.`); break; case "witch": - r.push(`"And I love to fuck futas!" heA exclaims, readying a spell to make them last longer.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, readying a spell to make them last longer.`); break; case "ERROR_1606_APPEARANCE_FILE_CORRUPT": - r.push(`"And I love to fuck futas!" heA exclaims, hisA chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "So many holes to force young into! I can't wait to turn ${him} into a bulging, squirming, bursting nursery!"`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, ${hisA} chest splitting open to reveal countless tentacles, the flesh at their bases writhing with unborn young. "So many holes to force young into! I can't wait to turn ${him} into a bulging, squirming, bursting nursery!"`); break; case "schoolgirl": - r.push(`"And I love to fuck futas!" heA exclaims, bouncing with excitement.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims, bouncing with excitement.`); break; default: - r.push(`"And I love to fuck futas!" heA exclaims.`); + r.push(`"And I love to fuck futas!" ${heA} exclaims.`); } } r.push(`"Ahem. I have stored the confirmation code, ${properMaster()}," ${heA} notes. "If you wish to take advantage of this promotion, use the slave buying menu to navigate to the appropriate school next week. I have appended a note to that school's entry to remind you."`); -- GitLab From 3bb3199ef90d37d6b24d5f36e824edd40843eea5 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 31 May 2021 23:50:34 -0400 Subject: [PATCH 61/91] counter fix for impregnate --- src/npc/interaction/fPCImpreg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/npc/interaction/fPCImpreg.js b/src/npc/interaction/fPCImpreg.js index 487d206776c..c6bd63ed6fe 100644 --- a/src/npc/interaction/fPCImpreg.js +++ b/src/npc/interaction/fPCImpreg.js @@ -283,6 +283,7 @@ App.Interact.fPCImpreg = function(slave) { } } + seX(slave, slave.mpreg ? `anal` : `vaginal`, V.PC, "penetrative"); addPartner(slave, -1); knockMeUp(slave, 100, 2, -1); -- GitLab From 1a57a60a92bd67b686b7043cef8e63db669c5658 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 01:04:23 -0400 Subject: [PATCH 62/91] improve assignCareerByAge --- src/events/intro/pcAppearance.js | 68 ++++++++++++++++---------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index 72d8113c6ac..3d94c936c33 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -410,90 +410,90 @@ App.UI.Player.assignCareerByAge = function(selection) { if (V.disableForcedCareers) { career = selection; } else if (isPCCareerInCategory("wealth")) { - if (V.PC.actualAge < 14) { - career = "rich kid"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "trust fund"; - } else { + } else if (V.PC.actualAge < 14) { + career = "rich kid"; + } else{ career = "wealth"; } } else if (isPCCareerInCategory("capitalist")) { - if (V.PC.actualAge < 14) { - career = "business kid"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "entrepreneur"; + } else if (V.PC.actualAge < 14) { + career = "business kid"; } else { career = "capitalist"; } } else if (isPCCareerInCategory("mercenary")) { - if (V.PC.actualAge < 14) { - career = "child soldier"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "recruit"; + } else if (V.PC.actualAge < 14) { + career = "child soldier"; } else { career = "mercenary"; } } else if (isPCCareerInCategory("slaver")) { - if (V.PC.actualAge < 14) { - career = "slave tender"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "slave overseer"; + } else if (V.PC.actualAge < 14) { + career = "slave tender"; } else { career = "slaver"; } } else if (isPCCareerInCategory("engineer")) { - if (V.PC.actualAge < 14) { - career = "worksite helper"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "construction"; + } else if (V.PC.actualAge < 14) { + career = "worksite helper"; } else { career = "engineer"; } } else if (isPCCareerInCategory("medicine")) { - if (V.PC.actualAge < 14) { - career = "nurse"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "medical assistant"; + } else if (V.PC.actualAge < 14) { + career = "nurse"; } else { career = "medicine"; } } else if (isPCCareerInCategory("celebrity")) { - if (V.PC.actualAge < 14) { - career = "child star"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "rising star"; + } else if (V.PC.actualAge < 14) { + career = "child star"; } else { career = "celebrity"; } } else if (isPCCareerInCategory("BlackHat")) { - if (V.PC.actualAge < 14) { - career = "script kiddy"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "hacker"; + } else if (V.PC.actualAge < 14) { + career = "script kiddy"; } else { career = "BlackHat"; } } else if (isPCCareerInCategory("escort")) { - if (V.PC.actualAge < 14) { - career = "child prostitute"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "prostitute"; + } else if (V.PC.actualAge < 14) { + career = "child prostitute"; } else { career = "escort"; } } else if (isPCCareerInCategory("servant")) { - if (V.PC.actualAge < 14) { - career = "child servant"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "handmaiden"; + } else if (V.PC.actualAge < 14) { + career = "child servant"; } else { career = "servant"; } } else if (isPCCareerInCategory("gang")) { - if (V.PC.actualAge < 14) { - career = "street urchin"; - } else if (V.PC.actualAge < 10) { + if (V.PC.actualAge < 10) { career = "hoodlum"; + } else if (V.PC.actualAge < 14) { + career = "street urchin"; } else { career = "gang"; } -- GitLab From 4a0ca0f828f19c073458fc395033c76e48439e6d Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 01:36:18 -0400 Subject: [PATCH 63/91] assignCareerByAge again --- src/events/intro/pcAppearance.js | 98 ++++---------------------------- 1 file changed, 11 insertions(+), 87 deletions(-) diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index 3d94c936c33..a0c3df79e43 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -409,93 +409,17 @@ App.UI.Player.assignCareerByAge = function(selection) { if (V.disableForcedCareers) { career = selection; - } else if (isPCCareerInCategory("wealth")) { - if (V.PC.actualAge < 10) { - career = "trust fund"; - } else if (V.PC.actualAge < 14) { - career = "rich kid"; - } else{ - career = "wealth"; - } - } else if (isPCCareerInCategory("capitalist")) { - if (V.PC.actualAge < 10) { - career = "entrepreneur"; - } else if (V.PC.actualAge < 14) { - career = "business kid"; - } else { - career = "capitalist"; - } - } else if (isPCCareerInCategory("mercenary")) { - if (V.PC.actualAge < 10) { - career = "recruit"; - } else if (V.PC.actualAge < 14) { - career = "child soldier"; - } else { - career = "mercenary"; - } - } else if (isPCCareerInCategory("slaver")) { - if (V.PC.actualAge < 10) { - career = "slave overseer"; - } else if (V.PC.actualAge < 14) { - career = "slave tender"; - } else { - career = "slaver"; - } - } else if (isPCCareerInCategory("engineer")) { - if (V.PC.actualAge < 10) { - career = "construction"; - } else if (V.PC.actualAge < 14) { - career = "worksite helper"; - } else { - career = "engineer"; - } - } else if (isPCCareerInCategory("medicine")) { - if (V.PC.actualAge < 10) { - career = "medical assistant"; - } else if (V.PC.actualAge < 14) { - career = "nurse"; - } else { - career = "medicine"; - } - } else if (isPCCareerInCategory("celebrity")) { - if (V.PC.actualAge < 10) { - career = "rising star"; - } else if (V.PC.actualAge < 14) { - career = "child star"; - } else { - career = "celebrity"; - } - } else if (isPCCareerInCategory("BlackHat")) { - if (V.PC.actualAge < 10) { - career = "hacker"; - } else if (V.PC.actualAge < 14) { - career = "script kiddy"; - } else { - career = "BlackHat"; - } - } else if (isPCCareerInCategory("escort")) { - if (V.PC.actualAge < 10) { - career = "prostitute"; - } else if (V.PC.actualAge < 14) { - career = "child prostitute"; - } else { - career = "escort"; - } - } else if (isPCCareerInCategory("servant")) { - if (V.PC.actualAge < 10) { - career = "handmaiden"; - } else if (V.PC.actualAge < 14) { - career = "child servant"; - } else { - career = "servant"; - } - } else if (isPCCareerInCategory("gang")) { - if (V.PC.actualAge < 10) { - career = "hoodlum"; - } else if (V.PC.actualAge < 14) { - career = "street urchin"; - } else { - career = "gang"; + } else { + for (const data of App.Data.player.career.values()) { + if (Object.values(data).includes(V.PC.career)) { + if (V.PC.actualAge < 10) { + career = data["10"]; + } else if (V.PC.actualAge < 14) { + career = data["14"]; + } else{ + career = data["22"]; + } + } } } -- GitLab From f8a9b36721947853ac1212e4e279ed28f43bacdc Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 01:48:59 -0400 Subject: [PATCH 64/91] data change --- js/003-data/playerData.js | 68 ++++++++++++++++---------------- src/events/intro/pcAppearance.js | 10 ++--- 2 files changed, 39 insertions(+), 39 deletions(-) diff --git a/js/003-data/playerData.js b/js/003-data/playerData.js index 2d32ccd7131..3f63074a256 100644 --- a/js/003-data/playerData.js +++ b/js/003-data/playerData.js @@ -45,62 +45,62 @@ App.Data.player = { ]), career: new Map([ ["wealth", { - 22: "wealth", - 14: "trust fund", - 10: "rich kid" + "master": "wealth", + "apprentice": "trust fund", + "child": "rich kid" }], ["capitalist", { - 22: "capitalist", - 14: "entrepreneur", - 10: "business kid" + "master": "capitalist", + "apprentice": "entrepreneur", + "child": "business kid" }], ["mercenary", { - 22: "mercenary", - 14: "recruit", - 10: "child soldier" + "master": "mercenary", + "apprentice": "recruit", + "child": "child soldier" }], ["slaver", { - 22: "slaver", - 14: "slave overseer", - 10: "slave tender" + "master": "slaver", + "apprentice": "slave overseer", + "child": "slave tender" }], ["engineer", { - 22: "engineer", - 14: "construction", - 10: "worksite helper" + "master": "engineer", + "apprentice": "construction", + "child": "worksite helper" }], ["medicine", { - 22: "medicine", - 14: "medical assistant", - 10: "nurse" + "master": "medicine", + "apprentice": "medical assistant", + "child": "nurse" }], ["celebrity", { - 22: "celebrity", - 14: "rising star", - 10: "child star" + "master": "celebrity", + "apprentice": "rising star", + "child": "child star" }], ["escort", { - 22: "escort", - 14: "prostitute", - 10: "child prostitute" + "master": "escort", + "apprentice": "prostitute", + "child": "child prostitute" }], ["servant", { - 22: "servant", - 14: "handmaiden", - 10: "child servant" + "master": "servant", + "apprentice": "handmaiden", + "child": "child servant" }], ["gang", { - 22: "gang", - 14: "hoodlum", - 10: "street urchin" + "master": "gang", + "apprentice": "hoodlum", + "child": "street urchin" }], ["BlackHat", { - 22: "BlackHat", - 14: "hacker", - 10: "script kiddy" + "master": "BlackHat", + "apprentice": "hacker", + "child": "script kiddy" }], ["arcology owner", { - 22: "arcology owner" + "master": "arcology owner" }], ]) }; diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index a0c3df79e43..9b48a5b5773 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -412,12 +412,12 @@ App.UI.Player.assignCareerByAge = function(selection) { } else { for (const data of App.Data.player.career.values()) { if (Object.values(data).includes(V.PC.career)) { - if (V.PC.actualAge < 10) { - career = data["10"]; - } else if (V.PC.actualAge < 14) { - career = data["14"]; + if (V.PC.actualAge < 13) { + career = data.child; + } else if (V.PC.actualAge < 21) { + career = data.apprentice; } else{ - career = data["22"]; + career = data.master; } } } -- GitLab From 6b477b7cf0a98f005abcce72a1b587f93a42cce7 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 02:03:06 -0400 Subject: [PATCH 65/91] tweak range --- src/events/intro/pcAppearance.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index 9b48a5b5773..bcd542ea82f 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -412,9 +412,9 @@ App.UI.Player.assignCareerByAge = function(selection) { } else { for (const data of App.Data.player.career.values()) { if (Object.values(data).includes(V.PC.career)) { - if (V.PC.actualAge < 13) { + if (V.PC.actualAge <= 13) { career = data.child; - } else if (V.PC.actualAge < 21) { + } else if (V.PC.actualAge <= 21) { career = data.apprentice; } else{ career = data.master; -- GitLab From 22b450af168a12c0e8b9149535f69f40f69e5365 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 02:14:28 -0400 Subject: [PATCH 66/91] whitespace --- src/events/intro/pcAppearance.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index bcd542ea82f..b2288395523 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -416,7 +416,7 @@ App.UI.Player.assignCareerByAge = function(selection) { career = data.child; } else if (V.PC.actualAge <= 21) { career = data.apprentice; - } else{ + } else { career = data.master; } } -- GitLab From 77e3f361d30ab3d2436da9667defbc69c72b69c7 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 02:16:05 -0400 Subject: [PATCH 67/91] datamaster no matter what --- src/events/intro/pcAppearance.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index b2288395523..ddf00b804e6 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -416,9 +416,8 @@ App.UI.Player.assignCareerByAge = function(selection) { career = data.child; } else if (V.PC.actualAge <= 21) { career = data.apprentice; - } else { - career = data.master; } + career = career || data.master; } } } -- GitLab From cceb15036e537d241d50b375e332075617530eb8 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Tue, 1 Jun 2021 06:46:42 +0000 Subject: [PATCH 68/91] Fix missed template literal --- src/interaction/sellSlave.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/interaction/sellSlave.js b/src/interaction/sellSlave.js index 4ae791cdfe9..942f044f99e 100644 --- a/src/interaction/sellSlave.js +++ b/src/interaction/sellSlave.js @@ -3112,7 +3112,7 @@ new App.DomPassage("Sell Slave", () => { r.push(`${His} presence will influence General ${V.peacekeepers.generalName}'s troops in favor of a closer relationship with the Free City; old world mores are difficult to maintain while inside an arcology-trained sex slave.`); V.peacekeepers.attitude += Math.ceil(cost / 10000); } else if (V.peacekeepers.attitude < 100) { - r.push(`With ${slave.slaveName} added to their stable of sex slaves, General ${V.peacekeepers.generalName}'s troops will be fully converted to the idea of aligning with the slaveowning Free Cities, and the general will no longer have to maintain even plausible deniability. <span class="yellow">General V.peacekeepers.generalName's little empire is now effectively a client state of ${V.arcologies[0].name}.</span>`); + r.push(`With ${slave.slaveName} added to their stable of sex slaves, General ${V.peacekeepers.generalName}'s troops will be fully converted to the idea of aligning with the slaveowning Free Cities, and the general will no longer have to maintain even plausible deniability. <span class="yellow">General ${V.peacekeepers.generalName}'s little empire is now effectively a client state of ${V.arcologies[0].name}.</span>`); V.peacekeepers.attitude = 100; } else { r.push(`General ${V.peacekeepers.generalName}'s little empire continues to be a reliable client state of ${V.arcologies[0].name}, and a good market for ${V.peacekeepers.tastes}.`); -- GitLab From d0a0ef766136ff4a107ee9fd15d3a52339676fdd Mon Sep 17 00:00:00 2001 From: Blank_Alt <12406-Blank_Alt@users.noreply.gitgud.io> Date: Tue, 1 Jun 2021 23:25:01 +1200 Subject: [PATCH 69/91] SecExp-fix --- src/Mods/SecExp/events/attackReport.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mods/SecExp/events/attackReport.js b/src/Mods/SecExp/events/attackReport.js index 90b7e5ebdf6..0e73e3b4b52 100644 --- a/src/Mods/SecExp/events/attackReport.js +++ b/src/Mods/SecExp/events/attackReport.js @@ -1492,9 +1492,9 @@ App.Events.attackReport = function() { if (random(1, 100) <= 25) { candidates = 1; const roll = random(1, 100); - if (roll <= 33) { + if (captives >= 3 && roll <= 33) { candidates = 3; - } else if (roll <= 66) { + } else if (captives >= 2 && roll <= 66) { candidates = 2; } r.push(`${capFirstChar(num(candidates, true))} of them have the potential to be sex slaves.`); -- GitLab From 6d3fd7467a947044bf8d310d0038a8f3d0adfb1b Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 09:05:33 -0400 Subject: [PATCH 70/91] birth spacing fix --- src/js/birth/birth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js index 69a859b94b2..7cfc9c30c48 100644 --- a/src/js/birth/birth.js +++ b/src/js/birth/birth.js @@ -5523,7 +5523,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {}) break; case Job.ATTENDANT: - r.push(`${S.Attendant.slaveName} waddles to a special pool designed to give birth in. Once ${he} is safely in the water, ${he} begins to push out ${his} ${babies}, something ${he} has been trained for ${(slave.geneticQuirks.uterineHypersensitivity === 2) ? `, even if ${he} was convulsing with orgasms in the process` : ``}. ${His} ${childrenAre} promptly taken and, following a cleaning, ${he} heads back to the main pool.`); + r.push(`${S.Attendant.slaveName} waddles to a special pool designed to give birth in. Once ${he} is safely in the water, ${he} begins to push out ${his} ${babies}, something ${he} has been trained for${(slave.geneticQuirks.uterineHypersensitivity === 2) ? `, even if ${he} was convulsing with orgasms in the process` : ``}. ${His} ${childrenAre} promptly taken and, following a cleaning, ${he} heads back to the main pool.`); break; case Job.MATRON: -- GitLab From 84706320d2102a1ea44de7393286f16beb840299 Mon Sep 17 00:00:00 2001 From: Blank_Alt <12406-Blank_Alt@users.noreply.gitgud.io> Date: Tue, 1 Jun 2021 14:45:12 +0000 Subject: [PATCH 71/91] minorTweaking --- js/003-data/gameVariableData.js | 6 -- src/endWeek/economics/reputation.js | 4 +- src/endWeek/endWeek.js | 4 -- src/endWeek/saChoosesOwnClothes.js | 2 +- src/endWeek/saGetMilked.js | 2 - src/endWeek/saInflation.js | 2 +- src/endWeek/saPleaseYou.js | 51 ++++++++-------- src/endWeek/saServeThePublic.js | 1 - src/endWeek/slaveAssignmentReport.js | 7 +-- src/events/RE/reFullBed.js | 2 +- src/events/RE/reNickname.js | 2 +- src/events/RE/reStaffedMorning.js | 2 +- src/events/RESS/impregnationPlease.js | 7 +-- src/js/eventSelectionJS.js | 2 +- src/js/utilsPC.js | 2 +- src/js/utilsSlave.js | 2 +- src/js/utilsSlaves.js | 7 +++ src/npc/generate/newSlaveIntro.js | 2 +- src/pregmod/FCTV/FCTVshows.js | 4 +- src/pregmod/managePersonalAffairs.js | 2 +- src/uncategorized/PESS.tw | 7 ++- src/uncategorized/RESS.tw | 59 ++++++++++--------- src/uncategorized/newGamePlus.tw | 12 ++-- src/uncategorized/randomNonindividualEvent.tw | 4 +- src/uncategorized/reBusyDairy.tw | 2 +- 25 files changed, 96 insertions(+), 101 deletions(-) diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 675d40ee6ed..4f2b71a0163 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -420,8 +420,6 @@ App.Data.resetOnNGPlus = { currentRule: {}, costs: 0, seeBuilding: 0, - slaveOneTimeMinAge: 0, - slaveOneTimeMaxAge: 0, purchasedSagBGone: 0, eliteFail: 0, eliteFailTimer: 0, @@ -434,9 +432,6 @@ App.Data.resetOnNGPlus = { farmyardPregSetting: 0, DJignoresFlaws: 0, DJnoSex: 0, - DJRepBonus: 0, - fuckSlaves: 0, - publicServants: 0, localEcon: 0, econRate: 0, @@ -543,7 +538,6 @@ App.Data.resetOnNGPlus = { bioreactorsBarren: 0, dairyName: "the Dairy", dairy: 0, - cumSlaves: 0, /** @type {FC.FutureSocietyDeco} */ clubDecoration: (/** @type {FC.FutureSocietyDeco} */ "standard"), clubUpgradePDAs: 0, diff --git a/src/endWeek/economics/reputation.js b/src/endWeek/economics/reputation.js index 72630715bd6..d252ba5f928 100644 --- a/src/endWeek/economics/reputation.js +++ b/src/endWeek/economics/reputation.js @@ -672,7 +672,7 @@ App.EndWeek.reputation = function() { } } else if (V.arcologies[0].FSEdoRevivalist !== "unset") { const _threshold = Math.trunc(V.rep / 2000); - if (V.publicServants <= _threshold) { + if (V.slaves.filter(s => [Job.CLUB, Job.DJ, Job.PUBLIC].includes(s.assignment) || (s.assignment === Job.RECRUITER && V.recruiterTarget === "other arcologies" && V.arcologies[0].influenceTarget !== -1)).length <= _threshold) { r.push(`Society <span class="red">disapproves</span> of your failure to provide for cultural development by offering public servants or club slaves in a number that befits your reputation.`); FutureSocieties.Change("Edo Revivalist", -2); } else { @@ -684,7 +684,7 @@ App.EndWeek.reputation = function() { FutureSocieties.Change("Edo Revivalist", -2); } } else if (V.arcologies[0].FSArabianRevivalist !== "unset") { - if (V.fuckSlaves < V.rep / 3500) { + if (fuckSlavesLength() < V.rep / 3500) { r.push(`Society <span class="red">disapproves</span> of the small size of your harem, feeling that you do not have enough fucktoys or slaves in your master suite for your reputation.`); FutureSocieties.Change("Arabian Revivalist", -2); } else { diff --git a/src/endWeek/endWeek.js b/src/endWeek/endWeek.js index b2aa078cb8a..a13bfd60524 100644 --- a/src/endWeek/endWeek.js +++ b/src/endWeek/endWeek.js @@ -287,11 +287,7 @@ globalThis.endWeek = (function() { function resetMiscGlobals() { // if a global is going to be used by the end-of-week reports, it must be reset here instead of in Next Week V.encyclopedia = "How to Play"; - V.StudID = 0; - V.fuckSlaves = 0; - V.publicServants = 0; - V.cumSlaves = 0; } function advance() { diff --git a/src/endWeek/saChoosesOwnClothes.js b/src/endWeek/saChoosesOwnClothes.js index ceb1ba6616a..483c7434248 100644 --- a/src/endWeek/saChoosesOwnClothes.js +++ b/src/endWeek/saChoosesOwnClothes.js @@ -245,7 +245,7 @@ App.SlaveAssignment.choosesOwnClothes = (function() { if (isItemAccessible.entry("stretch pants and a crop-top") === true) { wardrobeAssignment.push({text: `and slips into some comfy stretch pants to relax as ${he} works the cows.`, clothes: "stretch pants and a crop-top"}); } - if (V.cumSlaves > 2) { + if (cumSlaves().length > 2) { wardrobeAssignment.push({text: `and wears a slutty nurse outfit to help keep ${his} charges hard.`, clothes: "a slutty nurse outfit"}); wardrobeAssignment.push({text: `and wears nothing but sexy lingerie to help keep ${his} charges hard.`, clothes: "attractive lingerie"}); wardrobeAssignment.push({text: `and wears the skimpiest bikini on hand to help keep ${his} charges hard.`, clothes: "a string bikini"}); diff --git a/src/endWeek/saGetMilked.js b/src/endWeek/saGetMilked.js index abe447c9f92..4ff7dc21313 100644 --- a/src/endWeek/saGetMilked.js +++ b/src/endWeek/saGetMilked.js @@ -583,8 +583,6 @@ App.SlaveAssignment.getMilked = (function() { * @param {App.Entity.SlaveState} slave */ function cumEffects(slave) { - V.cumSlaves += 1; - if (slave.energy > 95) { r.text += ` Getting ${his} dick constantly milked is almost as good as getting constant blowjobs as far as ${he}'s concerned. <span class="devotion inc">${He} is happy</span> to have ${his} member receive so much attention.`; slave.devotion += 1; diff --git a/src/endWeek/saInflation.js b/src/endWeek/saInflation.js index ccf41fcd879..a8e0ead941d 100644 --- a/src/endWeek/saInflation.js +++ b/src/endWeek/saInflation.js @@ -71,7 +71,7 @@ App.SlaveAssignment.inflation = (function() { } else if (slave.inflationType === "milk" && slave.inflationMethod === 3 && cow.lactation === 0) { r.push(`${cow.slaveName} is no longer lactating and thus can no longer keep ${slave.slaveName} filled with milk. <span class="yellow">${His} inflation regimen has been ended.</span>`); deflate(slave); - } else if (slave.inflationType === "cum" && (slave.inflationMethod === 1 || slave.inflationMethod === 2) && (dairyL === 0 || V.cumSlaves === 0 || V.dairy === 0) && V.arcologies[0].FSPastoralistLaw !== 1) { + } else if (slave.inflationType === "cum" && (slave.inflationMethod === 1 || slave.inflationMethod === 2) && (dairyL === 0 || cumSlaves().length === 0 || V.dairy === 0) && V.arcologies[0].FSPastoralistLaw !== 1) { r.push(`You no longer have a functional cum dairy. <span class="yellow">${His} inflation regimen has been ended.</span>`); deflate(slave); } else if (slave.inflationType === "cum" && slave.inflationMethod === 3 && cow.balls === 0) { diff --git a/src/endWeek/saPleaseYou.js b/src/endWeek/saPleaseYou.js index 3369bba9556..72a1f5dc816 100644 --- a/src/endWeek/saPleaseYou.js +++ b/src/endWeek/saPleaseYou.js @@ -25,6 +25,8 @@ App.SlaveAssignment.pleaseYou = (function() { let cervixPump; let acts; let demand; + + let fuckSlavesCount; return saPleaseYou; @@ -36,6 +38,7 @@ App.SlaveAssignment.pleaseYou = (function() { r = []; fetishChange = fetishChangeChance(slave); arcology = V.arcologies[0]; + fuckSlavesCount = fuckSlavesLength(); oralUse = 0; analUse = 0; @@ -116,9 +119,9 @@ App.SlaveAssignment.pleaseYou = (function() { * */ function useVagina(slave) { - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { vaginalUse = jsRandom(21, 40); - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { vaginalUse = jsRandom(7, 14); } else { vaginalUse = jsRandom(3, 7); @@ -275,9 +278,9 @@ App.SlaveAssignment.pleaseYou = (function() { * */ function useAnus(slave) { - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { analUse = jsRandom(21, 40); - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { analUse = jsRandom(7, 14); } else { analUse = jsRandom(3, 7); @@ -428,9 +431,9 @@ App.SlaveAssignment.pleaseYou = (function() { * */ function useMouth(slave) { - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { oralUse = jsRandom(21, 40); - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { oralUse = jsRandom(7, 14); } else { oralUse = jsRandom(3, 7); @@ -485,13 +488,13 @@ App.SlaveAssignment.pleaseYou = (function() { if (V.PC.vagina !== -1) { r.push(`face covered in your pussy juice.`); } - if (V.PC.dick !== 0 && (V.fuckSlaves <= (V.PC.sexualEnergy / 2 + (V.PC.balls - 3)))) { + if (V.PC.dick !== 0 && (fuckSlavesCount <= (V.PC.sexualEnergy / 2 + (V.PC.balls - 3)))) { r.push(`Your balls produce so much cum for ${him} that ${he} has replaced half ${his} diet with your cum, and you often leave ${him} dizzy with a face and chest covered in your sticky pearly semen.`); - } else if (V.PC.dick !== 0 && (V.fuckSlaves <= (V.PC.sexualEnergy + (V.PC.balls - 3)))) { + } else if (V.PC.dick !== 0 && (fuckSlavesCount <= (V.PC.sexualEnergy + (V.PC.balls - 3)))) { r.push(`Your balls produce enough cum that ${he} usually gets facials after a mouthful of semen, and ${he} loves you for it.`); } else { r.push(`${He} usually has to fight for ${his} share of cum, making sure to milk cum from your`); - if (V.fuckSlaves > 1) { + if (fuckSlavesCount > 1) { r.push(`urethra or suck it out of a pussy.`); } else { r.push(`urethra.`); @@ -679,9 +682,9 @@ App.SlaveAssignment.pleaseYou = (function() { * */ function useBoobs(slave) { - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { mammaryUse = jsRandom(21, 40); - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { mammaryUse = jsRandom(7, 14); } else { mammaryUse = jsRandom(3, 7); @@ -898,9 +901,9 @@ App.SlaveAssignment.pleaseYou = (function() { * */ function useDick(slave) { - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { penetrativeUse = jsRandom(21, 40); - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { penetrativeUse = jsRandom(7, 14); } else { penetrativeUse = jsRandom(3, 7); @@ -1287,11 +1290,11 @@ App.SlaveAssignment.pleaseYou = (function() { r.push(`${He} comes indecently hard whenever ${his} beloved ${getWrittenTitle(slave)} uses ${his} body.`); } r.push(`You have the sexual energy to fuck ${him}`); - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { r.push(`several times a day; constant,`); slave.devotion += 3; slave.trust += 3; - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { r.push(`at least once a day; regular,`); slave.devotion += 2; slave.trust += 2; @@ -1307,11 +1310,11 @@ App.SlaveAssignment.pleaseYou = (function() { r.push(`By the end of the week ${he} gets a hard-on when you use ${him}.`); } r.push(`You have the sexual energy to fuck ${him}`); - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { r.push(`several times a day; constant,`); slave.devotion += 3; slave.trust += 3; - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { r.push(`at least once a day; regular,`); slave.devotion += 2; slave.trust += 2; @@ -1356,10 +1359,10 @@ App.SlaveAssignment.pleaseYou = (function() { r.push(`By the end of the week ${he} gets a hard-on when you use ${him}.`); } r.push(`You have the sexual energy to fuck ${him}`); - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { r.push(`several times a day; submitting to your constant`); slave.devotion += 3; - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { r.push(`at least once a day; submitting to your regular`); slave.devotion += 2; } else { @@ -1373,11 +1376,11 @@ App.SlaveAssignment.pleaseYou = (function() { r.push(`${His} dick stays limp as you rape ${him}.`); } r.push(`You have the sexual energy to fuck ${him}`); - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { r.push(`several times a day; the constant`); slave.devotion -= 5; slave.trust -= 15; - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { r.push(`at least once a day; the regular`); slave.devotion -= 3; slave.trust -= 9; @@ -1389,9 +1392,9 @@ App.SlaveAssignment.pleaseYou = (function() { r.push(`rape fills ${him} with <span class="mediumorchid">revulsion</span> and <span class="gold">fear.</span>`); } - if (V.fuckSlaves <= V.PC.sexualEnergy / 2) { + if (fuckSlavesCount <= V.PC.sexualEnergy / 2) { acts = jsRandom(21, 40); - } else if (V.fuckSlaves <= V.PC.sexualEnergy) { + } else if (fuckSlavesCount <= V.PC.sexualEnergy) { acts = jsRandom(7, 14); } else { acts = jsRandom(3, 7); @@ -1559,7 +1562,7 @@ App.SlaveAssignment.pleaseYou = (function() { } if (slave.need) { - if (slave.energy > 95 && V.masterSuiteUpgradeLuxury === 2 && V.fuckSlaves > 1) { + if (slave.energy > 95 && V.masterSuiteUpgradeLuxury === 2 && fuckSlavesCount > 1) { r.push(`${He}'s a nymphomaniac and very difficult to sate, but the fuckpit allows ${him} all the sex even ${he} could ever want.`); slave.need = 0; } else if (slave.devotion > 95) { diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js index 2143078e2ce..c51cff0e4e9 100644 --- a/src/endWeek/saServeThePublic.js +++ b/src/endWeek/saServeThePublic.js @@ -75,7 +75,6 @@ App.SlaveAssignment.serveThePublic = (function() { const facility = (slave.assignment === Job.CLUB || slave.assignment === Job.DJ) ? V.facility.club : undefined; incomeStats = getSlaveStatisticData(slave, facility); incomeStats.customers = slave.sexAmount; - V.publicServants++; } /** diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index 96c0dfc96fa..72821ac6784 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -64,11 +64,6 @@ App.EndWeek.slaveAssignmentReport = function() { App.EndWeek.saVars.HGEnergy++; } break; - case Job.CONCUBINE: - case Job.MASTERSUITE: - case Job.FUCKTOY: - V.fuckSlaves++; - break; case Job.SUBORDINATE: { const map = App.EndWeek.saVars.subSlaveMap; const curSubs = map.get(slave.subTarget); @@ -216,7 +211,7 @@ App.EndWeek.slaveAssignmentReport = function() { if (App.EndWeek.saVars.averageDick > 0) { App.EndWeek.saVars.averageDick = App.EndWeek.saVars.averageDick / slavesWithWorkingDicks; } - App.EndWeek.saVars.freeSexualEnergy = V.PC.sexualEnergy - V.fuckSlaves; + App.EndWeek.saVars.freeSexualEnergy = V.PC.sexualEnergy - fuckSlavesLength(); const penthouseSlaves = App.Entity.facilities.penthouse.employees().length; if (App.EndWeek.saVars.freeSexualEnergy > 0) { if (App.EndWeek.saVars.freeSexualEnergy > penthouseSlaves / 2) { diff --git a/src/events/RE/reFullBed.js b/src/events/RE/reFullBed.js index 6846c71299c..d2f0abe5115 100644 --- a/src/events/RE/reFullBed.js +++ b/src/events/RE/reFullBed.js @@ -1,7 +1,7 @@ App.Events.REFullBed = class REFullBed extends App.Events.BaseEvent { eventPrerequisites() { return [ - () => V.fuckSlaves >= 2, + () => fuckSlavesLength() >= 2, ]; } diff --git a/src/events/RE/reNickname.js b/src/events/RE/reNickname.js index cbf2cc4f0eb..f6a2632d101 100644 --- a/src/events/RE/reNickname.js +++ b/src/events/RE/reNickname.js @@ -180,7 +180,7 @@ App.Events.RENickname = class RENickname extends App.Events.BaseEvent { if (slave.ID === V.FarmerID) { _qualifiedNicknames.add("Farmer"); } - if (slave.ID === V.MilkmaidID && slave.dick > 5 && canPenetrate(slave) && V.cumSlaves > 3) { + if (slave.ID === V.MilkmaidID && slave.dick > 5 && canPenetrate(slave) && cumSlaves().length > 3) { _qualifiedNicknames.add("Collectrix"); } if (slave.ID === V.StewardessID) { diff --git a/src/events/RE/reStaffedMorning.js b/src/events/RE/reStaffedMorning.js index b35fa10a524..5247ff31af1 100644 --- a/src/events/RE/reStaffedMorning.js +++ b/src/events/RE/reStaffedMorning.js @@ -1,7 +1,7 @@ App.Events.REStaffedMorning = class REStaffedMorning extends App.Events.BaseEvent { eventPrerequisites() { return [ - () => V.fuckSlaves >= 4, + () => fuckSlavesLength() >= 4, ]; } diff --git a/src/events/RESS/impregnationPlease.js b/src/events/RESS/impregnationPlease.js index fca63887812..91be8ae34be 100644 --- a/src/events/RESS/impregnationPlease.js +++ b/src/events/RESS/impregnationPlease.js @@ -227,7 +227,7 @@ App.Events.RESSImpregnationPlease = class RESSImpregnationPlease extends App.Eve } else { responses.push(new App.Events.Result(`Use ${his} ass but finish across ${his} back`, back)); } - if (V.cumSlaves >= 5) { + if (cumSlaves().length >= 5) { responses.push(new App.Events.Result(`Use the Dairy cockmilk to impregnate ${him}`, dairy)); } App.Events.addParagraph(node, r); @@ -530,9 +530,8 @@ App.Events.RESSImpregnationPlease = class RESSImpregnationPlease extends App.Eve r.push(r.pop() + `,`); r.push(`and produce a large, soft injector full of fresh cum. At this ${he} giggles and thanks you; ${he} rapturously rubs ${his} ${belly} belly as you gently push the injector home. For the rest of the week, ${he} appears in your office morning and night, receiving the seed of every slave you're currently having cockmilked. ${He} goes about ${his} other business with a <span class="devotion inc">deeply pleased</span> expression on ${his} face. Whenever ${he} has a spare moment ${he} steals down to the Dairy to hug the slaves there or otherwise show them a little affection.`); eventSlave.devotion += 10; - const cumSlaves = V.slaves.filter(function(s) { return (s.assignment === Job.MILKED || s.assignment === Job.DAIRY) && s.balls > 0 && s.ballType === "human"; }); - if (cumSlaves.length > 0) { - knockMeUp(eventSlave, 90, 2, cumSlaves.random().ID); + if (cumSlaves().length > 0) { + knockMeUp(eventSlave, 90, 2, cumSlaves().random().ID); } return r; } diff --git a/src/js/eventSelectionJS.js b/src/js/eventSelectionJS.js index dedd1a7448f..009ba51d00e 100644 --- a/src/js/eventSelectionJS.js +++ b/src/js/eventSelectionJS.js @@ -865,7 +865,7 @@ if(eventSlave.drugs === "breast injections") { if (canDoVaginal(eventSlave)) { if (V.PC.vagina > -1) { if (eventSlave.dick === 0) { - if (V.fuckSlaves > 2) { + if (fuckSlavesLength() > 2) { V.RESSevent.push("fucktoy tribbing"); } } diff --git a/src/js/utilsPC.js b/src/js/utilsPC.js index 905c6c460f3..c79196d031f 100644 --- a/src/js/utilsPC.js +++ b/src/js/utilsPC.js @@ -482,7 +482,7 @@ globalThis.PCTitle = function() { if (facilities.dairy.employeesIDs().size >= 15) { titles.push("Keeper of the Cattle"); } - if (V.cumSlaves >= 15) { + if (cumSlaves().length >= 15) { if (V.PC.title === 1) { titles.push("Extractor of the Ejaculate"); } else { diff --git a/src/js/utilsSlave.js b/src/js/utilsSlave.js index bf003da1def..f7d3d1dfba0 100644 --- a/src/js/utilsSlave.js +++ b/src/js/utilsSlave.js @@ -2901,7 +2901,7 @@ globalThis.DegradingName = function(slave) { slave.slaveName = jsEither(["Maid", "Servant"]); break; case Job.MILKMAID: - if (V.cumSlaves > 3) { + if (cumSlaves().length > 3) { slave.slaveName = jsEither(["Fucker", "Milker"]); } else { slave.slaveName = jsEither(["Dairy", "Farm"]); diff --git a/src/js/utilsSlaves.js b/src/js/utilsSlaves.js index c5b544724e3..86b3b0590ed 100644 --- a/src/js/utilsSlaves.js +++ b/src/js/utilsSlaves.js @@ -1,3 +1,10 @@ +globalThis.cumSlaves = function() { + return V.slaves.filter(s => (s.assignment === Job.MILKED || s.assignment === Job.DAIRY) && s.balls > 0 && s.ballType === "human"); +} +globalThis.fuckSlavesLength = function() { + return V.slaves.filter(s => [Job.FUCKTOY, Job.MASTERSUITE, Job.CONCUBINE].includes(s.assignment)).length; +} + globalThis.SlaveSort = function() { const effectivePreg = (slave) => { // slave.preg is only *mostly* usable for sorting diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js index 01e098ca988..4197671b31b 100644 --- a/src/npc/generate/newSlaveIntro.js +++ b/src/npc/generate/newSlaveIntro.js @@ -4291,7 +4291,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = }); } lineBreak(); - if (V.cumSlaves > 3) { + if (cumSlaves().length > 3) { choice({ // TOdo tankBorn linkName: `Fill ${him} with cum`, diff --git a/src/pregmod/FCTV/FCTVshows.js b/src/pregmod/FCTV/FCTVshows.js index e079cd39682..78023915cde 100644 --- a/src/pregmod/FCTV/FCTVshows.js +++ b/src/pregmod/FCTV/FCTVshows.js @@ -1912,7 +1912,7 @@ App.Data.FCTV.channels = { r.push(`<p>"I don't care if anyone sees, but most customers prefer this way." she giggles, as Jason undoes his pants. Despite the fact that he has a rear-view of a perfect, smooth pussy and a taut, pink asshole, Jason can't achieve an erection. "What's the matter?" the hooker asks him. "Need me to take care of you?" A short flashback sequence plays, centered on the note from earlier. "Take care of Jessica." his wife's disembodied voice implores him, the audio mixed to reverberate hauntingly.</p>`); r.push(`<p>"Keep the money." Jason says before he immediately runs off, leaving the hooker looking perplexed and then bored in the dingy alley. With a quick cut he's back in his apartment, watching an in-universe parody of a popular real-world FCTV show. His daughter conveniently gets home at that exact time, throwing open the door and kicking off the shoes to her school uniform. "Hi Daddy!" she says, far too jubilant considering the events of that morning. "Hi Jessica." he replies sullenly.</p>`); r.push(`<p>You start wondering if you should even be playing this, as the sadness has utterly killed the mood in the room.`); - if (V.fuckSlaves > 0) { + if (fuckSlavesLength() > 0) { r.push(`Some of your girls' eyes are already welling with tears.`); } r.push(`</p><p>"You're still sad." Jessica says to him, pouting a bit. "I noticed this morning, too. How sad you were that Mommy left. I'm sorry."</p>`); @@ -1983,7 +1983,7 @@ App.Data.FCTV.channels = { if (canImpreg(S.Concubine, V.PC)) { knockMeUp(S.Concubine, 10, 0, -1); } - } else if (V.fuckSlaves > 0) { + } else if (fuckSlavesLength() > 0) { r.push(`grab the nearest slave watching with you, who is overjoyed to recreate the entire ending with you.`); } else { r.push(`make your way to the slave dormitory and pick out the perfect slave.`); diff --git a/src/pregmod/managePersonalAffairs.js b/src/pregmod/managePersonalAffairs.js index 9c5a9460b38..8aff2e35af4 100644 --- a/src/pregmod/managePersonalAffairs.js +++ b/src/pregmod/managePersonalAffairs.js @@ -834,7 +834,7 @@ App.UI.managePersonalAffairs = function() { function cumTap() { const text = []; - if (V.dairyPiping && (V.cumSlaves > 0 || V.arcologies[0].FSPastoralistLaw === 1)) { + if (V.dairyPiping && (cumSlaves().length > 0 || V.arcologies[0].FSPastoralistLaw === 1)) { if (PC.skill.cumTap === 0) { text.push( `The tap connected to ${V.dairyName} has a variety of attachments, one of which being a very tantalizing dick-shaped nozzle. It looks like it would be a perfect fit for you, if you were curious, that is.`, diff --git a/src/uncategorized/PESS.tw b/src/uncategorized/PESS.tw index bf16a273596..1a910dc6ad0 100644 --- a/src/uncategorized/PESS.tw +++ b/src/uncategorized/PESS.tw @@ -118,7 +118,12 @@ Your DJ <<= App.UI.slaveDescriptionDialog($activeSlave)>> is a terribly pretty $ Your milkmaid <<= App.UI.slaveDescriptionDialog($activeSlave)>> worked hard today. $He's clearly exhausted, but $he seems to think it below $him to show the fatigue. $He holds $his chin level and $his shoulders square as $he heads to the bathroom to bathe before bed. After $his shower, $he inspects $his crotch closely before appearing to start masturbating. On closer inspection, however, $he's very gently massaging analgesic lotion into $his cock, wincing a little as $he does so. $He starts a little when you enter the room, but relaxes when you tell $him to continue $his ministrations and let you know how $he's feeling as $he does. <br><br> -<<if !canTalk($activeSlave)>>$He indicates in amusingly graphic gestures that $his dick is sore. $He painstakingly counts on $his fingers, letting you know that $he's fucked <<print $cumSlaves>> assholes today, most of them more than once. <<else>>"<<Master>>, I've fucked a lot of a<<ss>>holes today. There'<<s>> <<print $cumSlaves>> cum<<s>>lave<<s>> in the dairy, and I fucked them all up the butt at lea<<s>>t on<<c>>e. Mo<<s>>t of them more than on<<c>>e. My poor cock i<<s>> a little <<s>>ore, <<Master>>," $he <<say>>s.<</if>> With so many slaves getting cockmilked, $he certainly has to work hard to make sure none of them go unpenetrated. +<<if !canTalk($activeSlave)>> + $He indicates in amusingly graphic gestures that $his dick is sore. $He painstakingly counts on $his fingers, letting you know that $he's fucked <<print cumSlaves().length>> assholes today, most of them more than once. +<<else>> + "<<Master>>, I've fucked a lot of a<<ss>>holes today. There'<<s>> <<print cumSlaves().length>> cum<<s>>lave<<s>> in the dairy, and I fucked them all up the butt at lea<<s>>t on<<c>>e. Mo<<s>>t of them more than on<<c>>e. My poor cock i<<s>> a little <<s>>ore, <<Master>>," $he <<say>>s. +<</if>> +With so many slaves getting cockmilked, $he certainly has to work hard to make sure none of them go unpenetrated. <<case "tired milkmaid">> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 117ddd93685..e18fe462320 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -86,6 +86,7 @@ </span> <</if>> <<set $activeSlave.clothes = _clothesTemp>> +<<set _fuckSlaves = fuckSlavesLength()>> <<set $desc = SlaveTitle($activeSlave)>> <<run Enunciate($activeSlave)>> @@ -3690,28 +3691,28 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. $He falls backwards, where $he lays, unmoving. It seems $his mind was still fragile, $he'll likely be back to $his usual blank self when you awake. <<run seX($activeSlave, "oral", $PC, "penetrative")>> <</if>> - You pull the blanket back over yourself and nudge $him off your bed; you'll deal with $him in the morning<<if $fuckSlaves > 1>>, <<if $masterSuiteUpgradeLuxury == 2>>which will likely entail pulling $his used body out of the fuckpit orgy<<else>>assuming one of your other toys doesn't get to $him first<</if>><</if>>. - <<if $fuckSlaves > 1 && $masterSuiteUpgradeLuxury == 2>> + You pull the blanket back over yourself and nudge $him off your bed; you'll deal with $him in the morning<<if _fuckSlaves > 1>>, <<if $masterSuiteUpgradeLuxury == 2>>which will likely entail pulling $his used body out of the fuckpit orgy<<else>>assuming one of your other toys doesn't get to $him first<</if>><</if>>. + <<if _fuckSlaves > 1 && $masterSuiteUpgradeLuxury == 2>> <<if canDoAnal($activeSlave) && $activeSlave.anus > 0>> <<if $activeSlave.anus < 3>> <<set $activeSlave.anus++>> <</if>> - <<run seX($activeSlave, "anal", $PC, "penetrative", $fuckSlaves*2)>> + <<run seX($activeSlave, "anal", $PC, "penetrative", _fuckSlaves*2)>> <</if>> <<if canDoVaginal($activeSlave) && $activeSlave.vagina > 0>> <<if $activeSlave.vagina < 3>> <<set $activeSlave.anus++>> <</if>> - <<run seX($activeSlave, "vaginal", $PC, "penetrative", $fuckSlaves*2)>> + <<run seX($activeSlave, "vaginal", $PC, "penetrative", _fuckSlaves*2)>> <</if>> - <<run seX($activeSlave, "oral", $PC, "penetrative", $fuckSlaves*2)>> - <<elseif $fuckSlaves > 1>> + <<run seX($activeSlave, "oral", $PC, "penetrative", _fuckSlaves*2)>> + <<elseif _fuckSlaves > 1>> <<if canDoAnal($activeSlave) && $activeSlave.anus > 0>> - <<run seX($activeSlave, "anal", $PC, "penetrative", $fuckSlaves*2)>> + <<run seX($activeSlave, "anal", $PC, "penetrative", _fuckSlaves*2)>> <<elseif canDoVaginal($activeSlave) && $activeSlave.vagina > 0>> - <<run seX($activeSlave, "vaginal", $PC, "penetrative", $fuckSlaves*2)>> + <<run seX($activeSlave, "vaginal", $PC, "penetrative", _fuckSlaves*2)>> <<else>> - <<run seX($activeSlave, "oral", $PC, "penetrative", $fuckSlaves*2)>> + <<run seX($activeSlave, "oral", $PC, "penetrative", _fuckSlaves*2)>> <</if>> <</if>> <<set $activeSlave.kindness = -100>> @@ -3719,28 +3720,28 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <</link>>//<<if canDoVaginal($activeSlave) && $activeSlave.vagina == 0>>This option will take $his virginity<<elseif canDoAnal($activeSlave) && $activeSlave.anus == 0>>This option will take $his anal virginity<</if>>// <br><<link "Punish $him for waking you">> <<replace "#result">> - In one swift motion you throw aside the cover and backhand the $desc for waking you. $He falls to your side, where $he lays, unmoving. It seems $his mind was still fragile, $he'll likely be back to $his usual blank self when you awake. You pull the blanket back over yourself; you'll deal with $him in the morning<<if $fuckSlaves > 1>>, <<if $masterSuiteUpgradeLuxury == 2>>which will likely entail pulling $his used body out of the fuckpit orgy<<else>>assuming one of your other toys doesn't get to $him first<</if>><</if>>. - <<if $fuckSlaves > 1 && $masterSuiteUpgradeLuxury == 2>> + In one swift motion you throw aside the cover and backhand the $desc for waking you. $He falls to your side, where $he lays, unmoving. It seems $his mind was still fragile, $he'll likely be back to $his usual blank self when you awake. You pull the blanket back over yourself; you'll deal with $him in the morning<<if _fuckSlaves > 1>>, <<if $masterSuiteUpgradeLuxury == 2>>which will likely entail pulling $his used body out of the fuckpit orgy<<else>>assuming one of your other toys doesn't get to $him first<</if>><</if>>. + <<if _fuckSlaves > 1 && $masterSuiteUpgradeLuxury == 2>> <<if canDoAnal($activeSlave) && $activeSlave.anus > 0>> <<if $activeSlave.anus < 3>> <<set $activeSlave.anus++>> <</if>> - <<run seX($activeSlave, "anal", $PC, "penetrative", $fuckSlaves*2)>> + <<run seX($activeSlave, "anal", $PC, "penetrative", _fuckSlaves*2)>> <</if>> <<if canDoVaginal($activeSlave) && $activeSlave.vagina > 0>> <<if $activeSlave.vagina < 3>> <<set $activeSlave.vagina++>> <</if>> - <<run seX($activeSlave, "vaginal", $PC, "penetrative", $fuckSlaves*2)>> + <<run seX($activeSlave, "vaginal", $PC, "penetrative", _fuckSlaves*2)>> <</if>> - <<run seX($activeSlave, "oral", $PC, "penetrative", $fuckSlaves*2)>> - <<elseif $fuckSlaves > 1>> + <<run seX($activeSlave, "oral", $PC, "penetrative", _fuckSlaves*2)>> + <<elseif _fuckSlaves > 1>> <<if canDoAnal($activeSlave) && $activeSlave.anus > 0>> - <<run seX($activeSlave, "anal", $PC, "penetrative", $fuckSlaves)>> + <<run seX($activeSlave, "anal", $PC, "penetrative", _fuckSlaves)>> <<elseif canDoVaginal($activeSlave) && $activeSlave.vagina > 0>> - <<run seX($activeSlave, "vaginal", $PC, "penetrative", $fuckSlaves)>> + <<run seX($activeSlave, "vaginal", $PC, "penetrative", _fuckSlaves)>> <<else>> - <<run seX($activeSlave, "oral", $PC, "penetrative", $fuckSlaves)>> + <<run seX($activeSlave, "oral", $PC, "penetrative", _fuckSlaves)>> <</if>> <</if>> <<set $activeSlave.kindness = -100>> @@ -5358,7 +5359,7 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <</if>> <</replace>> <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take $his virginity//<</if>> -<<set _cumSlaves = $slaves.filter(function(s) { return s.assignment == "work in the dairy" && s.balls > 0 && isSlaveAvailable(s) && canPenetrate(s); })>> +<<set _cumSlaves = $slaves.filter(s => s.assignment == "work in the dairy" && s.balls > 0 && isSlaveAvailable(s) && canPenetrate(s))>> <<if _cumSlaves.length >= 5>> <br><<link "Replace the machines with cockmilkees from the Dairy">> <<replace "#result">> @@ -5373,17 +5374,17 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <</if>> <<set $activeSlave.devotion += 4>> <<set _totalFuckers = 0>> - <<for _ress = 0; _ress < _cumSlaves.length; _ress++>> - <<set _RESS = $slaveIndices[_cumSlaves[_ress].ID]>> - <<set $slaves[_RESS].devotion += 4, $slaves[_RESS].counter.penetrative++>> - <<set $penetrativeTotal++, _totalFuckers++>> - <<if canImpreg($activeSlave, $slaves[_RESS])>> + <<for _slave range _cumSlaves>> + <<set getSlave(_slave.ID).devotion += 4>> + <<run actX(getSlave(_slave.ID), "penetrative")>> + <<set _totalFuckers++>> + <<if canImpreg($activeSlave, getSlave(_slave.ID))>> <<if canDoAnal($activeSlave) && canDoVaginal($activeSlave)>> - <<= knockMeUp($activeSlave, 5, 2, $slaves[_RESS].ID)>> + <<= knockMeUp($activeSlave, 5, 2, getSlave(_slave.ID))>> <<elseif canDoVaginal($activeSlave)>> - <<= knockMeUp($activeSlave, 5, 0, $slaves[_RESS].ID)>> + <<= knockMeUp($activeSlave, 5, 0, getSlave(_slave.ID))>> <<elseif canDoAnal($activeSlave)>> - <<= knockMeUp($activeSlave, 5, 1, $slaves[_RESS].ID)>> + <<= knockMeUp($activeSlave, 5, 1, getSlave(_slave.ID))>> <</if>> <</if>> <</for>> @@ -6650,7 +6651,7 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <<run seX($activeSlave, "oral", $PC, "penetrative", 5)>> <</replace>> <</link>> -<<if ($cumSlaves >= 5)>> +<<if (cumSlaves().length >= 5)>> <br><<link "Give $him access to the Dairy's cockmilk">> <<replace "#result">> You let $him know you have a sexual accessory for $him to use. This isn't too unusual, so $he comes to your office without much anticipation. $He doesn't understand why you have an enormous sealed canister of fresh cum on your desk, but when you explain that it's $hers to play with on the job, $he starts to bounce with excitement. Not all of $his customers are interested in cum play, but quite a few are, and $he spends almost as much time cleaning up the gorgeous messes that get made as $he does making them. It's a valuable and @@.yellowgreen;profitable@@ whore who @@.hotpink;looks forward@@ to $his next customer. @@ -10673,7 +10674,7 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <<run SetBellySize($activeSlave)>> <</replace>> <</link>> -<<if ($cumSlaves >= 5) && (($activeSlave.fetish != "cumslut") || ($activeSlave.fetishKnown == 0))>> +<<if (cumSlaves().length >= 5) && (($activeSlave.fetish != "cumslut") || ($activeSlave.fetishKnown == 0))>> <br><<link "Restrict $him to nothing but fresh cum from the Dairy">> <<replace "#result">> You meet $him in time for $his next meal and tell $him that you're aware of $his stealing. You tell $him that you understand $his need to eat, and that for the rest of the week you'll mercifully be allowing $him to try a new diet on which $he can eat as much as $he wants. $He's overjoyed <<if canHear($activeSlave)>>to hear it<<elseif canSee($activeSlave)>>when $he reads it on a nearby screen display<<else>>when $he figures it out<</if>>, though this pleasure is replaced with extreme disgust when $he learns that $his only culinary options are limited to cum. It's just nutritionally augmented enough to prevent starvation. Disgust is defeated by hunger pangs, and $he spends most of the week going around with a @@.hotpink;preoccupied@@ look on $his face and<<if $activeSlave.belly >= 1500>> an even more<<else>> a slightly<</if>> distended belly. By the end, $he's starting to @@.lightcoral;salivate@@ at the mere <<if canSmell($activeSlave)>>scent<<else>>thought<</if>> of ejaculate. diff --git a/src/uncategorized/newGamePlus.tw b/src/uncategorized/newGamePlus.tw index 8b8a9636a2a..30631e212bf 100644 --- a/src/uncategorized/newGamePlus.tw +++ b/src/uncategorized/newGamePlus.tw @@ -10,7 +10,6 @@ You have decided to start over and will be able to take a few things with you: a few slaves, a small fraction of your current reserves of money, and possibly even your experience as an arcology owner, which will give you a very powerful career background. Many of your other customizations and settings will be carried over as the defaults for your new game, but can be revised freely. <br><br> - <<if $cash >= _fee>> You have allocated funds to bring up to $slavesToImportMax slaves with you (or your equivalent) to a new arcology. It will cost @@.yellowgreen;<<print cashFormat(_fee)>>@@ to insure another slave's safe transfer. You have @@.yellowgreen;<<print cashFormat($cash)>>@@ to spend. <br>[[Increase slave import capacity by 1.|New Game Plus][cashX(forceNeg(_fee), "capEx"), $slavesToImportMax++]] @@ -19,7 +18,6 @@ You have decided to start over and will be able to take a few things with you: a <</if>> <br> - <<set $ngpParams = { nationality: getRevivalistNationality(), prosperity: (250 * $arcologies[0].prosperity * $arcologies[0].ownership) }>> <<if $freshPC == 0>> <<if $retainCareer == 1 && $PC.career != "arcology owner">> @@ -48,10 +46,10 @@ You have decided to start over and will be able to take a few things with you: a <</if>> <br><br> - -<<if $cheatMode == 1>> <<link "DEBUG: Add all slaves to import list" "New Game Plus">> <<for _ngi = 0; _ngi < $slaves.length; _ngi++>> <<= assignJob($slaves[_ngi], Job.IMPORTED)>> <</for>> <</link>> <br> <</if>> +<<if $cheatMode == 1>> + [[DEBUG: Add all slaves to import list|New Game Plus][$slaves.forEach(s => assignJob(s, Job.IMPORTED))]] + <br> +<</if>> Select up to $slavesToImportMax slaves to be imported into a new game and then click [[here.|init][$saveImported = 1,$oldCareer = "undefined"]] - -<br> -<<includeDOM App.UI.SlaveList.listNGPSlaves()>> +<br><<includeDOM App.UI.SlaveList.listNGPSlaves()>> \ No newline at end of file diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 854e7a4ba95..ff11f189c06 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -181,7 +181,7 @@ <<if _S.HeadGirl>> <<if (_S.Concubine)>> - <<if $fuckSlaves > 1>> + <<if fuckSlavesLength() > 1>> <<if canTalk(_S.Concubine) && canSee(_S.Concubine) && canHear(_S.Concubine) && _S.Concubine.fetish != "mindbroken" && canHold(_S.Concubine) && canWalk(_S.Concubine)>> <<set $events.push("PE headgirl concubine")>> <</if>> @@ -252,7 +252,7 @@ <<if (_S.Milkmaid.muscles > 5)>> <<set $PESSevent.push("tired milkmaid")>> <</if>> - <<if canAchieveErection(_S.Milkmaid) && $cumSlaves >= 5>> + <<if canAchieveErection(_S.Milkmaid) && cumSlaves().length >= 5>> <<set $PESSevent.push("tired collectrix")>> <</if>> <</if>> diff --git a/src/uncategorized/reBusyDairy.tw b/src/uncategorized/reBusyDairy.tw index 621fc9fdb0b..c6fa922a487 100644 --- a/src/uncategorized/reBusyDairy.tw +++ b/src/uncategorized/reBusyDairy.tw @@ -36,7 +36,7 @@ Even with high doses of modern drugs, human cows simply do not produce a very hi <</replace>> <</link>> //This will cost <<print cashFormat(2000)>>// <</if>> -<<if $cumSlaves >= 5>> +<<if cumSlaves().length >= 5>> <br><<link "Cum in, milk out">> <<replace "#result">> As a promotional gimmick, you announce with considerable fanfare a special, experimental brand of milk, available at the normal price for a short time only. The milk will be unique in that it will be from cows fed mostly on slaves' cum; the cockmilked slaves will in turn be given as much milk as possible to produce a 'pure slave product,' recursively. The sad realities of nutrition stop it from being much more than a marketing ploy, but it's certainly a @@.green;successful@@ attempt to spark discussion. -- GitLab From f44ed328b30644b402a1c8c8c4d75d864a06d793 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Tue, 1 Jun 2021 14:47:14 +0000 Subject: [PATCH 72/91] devotedAnalVirgin.js typo --- src/events/RESS/devotedAnalVirgin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/RESS/devotedAnalVirgin.js b/src/events/RESS/devotedAnalVirgin.js index cd889e1da22..14c1a78f71b 100644 --- a/src/events/RESS/devotedAnalVirgin.js +++ b/src/events/RESS/devotedAnalVirgin.js @@ -116,7 +116,7 @@ App.Events.RESSDevotedAnalVirgin = class RESSDevotedAnalVirgin extends App.Event t.push("begins to use piteous gestures to beg you abjectly for anal."); } - t.push(`In reward, you sink a lightly lubricated finger up to the first knuckle in ${his} delightfully tight asshole. ${He}'s already on the edge of orgasm, and it takes a long, long time for you to work first a finger, then two, and then your ${PC.dick === 0 ? "strap-on" : "cock"} up ${his} ass without sending ${him} over. When you finally let ${him} orgasm, ${PC.dick === 0 ? `${his} unabashed enjoyment` : `the strength of ${his} spasming sphincter`} send you over as well. ${He}'s left in a haze of <span class="hotpink">sexual satisfaction</span> that radiates outward from ${his} <span class="lime">newly stretched asshole,</span> and ${he} <span class="mediumaquamarine">trusts you</span> a lot more, now.`); + t.push(`In reward, you sink a lightly lubricated finger up to the first knuckle in ${his} delightfully tight asshole. ${He}'s already on the edge of orgasm, and it takes a long, long time for you to work first a finger, then two, and then your ${PC.dick === 0 ? "strap-on" : "cock"} up ${his} ass without sending ${him} over. When you finally let ${him} orgasm, ${PC.dick === 0 ? `${his} unabashed enjoyment` : `the strength of ${his} spasming sphincter`} sends you over as well. ${He}'s left in a haze of <span class="hotpink">sexual satisfaction</span> that radiates outward from ${his} <span class="lime">newly stretched asshole,</span> and ${he} <span class="mediumaquamarine">trusts you</span> a lot more, now.`); if ((eventSlave.fetishKnown !== 1 || eventSlave.fetish !== "buttslut") && fetishChangeChance(eventSlave) > jsRandom(1, 100)) { t.push(`Before the end of the week ${he}'s back, begging for <span class="lightcoral">another dick up the ass.</span>`); -- GitLab From 0021527ad28e4449a777fb6262db35ea3173a268 Mon Sep 17 00:00:00 2001 From: Skriv <skrivelese@gmail.com> Date: Tue, 1 Jun 2021 20:38:02 +0000 Subject: [PATCH 73/91] Minor fixes and cleanup --- src/events/RE/resFailure.js | 4 +- src/events/RE/resSale.js | 124 ++++++--------------------- src/events/reRecruit/capturedTeen.js | 2 +- src/events/reRecruit/maleDebtor.js | 3 +- 4 files changed, 29 insertions(+), 104 deletions(-) diff --git a/src/events/RE/resFailure.js b/src/events/RE/resFailure.js index c749b8ac216..00f986347c3 100644 --- a/src/events/RE/resFailure.js +++ b/src/events/RE/resFailure.js @@ -401,9 +401,9 @@ App.Events.RESFailure = class RESFailure extends App.Events.BaseEvent { slave.ovaryAge = slave.actualAge; slave.sexualFlaw = either("apathetic", "none"); slave.behavioralFlaw = either("arrogant", "none", "odd"); - slave.hStyle = "short"; + slave.hStyle = "neat"; slave.hLength = 2; - slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained ${him}"; + slave.brand["left cheek"] = "the baroque crest of the Gymnasium-Academy that trained $him"; slaveArray.push(slave); } } else if (failedSchool === "HA") { diff --git a/src/events/RE/resSale.js b/src/events/RE/resSale.js index 94d1609f3db..7c03c81164b 100644 --- a/src/events/RE/resSale.js +++ b/src/events/RE/resSale.js @@ -35,26 +35,28 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { /* generate sales slave for images and pronouns */ V[school].schoolSale = 1; - const _marketResult = generateMarketSlave(school); - const _salesSlave = _marketResult.slave; - r.push(_marketResult.text); + const marketResult = generateMarketSlave(school); + const salesSlave = marketResult.slave; + r.push(marketResult.text); if (school === "TSS") { - _salesSlave.clothes = "a schoolgirl outfit"; + salesSlave.clothes = "a schoolgirl outfit"; } else if (school === "TUO") { - _salesSlave.clothes = "nice business attire"; + salesSlave.clothes = "nice business attire"; } else if (school === "GRI") { - _salesSlave.clothes = "a slave gown"; + salesSlave.clothes = "a slave gown"; } else if (school === "SCP") { - _salesSlave.clothes = "a string bikini"; + salesSlave.clothes = "a string bikini"; } else if (school === "HA") { - _salesSlave.clothes = "a nice maid outfit"; + salesSlave.clothes = "a nice maid outfit"; } const { He, His, he, his, him, himself, girl - } = getPronouns(_salesSlave); + } = getPronouns(salesSlave); + const sir = V.PC.title !== 0 ? "sir" : "ma'am"; + const Sir = V.PC.title !== 0 ? "Sir" : "Ma'am"; - App.Events.drawEventArt(node, _salesSlave); + App.Events.drawEventArt(node, salesSlave); r.push(`You receive a personal call from`); if (school === "TSS") { @@ -79,113 +81,34 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { r.push(`the Futanari Sisters, an enigmatic group of transformation enthusiasts that sells beautiful hermaphrodites.`); } if (school === "TCR") { - r.push(`It's from a farmhand, not leadership, and they are offering a cow for sale. Before you can hang up on him and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the man hurriedly says,`); - if (V.PC.title !== 0) { - r.push(`"Sir,`); - } else { - r.push(`"Ma'am,`); - } - r.push(`${he}'s half off!"`); + r.push(`It's from a farmhand, not leadership, and they are offering a cow for sale. Before you can hang up on him and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the man hurriedly says, "${Sir}, ${he}'s half off!"`); App.Events.addParagraph(node, r); r = []; - r.push(`You pause for a moment, and he plunges on:`); - if (V.PC.title !== 0) { - r.push(`"Sir,`); - } else { - r.push(`"Ma'am,`); - } - r.push(`<span class="yellow">your first cow purchase from us this week is half price.</span> And,`); - if (V.PC.title !== 0) { - r.push(`sir,`); - } else { - r.push(`ma'am,`); - } - r.push(`this milky beauty is up for grabs. Keep ${him} by your desk for fresh squeezed milk, knock on wood and ${he}'ll suck you right off, grab ${him} by the hips and ${he}'ll take anything in ${his} rear; ${he}'s plenty of fun! Come on down and get yourself a young, affectionate little cow${girl}!"`); + r.push(`You pause for a moment, and he plunges on: "${Sir}, <span class="yellow">your first cow purchase from us this week is half price.</span> And, ${sir}, this milky beauty is up for grabs. Keep ${him} by your desk for fresh squeezed milk, knock on wood and ${he}'ll suck you right off, grab ${him} by the hips and ${he}'ll take anything in ${his} rear; ${he}'s plenty of fun! Come on down and get yourself a young, affectionate little cow${girl}!"`); } else { - r.push(`It's from a piece of merchandise, not leadership, and ${he}'s offering ${himself} for sale. Before you can hang up on ${him} and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the slave hurriedly says,`); - if (V.PC.title !== 0) { - r.push(`"Sir,`); - } else { - r.push(`"Ma'am,`); - } - r.push(`I'm half off!"`); - + r.push(`It's from a piece of merchandise, not leadership, and ${he}'s offering ${himself} for sale. Before you can hang up on ${him} and reprimand ${V.assistant.name} for allowing this Free Cities version of telemarketing to get through to you, the slave hurriedly says, "${Sir}, I'm half off!"`); App.Events.addParagraph(node, r); r = []; - r.push(`You pause for a moment, and ${he} plunges on:`); - if (V.PC.title !== 0) { - r.push(`"Sir,`); - } else { - r.push(`"Ma'am,`); - } - r.push(`<span class="yellow">your first slave purchase from us this week is half price.</span> And,`); - if (V.PC.title !== 0) { - r.push(`sir,`); - } else { - r.push(`ma'am,`); - } - r.push(`I'm one of the slaves for sale.`); + r.push(`You pause for a moment, and ${he} plunges on: "${Sir}, <span class="yellow">your first slave purchase from us this week is half price.</span> And, ${sir}, I'm one of the slaves for sale.`); if (school === "TSS") { - r.push(`I've got the very best skills I could learn as a virgin. I'm healthy, obedient, and educated. And I'm fresh, and willing, and really eager." ${He} rips ${his} white school${girl} blouse open to show off a fresh pair of tits, and shakes them for you. "I would love to be your sex slave,`); - if (V.PC.title !== 0) { - r.push(`sir,"`); - } else { - r.push(`ma'am,"`); - } - r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); + r.push(`I've got the very best skills I could learn as a virgin. I'm healthy, obedient, and educated. And I'm fresh, and willing, and really eager." ${He} rips ${his} white school${girl} blouse open to show off a fresh pair of tits, and shakes them for you. "I would love to be your sex slave, ${sir}", ${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); } else if (school === "TUO") { - r.push(`I'm smart and cute. I'm well educated and obedient, I will serve you well." ${He} blushes and maintains eye contact as ${he} continues. "I'm unexperienced when it comes to sexual matters, I hope you will treat me well." ${He} bows to you and finished. "I would love to be your slave,`); - if (V.PC.title !== 0) { - r.push(`sir,"`); - } else { - r.push(`ma'am,"`); - } - r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been taught.`); + r.push(`I'm smart and cute. I'm well educated and obedient, I will serve you well." ${He} blushes and maintains eye contact as ${he} continues. "I'm unexperienced when it comes to sexual matters, I hope you will treat me well." ${He} bows to you and finished. "I would love to be your slave, ${sir}", ${he} says, doing ${his} very best to sound appealing, like ${he}'s been taught.`); } else if (school === "GRI") { - r.push(`I've, uh, been trained to obey." ${His} eyes flick to one side, like ${he}'s reading ${his} cues. "And, um, I have really big boobs." ${He}'s wearing a bathrobe, and ${he} suddenly jerks it open to reveal a bigger pair of breasts than anyone that age could possibly have grown ${himself}. "I would love to be your sex slave,`); - if (V.PC.title !== 0) { - r.push(`sir,"`); - } else { - r.push(`ma'am,"`); - } - r.push(`${he} says, doing ${his} very best to sound appealing. No doubt ${he}'d prefer not to be part of any more testing.`); + r.push(`I've, uh, been trained to obey." ${His} eyes flick to one side, like ${he}'s reading ${his} cues. "And, um, I have really big boobs." ${He}'s wearing a bathrobe, and ${he} suddenly jerks it open to reveal a bigger pair of breasts than anyone that age could possibly have grown ${himself}. "I would love to be your sex slave, ${sir}", ${he} says, doing ${his} very best to sound appealing. No doubt ${he}'d prefer not to be part of any more testing.`); } else if (school === "SCP") { - r.push(`I'm ready to be the perfect bimbo slave, and the young surgeon who did my implants was very skilled." ${He}'s wearing a bikini, and ${he} pulls it down to flash you, revealing that ${his} tits resist gravity almost perfectly. They're gorgeous, but quite fake. "I would love to be your sex slave,`); - if (V.PC.title !== 0) { - r.push(`sir,"`); - } else { - r.push(`ma'am,"`); - } - r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); + r.push(`I'm ready to be the perfect bimbo slave, and the young surgeon who did my implants was very skilled." ${He}'s wearing a bikini, and ${he} pulls it down to flash you, revealing that ${his} tits resist gravity almost perfectly. They're gorgeous, but quite fake. "I would love to be your sex slave, ${sir}", ${he} says, doing ${his} very best to sound appealing, like ${he}'s been trained.`); } else if (school === "LDE") { - r.push(`I've been trained to need cock up my ass." ${He}'s nude, and spins around to point ${his} ass at the camera. ${He} begins to wink ${his} big butthole, ${his} tiny, soft cock dangling limply below it. ${He} cranes ${his} head around to continue. "I can come from nothing but buttsex," ${he} says proudly. "I would love to be your anal slut,`); - if (V.PC.title !== 0) { - r.push(`sir,"`); - } else { - r.push(`ma'am,"`); - } - r.push(`${he} says, sounding very eager to begin.`); + r.push(`I've been trained to need cock up my ass." ${He}'s nude, and spins around to point ${his} ass at the camera. ${He} begins to wink ${his} big butthole, ${his} tiny, soft cock dangling limply below it. ${He} cranes ${his} head around to continue. "I can come from nothing but buttsex," ${he} says proudly. "I would love to be your anal slut, ${sir}", ${he} says, sounding very eager to begin.`); } else if (school === "TGA") { - r.push(`My tutelage has been long and hard, and I'm very eager to begin my life as a slave." ${He}'s nude, and stands up to reveal ${his} hard-on. ${He} spins for the camera, showing ${himself} off. "I can help protect you, too: I'm proficient in unarmed combat, and I have weapons training. I would love to be your bitch, or your bodyguard,`); - if (V.PC.title !== 0) { - r.push(`sir,"`); - } else { - r.push(`ma'am,"`); - } - r.push(`${he} says, doing ${his} very best to sound appealing, like ${he}'s been told.`); + r.push(`My tutelage has been long and hard, and I'm very eager to begin my life as a slave." ${He}'s nude, and stands up to reveal ${his} hard-on. ${He} spins for the camera, showing ${himself} off. "I can help protect you, too: I'm proficient in unarmed combat, and I have weapons training. I would love to be your bitch, or your bodyguard, ${sir}", ${he} says, doing ${his} very best to sound appealing, like ${he}'s been told.`); } else if (school === "HA") { r.push(`I am ready to serve you in any way you deem fit and do everything I can to protect your life." ${He}'s wearing a delicate maid uniform, beautifully contrasting ${his} powerful physique and towering stature. "The academy has given me the opportunity to learn many valuable skills and I look forward to putting them at your service."`); } else if (school === "NUL") { r.push(`My education is complete, and I am ready to unveil the perfection of my form to the world." Naturally, ${he}'s totally nude, yet you still are unable to even guess what sort of equipment ${he} was born with. "It is my duty and my honor to share myself in eternal servitude, in all manners and mechanisms," ${he} says in an unnervingly upbeat monotone.`); } else { - r.push(`The time has come for me to serve my Sisters by leaving my community and becoming a slave. Our sex skills are unparalleled," ${he} says proudly. ${He}'s nude, and reclines luxuriantly for the camera, showing ${his} remarkable body off in all its gorgeous strangeness. ${His} boobs are huge, ${his} dick is hard, ${his} pussy is wet, and ${his} ass is relaxed. "I love to fuck,`); - if (V.PC.title !== 0) { - r.push(`sir,"`); - } else { - r.push(`ma'am,"`); - } - r.push(`${he} says, and you believe ${him}.`); + r.push(`The time has come for me to serve my Sisters by leaving my community and becoming a slave. Our sex skills are unparalleled," ${he} says proudly. ${He}'s nude, and reclines luxuriantly for the camera, showing ${his} remarkable body off in all its gorgeous strangeness. ${His} boobs are huge, ${his} dick is hard, ${his} pussy is wet, and ${his} ass is relaxed. "I love to fuck, ${sir}", ${he} says, and you believe ${him}.`); if (V.PC.dick !== 0 && V.PC.vagina !== -1) { App.Events.addParagraph(node, r); r = []; @@ -570,5 +493,6 @@ App.Events.RESSale = class RESSale extends App.Events.BaseEvent { } r.push(`"Ahem. I have stored the confirmation code, ${properMaster()}," ${heA} notes. "If you wish to take advantage of this promotion, use the slave buying menu to navigate to the appropriate school next week. I have appended a note to that school's entry to remind you."`); } + App.Events.addParagraph(node, r); } }; diff --git a/src/events/reRecruit/capturedTeen.js b/src/events/reRecruit/capturedTeen.js index dce6fb8ca98..b7144259d69 100644 --- a/src/events/reRecruit/capturedTeen.js +++ b/src/events/reRecruit/capturedTeen.js @@ -73,7 +73,7 @@ App.Events.recCapturedTeen = class recCapturedTeen extends App.Events.BaseEvent const el = new DocumentFragment(); let r = []; cashX(cost, "slaveTransfer"); - r.push(`You agree to the purchase. The men give a hushed thank you, and the call ends, cutting you off from the light. They arrive outside the city just a few hours later, and you send your VTOL to pick up the ${girl}. When ${he} arrives, you see that ${he} was kept in the same bindings. ${He}'s awake, and ${his} eyes make ${his} hatred of you unmistakable; fortunately, that's not your problem. You have a buyer with a taste for spoiled ${girl}s raised on a diet of false security lined up and eager to meet his new toy. ${He} stuggles against ${his} bindings as his agent carries ${him} off, but quickly loses hope when ${he} finds there is no chance of mercy.`); + r.push(`You agree to the purchase. The men give a hushed thank you, and the call ends, cutting you off from the light. They arrive outside the city just a few hours later, and you send your VTOL to pick up the ${girl}. When ${he} arrives, you see that ${he} was kept in the same bindings. ${He}'s awake, and ${his} eyes make ${his} hatred of you unmistakable; fortunately, that's not your problem. You have a buyer with a taste for spoiled ${girl}s raised on a diet of false security lined up and eager to meet his new toy. ${He} struggles against ${his} bindings as his agent carries ${him} off, but quickly loses hope when ${he} finds there is no chance of mercy.`); App.Events.addNode(el, r); return el; } diff --git a/src/events/reRecruit/maleDebtor.js b/src/events/reRecruit/maleDebtor.js index fa1d9dfd103..65a4e933b20 100644 --- a/src/events/reRecruit/maleDebtor.js +++ b/src/events/reRecruit/maleDebtor.js @@ -65,7 +65,8 @@ App.Events.recMaleDebtor = class recMaleDebtor extends App.Events.BaseEvent { slave.skill.anal = 0; slave.skill.oral = 0; slave.skill.whoring = 0; - slave.hStyle = either("short", "very short"); + slave.hStyle = "neat"; + slave.hLength = random(1, 9); return slave; } } -- GitLab From 35f127e81d95c170b3d832e23d86c0aee78848f0 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Tue, 1 Jun 2021 23:09:24 -0400 Subject: [PATCH 74/91] bodySwap fix --- src/005-passages/interactPassages.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/005-passages/interactPassages.js b/src/005-passages/interactPassages.js index 82133efb1b3..fc3682b6a7e 100644 --- a/src/005-passages/interactPassages.js +++ b/src/005-passages/interactPassages.js @@ -49,7 +49,7 @@ new App.DomPassage( V.nextLink = "Main"; V.returnTo = "Incubator"; } - return huskSwapSelection(getSlave(V.AS)); + return huskSwapSelection(V.activeSlave); } ); -- GitLab From 846ef359d79c1df473d587f4e78333fe8fa06ae4 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Wed, 2 Jun 2021 21:54:44 -0400 Subject: [PATCH 75/91] start --- src/events/RE/resMove.js | 488 ++++++++++++++++++ src/events/randomEvent.js | 2 + src/uncategorized/randomNonindividualEvent.tw | 99 ---- src/uncategorized/resMove.tw | 348 ------------- 4 files changed, 490 insertions(+), 447 deletions(-) create mode 100644 src/events/RE/resMove.js delete mode 100644 src/uncategorized/resMove.tw diff --git a/src/events/RE/resMove.js b/src/events/RE/resMove.js new file mode 100644 index 00000000000..3f0a5476951 --- /dev/null +++ b/src/events/RE/resMove.js @@ -0,0 +1,488 @@ +App.Events.RESMove = class RESMove extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => { + for (const [school, data] of App.Data.misc.schools) { + if (V[school].schoolUpgrade !== 0 && V[school].schoolPresent === 0 && V[school].schoolAnnexed === 0 && data.requirements) { + return true; + } + } + } + ]; + } + + actorPrerequisites() { + return []; + } + + get weight() { + return 2; + } + + execute(node) { + let r = []; + + V.nextButton = "Continue"; + V.nextLink = "RIE Eligibility Check"; + + const schoolArray = []; + for (const [school, data] of App.Data.misc.schools) { + if (V[school].schoolUpgrade !== 0 && V[school].schoolPresent === 0 && V[school].schoolAnnexed === 0 && data.requirements) { + schoolArray.push(school); + } + } + const schoolString = schoolArray.random(); + const { + HeA, + heA, hisA, girlA, womanA, himselfA, loliA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + let playerName; + if (V.PC.slaveSurname) { + if (V.PC.title) { + playerName = `Mr. ${V.PC.slaveName}`; + } else { + playerName = `"Ms. ${V.PC.slaveName}`; + } + } else { + playerName = V.PC.slaveName; + } + + if (schoolString === "TSS") { + r.push(`You receive a personal call from a senior representative of The Slavegirl School. "${playerName}," he says without preamble, "The Slavegirl School would like to open a branch campus in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "TUO") { + r.push(`You receive a personal call from a senior representative of The Utopian Orphanage. "${playerName}," she says without preamble, "The Utopian Orphanage would like to open a branch campus in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "GRI") { + r.push(`You receive a personal call from a senior representative of the Growth Research Institute. "${playerName}," he says without preamble, "GRI would like to open a subsidiary lab in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "SCP") { + r.push(`You receive a personal call from a senior representative of St. Claver Prep. "${playerName}," he says without preamble, "St. Claver's would like to open a branch campus in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "LDE") { + r.push(`You receive a personal call from a senior representative of L'École des Enculées. "${playerName}," he says without preamble, "The École would like to open a branch campus in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "TGA") { + r.push(`You receive a personal call from a senior representative of the Gymnasium-Academy. "${playerName}," he says without preamble, "The Academy would like to open a branch campus in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "HA") { + r.push(`You receive a personal call from a senior representative of the Hippolyta Academy. "${playerName}," he says without preamble, "The Academy would like to open a branch campus in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "TCR") { + r.push(`You receive a personal call from a senior representative of the Cattle Ranch. "${playerName}," he says without preamble, "The Ranch would like to open a pasture in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call.`); + } else if (schoolString === "NUL") { + r.push(`You receive a personal call from a senior representative of Nueva Universidad de Libertad. "`); + if (V.PC.slaveSurname) { + r.push(`Mx. ${V.PC.slaveSurname},"`); + } else { + r.push(`${V.PC.slaveName},"`); + } + r.push(`they say without preamble, "Nueva Universidad de Libertad would like to open a branch campus in ${V.arcologies[0].name}. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, they urge you to consider the offer, wish you a pleasant day, and end the call.`); + } else { + r.push(`You receive a personal call from a senior Futanari Sister — not the one you helped win the power struggle over futa balls. "${playerName}," she says with the odd confidence all elder Sisters share, "our numbers are growing,`); + if (V.PC.dick !== 0 && V.PC.vagina !== -1 && V.PC.boobs >= 300) { + r.push(`and we are very eager to become closer to you. Normally, we would ask for lowered rent in return for the benefits we bring an arcology, but for you, we are unwilling to ask even that. We shall charge others more for their purchase of Sisters instead. Please, will you have us?" She bats her eyes at you, looking very willing to be had.`); + } else { + r.push(`and you have shown yourself to be our friend. Would you accept one of our communities in ${V.arcologies[0].name}? We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence."`); + } + App.Events.addParagraph(node, r); + r = []; + r.push(`You inquire about the Sister you helped, and she smiles. "She reached the age at which even the best Sister must serve us by being sold as a slave. Don't worry, though; I hear she is very happy.`); + if (random(1, 3) === 1) { + r.push(`A powerful man from the old world bought her, and they're engaged. I believe he means to free her."`); + } else if (random(1, 2) === 1) { + r.push(`A powerful woman from the old world bought her, and they're engaged. I believe she means to free her."`); + } else { + r.push(`Though she's a slave, she's become something of a celebrity in the old world. I believe her porn is quite popular there."`); + } + } + App.Events.addParagraph(node, r); + r = []; + + r.push(`${capFirstChar(V.assistant.name)} performed a business analysis of the proposal during the call,`); + if (V.assistant.personality <= 0) { + r.push(`its symbol slowly rotating on your desk. It presents its conclusions,`); + } else { + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`${hisA} monster${girlA} avatar rather cutely using ${hisA} fingers, the tips of ${hisA} tentacle hair, and ${hisA} dickheads to count:`); + break; + case "shemale": + r.push(`${hisA} shemale avatar ditzily using ${hisA} fingers to keep count:`); + break; + case "amazon": + r.push(`${hisA} amazon avatar using a bone abacus to do sums while counting out loud gruffly:`); + break; + case "businesswoman": + r.push(`${hisA} business${womanA} avatar projecting maturely sexy confidence as ${heA} runs the numbers:`); + break; + case "fairy": + r.push(`${hisA} fairy avatar conjures a bunch of colored lights to keep count:`); + break; + case "pregnant fairy": + r.push(`${hisA} pregnant fairy avatar conjures a bunch of colored lights to keep count:`); + break; + case "goddess": + r.push(`${hisA} goddess avatar keeping count by picking the petals off flowers in ${hisA} hair:`); + break; + case "hypergoddess": + r.push(`${hisA} goddess avatar keeping count based off the number of contractions running through ${hisA} huge belly:`); + break; + case "loli": + r.push(`${hisA} ${loliA} avatar carefully counts the numbers off on ${hisA} fingers:`); + break; + case "preggololi": + r.push(`${hisA} pregnant ${loliA} avatar carefully counts the numbers off on ${hisA} fingers before losing count to ${hisA} baby kicking and starting over:`); + break; + case "angel": + r.push(`${hisA} angel avatar carefully using the feathers on ${hisA} wing to keep count:`); + break; + case "cherub": + r.push(`${hisA} cherub avatar lands to better concentrate on counting:`); + break; + case "incubus": + r.push(`${hisA} incubus avatar counts along to each stroke of ${hisA} penis:`); + break; + case "succubus": + r.push(`${hisA} succubus avatar dons a pair of glasses, short skirt and cleavage showing blouse to look the part while counting:`); + break; + case "imp": + r.push(`${hisA} imp avatar lands to better concentrate on counting:`); + break; + case "witch": + r.push(`${hisA} witch avatar uses its chalk to keep a tally:`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`${hisA} avatar sprouts an additional clit to keep count:`); + break; + case "schoolgirl": + r.push(`${hisA} school ${girlA} avatar doing sums on a little blackboard:`); + break; + default: + r.push(`${hisA} symbol slowly rotating on your desk:`); + } + r.push(`${HeA} presents ${hisA} conclusions:`); + } + r.push(`as you suspected,`); + if (schoolString === "TFS" && V.PC.dick !== 0 && V.PC.vagina !== -1 && V.PC.boobs >= 300) { + r.push(`your futanari status means there are no potential downsides. Just having them present would probably be good for the arcology's prosperity.`); + } else { + r.push(`you'd run a loss on the rent, even bargaining them up as far as they'd be likely to go. On the other hand, just having them present would probably be good for the arcology's prosperity.`); + } + if (V.assistant.personality === 1) { + if (schoolString === "TSS" || schoolString === "SCP") { + r.push(`"Just think of`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`all those virgin schoolgirl holes," ${heA} concludes, ${hisA} avatar starting to masturbate.`); + break; + case "shemale": + r.push(`all those fresh schoolgirls, all innocent, and..." ${heA} trails off, ${hisA} avatar starting to masturbate.`); + break; + case "amazon": + r.push(`all those nice girls," ${hisA} avatar blushes.`); + break; + case "businesswoman": + r.push(`all that potential," ${hisA} avatar says, looking aroused at the possibilities.`); + break; + case "fairy": + case "pregnant fairy": + r.push(`all of the delicious, wonderful virginal love juices!" ${hisA} avatar squeaks, quivering with delight while dripping with love juices of ${hisA} own.`); + break; + case "goddess": + r.push(`all those virgin bodies to share..." ${hisA} avatar murmurs, rubbing a hand over ${hisA} belly.`); + break; + case "hypergoddess": + r.push(`all those virgin bodies to share... I hope we can fill them with children..." ${hisA} avatar murmurs, rubbing a hand over ${hisA} massive belly.`); + break; + case "loli": + r.push(`all those new girls!" ${hisA} avatar exclaims.`); + break; + case "preggololi": + r.push(`all those fresh girls!" ${hisA} avatar exclaims with a grin.`); + break; + case "angel": + r.push(`all those pure, innocent girls! You'll keep them safe won't you?" ${hisA} avatar says pleadingly.`); + break; + case "cherub": + r.push(`all those pure girls!" ${hisA} avatar exclaims with a worried tone.`); + break; + case "incubus": + r.push(`all those holes for the taking," ${hisA} avatar says, licking ${hisA} lips.`); + break; + case "succubus": + r.push(`all those pure, innocent girls. I can't wait to unleash their inner slut!" ${hisA} avatar says excitedly.`); + break; + case "imp": + r.push(`all those pure, innocent girls. I can't wait to see them fall!" ${hisA} avatar says excitedly.`); + break; + case "witch": + r.push(`all those pure, innocent girls. I promise I won't turn them into monsters!" ${hisA} avatar says, bowing its head.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`all those fresh, young schoolgirls," ${hisA} avatar says, grinning unnaturally wide, splitting its middle and unfolding dozens of tentacles. "I can't wait to stuff them full of young."`); + break; + case "schoolgirl": + r.push(`all those cute schoolgirls like me!" ${hisA} avatar trills.`); + break; + default: + r.push(`all those nice girls," ${heA} says.`); + } + } else if (schoolString === "GRI" || schoolString === "TCR") { + r.push(`"Just think of`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`the tits, and the asses, and the lips," ${heA} concludes, ${hisA} avatar starting to masturbate.`); + break; + case "shemale": + r.push(`those big butts.`); + if (schoolString === "TCR") { + r.push(`It must feel lovely sinking into such a thing while pounding an asshole..."`); + } else { + r.push(`It's so rare for girls to have such big butts and be anal virgins..."`); + } + r.push(`${heA} trails off, ${hisA} avatar starting to masturbate.`); + break; + case "amazon": + r.push(`all those meaty girls," ${hisA} avatar blushes.`); + break; + case "businesswoman": + r.push(`all that milking potential," ${hisA} avatar says, looking aroused at the possibilities.`); + break; + case "fairy": + r.push(`all that sweet, tasty milk!" ${hisA} avatar squeaks, licking ${hisA} lips and dripping with arousal.`); + break; + case "pregnant fairy": + r.push(`all that sweet, tasty mama milk!" ${hisA} avatar squeaks, licking ${hisA} lips and dripping with arousal.`); + break; + case "goddess": + case "hypergoddess": + r.push(`all those luscious, heavy tits," ${hisA} avatar says, hefting one of ${hisA} own.`); + break; + case "loli": + r.push(`those tits!" ${hisA} avatar says while cupping ${hisA} flat chest.`); + break; + case "preggololi": + r.push(`those tits!" ${hisA} avatar says while cupping ${hisA} barely there chest.`); + break; + case "angel": + r.push(`those lovely breasts," ${hisA} avatar says, blushing red. "I wouldn't be able to fly with them..."`); + break; + case "cherub": + r.push(`those huge tits!" ${hisA} avatar exclaims. "Could you imagine trying to fly with those?"`); + break; + case "incubus": + r.push(`those amazing breasts; I can't wait to wrap them around my dick!" ${heA} exclaims, ${hisA} hard-on twitching with anticipation.`); + break; + case "succubus": + r.push(`those saggy tits and fat asses, then compare them to MINE." ${HeA} states, pushing out ${hisA} perfectly perky M-cup bust before twirling around to show off ${hisA} enormous, toned ass.`); + break; + case "imp": + r.push(`those heavy tits," ${hisA} avatar says, "I just want to tease them all day long!"`); + break; + case "witch": + r.push(`all that flesh," ${hisA} avatar mutters. "Last time I tried to get curves like that I ended up so big I couldn't see over my breasts, let alone move..."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`the breasts, the asses, the milk, the flesh," ${hisA} avatar states while swelling considerably and sprouting several oversized extra boobs.`); + break; + case "schoolgirl": + r.push(`those titties!" ${hisA} avatar trills.`); + break; + default: + r.push(`those ridiculous assets," ${heA} says.`); + } + } else if (schoolString === "LDE" || schoolString === "NUL") { + r.push(`"Just think of`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`their soft anuses. I could fit both of my dicks in one of them," ${heA} concludes, ${hisA} avatar starting to masturbate.`); + break; + case "shemale": + r.push(`those soft young butthole sluts..." ${heA} trails off, ${hisA} avatar starting to masturbate.`); + break; + case "amazon": + r.push(`their soft — I mean their submissive — you know, how they take..." ${hisA} avatar trails off, blushing.`); + break; + case "businesswoman": + r.push(`all that whoring potential," ${hisA} avatar says, looking aroused at the possibilities.`); + break; + case "fairy": + r.push(`all those soft, squeezable butts!" ${hisA} avatar squeaks, shaking to and fro while ${heA} hugs ${himselfA}.`); + break; + case "pregnant fairy": + r.push(`all those soft, squeezable butts and lovely birthing hips!" ${hisA} avatar squeaks, shaking to and fro while ${heA} hugs ${hisA} swollen belly.`); + break; + case "goddess": + r.push(`those servile little cuties!" ${hisA} avatar exclaims, practically giggling.`); + break; + case "hypergoddess": + r.push(`those servile little cuties! They could really use some cute little bellies!" ${hisA} avatar exclaims, practically giggling.`); + break; + case "loli": + case "preggololi": + r.push(`those fat butts!" ${hisA} avatar exclaims cheerfully.`); + break; + case "angel": + r.push(`your soul! Pussies are for sex, not buttholes!" ${heA} shouts, bright red with embarrassment at what ${heA} is saying.`); + break; + case "cherub": + r.push(`all those big butts!" ${hisA} avatar says while clutching ${hisA} own. "Would I look cute with a bigger rear?"`); + break; + case "incubus": + r.push(`those amazing assholes; I bet they know just how to squeeze as you fuck 'em!" ${heA} exclaims, ${hisA} hard-on twitching with anticipation.`); + break; + case "succubus": + r.push(`my ass instead," ${heA} says, shaking ${hisA} own giant ass and tight butthole at you.`); + break; + case "imp": + r.push(`those bouncing asses," ${hisA} avatar says. "I just want to spank them all day long..."`); + break; + case "witch": + r.push(`all that assflesh," ${hisA} avatar mutters. "So many panties ruined by that spell..."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`ass pussies," ${hisA} avatar states, sprouting a large dick-like appendage from its crotch. "Perfect for filling with young."`); + break; + case "schoolgirl": + r.push(`those soft little bitches!" ${hisA} avatar trills.`); + break; + default: + r.push(`those bottoms," ${heA} says.`); + } + } else if (schoolString === "TGA" || schoolString === "HA") { + r.push(`"Just think of`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`their sweaty bodies," ${heA} concludes, ${hisA} avatar starting to masturbate.`); + break; + case "shemale": + r.push(`those muscly bodies, all sweaty and..." ${heA} trails off, ${hisA} avatar starting to masturbate.`); + break; + case "amazon": + r.push(`how they can fight!" ${heA} concludes, more loudly than is really necessary.`); + break; + case "businesswoman": + r.push(`all that bodyguard potential," ${hisA} avatar says, looking aroused at the possibilities.`); + break; + case "fairy": + case "pregnant fairy": + r.push(`those big, strong, sweaty, sexy bodies!" ${hisA} avatar squeaks, looking beet red and breathing heavily.`); + break; + case "goddess": + case "hypergoddess": + r.push(`all those hard, strong, rippling..." ${heA} trails off, too breathless to be specific.`); + break; + case "loli": + case "preggololi": + r.push(`those muscles!" ${heA} exclaims.`); + break; + case "angel": + r.push(`those lovely muscles," ${heA} mutters. "I'd feel so safe with them around me..."`); + break; + case "cherub": + r.push(`sweaty muscles!" ${hisA} avatar says. "I wonder if I could fly faster with them?"`); + break; + case "incubus": + r.push(`their strength; think of the sexual positions!" ${heA} exclaims, ${hisA} hard-on twitching with anticipation.`); + break; + case "succubus": + r.push(`their stamina," ${heA} says, licking ${hisA} lips. "You could fuck all night long without a single break!"`); + break; + case "imp": + r.push(`that strength," ${hisA} avatar smirks. "You could spank a girl red, easily."`); + break; + case "witch": + r.push(`how tall they are," ${hisA} avatar mutters. "I tried a muscle growth spell once... Ended up sixteen feet tall without any muscles; couldn't even stand under my weight."`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`that grip," ${hisA} avatar states. "It would be effortless to pin a girl with that."`); + break; + case "schoolgirl": + r.push(`those cute bitches!" ${hisA} avatar trills.`); + break; + default: + r.push(`how well trained they always are," ${heA} says.`); + } + } else { + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "I have never wanted to have a real body more."`); + break; + case "shemale": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "They almost make me want a pussy, too."`); + break; + case "amazon": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "I like them."`); + break; + case "businesswoman": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "I wonder if I could code an avatar version of one of them. As my own assistant, of course."`); + break; + case "fairy": + case "pregnant fairy": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "If only I could get a taste myself."`); + break; + case "goddess": + case "hypergoddess": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "They truly have the best of both worlds."`); + break; + case "loli": + case "preggololi": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "I wish I'll look like that when I grow up..."`); + break; + case "angel": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "They are unnatural, be careful around them."`); + break; + case "cherub": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "They are curious; I wonder what it would be like to have a body like that."`); + break; + case "incubus": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "I bet they'd squeal with every thrust of a dick against their prostate."`); + break; + case "succubus": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "Be careful around them, I might get jealous!"`); + break; + case "imp": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "There are so many places you could torment on someone with both sexes."`); + break; + case "witch": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "If you aren't careful with magic you can end up like that... Not that I have before!" ${heA} shouts, turning red.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`${capFirstChar(V.assistant.name)} pauses, ${hisA} hips and crotch splitting open to allow a massive phallic object to sag to the ground, "We are similar."`); + break; + case "schoolgirl": + r.push(`${capFirstChar(V.assistant.name)} pauses and then says seriously, "They kind of make me want a cock."`); + break; + default: + r.push(`"Just think of how unique they are," ${heA} says.`); + } + } + } + App.Events.addParagraph(node, r); + r = []; + r.push(`Your assistant is a powerful analytic tool, but ${heA} lacks the capacity for true creativity. ${HeA} did not mention the long term. It would be possible to support the`); + if (schoolString === "TUO") { + r.push(`orphanage's`); + } else if (schoolString === "GRI") { + r.push(`lab's`); + } else if (schoolString === "TCR") { + r.push(`farm's`); + } else if (schoolString === "TFS"){ + r.push(`Sisters'`); + } else { + r.push(`school's`); + } + r.push(`presence in the arcology, reaping all sorts of benefits. Alternatively, you might be able to undermine them covertly, picking up assets lost in the fallout of a local failure.`); + + App.Events.addParagraph(node, r); + + App.Events.addResponses(node, [ + new App.Events.Result(`Accept the offer`, accept, (schoolString === "TFS" && V.PC.dick !== 0 && V.PC.vagina !== -1 && V.PC.boobs >= 300) ? "" : "This will add minor upkeep costs"), + new App.Events.Result(`Politely decline`, decline) + ]); + + function accept() { + V[schoolString].schoolPresent = 1; + return `You call them back and accept the offer. They forward their specifications for an appropriate space and the modifications it needs to host them, along with their thanks.`; + } + + function decline() { + return `You call them back and politely communicate that your terms for rental of space in the arcology are not subject to special modification, even for trusted partners. This explanation is graciously accepted.`; + } + } +}; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 024eac91fd0..3aeabf4e6a6 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -127,6 +127,8 @@ App.Events.getNonindividualEvents = function() { new App.Events.REMaleCitizenHookup(), new App.Events.REFSNonconformist(), new App.Events.RESEndowment(), + new App.Events.RESMove(), + ]; }; diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index c3615ece352..31a221bed6e 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -596,105 +596,6 @@ <</if>> <</if>> - /* SCHOOL EVENTS */ - <<set $RESMove = []>> - <<if ($seeDicks != 100)>> /* is the player ok with seeing vaginas? */ - <<if $TSS.schoolUpgrade != 0>> - <<if $TSS.schoolPresent == 0>> - <<if $TSS.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("TSS")>> - <</if>> - <</if>> - <</if>> - <<if $TUO.schoolUpgrade != 0>> - <<if $TUO.schoolPresent == 0>> - <<if $TUO.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("TUO")>> - <</if>> - <</if>> - <</if>> - <<if $GRI.schoolUpgrade != 0>> - <<if $GRI.schoolPresent == 0>> - <<if $GRI.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("GRI")>> - <</if>> - <</if>> - <</if>> - <<if $SCP.schoolUpgrade != 0>> - <<if $SCP.schoolPresent == 0>> - <<if $SCP.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("SCP")>> - <</if>> - <</if>> - <</if>> - <<if $HA.schoolUpgrade != 0>> - <<if $HA.schoolPresent == 0>> - <<if $HA.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("HA")>> - <</if>> - <</if>> - <</if>> - <<if $TCR.schoolUpgrade != 0 && $TCR.schoolPresent == 0 && $TCR.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("TCR")>> - <</if>> - <</if>> /* end "player is okay with vaginas" check */ - <<if ($seeDicks != 0)>> /* begin "player is ok with dick" check */ - <<if $LDE.schoolUpgrade != 0>> - <<if $LDE.schoolPresent == 0>> - <<if $LDE.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("LDE")>> - <</if>> - <</if>> - <</if>> - <<if $TGA.schoolUpgrade != 0>> - <<if $TGA.schoolPresent == 0>> - <<if $TGA.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("TGA")>> - <</if>> - <</if>> - <</if>> - <<if $TFS.schoolUpgrade != 0>> - <<if $TFS.schoolPresent == 0>> - <<if $TFS.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("TFS")>> - <<if ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("TFS")>> - <<set $RESMove.push("TFS")>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <<if $NUL.schoolUpgrade != 0>> - <<if $NUL.schoolPresent == 0>> - <<if $NUL.schoolAnnexed == 0>> - <<set $events.push("RES Move")>> - <<set $events.push("RES Move")>> - <<set $RESMove.push("NUL")>> - <</if>> - <</if>> - <</if>> - <<if $justiceEvents.length > 0>> <<if ($seeExtreme == 0) || ($seeDicks == 0)>> <<set $justiceEvents.delete("slave training")>> diff --git a/src/uncategorized/resMove.tw b/src/uncategorized/resMove.tw deleted file mode 100644 index 52ffc1138d8..00000000000 --- a/src/uncategorized/resMove.tw +++ /dev/null @@ -1,348 +0,0 @@ -:: RES Move [nobr] - -<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">> - -<<set $RESMove = $RESMove.random()>> -<<setAssistantPronouns>> - -<<if $PC.slaveSurname>> - <<if $PC.title>> - <<set _playerName = "Mr. " + $PC.slaveName>> - <<else>> - <<set _playerName = "Ms. " + $PC.slaveName>> - <</if>> -<<else>> - <<set _playerName = $PC.slaveName>> -<</if>> - -<<if $RESMove == "TSS">> - You receive a personal call from a senior representative of The Slavegirl School. "_playerName," he says without preamble, "The Slavegirl School would like to open a branch campus in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "TUO">> - You receive a personal call from a senior representative of The Utopian Orphanage. "_playerName," she says without preamble, "The Utopian Orphanage would like to open a branch campus in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "GRI">> - You receive a personal call from a senior representative of the Growth Research Institute. "_playerName," he says without preamble, "GRI would like to open a subsidiary lab in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "SCP">> - You receive a personal call from a senior representative of St. Claver Prep. "_playerName," he says without preamble, "St. Claver's would like to open a branch campus in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "LDE">> - You receive a personal call from a senior representative of L'École des Enculées. "_playerName," he says without preamble, "The École would like to open a branch campus in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "TGA">> - You receive a personal call from a senior representative of the Gymnasium-Academy. "_playerName," he says without preamble, "The Academy would like to open a branch campus in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "HA">> - You receive a personal call from a senior representative of the Hippolyta Academy. "_playerName," he says without preamble, "The Academy would like to open a branch campus in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "TCR">> - You receive a personal call from a senior representative of the Cattle Ranch. "_playerName," he says without preamble, "The Ranch would like to open a pasture in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, he urges you to consider the offer, wishes you a pleasant day, and ends the call. -<<elseif $RESMove == "NUL">> - You receive a personal call from a senior representative of Nueva Universidad de Libertad. "<<if $PC.slaveSurname>>Mx. <<print $PC.slaveSurname>><<else>><<print $PC.slaveName>><</if>>," they say without preamble, "Nueva Universidad de Libertad would like to open a branch campus in $arcologies[0].name. We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." After some further pleasantries, they urge you to consider the offer, wish you a pleasant day, and end the call. -<<else>> - You receive a personal call from a senior Futanari Sister — not the one you helped win the power struggle over futa balls. "_playerName," she says with the odd confidence all elder Sisters share, "our numbers are growing, - <<if ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>> - and we are very eager to become closer to you. Normally, we would ask for lowered rent in return for the benefits we bring an arcology, but for you, we are unwilling to ask even that. We shall charge others more for their purchase of Sisters instead. Please, will you have us?" She bats her eyes at you, looking very willing to be had. - <<else>> - and you have shown yourself to be our friend. Would you accept one of our communities in $arcologies[0].name? We'd like to ask for a significant reduction in rent from your standard rate, since we could bring significant benefits to you through our presence." - <</if>> - <br><br> - You inquire about the Sister you helped, and she smiles. "She reached the age at which even the best Sister must serve us by being sold as a slave. Don't worry, though; I hear she is very happy. <<if random(1,3) == 1>>A powerful man from the old world bought her, and they're engaged. I believe he means to free her.<<elseif random(1,2) == 1>>A powerful woman from the old world bought her, and they're engaged. I believe she means to free her.<<else>>Though she's a slave, she's become something of a celebrity in the old world. I believe her porn is quite popular there.<</if>>" -<</if>> -<br><br> -<<= capFirstChar($assistant.name)>> performed a business analysis of the proposal during the call, -<<if $assistant.personality <= 0>> - its symbol slowly rotating on your desk. It presents its conclusions, -<<else>> - <<switch $assistant.appearance>> - <<case "monstergirl">> - _hisA monster<<= _girlA>> avatar rather cutely using _hisA fingers, the tips of _hisA tentacle hair, and _hisA dickheads to count: - <<case "shemale">> - _hisA shemale avatar ditzily using _hisA fingers to keep count: - <<case "amazon">> - _hisA amazon avatar using a bone abacus to do sums while counting out loud gruffly: - <<case "businesswoman">> - _hisA business<<= _womanA>> avatar projecting maturely sexy confidence as _heA runs the numbers: - <<case "fairy">> - _hisA fairy avatar conjures a bunch of colored lights to keep count: - <<case "pregnant fairy">> - _hisA pregnant fairy avatar conjures a bunch of colored lights to keep count: - <<case "goddess">> - _hisA goddess avatar keeping count by picking the petals off flowers in _hisA hair: - <<case "hypergoddess">> - _hisA goddess avatar keeping count based off the number of contractions running through _hisA huge belly: - <<case "loli">> - _hisA _loliA avatar carefully counts the numbers off on _hisA fingers: - <<case "preggololi">> - _hisA pregnant _loliA avatar carefully counts the numbers off on _hisA fingers before losing count to _hisA baby kicking and starting over: - <<case "angel">> - _hisA angel avatar carefully using the feathers on _hisA wing to keep count: - <<case "cherub">> - _hisA cherub avatar lands to better concentrate on counting: - <<case "incubus">> - _hisA incubus avatar counts along to each stroke of _hisA penis: - <<case "succubus">> - _hisA succubus avatar dons a pair of glasses, short skirt and cleavage showing blouse to look the part while counting: - <<case "imp">> - _hisA imp avatar lands to better concentrate on counting: - <<case "witch">> - _hisA witch avatar uses its chalk to keep a tally: - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - _hisA avatar sprouts an additional clit to keep count: - <<case "schoolgirl">> - _hisA school<<= _girlA>> avatar doing sums on a little blackboard: - <<default>> - _hisA symbol slowly rotating on your desk: - <</switch>> - _HeA presents _hisA conclusions: -<</if>> -as you suspected, -<<if ($RESMove == "TFS") && ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>> - your futanari status means there are no potential downsides. Just having them present would probably be good for the arcology's prosperity. -<<else>> - you'd run a loss on the rent, even bargaining them up as far as they'd be likely to go. On the other hand, just having them present would probably be good for the arcology's prosperity. -<</if>> -<<if $assistant.personality == 1>> - <<if ($RESMove == "TSS") || ($RESMove == "SCP")>> - "Just think of - <<switch $assistant.appearance>> - <<case "monstergirl">> - all those virgin schoolgirl holes," _heA concludes, _hisA avatar starting to masturbate. - <<case "shemale">> - all those fresh schoolgirls, all innocent, and..." _heA trails off, _hisA avatar starting to masturbate. - <<case "amazon">> - all those nice girls," _hisA avatar blushes. - <<case "businesswoman">> - all that potential," _hisA avatar says, looking aroused at the possibilities. - <<case "fairy" "pregnant fairy">> - all of the delicious, wonderful virginal love juices!" _hisA avatar squeaks, quivering with delight while dripping with love juices of _hisA own. - <<case "goddess">> - all those virgin bodies to share..." _hisA avatar murmurs, rubbing a hand over _hisA belly. - <<case "hypergoddess">> - all those virgin bodies to share... I hope we can fill them with children..." _hisA avatar murmurs, rubbing a hand over _hisA massive belly. - <<case "loli">> - all those new girls!" _hisA avatar exclaims. - <<case "preggololi">> - all those fresh girls!" _hisA avatar exclaims with a grin. - <<case "angel">> - all those pure, innocent girls! You'll keep them safe won't you?" _hisA avatar says pleadingly. - <<case "cherub">> - all those pure girls!" _hisA avatar exclaims with a worried tone. - <<case "incubus">> - all those holes for the taking," _hisA avatar says, licking _hisA lips. - <<case "succubus">> - all those pure, innocent girls. I can't wait to unleash their inner slut!" _hisA avatar says excitedly. - <<case "imp">> - all those pure, innocent girls. I can't wait to see them fall!" _hisA avatar says excitedly. - <<case "witch">> - all those pure, innocent girls. I promise I won't turn them into monsters!" _hisA avatar says, bowing its head. - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - all those fresh, young schoolgirls," _hisA avatar says, grinning unnaturally wide, splitting its middle and unfolding dozens of tentacles. "I can't wait to stuff them full of young." - <<case "schoolgirl">> - all those cute schoolgirls like me!" _hisA avatar trills. - <<default>> - all those nice girls," _heA says. - <</switch>> - <<elseif $RESMove == "GRI" || $RESMove == "TCR">> - "Just think of - <<switch $assistant.appearance>> - <<case "monstergirl">> - the tits, and the asses, and the lips," _heA concludes, _hisA avatar starting to masturbate. - <<case "shemale">> - those big butts. - <<if $RESMove == "TCR">> - It must feel lovely sinking into such a thing while pounding an asshole..." - <<else>> - It's so rare for girls to have such big butts and be anal virgins..." - <</if>> - _heA trails off, _hisA avatar starting to masturbate. - <<case "amazon">> - all those meaty girls," _hisA avatar blushes. - <<case "businesswoman">> - all that milking potential," _hisA avatar says, looking aroused at the possibilities. - <<case "fairy">> - all that sweet, tasty milk!" _hisA avatar squeaks, licking _hisA lips and dripping with arousal. - <<case "pregnant fairy">> - all that sweet, tasty mama milk!" _hisA avatar squeaks, licking _hisA lips and dripping with arousal. - <<case "goddess" "hypergoddess">> - all those luscious, heavy tits," _hisA avatar says, hefting one of _hisA own. - <<case "loli">> - those tits!" _hisA avatar says while cupping _hisA flat chest. - <<case "preggololi">> - those tits!" _hisA avatar says while cupping _hisA barely there chest. - <<case "angel">> - those lovely breasts," _hisA avatar says, blushing red. "I wouldn't be able to fly with them..." - <<case "cherub">> - those huge tits!" _hisA avatar exclaims. "Could you imagine trying to fly with those?" - <<case "incubus">> - those amazing breasts; I can't wait to wrap them around my dick!" _heA exclaims, _hisA hard-on twitching with anticipation. - <<case "succubus">> - those saggy tits and fat asses, then compare them to MINE." _HeA states, pushing out _hisA perfectly perky M-cup bust before twirling around to show off _hisA enormous, toned ass. - <<case "imp">> - those heavy tits," _hisA avatar says, "I just want to tease them all day long!" - <<case "witch">> - all that flesh," _hisA avatar mutters. "Last time I tried to get curves like that I ended up so big I couldn't see over my breasts, let alone move..." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - the breasts, the asses, the milk, the flesh," _hisA avatar states while swelling considerably and sprouting several oversized extra boobs. - <<case "schoolgirl">> - those titties!" _hisA avatar trills. - <<default>> - those ridiculous assets," _heA says. - <</switch>> - <<elseif $RESMove == "LDE" || $RESMove == "NUL">> - "Just think of - <<switch $assistant.appearance>> - <<case "monstergirl">> - their soft anuses. I could fit both of my dicks in one of them," _heA concludes, _hisA avatar starting to masturbate. - <<case "shemale">> - those soft young butthole sluts..." _heA trails off, _hisA avatar starting to masturbate. - <<case "amazon">> - their soft — I mean their submissive — you know, how they take..." _hisA avatar trails off, blushing. - <<case "businesswoman">> - all that whoring potential," _hisA avatar says, looking aroused at the possibilities. - <<case "fairy">> - all those soft, squeezable butts!" _hisA avatar squeaks, shaking to and fro while _heA hugs _himselfA. - <<case "pregnant fairy">> - all those soft, squeezable butts and lovely birthing hips!" _hisA avatar squeaks, shaking to and fro while _heA hugs _hisA swollen belly. - <<case "goddess">> - those servile little cuties!" _hisA avatar exclaims, practically giggling. - <<case "hypergoddess">> - those servile little cuties! They could really use some cute little bellies!" _hisA avatar exclaims, practically giggling. - <<case "loli" "preggololi">> - those fat butts!" _hisA avatar exclaims cheerfully. - <<case "angel">> - your soul! Pussies are for sex, not buttholes!" _heA shouts, bright red with embarrassment at what _heA is saying. - <<case "cherub">> - all those big butts!" _hisA avatar says while clutching _hisA own. "Would I look cute with a bigger rear?" - <<case "incubus">> - those amazing assholes; I bet they know just how to squeeze as you fuck 'em!" _heA exclaims, _hisA hard-on twitching with anticipation. - <<case "succubus">> - my ass instead," _heA says, shaking _hisA own giant ass and tight butthole at you. - <<case "imp">> - those bouncing asses," _hisA avatar says. "I just want to spank them all day long..." - <<case "witch">> - all that assflesh," _hisA avatar mutters. "So many panties ruined by that spell..." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - ass pussies," _hisA avatar states, sprouting a large dick-like appendage from its crotch. "Perfect for filling with young." - <<case "schoolgirl">> - those soft little bitches!" _hisA avatar trills. - <<default>> - those bottoms," _heA says. - <</switch>> - <<elseif $RESMove == "TGA" || $RESMove == "HA">> - "Just think of - <<switch $assistant.appearance>> - <<case "monstergirl">> - their sweaty bodies," _heA concludes, _hisA avatar starting to masturbate. - <<case "shemale">> - those muscly bodies, all sweaty and..." _heA trails off, _hisA avatar starting to masturbate. - <<case "amazon">> - how they can fight!" _heA concludes, more loudly than is really necessary. - <<case "businesswoman">> - all that bodyguard potential," _hisA avatar says, looking aroused at the possibilities. - <<case "fairy" "pregnant fairy">> - those big, strong, sweaty, sexy bodies!" _hisA avatar squeaks, looking beet red and breathing heavily. - <<case "goddess" "hypergoddess">> - all those hard, strong, rippling..." _heA trails off, too breathless to be specific. - <<case "loli" "preggololi">> - those muscles!" _heA exclaims. - <<case "angel">> - those lovely muscles," _heA mutters. "I'd feel so safe with them around me..." - <<case "cherub">> - sweaty muscles!" _hisA avatar says. "I wonder if I could fly faster with them?" - <<case "incubus">> - their strength; think of the sexual positions!" _heA exclaims, _hisA hard-on twitching with anticipation. - <<case "succubus">> - their stamina," _heA says, licking _hisA lips. "You could fuck all night long without a single break!" - <<case "imp">> - that strength," _hisA avatar smirks. "You could spank a girl red, easily." - <<case "witch">> - how tall they are," _hisA avatar mutters. "I tried a muscle growth spell once... Ended up sixteen feet tall without any muscles; couldn't even stand under my weight." - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - that grip," _hisA avatar states. "It would be effortless to pin a girl with that." - <<case "schoolgirl">> - those cute bitches!" _hisA avatar trills. - <<default>> - how well trained they always are," _heA says. - <</switch>> - <<else>> - <<switch $assistant.appearance>> - <<case "monstergirl">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "I have never wanted to have a real body more." - <<case "shemale">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "They almost make me want a pussy, too." - <<case "amazon">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "I like them." - <<case "businesswoman">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "I wonder if I could code an avatar version of one of them. As my own assistant, of course." - <<case "fairy" "pregnant fairy">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "If only I could get a taste myself." - <<case "goddess" "hypergoddess">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "They truly have the best of both worlds." - <<case "loli" "preggololi">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "I wish I'll look like that when I grow up..." - <<case "angel">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "They are unnatural, be careful around them." - <<case "cherub">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "They are curious; I wonder what it would be like to have a body like that." - <<case "incubus">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "I bet they'd squeal with every thrust of a dick against their prostate." - <<case "succubus">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "Be careful around them, I might get jealous!" - <<case "imp">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "There are so many places you could torment on someone with both sexes." - <<case "witch">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "If you aren't careful with magic you can end up like that... Not that I have before!" _heA shouts, turning red. - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - <<= capFirstChar($assistant.name)>> pauses, _hisA hips and crotch splitting open to allow a massive phallic object to sag to the ground, "We are similar." - <<case "schoolgirl">> - <<= capFirstChar($assistant.name)>> pauses and then says seriously, "They kind of make me want a cock." - <<default>> - "Just think of how unique they are," _heA says. - <</switch>> - <</if>> -<</if>> -<br><br> -Your assistant is a powerful analytic tool, but _heA lacks the capacity for true creativity. _HeA did not mention the long term. It would be possible to support the -<<if ($RESMove == "TSS") || ($RESMove == "SCP") || ($RESMove == "LDE") || ($RESMove == "TGA") || ($RESMove == "HA") || ($RESMove == "NUL")>> - school's -<<elseif $RESMove == "TUO">> - orphanage's -<<elseif $RESMove == "GRI">> - lab's -<<elseif $RESMove == "TCR">> - farm's -<<else>> - Sisters' -<</if>> -presence in the arcology, reaping all sorts of benefits. Alternatively, you might be able to undermine them covertly, picking up assets lost in the fallout of a local failure. - -<br><br> - -<span id="result"> -<<link "Accept the offer">> - <<replace "#result">> - You call them back and accept the offer. They forward their specifications for an appropriate space and the modifications it needs to host them, along with their thanks. - <<if $RESMove == "TSS">> - <<set $TSS.schoolPresent = 1>> - <<elseif $RESMove == "TUO">> - <<set $TUO.schoolPresent = 1>> - <<elseif $RESMove == "GRI">> - <<set $GRI.schoolPresent = 1>> - <<elseif $RESMove == "SCP">> - <<set $SCP.schoolPresent = 1>> - <<elseif $RESMove == "LDE">> - <<set $LDE.schoolPresent = 1>> - <<elseif $RESMove == "TGA">> - <<set $TGA.schoolPresent = 1>> - <<elseif $RESMove == "HA">> - <<set $HA.schoolPresent = 1>> - <<elseif $RESMove == "TCR">> - <<set $TCR.schoolPresent = 1>> - <<elseif $RESMove == "NUL">> - <<set $NUL.schoolPresent = 1>> - <<else>> - <<set $TFS.schoolPresent = 1>> - <</if>> - <</replace>> -<</link>> <<if ($RESMove == "TFS") && ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>><<else>>//This will add minor upkeep costs//<</if>> -<br><<link "Politely decline">> - <<replace "#result">> - You call them back and politely communicate that your terms for rental of space in the arcology are not subject to special modification, even for trusted partners. This explanation is graciously accepted. - <</replace>> -<</link>> -</span> -- GitLab From ac673bcd79927a72cc206422e2f0b2b23b567f06 Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Wed, 2 Jun 2021 21:59:28 -0400 Subject: [PATCH 76/91] add art for avatar in scene --- src/events/RE/resMove.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/events/RE/resMove.js b/src/events/RE/resMove.js index 3f0a5476951..a9666fb672e 100644 --- a/src/events/RE/resMove.js +++ b/src/events/RE/resMove.js @@ -36,6 +36,7 @@ App.Events.RESMove = class RESMove extends App.Events.BaseEvent { HeA, heA, hisA, girlA, womanA, himselfA, loliA } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + const artFrame = V.seeImages ? node.append(App.UI.DOM.assistantArt(3)) : new DocumentFragment(); let playerName; if (V.PC.slaveSurname) { -- GitLab From fbb2aa58443c1961df5671182df91371069bddbb Mon Sep 17 00:00:00 2001 From: Anu <barrychahal@gmail.com> Date: Thu, 3 Jun 2021 08:08:18 +0000 Subject: [PATCH 77/91] Fix "inhuman pair of testicles testicles" --- src/npc/descriptions/crotch/dick.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/npc/descriptions/crotch/dick.js b/src/npc/descriptions/crotch/dick.js index 0abb26c7872..31432194df0 100644 --- a/src/npc/descriptions/crotch/dick.js +++ b/src/npc/descriptions/crotch/dick.js @@ -400,7 +400,7 @@ App.Desc.dick = function(slave, {market, eventDescription} = {}) { } else { switch (slave.balls) { case 10: - r.push(`and ${he} has an inhuman pair of testicles`); + r.push(`and ${he} has an inhuman pair of `); if (V.showDickCMs === 1) { r.push(`testicles, nearly ${ballsToEitherUnit(slave.balls)} long.`); } else { -- GitLab From 7740d0d85a2a92a2180132ced1cfaa7da948cb70 Mon Sep 17 00:00:00 2001 From: Blank_Alt <12406-Blank_Alt@users.noreply.gitgud.io> Date: Thu, 3 Jun 2021 22:29:26 +1200 Subject: [PATCH 78/91] minorCorrections --- src/gui/mainMenu/AlphaDisclaimer.tw | 2 +- src/npc/agent/agentWorkaround.tw | 2 +- src/npc/children/childInteract.tw | 2 +- src/uncategorized/RESS.tw | 8 ++++---- src/uncategorized/randomNonindividualEvent.tw | 2 +- src/uncategorized/reFSEgyptianRevivalistAcquisition.tw | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/gui/mainMenu/AlphaDisclaimer.tw b/src/gui/mainMenu/AlphaDisclaimer.tw index 0a8d2f9cf61..7eb0a3a3f1d 100644 --- a/src/gui/mainMenu/AlphaDisclaimer.tw +++ b/src/gui/mainMenu/AlphaDisclaimer.tw @@ -33,7 +33,7 @@ version: $ver, mod version: $pmodVer, build: $releaseID<<if App.Version.commitHash>>, commit: <<= App.Version.commitHash>><</if>> </div> <span style="font-weight:Bold"> /* remove me with 4.0.0! */ - 4.0.0 is in alpha release. This means the new player content has minimal implementation. + 4.0.0 is an alpha release. This means the new player content has minimal implementation. </span> <div id="version"> <<link "More version info">> diff --git a/src/npc/agent/agentWorkaround.tw b/src/npc/agent/agentWorkaround.tw index ef889c54f42..794150a11dc 100644 --- a/src/npc/agent/agentWorkaround.tw +++ b/src/npc/agent/agentWorkaround.tw @@ -14,7 +14,7 @@ <<set $slaves[$i].rivalry = 0, $slaves[$i].rivalryTarget = 0>> <</if>> -<<if $slaves[$i].relationship > 0 && $slaves[$i].relationship < 4>> +<<if $slaves[$i].relationship.isBetween(0, 4)>> <<set _i = $slaveIndices[$slaves[$i].relationshipTarget]>> <<if def _i>> <<set $slaves[_i].relationship = 0, $slaves[_i].relationshipTarget = 0>> diff --git a/src/npc/children/childInteract.tw b/src/npc/children/childInteract.tw index f25a21e6add..f5ef0a39ce1 100644 --- a/src/npc/children/childInteract.tw +++ b/src/npc/children/childInteract.tw @@ -1499,7 +1499,7 @@ Routine sex with <<= properMaster()>> is ''<span id="relMaster"><<if $activeChil <<set $activeChild.rules.speech = "permissive">> <<replace "#speechRules">>$activeChild.rules.speech<</replace>> <</link>> - <<if $activeChild.accent > 0 && $activeChild.accent < 4>>| <<link "Accent elimination">> + <<if $activeChild.accent.isBetween(0, 4)>>| <<link "Accent elimination">> <<set $activeChild.rules.speech = "accent elimination">> <<replace "#speechRules">>$activeChild.rules.speech<</replace>> <</link>> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index e18fe462320..72acc6f0d86 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -1871,7 +1871,7 @@ At your <<if canSee($activeSlave)>>nod<<else>>acknowledgment<</if>>, $he <<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60)>> <<if $activeSlave.fetish == "dom">> - <<if $activeSlave.dick > 0 && $activeSlave.dick < 5 && canPenetrate($activeSlave)>> + <<if $activeSlave.dick.isBetween(0, 5) && canPenetrate($activeSlave)>> <<if canSee($activeSlave)>> /* not taking chances on the condition in there */ <<set _possibleDrugs.push({type: "dick", text: "peni<<s>> enhan<<c>>ement? I know I'm a <<s>>e<<x>> <<s>>lave and it'<<s>> my pla<<c>>e to get fucked, but when I do get to do a girl, <<Master>>, I want to <<s>>ee a little fear in her eye<<s>>."})>> <<else>> @@ -1891,14 +1891,14 @@ At your <<if canSee($activeSlave)>>nod<<else>>acknowledgment<</if>>, $he <<set _possibleDrugs.push({type: "clit", text: "clit enhan<<c>>ement? I know I'm a <<s>>e<<x>> <<s>>lave and it'<<s>> my pla<<c>>e to get fucked, but I want to teach tho<<s>>e cocky <<s>>lut<<s>> a le<<ss>>on they'll never forget."})>> <</if>> <<elseif $activeSlave.fetish == "sadist">> - <<if $activeSlave.dick > 0 && $activeSlave.dick < 5 && canPenetrate($activeSlave)>> + <<if $activeSlave.dick.isBetween(0, 5) && canPenetrate($activeSlave)>> <<set _possibleDrugs.push({type: "dick", text: "peni<<s>> enhan<<c>>ement? I know I'm a <<s>>e<<x>> <<s>>lave and it'<<s>> my pla<<c>>e to get fucked, but when I do get to do a girl, <<Master>>, I want her to hurt."})>> <</if>> <<elseif $activeSlave.fetish == "masochist">> <<if $activeSlave.dick > 1>> <<set _possibleDrugs.push({type: "dickMinus", text: "hormone<<s>> to <<sh>>rink my dick? I'm a <<s>>e<<x>> <<s>>lave and it'<<s>> my pla<<c>>e to get fucked, and when I get u<<s>>ed like a little <<s>>lut it hurt<<s>> <<s>>o good, <<Master>>."})>> <</if>> - <<if $activeSlave.balls > 0 && $activeSlave.balls < 10 && $activeSlave.scrotum > 0>> + <<if $activeSlave.balls.isBetween(0, 10) && $activeSlave.scrotum > 0>> <<set _possibleDrugs.push({type: "balls", text: "hormone<<s>> to <<s>>well up my ball<<s>>? I know I won't be u<<s>>ing them, but to have <<s>>uch a tempting target for abu<<s>>e, <<Master>>..."})>> <</if>> <<if $activeSlave.butt < 9>> @@ -1924,7 +1924,7 @@ At your <<if canSee($activeSlave)>>nod<<else>>acknowledgment<</if>>, $he <<if $activeSlave.lips <= 70>> <<set _possibleDrugs.push({type: "lips", text: "lip enhan<<c>>ement? I want everyone to imagine my lip<<s>> around their cock, <<Master>>."})>> <</if>> - <<if $activeSlave.balls > 0 && $activeSlave.balls < 10 && $activeSlave.scrotum > 0>> + <<if $activeSlave.balls.isBetween(0, 10) && $activeSlave.scrotum > 0>> <<set _possibleDrugs.push({type: "balls", text: "hormone<<s>> to add <<s>>ome weight to my ball<<s>>? I ju<<s>>t need to make more cum, <<Master>>. I promi<<s>>e I'll clean up after my<<s>>elf too!"})>> <</if>> <<elseif $activeSlave.fetish == "buttslut">> diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 31a221bed6e..6dc80d21b01 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -113,7 +113,7 @@ <</if>> <</for>> - <<set _resMothers = _relatedSlaves.filter(function(s) { return s.daughters > 0 && s.devotion < 10 && s.anus != 0 && canWalk(s); })>> + <<set _resMothers = _relatedSlaves.filter(s => s.daughters > 0 && s.devotion < 10 && s.anus != 0 && canWalk(s))>> <<for _resMothers.length > 0>> <<set $motherSlave = _resMothers.pluck()>> <<set $daughterSlave = randomDaughter($motherSlave)>> diff --git a/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw b/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw index 8dddd60aaba..b55dd4211e4 100644 --- a/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw +++ b/src/uncategorized/reFSEgyptianRevivalistAcquisition.tw @@ -16,7 +16,7 @@ <<set _slave.canRecruit = 0>> <<if (_slave.dick > 0) && (_slave.balls == 0)>><<set _slave.balls = random(1,5)>><</if>> -<<set _oppositeSex = $seeDicks > 0 && $seeDicks < 100 && (random(1, 4) <= 3)>> +<<set _oppositeSex = $seeDicks.isBetween(0, 100) && (random(1, 4) <= 3)>> <<set _secondSlave = generateRelatedSlave(_slave, "younger sibling", _oppositeSex)>> <<set _secondSlave.relationship = 4>> -- GitLab From b9450087bb51a91b51a68a700dc885f3d68839bc Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 13:31:19 +0200 Subject: [PATCH 79/91] fix cellblock not counted as decorated --- src/facilities/cellblock/cellblockFramework.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/facilities/cellblock/cellblockFramework.js b/src/facilities/cellblock/cellblockFramework.js index 4c3edfa4186..999da56441c 100644 --- a/src/facilities/cellblock/cellblockFramework.js +++ b/src/facilities/cellblock/cellblockFramework.js @@ -26,7 +26,7 @@ App.Data.Facilities.cellblock = { shouldThink: false, requiredDevotion: 51 }, - decorated: false + decorated: true }; App.Entity.Facilities.CellblockJob = class extends App.Entity.Facilities.FacilitySingleJob { -- GitLab From d132a846667ded78bc2722c9cca154ee4a3d2358 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 13:32:28 +0200 Subject: [PATCH 80/91] fix player billed for decoration change even if old and new are the same --- src/futureSocieties/fsDecoration.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/futureSocieties/fsDecoration.js b/src/futureSocieties/fsDecoration.js index 9547267c3e3..f923166cb32 100644 --- a/src/futureSocieties/fsDecoration.js +++ b/src/futureSocieties/fsDecoration.js @@ -19,8 +19,10 @@ App.UI.facilityRedecoration = function() { .addValue("(Select option)", "none") .addValue("Standard", "standard"); if (decorationNames.length > 0) { - option.addValueList(decorationNames) - .addValue("Distribute Evenly", "even"); + option.addValueList(decorationNames); + if (decorationNames.length > 1) { + option.addValue("Distribute Evenly", "even"); + } } option.addCallbackToEach(value => { console.log(value); @@ -39,14 +41,14 @@ App.UI.facilityRedecoration = function() { } } else if (value !== "none") { for (const facility of activeFacilities) { - if (value !== "standard") { + if (value !== "standard" && value !== facility.decoration) { totalCost += 5000; } facility.decoration = value; } } if (totalCost > 0) { - cashX(forceNeg(totalCost), "capEx"); + cashX(-totalCost, "capEx"); } }).pulldown(); -- GitLab From 3092e267ac61c337d07c6acc6b36312802ac9349 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 16:00:28 +0200 Subject: [PATCH 81/91] fix uneven rivalry increase in spa --- src/endWeek/reports/spaReport.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/endWeek/reports/spaReport.js b/src/endWeek/reports/spaReport.js index 0c728e041c0..0a7d13d7453 100644 --- a/src/endWeek/reports/spaReport.js +++ b/src/endWeek/reports/spaReport.js @@ -138,7 +138,6 @@ App.EndWeek.spaReport = function() { slave.devotion -= 4; slave.trust -= 4; if (random(1, 100) > 35) { - S.Attendant.rivalry++; S.Attendant.rivalry++; slave.rivalry++; } -- GitLab From 4c4fa24a5204b892229b90040d267a812fa8c595 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 17:35:29 +0200 Subject: [PATCH 82/91] RA: allow changing fetish at strength 100, without flipping between fetish and energy --- src/js/DefaultRules.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 0d5ca07c024..cb1145e5b33 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -2683,18 +2683,21 @@ globalThis.DefaultRules = (function() { const hasSmartVibe = dildoVibeLevel(slave) > 1 || slave.dickAccessory === "smart bullet vibrator"; const smartThing = (slave.clitPiercing === 3) ? "smart piercing" : "smart vibrator"; if (slave.clitPiercing === 3 || hasSmartVibe) { - if (rule.clitSetting !== undefined && rule.clitSetting !== null && rule.clitSetting !== "random") { - if (slave.clitSetting !== rule.clitSetting && slave.fetishStrength !== 100) { - slave.clitSetting = rule.clitSetting; + if (rule.clitSetting !== undefined && rule.clitSetting !== null) { + let fetish = rule.clitSetting; + if (fetish === "random") { + fetish = either("vanilla", "oral", "anal", "boobs", "submissive", "dom", "humiliation", "pregnancy", "masochist", "sadist"); + } + // Set the smart thingy to the correct fetish + if (slave.clitSetting !== fetish) { + slave.clitSetting = fetish; r += `<br>${slave.slaveName}'s ${smartThing} has been set to ${slave.clitSetting}.`; return; - } else if (slave.fetishStrength < 100) { + } + // If we haven't reached full fetish yet, don't allow changing to something else + if (slave.fetish !== slave.clitSetting || slave.fetishStrength < 100) { return; } - } else if (rule.clitSetting === "random") { - slave.clitSetting = either("vanilla", "oral", "anal", "boobs", "submissive", "dom", "humiliation", "pregnancy", "masochist", "sadist"); - r += `<br>${slave.slaveName}'s ${smartThing} has been set to ${slave.clitSetting}.`; - return; } if (rule.clitSettingEnergy !== undefined && (rule.clitSettingEnergy !== null)) { if (slave.energy < rule.clitSettingEnergy) { -- GitLab From a77be37467cac994a052b03c1c66aefae2a7028a Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 16:56:06 +0200 Subject: [PATCH 83/91] handle rule bound of value null as if there is no bound in that direction instead of 0 --- src/js/rulesAssistant.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js index e16b7e61a74..2e19e7e90c7 100644 --- a/src/js/rulesAssistant.js +++ b/src/js/rulesAssistant.js @@ -142,28 +142,24 @@ globalThis.ruleAppliesP = function(rule, slave) { slave ); } - flag = slaveAttribute.isBetween(cond.data.value[0], cond.data.value[1]); - if (cond.applyRuleOnce && flag) { - V.rulesToApplyOnce[rule.ID].push(slave.ID); - } + // check if slave value is between rule values, if bounds exist + flag = (cond.data.value[0] === null || slaveAttribute > cond.data.value[0]) + && (cond.data.value[1] === null || slaveAttribute < cond.data.value[1]); break; case "belongs": // the attribute belongs in the list of values flag = cond.data.value.includes(slave[cond.data.attribute]); - if (cond.applyRuleOnce && flag) { - V.rulesToApplyOnce[rule.ID].push(slave.ID); - } break; case "custom": // user provided JS function // TODO: This should use a cached Function instead of 'eval'ing flag = eval(cond.data)(slave); - if (cond.applyRuleOnce && flag) { - V.rulesToApplyOnce[rule.ID].push(slave.ID); - } break; } if (!flag) { return false; } + if (cond.applyRuleOnce) { + V.rulesToApplyOnce[rule.ID].push(slave.ID); + } // If rule always applies. if (cond.applyRuleOnce && !V.rulesToApplyOnce[rule.ID].includes(slave.ID) && flag) { V.rulesToApplyOnce[rule.ID].push(slave.ID); -- GitLab From c8de7ac635f4ceb7829cb23933a2bbd7563214d8 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 18:09:12 +0200 Subject: [PATCH 84/91] make sure no cash can be gained by repeatably selling any buying arcology shares --- src/004-base/arcologyBuilding.js | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/004-base/arcologyBuilding.js b/src/004-base/arcologyBuilding.js index b801932a847..6c569b44403 100644 --- a/src/004-base/arcologyBuilding.js +++ b/src/004-base/arcologyBuilding.js @@ -147,38 +147,50 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable { * @returns {DocumentFragment} */ function ownership(cell) { + const DEMAND_FACTOR_DIFF = 20; const fragment = document.createDocumentFragment(); const A = V.arcologies[0]; const allCells = V.building.findCells(cell => !(cell instanceof App.Arcology.Cell.Filler)); const ownedCells = allCells.filter(cell => cell.owner === 1).length; const oneCellPercentage = ((1 / allCells.length) * 100).toPrecision(3); - const price = 1000 * Math.trunc(A.prosperity * (1 + (A.demandFactor / 100))); + /** + * @param {boolean} buy + * @returns {number} + */ + function price(buy) { + let demand = A.demandFactor; + if (buy) { + demand += DEMAND_FACTOR_DIFF; + } + return 1000 * Math.trunc(A.prosperity * (1 + (demand / 100))); + } + if (cell.owner === 1) { - fragment.append(`Selling this sector would relinquish a ${oneCellPercentage}% interest in ${A.name}. Such an interest is worth ${cashFormat(price)}.`); + fragment.append(`Selling this sector would relinquish a ${oneCellPercentage}% interest in ${A.name}. Such an interest is worth ${cashFormat(price(false))}.`); if (ownedCells > 1) { const span = document.createElement("span"); span.classList.add("clear-formatting"); span.append(App.Arcology.getCellLink("Sell", _this.name, () => _this.cellPassage(containingBuilding), () => { - cashX(price, "capEx"); + cashX(price(false), "capEx"); App.Arcology.updateOwnership(); - A.demandFactor -= 20; + A.demandFactor -= DEMAND_FACTOR_DIFF; cell.owner = 0; })); fragment.append(" ", span); } } else { - fragment.append(`You will have to acquire an additional ${oneCellPercentage}% interest in ${A.name} to take control of this sector. Such an interest is worth ${cashFormat(price)} and will require a transaction cost of ${cashFormat(10000)} to acquire for a total cost of ${cashFormat(price + 10000)}.`); + fragment.append(`You will have to acquire an additional ${oneCellPercentage}% interest in ${A.name} to take control of this sector. Such an interest is worth ${cashFormat(price(true))} and will require a transaction cost of ${cashFormat(10000)} to acquire for a total cost of ${cashFormat(price(true) + 10000)}.`); const availableCells = allCells.length * ((100 - A.minority) / 100) - ownedCells; if (availableCells >= 1) { const buySpan = document.createElement("span"); buySpan.classList.add("clear-formatting"); buySpan.append(App.Arcology.getCellLink("Buy", _this.name, () => _this.cellPassage(containingBuilding), () => { - cashX(-(price + 10000), "capEx"); - A.demandFactor += 20; + cashX(-(price(true) + 10000), "capEx"); + A.demandFactor += DEMAND_FACTOR_DIFF; App.Arcology.updateOwnership(); cell.owner = 1; })); @@ -188,12 +200,12 @@ App.Arcology.Cell.BaseCell = class extends App.Entity.Serializable { const repDiv = document.createElement("div"); repDiv.classList.add("clear-formatting"); - const repPrice = Math.clamp(price / 2, 0, 18000); + const repPrice = Math.clamp(price(true) / 2, 0, 18000); repDiv.append("You have so much political capital that you can spend reputation to acquire ownership by spending reputation. ", App.Arcology.getCellLink("Use reputation", _this.name, () => _this.cellPassage(containingBuilding), () => { repX(-(repPrice), "capEx"); - A.demandFactor += 20; + A.demandFactor += DEMAND_FACTOR_DIFF; App.Arcology.updateOwnership(); cell.owner = 1; })); -- GitLab From e9ba66ee72df3f800c340e8ab53d314e8a2966e3 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 18:58:38 +0200 Subject: [PATCH 85/91] show settings for all smart accessories in slave card --- devTools/types/FC/data.d.ts | 7 ++- js/003-data/slaveSummaryData.js | 90 ++++++++++++++++++--------------- src/js/slaveSummaryHelpers.js | 32 ++++++++---- src/js/slaveSummaryWidgets.js | 4 +- 4 files changed, 79 insertions(+), 54 deletions(-) diff --git a/devTools/types/FC/data.d.ts b/devTools/types/FC/data.d.ts index eee7fbaa16b..8d955b0f96f 100644 --- a/devTools/types/FC/data.d.ts +++ b/devTools/types/FC/data.d.ts @@ -64,7 +64,7 @@ declare namespace FC { } namespace SlaveSummary { - interface SmartPiercing { + interface SmartVibrator { setting: { off: string, submissive: string, @@ -85,6 +85,11 @@ declare namespace FC { women: string, "anti-men": string, "anti-women": string, + }, + system: { + "piercing": string, + "bullet": string, + "vibe": string } } } diff --git a/js/003-data/slaveSummaryData.js b/js/003-data/slaveSummaryData.js index c0933de54d9..ea484cc1712 100644 --- a/js/003-data/slaveSummaryData.js +++ b/js/003-data/slaveSummaryData.js @@ -561,27 +561,32 @@ App.Data.SlaveSummary = { 3: {desc: "Bad accent.", style: "red"}, 4: {desc: "No language skills.", style: "red"}, }, - smartPiercing: { + smartVibrator: { setting: { - "off": "SP off.", - "submissive": "SP: submissive.", - "lesbian": "SP: lesbian.", - "oral": "SP: oral.", - "humiliation": "SP: humiliation.", - "anal": "SP: anal.", - "boobs": "SP: breasts.", - "sadist": "SP: sadism.", - "masochist": "SP: masochism.", - "dom": "SP: dominance.", - "pregnancy": "SP: pregnancy.", - "vanilla": "SP: vanilla.", - "all": "SP: all.", - "none": "SP: none.", - "monitoring": "SP: monitoring.", - "men": "SP: men.", - "women": "SP: women.", - "anti-men": "SP: anti men.", - "anti-women": "SP: anti women.", + "off": " off.", + "submissive": " submissive.", + "lesbian": " lesbian.", + "oral": " oral.", + "humiliation": " humiliation.", + "anal": " anal.", + "boobs": " breasts.", + "sadist": " sadism.", + "masochist": " masochism.", + "dom": " dominance.", + "pregnancy": " pregnancy.", + "vanilla": " vanilla.", + "all": " all.", + "none": " none.", + "monitoring": " monitoring.", + "men": " men.", + "women": " women.", + "anti-men": " anti men.", + "anti-women": " anti women.", + }, + system: { + "piercing": "SP", + "bullet": "SB", + "vibe": "SV" } }, skills: { @@ -1328,27 +1333,32 @@ App.Data.SlaveSummary = { "fair": "Fair", "pale": "Pale" }, - smartPiercing: { + smartVibrator: { setting: { - "off": "SP-", - "submissive": "SP:sub", - "lesbian": "SP:les", - "oral": "SP:oral", - "humiliation": "SP:humil", - "anal": "SP:anal", - "boobs": "SP:boobs", - "sadist": "SP:sade", - "masochist": "SP:pain", - "dom": "SP:dom", - "pregnancy": "SP:pregnancy", - "vanilla": "SP:vanilla", - "all": "SP:all", - "none": "SP:none", - "monitoring": "SP:monitoring", - "men": "SP:men", - "women": "SP:women", - "anti-men": "SP:anti-men", - "anti-women": "SP:anti-women", + "off": "-", + "submissive": "sub", + "lesbian": "les", + "oral": "oral", + "humiliation": "humil", + "anal": "anal", + "boobs": "boobs", + "sadist": "sade", + "masochist": "pain", + "dom": "dom", + "pregnancy": "pregnancy", + "vanilla": "vanilla", + "all": "all", + "none": "none", + "monitoring": "monitoring", + "men": "men", + "women": "women", + "anti-men": "anti-men", + "anti-women": "anti-women", + }, + system: { + "piercing": "SP", + "bullet": "SB", + "vibe": "SV" } }, skills: { diff --git a/src/js/slaveSummaryHelpers.js b/src/js/slaveSummaryHelpers.js index 6d40b9534dc..3b4c2d9e8ab 100644 --- a/src/js/slaveSummaryHelpers.js +++ b/src/js/slaveSummaryHelpers.js @@ -465,37 +465,47 @@ App.UI.SlaveSummaryImpl = function() { /** * @param {App.Entity.SlaveState} slave - * @param {FC.Data.SlaveSummary.SmartPiercing} spData + * @param {FC.Data.SlaveSummary.SmartVibrator} spData * @returns {string} */ function smartFetishStr(slave, spData) { + /** @type {string} */ + let value; + if (slave.clitPiercing === 3) { + value = spData.system.piercing; + } else if (slave.dickAccessory === "smart bullet vibrator") { + value = spData.system.bullet; + } else { + value = spData.system.vibe; + } + value += ":"; if (slave.fetishKnown === 1) { if (slave.clitSetting === "off") { - return spData.setting.off; + return value + spData.setting.off; } else if ((slave.energy <= 95) && (slave.clitSetting === "all")) { - return spData.setting.all; + return value + spData.setting.all; } else if ((slave.energy > 5) && (slave.clitSetting === "none")) { - return spData.setting.none; + return value + spData.setting.none; } else if (((slave.fetish !== "none") && (slave.clitSetting === "vanilla"))) { - return spData.setting.vanilla; + return value + spData.setting.vanilla; } else if (slave.fetishStrength <= 95 || slave.fetish !== slave.clitSetting) { - const s = spData.setting[slave.clitSetting]; + const s = value + spData.setting[slave.clitSetting]; if (s) { return s; } } if (!["anti-men", "anti-women", "men", "women"].includes(slave.clitSetting)) { - return spData.setting.monitoring; + return value + spData.setting.monitoring; } } else { - return spData.setting[slave.clitSetting]; + return value + spData.setting[slave.clitSetting]; } return null; } /** * @param {App.Entity.SlaveState} slave - * @param {FC.Data.SlaveSummary.SmartPiercing} spData + * @param {FC.Data.SlaveSummary.SmartVibrator} spData * @returns {string} */ function smartAttractionStr(slave, spData) { @@ -1300,7 +1310,7 @@ App.UI.SlaveSummaryImpl = function() { * @returns {void} */ function short_smart_piercing(slave, c) { - const s = smartFetishStr(slave, data.short.smartPiercing) || smartAttractionStr(slave, data.short.smartPiercing); + const s = smartFetishStr(slave, data.short.smartVibrator) || smartAttractionStr(slave, data.short.smartVibrator); if (s) { makeSpan(c, s); } @@ -1389,7 +1399,7 @@ App.UI.SlaveSummaryImpl = function() { * @returns {void} */ function long_smart_piercing(slave, c) { - const s = smartFetishStr(slave, data.long.smartPiercing) || smartAttractionStr(slave, data.long.smartPiercing); + const s = smartFetishStr(slave, data.long.smartVibrator) || smartAttractionStr(slave, data.long.smartVibrator); if (s) { makeSpan(c, s); } diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js index 99398330f52..26ba008a702 100644 --- a/src/js/slaveSummaryWidgets.js +++ b/src/js/slaveSummaryWidgets.js @@ -298,7 +298,7 @@ App.UI.SlaveSummaryRenderers = function() { b.attraction(slave, c); } } - if (slave.clitPiercing === 3) { + if (slave.clitPiercing === 3 || dildoVibeLevel(slave) > 1 || slave.dickAccessory === "smart bullet vibrator") { b.smart_piercing(slave, c); } b.behavior_flaw(slave, c); @@ -692,7 +692,7 @@ App.UI.SlaveSummaryRenderers = function() { b.attraction(slave, c); } } - if (slave.clitPiercing === 3) { + if (slave.clitPiercing === 3 || dildoVibeLevel(slave) > 1 || slave.dickAccessory === "smart bullet vibrator") { b.smart_piercing(slave, c); } b.behavior_flaw(slave, c); -- GitLab From 6c169807260734f595004d45fd0561426239acb2 Mon Sep 17 00:00:00 2001 From: Arkerthan <arkerthan@gmail.com> Date: Thu, 3 Jun 2021 19:26:27 +0200 Subject: [PATCH 86/91] fix RA smart thingy alternating when fetish goal reached --- src/js/DefaultRules.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index cb1145e5b33..d9d220b08fc 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -2688,14 +2688,14 @@ globalThis.DefaultRules = (function() { if (fetish === "random") { fetish = either("vanilla", "oral", "anal", "boobs", "submissive", "dom", "humiliation", "pregnancy", "masochist", "sadist"); } - // Set the smart thingy to the correct fetish - if (slave.clitSetting !== fetish) { - slave.clitSetting = fetish; - r += `<br>${slave.slaveName}'s ${smartThing} has been set to ${slave.clitSetting}.`; - return; - } - // If we haven't reached full fetish yet, don't allow changing to something else - if (slave.fetish !== slave.clitSetting || slave.fetishStrength < 100) { + // check if already full fetish + if (slave.fetish !== fetish || slave.fetishStrength < 100) { + // Set the smart thingy to the correct fetish + if (slave.clitSetting !== fetish) { + slave.clitSetting = fetish; + r += `<br>${slave.slaveName}'s ${smartThing} has been set to ${slave.clitSetting}.`; + } + // We haven't reached full fetish yet, don't allow changing to something else return; } } -- GitLab From 20cc4d1417a64068973b9611ab20010d4a586e79 Mon Sep 17 00:00:00 2001 From: Anu <barrychahal@gmail.com> Date: Fri, 4 Jun 2021 08:36:28 +0000 Subject: [PATCH 87/91] Add space between current setting description and options. --- src/facilities/incubator/incubatorInteract.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js index d5b12f2cf04..aa669d1c546 100644 --- a/src/facilities/incubator/incubatorInteract.js +++ b/src/facilities/incubator/incubatorInteract.js @@ -1328,25 +1328,25 @@ App.UI.incubator = function() { row = document.createElement("div"); linkArray = []; if (V.incubator.setting.pregAdaptationPower === 1) { - row.append(`Pregnancy adaptation programmed to advanced procedures. Up to triplet pregnancy should be safe for the subjects.`); + row.append(`Pregnancy adaptation programmed to advanced procedures. Up to triplet pregnancy should be safe for the subjects. `); } else { linkArray.push(makeLink(`Advanced`, () => { V.incubator.setting.pregAdaptationPower = 1; }, refresh)); } if (V.incubator.setting.pregAdaptationPower === 2) { - row.append(`Pregnancy adaptation programmed to intensive procedures. Up to octuplet pregnancy should be possible for the subjects. Warning! Side effects may occur to health and mental condition.`); + row.append(`Pregnancy adaptation programmed to intensive procedures. Up to octuplet pregnancy should be possible for the subjects. Warning! Side effects may occur to health and mental condition. `); } else { linkArray.push(makeLink(`Intensive`, () => { V.incubator.setting.pregAdaptationPower = 2; }, refresh)); } if (V.incubator.setting.pregAdaptationPower === 3) { - row.append(`Pregnancy adaptation programmed to extreme procedures. Normally unsustainable pregnancies may be possible for some subjects. Actual capacity will vary with genetic and other individual conditions. WARNING! Extreme side effects may occur to health and mental condition!`); + row.append(`Pregnancy adaptation programmed to extreme procedures. Normally unsustainable pregnancies may be possible for some subjects. Actual capacity will vary with genetic and other individual conditions. WARNING! Extreme side effects may occur to health and mental condition! `); } else { linkArray.push(makeLink(`Extreme`, () => { V.incubator.setting.pregAdaptationPower = 3; }, refresh)); } if (V.incubator.setting.pregAdaptationPower === 0) { - row.append(`Pregnancy adaptation programmed to standard procedures. Normal pregnancy should be safe for subjects.`); + row.append(`Pregnancy adaptation programmed to standard procedures. Normal pregnancy should be safe for subjects. `); } else { linkArray.push(makeLink(`Standard`, () => { V.incubator.setting.pregAdaptationPower = 0; }, refresh)); } -- GitLab From 6b2a506860f5669b13be85092bf7b93190a67dcd Mon Sep 17 00:00:00 2001 From: Anu <barrychahal@gmail.com> Date: Fri, 4 Jun 2021 08:40:23 +0000 Subject: [PATCH 88/91] Add linebreak between options & warning. --- src/facilities/incubator/incubatorInteract.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js index aa669d1c546..5bcfe10cd7d 100644 --- a/src/facilities/incubator/incubatorInteract.js +++ b/src/facilities/incubator/incubatorInteract.js @@ -1351,7 +1351,11 @@ App.UI.incubator = function() { linkArray.push(makeLink(`Standard`, () => { V.incubator.setting.pregAdaptationPower = 0; }, refresh)); } row.append(App.UI.DOM.generateLinksStrip(linkArray)); + p.append(row); + + row = document.createElement("div"); App.UI.DOM.appendNewElement("span", row, `Due to the high complexity and steep risks of the procedure, settings will not be changed on tanks in use.`, "note"); + p.append(row); } } else { cost = Math.trunc(50000 * V.upgradeMultiplierArcology); -- GitLab From d968b72da858625fbfa7d013084c507add4e4b2d Mon Sep 17 00:00:00 2001 From: Anu <barrychahal@gmail.com> Date: Fri, 4 Jun 2021 08:58:08 +0000 Subject: [PATCH 89/91] Space out hormone/pregAdapt block into 2 ps --- src/facilities/incubator/incubatorInteract.js | 72 ++++++++++--------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js index 5bcfe10cd7d..57459ebbcc2 100644 --- a/src/facilities/incubator/incubatorInteract.js +++ b/src/facilities/incubator/incubatorInteract.js @@ -1291,10 +1291,12 @@ App.UI.incubator = function() { linkArray.push(makeLink(`Disable`, () => { V.incubator.setting.reproduction = 0; }, refresh)); } row.append(App.UI.DOM.generateLinksStrip(linkArray)); + p.append(row); + el.append(p); if (V.incubator.upgrade.pregAdaptation === 1) { // Should be visible only after incubator.upgrade.reproduction is installed - p.append(row); + p = document.createElement("p"); row = document.createElement("div"); linkArray = []; if (V.incubator.setting.pregAdaptation === 3) { @@ -1321,42 +1323,44 @@ App.UI.incubator = function() { linkArray.push(makeLink(`Disable`, () => { V.incubator.setting.pregAdaptation = 0; }, refresh)); } row.append(App.UI.DOM.generateLinksStrip(linkArray)); - } - if (V.incubator.upgrade.pregAdaptation === 1 && V.incubator.setting.pregAdaptation > 0) { - // Should be visible only after incubator.upgrade.reproduction is installed and turned on - p.append(row); - row = document.createElement("div"); - linkArray = []; - if (V.incubator.setting.pregAdaptationPower === 1) { - row.append(`Pregnancy adaptation programmed to advanced procedures. Up to triplet pregnancy should be safe for the subjects. `); - } else { - linkArray.push(makeLink(`Advanced`, () => { V.incubator.setting.pregAdaptationPower = 1; }, refresh)); - } + + if (V.incubator.upgrade.pregAdaptation === 1 && V.incubator.setting.pregAdaptation > 0) { + // Should be visible only after incubator.upgrade.reproduction is installed and turned on + p.append(row); + row = document.createElement("div"); + linkArray = []; + if (V.incubator.setting.pregAdaptationPower === 1) { + row.append(`Pregnancy adaptation programmed to advanced procedures. Up to triplet pregnancy should be safe for the subjects. `); + } else { + linkArray.push(makeLink(`Advanced`, () => { V.incubator.setting.pregAdaptationPower = 1; }, refresh)); + } - if (V.incubator.setting.pregAdaptationPower === 2) { - row.append(`Pregnancy adaptation programmed to intensive procedures. Up to octuplet pregnancy should be possible for the subjects. Warning! Side effects may occur to health and mental condition. `); - } else { - linkArray.push(makeLink(`Intensive`, () => { V.incubator.setting.pregAdaptationPower = 2; }, refresh)); - } + if (V.incubator.setting.pregAdaptationPower === 2) { + row.append(`Pregnancy adaptation programmed to intensive procedures. Up to octuplet pregnancy should be possible for the subjects. Warning! Side effects may occur to health and mental condition. `); + } else { + linkArray.push(makeLink(`Intensive`, () => { V.incubator.setting.pregAdaptationPower = 2; }, refresh)); + } - if (V.incubator.setting.pregAdaptationPower === 3) { - row.append(`Pregnancy adaptation programmed to extreme procedures. Normally unsustainable pregnancies may be possible for some subjects. Actual capacity will vary with genetic and other individual conditions. WARNING! Extreme side effects may occur to health and mental condition! `); - } else { - linkArray.push(makeLink(`Extreme`, () => { V.incubator.setting.pregAdaptationPower = 3; }, refresh)); - } + if (V.incubator.setting.pregAdaptationPower === 3) { + row.append(`Pregnancy adaptation programmed to extreme procedures. Normally unsustainable pregnancies may be possible for some subjects. Actual capacity will vary with genetic and other individual conditions. WARNING! Extreme side effects may occur to health and mental condition! `); + } else { + linkArray.push(makeLink(`Extreme`, () => { V.incubator.setting.pregAdaptationPower = 3; }, refresh)); + } - if (V.incubator.setting.pregAdaptationPower === 0) { - row.append(`Pregnancy adaptation programmed to standard procedures. Normal pregnancy should be safe for subjects. `); - } else { - linkArray.push(makeLink(`Standard`, () => { V.incubator.setting.pregAdaptationPower = 0; }, refresh)); - } - row.append(App.UI.DOM.generateLinksStrip(linkArray)); - p.append(row); + if (V.incubator.setting.pregAdaptationPower === 0) { + row.append(`Pregnancy adaptation programmed to standard procedures. Normal pregnancy should be safe for subjects. `); + } else { + linkArray.push(makeLink(`Standard`, () => { V.incubator.setting.pregAdaptationPower = 0; }, refresh)); + } + row.append(App.UI.DOM.generateLinksStrip(linkArray)); + p.append(row); - row = document.createElement("div"); - App.UI.DOM.appendNewElement("span", row, `Due to the high complexity and steep risks of the procedure, settings will not be changed on tanks in use.`, "note"); - p.append(row); + row = document.createElement("div"); + App.UI.DOM.appendNewElement("span", row, `Due to the high complexity and steep risks of the procedure, settings will not be changed on tanks in use.`, "note"); + } } + p.append(row); + el.append(p); } else { cost = Math.trunc(50000 * V.upgradeMultiplierArcology); row.append(`There are no systems in place to control a growing child's reproductive capability. `); @@ -1372,10 +1376,10 @@ App.UI.incubator = function() { `Costs ${cashFormat(cost)} and will increase upkeep costs` ) ); + p.append(row); + el.append(p); } - p.append(row); - el.append(p); row = document.createElement("div"); -- GitLab From 2e1431bcf6d79df6957e526639bb372919cce656 Mon Sep 17 00:00:00 2001 From: Anu <barrychahal@gmail.com> Date: Fri, 4 Jun 2021 09:20:40 +0000 Subject: [PATCH 90/91] Special Force apostrophe fixes --- src/Mods/SpecialForce/SpecialForce.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Mods/SpecialForce/SpecialForce.js b/src/Mods/SpecialForce/SpecialForce.js index 905fd6ae265..3afc8640edd 100644 --- a/src/Mods/SpecialForce/SpecialForce.js +++ b/src/Mods/SpecialForce/SpecialForce.js @@ -257,7 +257,7 @@ App.SF.fsIntegration = (function() { garage = `The garage has an additional service room installed, but this one has a special purpose; it is a private command facility intended for the creation, improvement, and implementation of newer and better armor formation strategies and maneuvers. These stratagems are cutting edge by global standards, pioneering the complex science of attacking a variety of opposing forces so as to minimize overall casualties and maximize the demoralization, pacification, and capture of enemy personnel.`; vehicle = `Every vehicle crew leader in the Firebase is an Elite, and is thus privy to the contents of these strategy meetings. As such, every vehicle crew has a great deal of power in determining their own armor kits and loadouts to best fit the tactics used for their next mission. Every crewman is handpicked, and every single vehicle unit is unique, with the only similarity being the common ground vehicle chassis types between them. Your tanker crews have been known to snatch victory from the jaws of defeat with the help of their unique and unpredictable individuality and unconventional unit compositions throughout their careers in your armor units. Inspired of these glorious service records, their offspring often choose to become vehicle crewmen themselves.`; hangar = `The hangar is a cavernous place, and when takeoffs and landings are not in progress there are many open spaces for gangs of ambitious air force understudies to gather around veterans and teachers and learn more about their craft, as well as lots of places to simply kick back with a good book and await the next summons for a CASEVAC, air assault, or assault support flight mission. At any given time, these open spaces are in heavy use by the airmen and airwomen who are not busy at work here. The longest wall of the hangar is also host to a massive and beautiful mural altogether depicting all of the renowned aces and flight instructors the Firebase has known throughout its history thus far. While artful, this mural also holds the promise that through this multitude of Elite personnel, the hangar should always have a rich pool of skillful pilots and maintenance personnel for the good of the service.`; - aircraft = `Within the numerous transport aircraft of the hangar, a unique change can be found; since greater human quality is a focus and priority of the Firebase, the seating for passengers has been completely replaced by rows of specialized transport pods; every passenger now has a life-support enabled, environmentally-sealed, shock-absorbent, blast-resistant, and fireproof individual pod to climb into and remain inside of until their aircraft arrives at their intended destination. These pods are welded into the interiors of every passenger section, leading to an extreme degree of passenger survivability, even when crashed or shot down by enemy fire, but at the cost of smaller troop payloads once the transport aircraft touch down. While it currently is uncomfortable for the troops, once the proud few, specially bred and registered children of the current generation of Firebase troops grow up and seek to follow in their parent's footsteps, these advanced 'seating' arrangements will be downright necessary to protect the lives of the Firebase's greatest and scarcest asset; it's Elite fighting personnel.`; + aircraft = `Within the numerous transport aircraft of the hangar, a unique change can be found; since greater human quality is a focus and priority of the Firebase, the seating for passengers has been completely replaced by rows of specialized transport pods; every passenger now has a life-support enabled, environmentally-sealed, shock-absorbent, blast-resistant, and fireproof individual pod to climb into and remain inside of until their aircraft arrives at their intended destination. These pods are welded into the interiors of every passenger section, leading to an extreme degree of passenger survivability, even when crashed or shot down by enemy fire, but at the cost of smaller troop payloads once the transport aircraft touch down. While it currently is uncomfortable for the troops, once the proud few, specially bred and registered children of the current generation of Firebase troops grow up and seek to follow in their parent's footsteps, these advanced 'seating' arrangements will be downright necessary to protect the lives of the Firebase's greatest and scarcest asset; its Elite fighting personnel.`; luxuries = `Near the barracks, the residents of the Firebase are grateful to have the aid of the Aristocracy Academy. This impressively large and well-equipped facility is staffed with Elites from all over the arcology, and these impeccable men and women carry out all the services needed to help this place function as a part-time 'Finishing School' for all members of the Firebase; the curriculum specializes in training unkempt soldiers and staff to become proper ladies and gentlemen; how to dress, speak, behave, dance, and handle a wide variety of decidedly civilian scenarios in the classiest manner possible.`; perimeter = `The outside entrance of the Firebase features a distinguished officer's academy, complete with a state-of-the-art lecture hall, multipurpose war rooms, combat drill chambers, private lodging cabins, a few sand pits, and many other training necessities. The faculty consists of decorated veteran officers, and throughout the structure there are stationed honor guard sentries assigned to ensure the safety of the Elite officer cadets busily training all around them.`; roleplaying = `The Firebase is clean and posh; whatever the festivity or facility, the staff and soldiery carry themselves with an air of superior esteem and dignity and are given only the finest of materials and tools to use when performing their duties. However, a strong social strata is clear those proud few who passed the Elite testing make up the overwhelming majority of the higher command staff and officer ranks, whilst those who have not passed the test are mostly their subordinates. Elites of the Firebase sit first, eat first, and get first pickings of battle loot, captives, promotions, and of course, sanctioned breeding partners. Without fail, everyone in the Firebase has taken the Elite test, and without fail, everyone Who flunked it has been issued their complimentary vasectomy or hysterectomy.`; @@ -461,7 +461,7 @@ App.SF.fsIntegration = (function() { drugLab = `The drug lab facility has a built-up concert hall extension where off duty personnel can come and PARTY! Performers from all across the Free Cities are hired to come and give remote 3D hologram performances to the weekend crowds that come here, and there is a great deal of jumping and shouting as part of the activities. Spicing up the festivities is the abundance of newfangled trial drugs freely given to those who come, since your chemical engineers are happy to let visitors be their second test population for the effects of their newer substances. After each event, hundreds of empty syringes and cups alike can be seen all over the floors.`; personalItems = `Your Firebase people like to keep things light. Duffel bags, handbags, and other form of off-duty carriage are now rather small, as you troops like to keep only bare essentials with them. Tight, form fitting clothing is the norm, and it has been noted that even personal computers, smartphones, flash drives, and so on are only available in downright tiny variants, as if lugging around even normal size, somewhat-bulkier equipment were a social taboo. Since smaller luggage has become the standard, the personnel have become minimalists too. Many of the Firebase population have drastically downsized their personal in-house inventories to better fit in, with many people making use of premium storage containers for excess possessions. 'Less is more' is no longer just a saying, after all.`; droneBay = `Most of the drones of the Firebase have been slimmed down through very skillful remodeling, so as to give them a seeker profile and smaller target signature.`; - garage = `Advanced technologies were always implemented within the Firebase, and the garage is no different. Slimness Enthusiasm mania has pushed the garages procurement specialists working out of the rear offices of the facility to acquire complex new ultra-lightweight vehicle chassis kits for your ground vehicles.`; + garage = `Advanced technologies were always implemented within the Firebase, and the garage is no different. Slimness Enthusiasm mania has pushed the garage's procurement specialists working out of the rear offices of the facility to acquire complex new ultra-lightweight vehicle chassis kits for your ground vehicles.`; vehicle = `Since their initial delivery into the Firebase, your ground vehicles have been nearly completely rebuilt using the finest in modern lightweight metal composite kits, replacing your vehicles' original heavy metal composition with much lighter alternatives. These modification have made your ground units lighter (allowing most of their vehicles to be air-liftable so as to better carry out advanced air assaults) as well as faster and slimmer. Of course, some degree of amour protection and survivability was sacrificed to achieve this.`; hangar = `Short, thin, and narrow revetments separate each of the aircraft stored in the hangar, and the thin airmen that occupy the hangar have no trouble squeezing under and in between the tight spaces around in order to work on the many aircraft. There is quite a bit of free space in between each workstation because every area of the facility has become so very trim and tightly packed.`; aircraft = `The aircraft within the hangar cannot be slimmed down too much without stripping away at key systems and compromising their functionality, so instead the staff have settled for modifying their weight. Great expense has been taken to replace each airframe hull component with durable lightweight composite metal alloys, giving each aircraft a lighter weight and higher speed while retaining just as much of its original constitution. Because of this, Firebase aircraft are renowned on the battlefield for their speed, and despised for just how hard they are to score hits on because of their great speed.`; @@ -472,7 +472,7 @@ App.SF.fsIntegration = (function() { break; case 'Asset_Expansionism': dec = `Asset Expansionism: societal hunger for huge assets of whatever origin.`; - gift = `In celebration of Asset Expansionism, you've gifted The Colonel with her very own super-heavy missile tank. Making up its shape are its four wide tracks and its thoroughly protective armoring that includes thick Chobham-based armor, overlapping detachable NERA plates, a mine-resistant underbelly, and broad RPG cages along the turret, roof, & hull. It has equally excessive weaponry too; with its large crew, its high-caliber quad-barrel autocannons, automatic grenade launchers, and its ATGM hunter-killer turrets, it can engage myriad opponents simultaneously. The missile tank's computing systems maximize it's crew's situational awareness using thousands of real-time data sources, ensuring that the crew always has optimal targeting solutions and can avoid enemy strafing and flanking attempts. These features make this mobile weapons platform a great asset in the field, despite its large target profile. All in all it is a very fun vehicle for The Colonel and her friends to take onto the battlefield for explosions and giggles whenever things in the Firebase get too boring.`; + gift = `In celebration of Asset Expansionism, you've gifted The Colonel with her very own super-heavy missile tank. Making up its shape are its four wide tracks and its thoroughly protective armoring that includes thick Chobham-based armor, overlapping detachable NERA plates, a mine-resistant underbelly, and broad RPG cages along the turret, roof, & hull. It has equally excessive weaponry too; with its large crew, its high-caliber quad-barrel autocannons, automatic grenade launchers, and its ATGM hunter-killer turrets, it can engage myriad opponents simultaneously. The missile tank's computing systems maximize its crew's situational awareness using thousands of real-time data sources, ensuring that the crew always has optimal targeting solutions and can avoid enemy strafing and flanking attempts. These features make this mobile weapons platform a great asset in the field, despite its large target profile. All in all it is a very fun vehicle for The Colonel and her friends to take onto the battlefield for explosions and giggles whenever things in the Firebase get too boring.`; foods = `Each food item that ends up on the plate of your soldiers is bigger than it might normally be. For example, in the fast food section, everything served, from the meat patties to the buns to the French fries and the soda tubs that come with them, are all individually huge by Old World standards, filling the plates and paper bags they come in rather easily. Colossal cakes, pies, and other goodies are on display next to the other foods on offer in your Firebase, which are also bigger than they should be.`; media = `Many device screens in the Firebase are utterly filled with asses and tits, as truly stacked slavegirls star in all manner of pornos. Some of these screens are instead filled with 'big junk', as massively endowed male actors use their large equipment on their partners in all manner of positions too.`; slaves = `A good portion of the slaves in the Firebase are quite stacked. They have large assets on their bodies and are generally heavy from the weight of all that extra flesh. A few boisterous troops are seen ogling them from afar, from time to time.`; @@ -484,7 +484,7 @@ App.SF.fsIntegration = (function() { drugLab = `The drug lab facility has a built-up topless bar extension where off duty personnel can come and drink themselves silly. All manner of typical bar snacks and games can be found, with darts, beer pong, and other games of marksmanship being particularly popular. Of course, the men will sometimes tire of these games and decide to play with one of the numerous big-tittied barmaids instead. Spicing up the festivities is the abundance of newfangled trial drugs freely given to those who come, since your chemical engineers are happy to let bar patrons be their second test population for the effects of their newer substances. After each event, lots of empty syringes and spilt beer alike can be seen all over the floors.`; personalItems = `Your Firebase people like to go heavy. Duffel bags, handbags, and other form of off-duty carriage are now rather large, as your troops like to keep all of their conveniences on hand. Elastic, form fitting clothing is the norm, and it has been noted that even personal computers, smartphones, flash drives, and so on are only available in downright massive variants, as if toting around even normal size, somewhat-sleeker equipment were a social taboo. Since bigger luggage has become the standard, the personnel have become maximalists too. Many of the Firebase population have drastically upsized their personal in-house inventories to better fill their baggage out, with many people making use of premium storage containers for excess possessions. 'More is more' is no longer just a saying, after all.`; droneBay = `Most of the drones of the Firebase have been bulked up through very skillful refitting, so as to give them bulkier profile and greater armor protection.`; - garage = `Advanced technologies were always implemented within the Firebase, and the garage is no different. Asset Expansionism mania has pushed the garages procurement specialists working out of the rear offices of the facility to acquire complex new high-caliber vehicle armament suites for your ground vehicles.`; + garage = `Advanced technologies were always implemented within the Firebase, and the garage is no different. Asset Expansionism mania has pushed the garage's procurement specialists working out of the rear offices of the facility to acquire complex new high-caliber vehicle armament suites for your ground vehicles.`; vehicle = `Since their initial delivery into the Firebase, your ground vehicles have been nearly completely rearmed using the finest in modern composite-material multipurpose heavy guns and heavy autocannons, replacing your vehicles' original general purpose weaponry with much more destructive alternatives. These modifications have made your ground units much bulkier, as well as heavier (preventing some units from being air-lifted for advanced air assaults) but much more terrifying and deadly, as your vast tank barrel can be seen even from afar. Of course, some degree of mobility was sacrificed to achieve this.`; hangar = `Tall, thick, and wide revetments separate each of the aircraft stored in the hangar, and the well-endowed airmen that occupy the hangar have gotten used to squeezing under and in between the tight spaces around in order to work on the many aircraft. There is not much free space in between each workstation because each individual workstation has been made huge in order to handle bigger workloads.`; aircraft = `The aircraft within the hangar cannot be bulked up too much without increasing their weight significantly and thus compromising their functionality, so instead the staff have settled for modifying their appearance. Great expense has been taken to augment each airframe with an integrated 360 degree long-range holographic projector, giving each aircraft an utterly massive false appearance that is intended to terrify enemy ground troops and cause many of their active shooters to miss, as their shots pass harmlessly through some of the airspace that the aircraft's hologram is projected through. Because of this, Firebase aircraft are renowned on the battlefield for their apparent size, and despised for just how hard they are to score real hits on despite their large target profile.`; -- GitLab From 43f8b90b4febc0f698a149e4360b86479b678c13 Mon Sep 17 00:00:00 2001 From: DCoded <dicoded@email.com> Date: Sat, 5 Jun 2021 00:16:40 -0400 Subject: [PATCH 91/91] Replaced semantic class names with utility class names --- css/facilities/clinic.css | 11 ----------- css/facilities/facilities.css | 8 ++++++++ css/facilities/farmyard.css | 23 ----------------------- css/facilities/pit.css | 12 ------------ css/facilities/spa.css | 8 -------- src/facilities/clinic/clinic.js | 18 +++++++++--------- src/facilities/farmyard/farmyard.js | 24 ++++++++++++------------ src/facilities/pit/pit.js | 10 +++++----- src/facilities/spa/spa.js | 12 ++++++------ src/npc/interaction/killSlave.js | 6 +++--- 10 files changed, 43 insertions(+), 89 deletions(-) delete mode 100644 css/facilities/clinic.css delete mode 100644 css/facilities/pit.css delete mode 100644 css/facilities/spa.css diff --git a/css/facilities/clinic.css b/css/facilities/clinic.css deleted file mode 100644 index eaa8608eb15..00000000000 --- a/css/facilities/clinic.css +++ /dev/null @@ -1,11 +0,0 @@ -.clinic-intro, -.clinic-expand, -.clinic-upgrades, -.clinic-rules, -.clinic-slaves, -.clinic-rename, -.clinic-implants, -.clinic-observation, -.clinic-gestation { - margin-bottom: 1em; -} diff --git a/css/facilities/facilities.css b/css/facilities/facilities.css index 0c64d4f6e5e..a875aba9176 100644 --- a/css/facilities/facilities.css +++ b/css/facilities/facilities.css @@ -1,3 +1,11 @@ .facility-rename { margin-top: 1em; } + +.margin-top { + margin-top: 1em; +} + +.margin-bottom { + margin-bottom: 1em; +} diff --git a/css/facilities/farmyard.css b/css/facilities/farmyard.css index eddd66d9a37..8d0abbe268a 100644 --- a/css/facilities/farmyard.css +++ b/css/facilities/farmyard.css @@ -1,26 +1,3 @@ -.farmyard-intro, -.farmyard-domestic { - margin-bottom: 1em; -} - -.farmyard-expand, -.farmyard-menials, -.farmyard-rules, -.farmyard-upgrades, -.farmyard-animals, -.farmyard-remove, -.farmyard-slaves, -.farmyard-heading { - margin-top: 1em; - margin-bottom: 1em; -} - -.animal-add, -.farmyard-rename, -.farmyard-exotic { - margin-top: 1em; -} - .farmyard-heading { text-transform: uppercase; } diff --git a/css/facilities/pit.css b/css/facilities/pit.css deleted file mode 100644 index 9db132aa0d2..00000000000 --- a/css/facilities/pit.css +++ /dev/null @@ -1,12 +0,0 @@ -.pit-intro, -.pit-section { - margin-bottom: 1em; -} - -.kill-slave-options, -.kill-slave-relations, -.kill-slave-cancel, -.pit-assign, -.pit-rename { - margin-top: 1em; -} diff --git a/css/facilities/spa.css b/css/facilities/spa.css deleted file mode 100644 index c336fa2e2b8..00000000000 --- a/css/facilities/spa.css +++ /dev/null @@ -1,8 +0,0 @@ -.spa-intro, -.spa-expand, -.spa-upgrades, -.spa-attendant, -.spa-slaves, -.spa-rename { - margin-bottom: 1em; -} diff --git a/src/facilities/clinic/clinic.js b/src/facilities/clinic/clinic.js index 29141f7f12c..df38366efcc 100644 --- a/src/facilities/clinic/clinic.js +++ b/src/facilities/clinic/clinic.js @@ -1,12 +1,12 @@ App.Facilities.Clinic.clinic = function() { const frag = new DocumentFragment(); - const introDiv = App.UI.DOM.makeElement("div", null, ['clinic-intro']); - const expandDiv = App.UI.DOM.makeElement("div", null, ['clinic-expand']); - const upgradesDiv = App.UI.DOM.makeElement("div", null, ['clinic-upgrades']); - const rulesDiv = App.UI.DOM.makeElement("div", null, ['clinic-rules']); - const slavesDiv = App.UI.DOM.makeElement("div", null, ['clinic-slaves']); - const renameDiv = App.UI.DOM.makeElement("div", null, ['clinic-rename']); + const introDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const expandDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const upgradesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const rulesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const slavesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const renameDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); let clinicNameCaps = capFirstChar(V.clinicName); @@ -242,9 +242,9 @@ App.Facilities.Clinic.clinic = function() { } function rules() { - const implantsDiv = App.UI.DOM.makeElement("div", null, ['clinic-implants']); - const observationDiv = App.UI.DOM.makeElement("div", null, ['clinic-observation']); - const gestationDiv = App.UI.DOM.makeElement("div", null, ['clinic-gestation']); + const implantsDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const observationDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const gestationDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); rulesDiv.append( implants(), diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js index 63c2fe6c8ab..c227a89bb2a 100644 --- a/src/facilities/farmyard/farmyard.js +++ b/src/facilities/farmyard/farmyard.js @@ -1,17 +1,17 @@ App.Facilities.Farmyard.farmyard = function() { const frag = new DocumentFragment(); - const introDiv = App.UI.DOM.makeElement("div", null, ['farmyard-intro']); - const expandDiv = App.UI.DOM.makeElement("div", null, ['farmyard-expand']); - const menialsDiv = App.UI.DOM.makeElement("div", null, ['farmyard-menials']); - const rulesDiv = App.UI.DOM.makeElement("div", null, ['farmyard-rules']); - const upgradesDiv = App.UI.DOM.makeElement("div", null, ['farmyard-upgrades']); - const kennelsDiv = App.UI.DOM.makeElement("div", null, ['farmyard-kennels']); - const stablesDiv = App.UI.DOM.makeElement("div", null, ['farmyard-stables']); - const cagesDiv = App.UI.DOM.makeElement("div", null, ['farmyard-cages']); - const removeHousingDiv = App.UI.DOM.makeElement("div", null, ['farmyard-remove']); - const renameDiv = App.UI.DOM.makeElement("div", null, ['farmyard-rename']); - const slavesDiv = App.UI.DOM.makeElement("div", null, ['farmyard-slaves']); + const introDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const expandDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const menialsDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const rulesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const upgradesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const kennelsDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const stablesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const cagesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const removeHousingDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const renameDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const slavesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); let farmyardNameCaps = capFirstChar(V.farmyardName); @@ -664,7 +664,7 @@ App.Facilities.Farmyard.farmyard = function() { } function slaves() { - slavesDiv.append(App.UI.DOM.appendNewElement("div", frag, App.UI.SlaveList.stdFacilityPage(App.Entity.facilities.farmyard), 'farmyard-slaves')); + slavesDiv.append(App.UI.DOM.appendNewElement("div", frag, App.UI.SlaveList.stdFacilityPage(App.Entity.facilities.farmyard), 'margin-bottom')); return slavesDiv; } diff --git a/src/facilities/pit/pit.js b/src/facilities/pit/pit.js index 230b2d5d9f0..e238271beea 100644 --- a/src/facilities/pit/pit.js +++ b/src/facilities/pit/pit.js @@ -1,11 +1,11 @@ App.Facilities.Pit.pit = function() { const frag = new DocumentFragment(); - const introDiv = App.UI.DOM.makeElement("div", null, ['pit-intro']); - const audienceDiv = App.UI.DOM.makeElement("div", null, ['pit-audience']); - const slavesDiv = App.UI.DOM.makeElement("div", null, ['pit-slaves']); - const lethalityDiv = App.UI.DOM.makeElement("div", null, ['pit-lethality']); - const renameDiv = App.UI.DOM.makeElement("div", null, ['pit-rename']); + const introDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const audienceDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const slavesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const lethalityDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const renameDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); let pitNameCaps = capFirstChar(V.pit.name); diff --git a/src/facilities/spa/spa.js b/src/facilities/spa/spa.js index 5b26c11e11a..c4e42999a0e 100644 --- a/src/facilities/spa/spa.js +++ b/src/facilities/spa/spa.js @@ -1,12 +1,12 @@ App.Facilities.Spa.spa = function() { const frag = new DocumentFragment(); - const introDiv = App.UI.DOM.makeElement("div", null, ['spa-intro']); - const expandDiv = App.UI.DOM.makeElement("div", null, ['spa-expand']); - const upgradesDiv = App.UI.DOM.makeElement("div", null, ['spa-upgrades']); - const attendantDiv = App.UI.DOM.makeElement("div", null, ['spa-attendant']); - const slavesDiv = App.UI.DOM.makeElement("div", null, ['spa-slaves']); - const renameDiv = App.UI.DOM.makeElement("div", null, ['spa-rename']); + const introDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const expandDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const upgradesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const attendantDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const slavesDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); + const renameDiv = App.UI.DOM.makeElement("div", null, ['margin-bottom']); let spaNameCaps = capFirstChar(V.spaName); diff --git a/src/npc/interaction/killSlave.js b/src/npc/interaction/killSlave.js index 20eff7df1cc..9e76ee20e47 100644 --- a/src/npc/interaction/killSlave.js +++ b/src/npc/interaction/killSlave.js @@ -118,7 +118,7 @@ App.UI.SlaveInteract.killSlave = function(slave) { } function links() { - const linksDiv = App.UI.DOM.makeElement("div", '', "kill-slave-options"); + const linksDiv = App.UI.DOM.makeElement("div", '', 'margin-top'); const links = []; const disableReasons = []; @@ -232,7 +232,7 @@ App.UI.SlaveInteract.killSlave = function(slave) { function relations() { // TODO: potentially expand to allow for checking for more than one relation (i.e. sister/mother/lover, etc) - const relationsDiv = App.UI.DOM.makeElement("div", '', "kill-slave-relations"); + const relationsDiv = App.UI.DOM.makeElement("div", '', 'margin-top'); const halfSisters = []; const sisters = []; @@ -511,7 +511,7 @@ App.UI.SlaveInteract.killSlave = function(slave) { App.UI.DOM.appendNewElement("div", plannedFightsDiv, App.UI.DOM.passageLink(`Cancel the fight`, V.returnTo, () => { V.pit.slaveFightingBodyguard = null; - }), ["kill-slave-cancel"]); + }), ['margin-top']); return plannedFightsDiv; } -- GitLab