diff --git a/src/events/RE/reFemaleArcologyOwner.js b/src/events/RE/reFemaleArcologyOwner.js index a8f43ad3190851b3856ec1a8f75faf151f728028..fa667c73dbfc701036b4ec9f9a2a0f3ee14764c0 100644 --- a/src/events/RE/reFemaleArcologyOwner.js +++ b/src/events/RE/reFemaleArcologyOwner.js @@ -2,13 +2,10 @@ App.Events.REFemaleArcologyOwner = class REFemaleArcologyOwner extends App.Event eventPrerequisites() { return [ () => V.policies.regularParties === 1, + () => (V.rep-10000 > random(1, 10000)) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - get weight() { - return (V.rep-10000 > random(1, 10000)) ? 1 : 0; - } - execute(node) { let r = []; diff --git a/src/events/RE/reMaleArcologyOwner.js b/src/events/RE/reMaleArcologyOwner.js index 3eda2d673b0aacc06d4efbc9803fc46197e529ca..a25169d13118fb4370879092e8c469db806f09ea 100644 --- a/src/events/RE/reMaleArcologyOwner.js +++ b/src/events/RE/reMaleArcologyOwner.js @@ -4,17 +4,10 @@ App.Events.REMaleArcologyOwner = class REMaleArcologyOwner extends App.Events.Ba () => V.policies.regularParties === 1, () => V.PC.vagina > 0, () => V.PC.title === 0, - () => random(0, 99) < V.seeDicks + () => (V.rep-10000 > random(1, 10000) && random(0, 99) < V.seeDicks) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - get weight() { - return ( - (V.rep-10000 > random(1, 10000)) && - (random(0, 99) < V.seeDicks) - ) ? 1 : 0; - } - actorPrerequisites() { return []; } diff --git a/src/events/RE/reMilfTourist.js b/src/events/RE/reMilfTourist.js index e82ad0d1f477413e2a6c9631b6d8f1920d94a1f6..b1b72bdebb84939e07f31f92b6d9d4dd8e8d01b4 100644 --- a/src/events/RE/reMilfTourist.js +++ b/src/events/RE/reMilfTourist.js @@ -1,7 +1,8 @@ App.Events.REMilfTourist = class REMilfTourist extends App.Events.BaseEvent { eventPrerequisites() { return [ - () => V.arcologies[0].prosperity >= 100 + () => V.arcologies[0].prosperity >= 100, + () => V.rep > random(1, 30000) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } @@ -14,10 +15,6 @@ App.Events.REMilfTourist = class REMilfTourist extends App.Events.BaseEvent { ]]; } - get weight() { - return V.rep > random(1, 30000) ? 1 : 0; - } - execute(node) { const r = []; diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index 05a010ba18f602ec9bc8b0d756f984319f2a2ec3..f04c6410035ab87b94956c6aaafa702917545c2c 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -233,6 +233,25 @@ App.Events.getNonindividualEvents = function() { new App.Events.recFSYouthPreferentialist(), new App.Events.recFSYouthPreferentialistTwo(), + // recets + new App.Events.recetsAddictMotherDaughter(), + new App.Events.recetsDesperateBroodmother(), + new App.Events.recetsIdenticalHermPair(), + new App.Events.recetsIdenticalPair(), + new App.Events.recetsIncestBrotherBrother(), + new App.Events.recetsIncestBrotherSister(), + new App.Events.recetsIncestFatherDaughter(), + new App.Events.recetsIncestFatherSon(), + new App.Events.recetsIncestMotherDaughter(), + new App.Events.recetsIncestMotherSon(), + new App.Events.recetsIncestSisterSister(), + new App.Events.recetsIncestTwinBrother(), + new App.Events.recetsIncestTwinSister(), + new App.Events.recetsIncestTwinsMixed(), + new App.Events.recetsMatchedPair(), + new App.Events.recetsMismatchedPair(), + new App.Events.recetsPoshMotherDaughter(), + // Justice Event new App.Events.JESlaveDisputeBreedingDeal(), new App.Events.JESlaveDisputeIndentureDeal(), diff --git a/src/events/recFS/recfsArabianRevivalist.js b/src/events/recFS/recfsArabianRevivalist.js index 06bf97f5b24bf8bf7555c428cb96e4337531b56c..a970ff4c195d25158ff96254a3dc1fe607ad10df 100644 --- a/src/events/recFS/recfsArabianRevivalist.js +++ b/src/events/recFS/recfsArabianRevivalist.js @@ -2,17 +2,9 @@ App.Events.recFSArabianRevivalist = class recFSArabianRevivalist extends App.Eve eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSArabianRevivalist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSArabianRevivalist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsAssetExpansionistTwo.js b/src/events/recFS/recfsAssetExpansionistTwo.js index e90e666f6112ca8a3d81932b80788bc2607e32ee..20846a271a441c3bcb0586bee44ea98d8892fad3 100644 --- a/src/events/recFS/recfsAssetExpansionistTwo.js +++ b/src/events/recFS/recfsAssetExpansionistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSAssetExpansionistTwo = class recFSAssetExpansionistTwo extends A eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSAssetExpansionist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSAssetExpansionist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsBodyPurist.js b/src/events/recFS/recfsBodyPurist.js index 1a47853c0ef46de207e464f74bb7409814fee5df..1bc6c9dcce42a7af3967c01304270e3f4cca3b9a 100644 --- a/src/events/recFS/recfsBodyPurist.js +++ b/src/events/recFS/recfsBodyPurist.js @@ -2,17 +2,10 @@ App.Events.recFSBodyPurist = class recFSBodyPurist extends App.Events.BaseEvent eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSBodyPurist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSBodyPurist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsChattelReligionist.js b/src/events/recFS/recfsChattelReligionist.js index 2eaf80eb2f981a5a79bf8fd83d415f44262e8f0b..cb0bc393e2d5c62229a3262c9978b52b25d0d545 100644 --- a/src/events/recFS/recfsChattelReligionist.js +++ b/src/events/recFS/recfsChattelReligionist.js @@ -2,17 +2,10 @@ App.Events.recFSChattelReligionist = class recFSChattelReligionist extends App.E eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSChattelReligionist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSChattelReligionist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsChineseRevivalist.js b/src/events/recFS/recfsChineseRevivalist.js index 0b2a5441ac9628bdf66747410426826ed57929e0..319460a86b3ce2d4721af195c211d367a5f96a2b 100644 --- a/src/events/recFS/recfsChineseRevivalist.js +++ b/src/events/recFS/recfsChineseRevivalist.js @@ -2,17 +2,10 @@ App.Events.recFSChineseRevivalist = class recFSChineseRevivalist extends App.Eve eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSChineseRevivalist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSChineseRevivalist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsDegradationistTwo.js b/src/events/recFS/recfsDegradationistTwo.js index e374e4ef3c57d341c2f03f7953dfd60b67bd147a..2cf44e31110a5c9558cc81b8816799d974e2da08 100644 --- a/src/events/recFS/recfsDegradationistTwo.js +++ b/src/events/recFS/recfsDegradationistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSDegradationistTwo = class recFSDegradationistTwo extends App.Eve eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSDegradationist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSDegradationist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js b/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js index 75f32055ecb13003c0696bfec8fbb3cbeb4eb48a..9f90ddc24e3c81dce18e7be5a9aa1ed940be8517 100644 --- a/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js +++ b/src/events/recFS/recfsFSEgyptianRevivalistAcquisition.js @@ -2,13 +2,10 @@ App.Events.recFSEgyptianRevivalistAcquisition = class recFSEgyptianRevivalistAcq eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSEgyptianRevivalist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - get weight() { - return V.arcologies[0].FSEgyptianRevivalist > random(1, 100) ? 1 : 0; - } - execute(node) { /* Written and coded by Boney M */ V.nextButton = "Continue"; diff --git a/src/events/recFS/recfsGenderFundamentalistTwo.js b/src/events/recFS/recfsGenderFundamentalistTwo.js index 237de64bc3795b9dfd6220833201c7e71e38f8dd..370fad3fa21efa01b0974d7e19c4cda922ffc317 100644 --- a/src/events/recFS/recfsGenderFundamentalistTwo.js +++ b/src/events/recFS/recfsGenderFundamentalistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSGenderFundamentalistTwo = class recFSGenderFundamentalistTwo ext eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSGenderFundamentalist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSGenderFundamentalist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsGenderRadicalistTwo.js b/src/events/recFS/recfsGenderRadicalistTwo.js index 542fdd5bf4f6148252da4f2a079f3af5e25a0369..bf013ef2539dc3baabedeee14c3600f89280a138 100644 --- a/src/events/recFS/recfsGenderRadicalistTwo.js +++ b/src/events/recFS/recfsGenderRadicalistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSGenderRadicalistTwo = class recFSGenderRadicalistTwo extends App eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSGenderRadicalist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSGenderRadicalist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsHedonisticDecadenceTwo.js b/src/events/recFS/recfsHedonisticDecadenceTwo.js index 306601842f47edcf8c273bfe3395dc045eff73cf..85e1fb398eb167fc29f605e6ef929d7640042be2 100644 --- a/src/events/recFS/recfsHedonisticDecadenceTwo.js +++ b/src/events/recFS/recfsHedonisticDecadenceTwo.js @@ -2,17 +2,10 @@ App.Events.recFSHedonisticDecadenceTwo = class recFSHedonisticDecadenceTwo exten eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSHedonisticDecadence > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSHedonisticDecadence > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsIntellectualDependencyTwo.js b/src/events/recFS/recfsIntellectualDependencyTwo.js index 9677bfe6c8219af6a7a4174528c94a339388cfa9..d26986cf54da8d1640a20bae07c887d630bb04bb 100644 --- a/src/events/recFS/recfsIntellectualDependencyTwo.js +++ b/src/events/recFS/recfsIntellectualDependencyTwo.js @@ -2,17 +2,10 @@ App.Events.recFSIntellectualDependencyTwo = class recFSIntellectualDependencyTwo eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSIntellectualDependency > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSIntellectualDependency > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsMaturityPreferentialistTwo.js b/src/events/recFS/recfsMaturityPreferentialistTwo.js index 7b212e74511d98de9204325d246d17c78792b344..ba57af90fb6400a6a8357153de1d720c22f4baa0 100644 --- a/src/events/recFS/recfsMaturityPreferentialistTwo.js +++ b/src/events/recFS/recfsMaturityPreferentialistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSMaturityPreferentialistTwo = class recFSMaturityPreferentialistT eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSMaturityPreferentialist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSMaturityPreferentialist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsPastoralist.js b/src/events/recFS/recfsPastoralist.js index cac7d6b0864569b2591d83dc6517a048033f4594..4265f4a63b427cc7e17835d43f98b8bb6f4faa1c 100644 --- a/src/events/recFS/recfsPastoralist.js +++ b/src/events/recFS/recfsPastoralist.js @@ -2,17 +2,10 @@ App.Events.recFSPastoralist = class recFSPastoralist extends App.Events.BaseEven eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSPastoralist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSPastoralist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsPaternalist.js b/src/events/recFS/recfsPaternalist.js index 99ffc7ad407f9bd72c38e7476554d6fc000497d5..9f92b3f2659ced41bdb7ff1d61ed75963af4b4aa 100644 --- a/src/events/recFS/recfsPaternalist.js +++ b/src/events/recFS/recfsPaternalist.js @@ -2,17 +2,10 @@ App.Events.recFSPaternalist = class recFSPaternalist extends App.Events.BaseEven eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSPaternalist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSPaternalist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsPetiteAdmiration.js b/src/events/recFS/recfsPetiteAdmiration.js index 162dd45c4865a453320ca34be84cb812541ec673..c835a413d3e623a752b568c4cd52d0daf079a58d 100644 --- a/src/events/recFS/recfsPetiteAdmiration.js +++ b/src/events/recFS/recfsPetiteAdmiration.js @@ -2,17 +2,10 @@ App.Events.recFSPetiteAdmiration = class recFSPetiteAdmiration extends App.Event eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSPetiteAdmiration > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSPetiteAdmiration > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsPhysicalIdealist.js b/src/events/recFS/recfsPhysicalIdealist.js index 37ab8fb60de2ae88a5962c83d34b4dd40665c318..8e4978ae7c03279da4d8cdba7899a32210439235 100644 --- a/src/events/recFS/recfsPhysicalIdealist.js +++ b/src/events/recFS/recfsPhysicalIdealist.js @@ -2,17 +2,10 @@ App.Events.recFSPhysicalIdealist = class recFSPhysicalIdealist extends App.Event eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSPhysicalIdealist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSPhysicalIdealist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsRepopulationEfforts.js b/src/events/recFS/recfsRepopulationEfforts.js index 2c281deb3a802127fcc7bfa409873d884eafcb94..321a7038d4a73d94cd122063087480c4981b3a22 100644 --- a/src/events/recFS/recfsRepopulationEfforts.js +++ b/src/events/recFS/recfsRepopulationEfforts.js @@ -2,17 +2,10 @@ App.Events.recFSRepopulationEfforts = class recFSRepopulationEfforts extends App eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSRepopulationFocus > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSRepopulationFocus > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsRestart.js b/src/events/recFS/recfsRestart.js index 3967d9c01c05e2cb0b6dbf01e73117d9a543931c..443d05f79b9e33c6a6f82ebf325cb58016707143 100644 --- a/src/events/recFS/recfsRestart.js +++ b/src/events/recFS/recfsRestart.js @@ -2,17 +2,10 @@ App.Events.recFSRestart = class recFSRestart extends App.Events.BaseEvent { eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSRestart > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSRestart > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsRomanRevivalist.js b/src/events/recFS/recfsRomanRevivalist.js index 9fbb56624620681313b0bfa284e194396d729f82..72fae4d35b54176c95102a6c2ce7dcbbcf985b36 100644 --- a/src/events/recFS/recfsRomanRevivalist.js +++ b/src/events/recFS/recfsRomanRevivalist.js @@ -2,17 +2,10 @@ App.Events.recFSRomanRevivalist = class recFSRomanRevivalist extends App.Events. eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSRomanRevivalist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSRomanRevivalist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsSlaveProfessionalismTwo.js b/src/events/recFS/recfsSlaveProfessionalismTwo.js index 1ee03e6fedbf8f91e8a3909523b5b1aeccf3e813..f3a9d710040009fdd48dc70416a99f513aa55a99 100644 --- a/src/events/recFS/recfsSlaveProfessionalismTwo.js +++ b/src/events/recFS/recfsSlaveProfessionalismTwo.js @@ -2,17 +2,10 @@ App.Events.recFSSlaveProfessionalismTwo = class recFSSlaveProfessionalismTwo ext eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSSlaveProfessionalism > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSSlaveProfessionalism > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsSlimnessEnthusiastTwo.js b/src/events/recFS/recfsSlimnessEnthusiastTwo.js index 6562160de257f691d428a64cd16c2c784cb687b0..2b844cb6c3239a3410d60d2ee6486fa91d0229a6 100644 --- a/src/events/recFS/recfsSlimnessEnthusiastTwo.js +++ b/src/events/recFS/recfsSlimnessEnthusiastTwo.js @@ -2,17 +2,10 @@ App.Events.recFSSlimnessEnthusiastTwo = class recFSSlimnessEnthusiastTwo extends eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSSlimnessEnthusiast > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSSlimnessEnthusiast > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsStatuesqueGlorificationTwo.js b/src/events/recFS/recfsStatuesqueGlorificationTwo.js index 6bca6366acd7498e230221e5364874c4a813bc13..7d34bb69079c5b324a0958a9392e842a079eff19 100644 --- a/src/events/recFS/recfsStatuesqueGlorificationTwo.js +++ b/src/events/recFS/recfsStatuesqueGlorificationTwo.js @@ -2,16 +2,10 @@ App.Events.recFSStatuesqueGlorificationTwo = class recFSStatuesqueGlorificationT eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSStatuesqueGlorification > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSStatuesqueGlorification > random(1, 100) ? 1 : 0; - } execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsSubjugationistTwo.js b/src/events/recFS/recfsSubjugationistTwo.js index fa3b960814237151bf94eb71958b33b49112eaaf..e7d300c1893e79e02072d0e8f13358b2ea9b0b3e 100644 --- a/src/events/recFS/recfsSubjugationistTwo.js +++ b/src/events/recFS/recfsSubjugationistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSSubjugationistTwo = class recFSSubjugationistTwo extends App.Eve eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSSubjugationist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSSubjugationist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsSupremacistTwo.js b/src/events/recFS/recfsSupremacistTwo.js index be11a92ee5443553c4894838b513e04a2df7ca44..ea0adeafa6afed008fc630bef67ed548dcf38272 100644 --- a/src/events/recFS/recfsSupremacistTwo.js +++ b/src/events/recFS/recfsSupremacistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSSupremacistTwo = class recFSSupremacistTwo extends App.Events.Ba eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSSupremacist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSSupremacist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsTransformationFetishistTwo.js b/src/events/recFS/recfsTransformationFetishistTwo.js index fb55d029cec4db6e6f03f6b625a33cdae4f36fcb..327dadfe53648cfe33072672fa807c249cec159f 100644 --- a/src/events/recFS/recfsTransformationFetishistTwo.js +++ b/src/events/recFS/recfsTransformationFetishistTwo.js @@ -2,17 +2,10 @@ App.Events.recFSTransformationFetishistTwo = class recFSTransformationFetishistT eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSTransformationFetishist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSTransformationFetishist > random(1, 100) ? 1 : 0; - } - execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/recFS/recfsYouthPreferentialistTwo.js b/src/events/recFS/recfsYouthPreferentialistTwo.js index bb8202967ef6fbd877fd4307710430cebaf06a5a..d3ba0807b37d0806f03fc7149f7df21f67f65587 100644 --- a/src/events/recFS/recfsYouthPreferentialistTwo.js +++ b/src/events/recFS/recfsYouthPreferentialistTwo.js @@ -2,16 +2,10 @@ App.Events.recFSYouthPreferentialistTwo = class recFSYouthPreferentialistTwo ext eventPrerequisites() { return [ () => V.FSAnnounced === 1, + () => V.arcologies[0].FSYouthPreferentialist > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) ]; } - actorPrerequisites() { - return []; - } - - get weight() { - return V.arcologies[0].FSYouthPreferentialist > random(1, 100) ? 1 : 0; - } execute(node) { let r = []; V.nextLink = "RIE Eligibility Check"; diff --git a/src/events/resETS/!recets.js b/src/events/resETS/!recets.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/events/resETS/recetsAddictMotherDaughter.js b/src/events/resETS/recetsAddictMotherDaughter.js new file mode 100644 index 0000000000000000000000000000000000000000..b7fe14f11bc6f2f126898a0b6d9beb40afb73737 --- /dev/null +++ b/src/events/resETS/recetsAddictMotherDaughter.js @@ -0,0 +1,163 @@ +App.Events.recetsAddictMotherDaughter = class recetsAddictMotherDaughter extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + let r = []; + const contractCost = 1000; + + // Mother + let pram = new GenerateNewSlavePram(); + Object.apply(pram, { + minAge: V.fertilityAge + V.minimumSlaveAge, maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1, race: "nonslave" + }); + const mother = GenerateNewSlave("XX", pram); + mother.origin = "$He sold $himself into slavery to escape addiction debts."; + mother.career = App.Data.Careers.General.uneducated.random(); + mother.devotion = random(-15, 15); + mother.trust = random(-15, 15); + mother.oldDevotion = mother.devotion; + mother.addict = 8; + mother.boobs += 100; + mother.face = -15; + mother.butt++; + if (mother.vagina > -1) { + mother.vagina++; + } + mother.anus++; + setHealth(mother, jsRandom(-60, 20), Math.max(normalRandInt(5, 3), 0), Math.max(normalRandInt(5, 3), 0)); + mother.pubicHStyle = "waxed"; + mother.underArmHStyle = "waxed"; + mother.canRecruit = 0; + mother.counter.birthsTotal++; + let cost = slaveCost(mother); + cost -= 1000; + + // Daughter + const daughter = generateRelatedSlave(mother, "daughter"); + daughter.origin = "You tricked $his mother into selling $him into slavery to clear addiction debts."; + daughter.career = App.Data.Careers.General.uneducated.random(); + daughter.slaveName = daughter.birthName; + daughter.devotion += 10; + daughter.trust += 10; + daughter.oldDevotion = daughter.devotion; + daughter.boobs -= 100; + daughter.butt -= 1; + if (daughter.vagina > -1) { + daughter.vagina = 1; + } + daughter.anus = 1; + pram = new GenerateNewSlavePram(); + pram.maxAge = Math.min(22, Math.max(V.minimumSlaveAge, daughter.actualAge - 11)); + pram.minAge = Math.min(Math.max(15, V.minimumSlaveAge), pram.maxAge); + if (V.pedo_mode === 1) { + pram.minAge = V.minimumSlaveAge; + } + daughter.actualAge = random(pram.minAge, pram.maxAge); + daughter.counter.birthsTotal = 0; + daughter.visualAge = daughter.actualAge; + daughter.physicalAge = daughter.actualAge; + daughter.ovaryAge = daughter.actualAge; + if (daughter.physicalAge < 6) { + daughter.teeth = "baby"; + } else if (daughter.physicalAge < 12) { + daughter.teeth = "mixed"; + } + + recetsFamilyNames(mother, daughter); + + const { + He, + his, he, him, himself + } = getPronouns(daughter); + const { + daughter2, he2, his2 + } = getPronouns(mother).appendSuffix("2"); + + App.Events.addParagraph(node, [`A matronly woman comes to your penthouse in tears. It seems ${he} is a tenant of yours, and has fallen deeply into debt as a result of aphrodisiac addiction. ${He} offers to sell ${himself} into slavery if you will pay off ${his} debts. ${He} is strangely eager about this, and after some probing it becomes apparent that ${he} is living with ${his} ${daughter2} and wants to avoid having ${his} ${daughter2} involved in this debt.`]); + + App.Events.addParagraph(node, [`Enslaving ${him} will cost ${cashFormat(contractCost)}. Alternatively, you could sell your rights to ${him}. Including costs, this will bring in ${cashFormat(cost - contractCost)}. As a third option, for ${cashFormat(contractCost * 2)} you could manipulate ${him} to bind both mother and ${daughter2}, but you wouldn't be able to examine the ${daughter2} first.`]); + r.push(); + + const _newSlaves = [mother]; /* caller doesn't want relative involved, so you don't get to inspect her even if you can force a sale */ + + node.append(App.UI.MultipleInspect(_newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= contractCost) { + choices.push(new App.Events.Result(`Accept ${his} proposal and enslave ${him}`, enslave, `This will cost in ${contractCost}`)); + choices.push(new App.Events.Result(`Sell ${him} immediately`, sell, `This will bring in ${cashFormat(cost - contractCost)}`)); + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Manipulate ${him} to enslave both mother and ${daughter2}`, both, `This will cost in ${contractCost}`)); + } + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + App.Events.addResponses(node, choices); + + function enslave() { + const frag = new DocumentFragment(); + r = []; + daughter.counter.oral++; + V.oralTotal++; + newSlave(daughter); + cashX(forceNeg(contractCost), "slaveTransfer", daughter); + r.push(`Despite ${himself}, ${he} sobs with relief when you agree. ${He} offers to`); + if (V.PC.dick !== 0) { + r.push(`suck you off`); + if (V.PC.vagina !== -1) { + r.push(`and`); + } + } + if (V.PC.vagina !== -1) { + r.push(`eat you out`); + } + r.push(`while you complete the necessary legalities, so you work away with a`); + if (V.PC.dick !== 0) { + r.push(`pair of motherly lips wrapped around your dick`); + } else { + r.push(`motherly tongue pleasuring your clit`); + } + r.push(`as ${he} pumps away eagerly under the desk. ${He}'s definitely on aphrodisiacs. ${He} masturbates while ${he} sucks.`); + App.Events.addParagraph(frag, r); + return frag; + } + + function sell() { + cashX((cost - contractCost), "slaveTransfer", daughter); + return `${daughter.slaveName} accepts being resold without much fuss. ${He}'s merely exchanged one unknown owner for another. For all ${he} knows ${his} new buyer will be less abusive than you would have been. ${He} would be less complacent if ${he} knew who ${his} buyers are; ${he}'ll be immured in an arcade within the hour.`; + } + + function both() { + const frag = new DocumentFragment(); + r = []; + newSlave(mother); + cashX(forceNeg(contractCost), "slaveTransfer", mother); + newSlave(daughter); + cashX(forceNeg(contractCost), "slaveTransfer", daughter); + mother.devotion -= 50; + + r.push(`Despite ${himself}, ${he} sobs with relief when you agree. ${He} offers to`); + if (V.PC.dick !== 0) { + r.push(`suck you off`); + } else { + r.push(`eat you out`); + } + r.push(`while you complete the necessary legalities, but instead you idly place a big dose of aphrodisiac on your desk and tell ${him} to wait quietly. After ten minutes of careful manipulation, ${he}'s signed away both ${his} own freedom and ${his} ${daughter2}'s without realizing it, in return for the drug. ${He}'s masturbating furiously on a chair when ${his} daughter2 arrives. ${He} immediately realizes what's happened and ${his} eyes fill with all-consuming hatred, but ${he} can't stop rubbing.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`Unsurprisingly the ${daughter2} is an addict too, and before long ${he2}'s given ${his2} signature and is sitting on a different chair on a strong dose of aphrodisiacs.`); + if (daughter.dick > 0) { + r.push(`Mother and ${daughter2} crank it desperately,`); + } else { + r.push(`Mother and ${daughter2} schlick themselves desperately,`); + } + r.push(`sobbing in despair as you hurry to complete the nastily complex paperwork. This is going to be fun.`); + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/resETS/recetsDesperateBroodmother.js b/src/events/resETS/recetsDesperateBroodmother.js new file mode 100644 index 0000000000000000000000000000000000000000..cf035420c93f62774efbb17f6443f032a6771af6 --- /dev/null +++ b/src/events/resETS/recetsDesperateBroodmother.js @@ -0,0 +1,261 @@ +App.Events.recetsDesperateBroodmother = class recetsDesperateBroodmother extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.seePreg !== 0, + () => V.seeHyperPreg === 1, + () => V.arcologies[0].FSRestart === "unset", + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Parent + const contractCost = 1000; + const pram = { + minAge: V.fertilityAge + 3, maxAge: (V.pedo_mode === 1 ? 18 : 24), disableDisability: 1, ageOverridesPedoMode: 1 + }; + const mother = GenerateNewSlave("XX", pram); + mother.origin = "$He begged to be enslaved in a desperate attempt to provide for $his many children."; + mother.career = "homeless"; + setHealth(mother, jsRandom(-45, -30), -1, -1, -1, 80); + mother.devotion = random(35, 45); + mother.trust = random(15, 25); + mother.oldDevotion = mother.devotion; + mother.preg = 41; + mother.pregType = random(25, 29); + mother.pregKnown = 1; + mother.pregWeek = mother.preg; + SetBellySize(mother); + mother.pregAdaptation = 600; + mother.ovaries = 1; + mother.counter.birthsTotal = 5; + /* Being pregnant with 25-29 children requires either hyper fertility drugs (1/3 odds) or a genetic quirk (2/3 odds) */ + mother.geneticQuirks.hyperFertility = either(mother.geneticQuirks.hyperFertility, 2, 2); + mother.face = 15; + mother.vagina = 4; + mother.skill.vaginal = 45; + mother.skill.whoring = 20; + mother.skill.anal = 10; + mother.anus = 1; + mother.weight = random(-80, -50); + mother.muscles = 0; + mother.underArmHStyle = "bushy"; + mother.pubicHStyle = "bushy"; + mother.boobs = 1600; + mother.boobShape = "saggy"; + mother.nipples = "huge"; + mother.lactation = 1; + mother.lactationDuration = 2; + mother.lactationAdaptation = 30; + mother.hips = 2; + mother.vaginaLube = 1; + mother.butt += 3; + mother.sexualQuirk = "caring"; + mother.bellySag = 20; + mother.bellySagPreg = 20; + mother.pubertyXX = 1; + mother.canRecruit = 0; + + // Child + let child; + if (random(1, 100) < V.seeDicks) { /* boy*/ + child = generateRelatedSlave(mother, "son"); + child.origin = "$His mother offered $him to you as an incentive to take them in."; + child.slaveName = child.birthName; + setHealth(child, jsRandom(10, 20)); + child.devotion -= 5; + child.trust -= 5; + child.oldDevotion = child.devotion; + child.genes = "XY"; + child.pregAdaptation = 10; + WombFlush(child); + SetBellySize(child); + child.ovaries = 0; + child.counter.birthsTotal = 0; + child.geneticQuirks.hyperFertility = Math.min(child.geneticQuirks.hyperFertility, 1); /* if mother is hyper-fertile, make son only carrier */ + child.anus = 0; + child.skill.vaginal = 0; + child.skill.whoring = 0; + child.skill.anal = 0; + child.weight = random(-80, -50); + child.muscles = 0; + child.underArmHStyle = "bushy"; + child.pubicHStyle = "bushy"; + child.boobs = 0; + child.boobShape = "perky"; + child.nipples = "tiny"; + child.lactation = 0; + child.lactationDuration = 0; + child.lactationAdaptation = 0; + child.hips = -2; + child.shoulders = -2; + child.waist = 0; + child.vaginaLube = 0; + child.butt = 0; + child.fetish = "none"; + child.fetishStrength = 0; + child.sexualFlaw = "none"; + child.sexualQuirk = "none"; + child.bellySag = 0; + child.bellySagPreg = 0; + child.pubertyXX = 0; + child.dick = 1; + child.foreskin = 1; + child.balls = 2; + child.scrotum = 3; + child.prostate = 1; + child.actualAge = 3; + child.visualAge = child.actualAge; + child.physicalAge = child.actualAge; + child.ovaryAge = child.actualAge; + if (child.physicalAge < 6) { + child.teeth = "baby"; + } else if (child.physicalAge < 12) { + child.teeth = "mixed"; + } + } else { /* girl*/ + child = generateRelatedSlave(child, "daughter"); + child.origin = "$His mother offered $him to you as an incentive to take them in."; + child.slaveName = child.birthName; + setHealth(child, jsRandom(10, 20)); + child.devotion -= 5; + child.trust -= 5; + child.oldDevotion = child.devotion; + child.counter.birthsTotal = 0; + child.anus = 0; + child.skill.vaginal = 0; + child.skill.whoring = 0; + child.skill.anal = 0; + child.weight = random(-80, -50); + child.muscles = 0; + child.underArmHStyle = "bushy"; + child.pubicHStyle = "bushy"; + child.boobs = 0; + child.boobShape = "perky"; + child.nipples = "tiny"; + child.lactation = 0; + child.lactationDuration = 0; + child.lactationAdaptation = 0; + child.hips = -2; + child.shoulders = -2; + child.waist = 0; + child.vaginaLube = 0; + child.butt = 0; + child.fetish = "none"; + child.fetishStrength = 0; + child.sexualFlaw = "none"; + child.sexualQuirk = "none"; + child.bellySag = 0; + child.bellySagPreg = 0; + child.pubertyXX = 0; + child.vagina = 0; + child.pregKnown = 0; + child.pregAdaptation = 10; + WombFlush(child); + if (V.fertilityAge <= 3) { + child.pubertyXX = 1; + child.preg = 6; + child.pregType = 1; + child.pregKnown = 1; + child.vagina = 1; + } + child.pregWeek = child.preg; + SetBellySize(child); + child.actualAge = 3; + child.visualAge = child.actualAge; + child.physicalAge = child.actualAge; + child.ovaryAge = child.actualAge; + if (child.physicalAge < 6) { + child.teeth = "baby"; + } else if (child.physicalAge < 12) { + child.teeth = "mixed"; + } + } + + recetsFamilyNames(mother, child); + + const { + He, His, + he, his, him, woman, loli, girl + } = getPronouns(child); + const { + He2, + him2, his2, sister2, girl2 + } = getPronouns(mother).appendSuffix("2"); + const {HeA} = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + let r = []; + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, r); + r = []; + r.push(`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. You aren't far off; the caller is a`); + if (child.actualAge >= 18) { + r.push(`young ${woman}`); + } else if (child.actualAge >= 13) { + r.push(`teen`); + } else { + r.push(`${loli}`); + } + r.push( + `desperate for work, carrying a young child on ${his} shoulder, quadruplets on ${his} back and a large sack against ${his} middle, while looking absolutely exhausted.`, + Spoken(child, `"Please, would you happen to have any work for a desperate mother? I need to eat, and my babies are starting to go hungry... I tried whoring, but I got pregnant again..."`), + `${He} struggles back to allow you to see ${his} full body. The object you thought were ${his} possessions is, in fact, ${his} massively distended stomach.`, + Spoken(child, `"I'm having so many and I don't know what to do anymore... I can't care for this many... Anything you can do for meeEEEEEE!"`), + `${He} groans as an intense contraction hits ${him}.`, + Spoken(child, `"Oh god! Not now! Not like this! I'm not ready... Please, I'm giving birth right now... Forget work, I'll be your slave if you can help me..."`), + `${He} begs, tears streaming down ${his} face as ${he} struggles to hold back the child threatening to slide into ${his} birth canal.`); + if (V.minimumSlaveAge <= 3) { + r.push(Spoken(child, `"Please... My eldest is of age here... Help me and they'll be yours too! You'll help mommy, right sweetie?" The toddler nods to ${him}, unlikely to understand exactly what is going on.`)); + } + App.Events.addParagraph(node, r); + r = []; + r.push(`Enslaving ${him} will cost ${cashFormat(contractCost)}.`); + if (V.minimumSlaveAge <= 3) { + r.push(`Alternatively, for ${cashFormat(contractCost * 2)} you could enslave both mother and ${his} eldest child, the rest being sent to the slave orphanages.`); + } + App.Events.addParagraph(node, r); + App.UI.DOM.appendNewElement("p", node, `${His} ${sister2} is identical.`, "detail"); + + const newSlaves = [mother]; /* rushed videocall, no dossier */ + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= contractCost) { + choices.push(new App.Events.Result(`Enslave the mother`, enslave, `This will cost in ${contractCost}`)); + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Accept ${his} offer`, both, `This will cost in ${contractCost}`)); + } + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + App.Events.addResponses(node, choices); + + function enslave() { + newSlave(child); + cashX(forceNeg(contractCost), "slaveTransfer", child); + startLabor(child); + return `You have the needy ${girl} immediately bought to your penthouse where you help ${his} laboring body into an available bed for inspection. ${He} asks where ${his} children were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of ${him}. ${He}'s a little depressed at the news, but understands your reasons. You take the opportunity to give ${him} a good look over; ${he} is really dilated! Apart from that, between all the births and dicks, ${his} vagina is rather worn out, though ${he} seems to understand how to use it. ${His} anus has also seen use, but not nearly as much.`; + } + + function both() { + const frag = new DocumentFragment(); + newSlave(mother); + cashX(forceNeg(contractCost), "slaveTransfer", mother); + newSlave(child); + cashX(forceNeg(contractCost), "slaveTransfer", child); + App.Events.addParagraph(node, [`You have the needy ${girl} immediately bought to your penthouse where you help ${his} laboring body into an available bed for inspection. ${He} asks where ${his} other babies were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of ${him}. ${He}'s a little depressed at the news, but understands your reasons. You take the opportunity to give ${him} a good look over; ${he} is really dilated! Apart from that, between all the births and dicks, ${his} vagina is rather worn out, though ${he} seems to understand how to use it. ${His} anus has also seen use, but not nearly as much.`]); + + let r = []; + r.push(`You turn to the child clutching ${his} mother's grotesque belly. ${He2} is in better shape than ${his2} mother and tries to hide behind ${his} belly when you look at ${him2}. ${He2}'ll be broken into a good little ${girl2} for you soon enough.`); + if (child.preg > 0) { + r.push(`You notice ${his2} belly is slightly distended. It could be hunger, but upon closer inspection, you realize ${his2} hymen has been torn. ${He2}'s likely been servicing men alongside ${his2} mother and has a bun in the oven too.`); + } + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/resETS/recetsIdenticalHermPair.js b/src/events/resETS/recetsIdenticalHermPair.js new file mode 100644 index 0000000000000000000000000000000000000000..093a1dc890f2acad76800504ae126fc01e324bde --- /dev/null +++ b/src/events/resETS/recetsIdenticalHermPair.js @@ -0,0 +1,142 @@ +App.Events.recetsIdenticalHermPair = class recetsIdenticalHermPair extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeDicks !== 100, + () => V.seeIncest !== 0, + () => V.seePreg !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Parent + const thing1 = GenerateNewSlave("XX", { + minAge: V.fertilityAge, maxAge: 21, ageOverridesPedoMode: 1, disableDisability: 1 + }); + thing1.origin = "$He was brought up in a radical slave school to match $his twin."; + thing1.career = "a mother"; + thing1.devotion = random(25, 45); + thing1.trust = random(-15, 15); + thing1.oldDevotion = thing1.devotion; + setHealth(thing1, jsRandom(0, 20), undefined, undefined, 0, 10); + thing1.anus = 1; + thing1.dick = 5; + thing1.foreskin = 4; + thing1.balls = 6; + thing1.scrotum = 3; + thing1.clit = 0; + thing1.vagina = 2; + thing1.weight = 0; + thing1.face = 15; + thing1.faceShape = "cute"; + if (thing1.physicalAge >= 12) { + thing1.teeth = "normal"; + } + thing1.skill.vaginal = 15; + thing1.skill.oral = 15; + thing1.skill.anal = 15; + if (thing1.physicalAge >= random(13, 17)) { + thing1.boobs = either(500, 600); + thing1.boobsImplant = 0; + thing1.boobsImplantType = "none"; + thing1.butt = either(2, 3); + thing1.buttImplant = 0; + thing1.buttImplantType = "none"; + } + thing1.preg = 30; + thing1.pregType = 2; + thing1.pregKnown = 1; + thing1.pregWeek = thing1.preg; + thing1.belly = 14000; + thing1.bellyPreg = 14000; + thing1.pubertyXX = 1; + thing1.pubertyXY = 1; + thing1.hStyle = "tails"; + thing1.pubicHStyle = "waxed"; + thing1.fetish = "pregnancy"; + thing1.fetishStrength = 100; + thing1.sexualQuirk = "perverted"; + thing1.sexualFlaw = "none"; + thing1.behavioralFlaw = "none"; + setMissingParents(thing1); + thing1.canRecruit = 0; + thing1.relationship = 4; + + let cost = slaveCost(thing1); + let contractCost = cost; + + // Child + const thing2 = generateRelatedSlave(thing1, "twin"); + WombFlush(thing2); + thing2.preg = 30; + thing2.pregType = 2; + thing2.pregSource = thing1.ID; + thing2.pregKnown = 1; + thing2.pregWeek = thing2.preg; + thing2.belly = 14000; + thing2.bellyPreg = 14000; + thing2.relationship = 4; + thing2.relationshipTarget = thing1.ID; + + thing1.pregSource = thing2.ID; + thing1.relationshipTarget = thing2.ID; + + const familyName = recetsFamilyNames(thing1, thing2); + + let name1 = thing2.slaveName; + if (familyName) { + name1 += " " + thing2.slaveSurname; + } + WombChangeGene(thing1, "fatherName", name1); + let name2 = thing1.slaveName; + if (familyName) { + name2 += " " + thing1.slaveSurname; + } + WombChangeGene(thing1, "motherName", name2); + + const {His, him} = getPronouns(thing2); + const {He2, sister2} = getPronouns(thing1).appendSuffix("2"); + + App.Events.addParagraph(node, [ + `A pair of young slaves is going door to door offering themselves for sale on behalf of their owner. It's rare to see a slave obedient enough to be entrusted with their own sale, and the price alone suggests there's something interesting, so you let them up. They stand in front of your desk, an arm around the other, and wait for instructions. They appear to be twins, and are dressed identically: they're wearing very skimpy miniskirts, which fail to conceal their semi erect cocks at all, bikini tops so brief that their areolae are clearly visible around the scrap of cloth over each nipple, and nothing over their huge pregnant bellies. You instruct them to tell you about themselves.` + ]); + + App.Events.addParagraph(node, [ + `They pull themselves together, bringing their gravid middles in tight contact with one another. One of them speaks up.`, + Spoken(thing1, `"We're twins, ${(V.PC.title !== 0) ? "sir" : "ma'am"}. Identical twins. We've also been trained ${(thing2.actualAge > V.minimumSlaveAge) ? `ever since we turned ${V.minimumSlaveAge}` : ``} to be completely obedient, ${(V.PC.title !== 0) ? "sir" : "ma'am"}, in everything, and sexually proficient."`) + ]); + + App.Events.addParagraph(node, [ + `The other blurts out.`, + Spoken(thing2, `"But we kinda got too into each other, in more ways than one!"`), + `${He2} winks.` + ]); + + App.Events.addParagraph(node, [Spoken(thing2, `"We cost ${cashFormat(contractCost)}, ${(V.PC.title !== 0) ? "sir" : "ma'am"}."`)]); + App.UI.DOM.appendNewElement("p", node, `${His} ${sister2} is identical.`, "detail"); + + const newSlaves = [thing1, thing2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(thing1); + cashX(forceNeg(contractCost), "slaveTransfer", thing1); + newSlave(thing2); + cashX(forceNeg(contractCost), "slaveTransfer", thing2); + return [ + `They giggle and kiss each other rather passionately, their miniskirts becoming pinned against their pregnancies by their stiffening pricks. They're very well trained but not very disciplined, though their pervertedness will be fun.`, + Spoken(thing2, `"You know we each are carrying the other's twins, right?"`) + ]; + } + } +}; diff --git a/src/events/resETS/recetsIdenticalPair.js b/src/events/resETS/recetsIdenticalPair.js new file mode 100644 index 0000000000000000000000000000000000000000..2a6a36c091e687b32eac28be794bb7ad33f45b66 --- /dev/null +++ b/src/events/resETS/recetsIdenticalPair.js @@ -0,0 +1,102 @@ +App.Events.recetsIdenticalPair = class recetsIdenticalPair extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + const thing1 = GenerateNewSlave("XX", {minAge: V.minimumSlaveAge, maxAge: 21, disableDisability: 1}); + thing1.origin = "$He was brought up in a radical mother school to match $his twin."; + thing1.career = "a mother"; + thing1.devotion = random(25, 45); + thing1.trust = random(-15, 15); + thing1.oldDevotion = thing1.devotion; + setHealth(thing1, jsRandom(0, 20), undefined, undefined, 0, 0); + thing1.anus = 1; + thing1.dick = 0; + thing1.foreskin = 0; + thing1.balls = 0; + thing1.scrotum = 0; + thing1.clit = 2; + thing1.vagina = 1; + thing1.weight = 0; + thing1.face = 15; + thing1.faceShape = "cute"; + thing1.attrXX = 80; + if (thing1.physicalAge >= 12) { + thing1.teeth = "normal"; + } + thing1.skill.vaginal = 15; + thing1.skill.oral = 15; + thing1.skill.anal = 15; + if (thing1.physicalAge >= random(13, 17)) { + thing1.boobs = either(500, 600); + thing1.boobsImplant = 0; + thing1.boobsImplantType = "none"; + thing1.butt = either(2, 3); + thing1.buttImplant = 0; + thing1.buttImplantType = "none"; + } + thing1.preg = -1; + thing1.hStyle = "tails"; + thing1.pubicHStyle = "waxed"; + thing1.sexualFlaw = "none"; + thing1.behavioralFlaw = "none"; + setMissingParents(thing1); + thing1.canRecruit = 0; + thing1.relationship = 2; + let cost = slaveCost(thing1); + const contractCost = cost; + + // Child + const thing2 = generateRelatedSlave(thing1, "twin"); + thing2.relationship = 2; + thing2.relationshipTarget = thing1.ID; + + thing1.relationshipTarget = thing2.ID; + + recetsFamilyNames(thing1, thing2); + + const { + His, + him + } = getPronouns(thing2); + const { + sister2, + } = getPronouns(thing1).appendSuffix("2"); + + App.Events.addParagraph(node, [ + `A pair of young slaves is going door to door offering themselves for sale on behalf of their owner. It's rare to see a slave obedient enough to be entrusted with their own sale, and the price alone suggests there's something interesting, so you let them up. They stand in front of your desk and wait for instructions. They appear to be twins, and are dressed identically: they're wearing very skimpy miniskirts and bikini tops so brief that their areolae are clearly visible around the scrap of cloth over each nipple. You instruct them to tell you about themselves.` + ]); + + App.Events.addParagraph(node, [ + `One of them speaks up.`, + Spoken(thing2, `"We're twins, ${(V.PC.title !== 0) ? "sir" : "ma'am"}. Identical twins. We've also been trained ${(thing2.actualAge > V.minimumSlaveAge) ? `ever since we turned ${V.minimumSlaveAge}` : ``} to be completely obedient, ${(V.PC.title !== 0) ? "sir" : "ma'am"}, in everything, and sexually proficient."`) + ]); + + App.Events.addParagraph(node, [Spoken(thing2, `"We cost ${cashFormat(contractCost)}, ${(V.PC.title !== 0) ? "sir" : "ma'am"}."`)]); + App.UI.DOM.appendNewElement("p", node, `${His} ${sister2} is identical.`, "detail"); + + const newSlaves = [thing1, thing2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(thing1); + cashX(forceNeg(contractCost), "slaveTransfer", thing1); + newSlave(thing2); + cashX(forceNeg(contractCost), "slaveTransfer", thing2); + return `They giggle and kiss each other rather sexually, pressing their nearly identical bodies closely together. They're clearly very well trained.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestBrotherBrother.js b/src/events/resETS/recetsIncestBrotherBrother.js new file mode 100644 index 0000000000000000000000000000000000000000..21dcd2a121b78e98dffe72844a3a2ec30c1db93b --- /dev/null +++ b/src/events/resETS/recetsIncestBrotherBrother.js @@ -0,0 +1,104 @@ +App.Events.recetsIncestBrotherBrother = class recetsIncestBrotherBrother extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeIncest !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + const contractCost = 10000; + const brother1 = GenerateNewSlave("XY", { + minAge: Math.max(V.potencyAge + 2, V.minimumSlaveAge + 2), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1 + }); + brother1.origin = "$He offered to become your mother to protect $his incestuous relationship."; + brother1.career = "a dropout"; + brother1.devotion = random(-15, 15); + brother1.trust = random(-15, 15); + brother1.oldDevotion = brother1.devotion; + brother1.face = random(15, 40); + brother1.clothes = "conservative clothing"; + setHealth(brother1, jsRandom(20, 40), 0, 0, 0); + brother1.attrXY = 80; + brother1.pubicHStyle = "bushy"; + if (brother1.behavioralFlaw === "hates men") { + brother1.behavioralFlaw = "none"; + } + brother1.behavioralQuirk = "sinful"; + setMissingParents(brother1); + brother1.canRecruit = 0; + brother1.relationship = 3; + /* cost not needed, no option to sell */ + + // Child + const brother2 = generateRelatedSlave(brother1, "brother"); + brother2.slaveName = brother2.birthName; + brother2.actualAge -= 2; + brother2.physicalAge = brother2.actualAge; + brother2.visualAge = brother2.actualAge; + brother2.ovaryAge = brother2.actualAge; + brother2.height += random(-5, 5); + brother2.pubicHStyle = "shaved"; + brother2.dick += 2; + brother2.balls += 2; + brother2.scrotum = brother2.balls; + if (brother2.foreskin) { + brother2.foreskin = brother2.dick; + } + brother2.relationship = 3; + brother2.relationshipTarget = brother1.ID; + if (brother2.physicalAge < 6) { + brother2.teeth = "baby"; + } else if (brother2.physicalAge < 12) { + brother2.teeth = "mixed"; + } + brother1.relationshipTarget = brother2.ID; + + const familyName = recetsFamilyNames(brother1, brother2); + + let name1 = brother2.slaveName; + if (familyName) { + name1 += " " + brother2.slaveSurname; + } + WombChangeGene(brother1, "fatherName", name1); + let name2 = brother1.slaveName; + if (familyName) { + name2 += " " + brother1.slaveSurname; + } + WombChangeGene(brother1, "motherName", name2); + + const { + sister + } = getPronouns(brother2); + const {HeA} = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are two ${sister}s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [brother1, brother2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(brother2); + newSlave(brother1); + cashX(forceNeg(contractCost), "slaveTransfer", brother1); + cashX(forceNeg(contractCost), "slaveTransfer", brother2); + return `They hug each other tightly as the older ${sister} slips a hand down the younger's pants. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestBrotherSister.js b/src/events/resETS/recetsIncestBrotherSister.js new file mode 100644 index 0000000000000000000000000000000000000000..2f4cbec83cd4d0f74d027dca01b6a8025da6aea2 --- /dev/null +++ b/src/events/resETS/recetsIncestBrotherSister.js @@ -0,0 +1,102 @@ +App.Events.recetsIncestBrotherSister = class recetsIncestBrotherSister extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.seeDicks !== 0, + () => V.seeIncest !== 0, + () => V.seePreg !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Sister + const contractCost = 10000; + let brother = GenerateNewSlave("XX", { + minAge: Math.max(V.fertilityAge + 2, V.minimumSlaveAge + 2), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1 + }); + brother.origin = "$He offered to become your mother to protect $his incestuous relationship."; + brother.career = "a dropout"; + brother.devotion = random(-15, 15); + brother.trust = random(-15, 15); + brother.oldDevotion = brother.devotion; + brother.ovaries = 1; + brother.face = random(15, 40); + brother.attrXX = 80; + brother.skill.vaginal = 15; + brother.clothes = "cutoffs and a t-shirt"; + setHealth(brother, jsRandom(20, 40), 0, 0, 0); + brother.pubicHStyle = "in a strip"; + if (brother.behavioralFlaw === "hates women") { + brother.behavioralFlaw = "none"; + } + brother.behavioralQuirk = "sinful"; + setMissingParents(brother); + brother.canRecruit = 0; + brother.relationship = 3; + /* cost not needed, no option to sell */ + + // Brother + const sis = generateRelatedSlave(brother, "brother"); + sis.slaveName = sis.birthName; + sis.actualAge -= 2; + sis.physicalAge = sis.actualAge; + sis.visualAge = sis.actualAge; + sis.ovaryAge = sis.actualAge; + resyncSlaveHight(sis); + sis.pubicHStyle = "shaved"; + sis.relationship = 3; + sis.relationshipTarget = brother.ID; + + const familyName = recetsFamilyNames(brother, sis); + + let name1 = sis.slaveName; + if (familyName) { + name1 += " " + sis.slaveSurname; + } + WombChangeGene(brother, "fatherName", name1); + let name2 = brother.slaveName; + if (familyName) { + name2 += " " + brother.slaveSurname; + } + WombChangeGene(brother, "motherName", name2); + + const { + His, sister + } = getPronouns(sis); + const { + sister2 + } = getPronouns(brother).appendSuffix("2"); + const { + HeA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a ${sister2} and ${sister} who had to flee their home after their parents found out they were having sex with each other. ${His} gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [brother, sis]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(sis); + newSlave(brother); + cashX(forceNeg(contractCost), "slaveTransfer", brother); + cashX(forceNeg(contractCost), "slaveTransfer", sis); + return `They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestFatherDaughter.js b/src/events/resETS/recetsIncestFatherDaughter.js new file mode 100644 index 0000000000000000000000000000000000000000..95bdb9e4b7699a9f152950f4bc8d41d1c4a0c74f --- /dev/null +++ b/src/events/resETS/recetsIncestFatherDaughter.js @@ -0,0 +1,142 @@ +App.Events.recetsIncestFatherDaughter = class recetsIncestFatherDaughter extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.seeDicks !== 0, + () => V.seeIncest !== 0, + () => V.seePreg !== 0, + () => V.arcologies[0].FSRestart === "unset", + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Father + const contractCost = 10000; + const father = GenerateNewSlave("XY", { + minAge: Math.max(V.potencyAge + 20, V.fertilityAge + 20, V.minimumSlaveAge + 20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1 + }); + father.origin = "$He offered to become your mother to protect $his incestuous relationship."; + father.devotion = random(-15, 15); + father.trust = random(-15, 15); + father.oldDevotion = father.devotion; + father.dick = 4; + father.balls = 3; + father.scrotum = 3; + father.face = 15; + father.faceShape = "masculine"; + father.clothes = "conservative clothing"; + setHealth(father, jsRandom(20, 40), 0, 0, 0); + if (father.behavioralFlaw === "hates women") { + father.behavioralFlaw = "none"; + } + father.behavioralQuirk = "sinful"; + father.canRecruit = 0; + father.relationship = 3; + /* cost not needed, no option to sell */ + + // Daughter + const daughter = generateRelatedSlave(father, "daughter"); + daughter.slaveName = daughter.birthName; + daughter.career = "a student"; + daughter.actualAge -= 18; + if (daughter.actualAge > 20) { + if (V.fertilityAge >= V.minimumSlaveAge) { + daughter.actualAge = random(V.fertilityAge, 20); + } else { + daughter.actualAge = random(V.minimumSlaveAge, 20); + } + } + daughter.physicalAge = daughter.actualAge; + daughter.visualAge = daughter.actualAge; + daughter.ovaryAge = daughter.actualAge; + daughter.genes = "XX"; + resyncSlaveHight(daughter); + daughter.pubertyXX = 1; + daughter.pubertyXY = 0; + daughter.vagina = 3; + daughter.preg = 30; + daughter.dick = 0; + daughter.ovaries = 1; + daughter.balls = 0; + daughter.scrotum = 0; + daughter.clit = 1; + daughter.prostate = 0; + daughter.voice = 2; + daughter.skill.vaginal = 50; + daughter.boobs = (random(3, 6) * 100); + daughter.pregType = 1; + daughter.pregKnown = 1; + daughter.pregWeek = daughter.preg; + daughter.pregSource = father.ID; + SetBellySize(daughter); + daughter.faceShape = "cute"; + if (daughter.behavioralFlaw === "hates men") { + daughter.behavioralFlaw = "none"; + } + daughter.behavioralQuirk = "none"; + daughter.sexualQuirk = "perverted"; + daughter.relationship = 3; + daughter.relationshipTarget = father.ID; + if (daughter.physicalAge < 6) { + daughter.teeth = "baby"; + } else if (daughter.physicalAge < 12) { + daughter.teeth = "mixed"; + } + + father.relationshipTarget = daughter.ID; + + const familyName = recetsFamilyNames(father, daughter); + + let name1 = daughter.slaveName; + if (familyName) { + name1 += " " + daughter.slaveSurname; + } + WombChangeGene(father, "fatherName", name1); + let name2 = father.slaveName; + if (familyName) { + name2 += " " + father.slaveSurname; + } + WombChangeGene(father, "motherName", name2); + + const { + He, + he, his + } = getPronouns(daughter); + const { + His2, + daughter2, his2, him2 + } = getPronouns(father).appendSuffix("2"); + const { + HeA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and ${daughter2} who had to flee their home after ${his} wife found out ${he} was having sex with their ${daughter2}. ${His2} gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost*2)} to enslave the two of them.`, "detail"); + + const newSlaves = [father, daughter]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(daughter); + newSlave(father); + cashX(forceNeg(contractCost), "slaveTransfer", father); + cashX(forceNeg(contractCost), "slaveTransfer", daughter); + return `The ${daughter2} cheers happily and hugs ${his2} relieved father. ${He} leans in and kisses ${him2} deeply. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestFatherSon.js b/src/events/resETS/recetsIncestFatherSon.js new file mode 100644 index 0000000000000000000000000000000000000000..c2951c5ca9a90d4570231ab315ef56ad42c17b55 --- /dev/null +++ b/src/events/resETS/recetsIncestFatherSon.js @@ -0,0 +1,108 @@ +App.Events.recetsIncestFatherSon = class recetsIncestFatherSon extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeIncest !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Father + const contractCost = 10000; + let father = GenerateNewSlave("XY", { + minAge: Math.max(V.potencyAge + 20, V.minimumSlaveAge + 20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1 + }); + father.origin = "$He offered to become your mother to protect $his incestuous relationship."; + father.devotion = random(-15, 15); + father.trust = random(-15, 15); + father.oldDevotion = father.devotion; + father.dick = 4; + father.balls = 3; + father.scrotum = 3; + father.face = random(15, 50); + father.faceShape = "masculine"; + father.clothes = "conservative clothing"; + setHealth(father, jsRandom(20, 40), 0, 0, 0); + if (father.behavioralFlaw === "hates men") { + father.behavioralFlaw = "none"; + } + father.behavioralQuirk = "sinful"; + father.canRecruit = 0; + father.relationship = 3; + /* cost not needed, no option to sell */ + + // Child + const son = generateRelatedSlave(father, "son"); + son.slaveName = son.birthName; + son.career = "a student"; + son.actualAge -= 18; + if (son.actualAge > 20) { + if (V.potencyAge >= V.minimumSlaveAge) { + son.actualAge = random(V.potencyAge, 20); + } else { + son.actualAge = random(V.minimumSlaveAge, 20); + } + } + son.physicalAge = son.actualAge; + son.visualAge = son.actualAge; + son.ovaryAge = son.actualAge; + resyncSlaveHight(son); + son.vagina = -1; + if (son.actualAge < V.potencyAge) { + son.pubertyXY = 0; + } + son.dick -= 2; + son.balls -= 1; + son.scrotum -= 1; + son.relationship = 3; + son.relationshipTarget = father.ID; + if (son.physicalAge < 6) { + son.teeth = "baby"; + } else if (son.physicalAge < 12) { + son.teeth = "mixed"; + } + + father.relationshipTarget = son.ID; + + recetsFamilyNames(father, son); + + const { + he, his + } = getPronouns(son); + const { + daughter2, his2 + } = getPronouns(father).appendSuffix("2"); + const { + HeA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and ${daughter2} who had to flee their home after ${his} wife found out ${he} was having sex with their ${daughter2}. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [father, son]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(son); + newSlave(father); + cashX(forceNeg(contractCost), "slaveTransfer", father); + cashX(forceNeg(contractCost), "slaveTransfer", son); + return `The father hugs ${his} ${daughter2} tight and slips a hand down ${his2} pants. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestMotherDaughter.js b/src/events/resETS/recetsIncestMotherDaughter.js new file mode 100644 index 0000000000000000000000000000000000000000..279b7311025f4612a9b54af6f54fcad7e4673221 --- /dev/null +++ b/src/events/resETS/recetsIncestMotherDaughter.js @@ -0,0 +1,127 @@ +App.Events.recetsIncestMotherDaughter = class recetsIncestMotherDaughter extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeIncest !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Mother + const contractCost = 10000; + const mother = GenerateNewSlave("XX", { + minAge: Math.max(V.fertilityAge + 20, V.minimumSlaveAge + 20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1 + }); + mother.origin = "$He offered to become your mother to protect $his incestuous relationship."; + mother.career = "a housewife"; + mother.devotion = random(-15, 15); + mother.trust = random(-15, 15); + mother.oldDevotion = mother.devotion; + mother.vagina = 2; + mother.ovaries = 1; + mother.counter.birthsTotal++; + mother.face = random(15, 60); + mother.skill.vaginal = 35; + mother.anus = 1; + mother.boobs += 600; + mother.lactation = 1; + mother.lactationDuration = 2; + mother.boobsImplant = 0; + mother.boobsImplantType = "none"; + mother.butt += 2; + mother.buttImplant = 0; + mother.buttImplantType = "none"; + mother.clothes = "conservative clothing"; + setHealth(mother, jsRandom(20, 40), 0, 0, 0); + mother.pubicHStyle = "bushy"; + if (mother.behavioralFlaw === "hates women") { + mother.behavioralFlaw = "none"; + } + mother.behavioralQuirk = "sinful"; + mother.canRecruit = 0; + mother.relationship = 3; + /* cost not needed, no option to sell */ + + // Child + const daughter = generateRelatedSlave(mother, "daughter"); + daughter.slaveName = daughter.birthName; + daughter.career = "a student"; + daughter.actualAge -= 18; + if (daughter.actualAge > 20) { + if (V.fertilityAge >= V.minimumSlaveAge) { + daughter.actualAge = random(V.fertilityAge, 20); + } else { + daughter.actualAge = random(V.minimumSlaveAge, 20); + } + } + daughter.physicalAge = daughter.actualAge; + daughter.visualAge = daughter.actualAge; + daughter.ovaryAge = daughter.actualAge; + resyncSlaveHight(daughter); + daughter.vagina = 0; + if (daughter.actualAge < V.fertilityAge) { + daughter.pubertyXX = 0; + } + daughter.vagina = 0; + daughter.counter.birthsTotal = 0; + daughter.skill.vaginal = 15; + daughter.anus = 0; + daughter.boobs -= 300; + daughter.lactation = 0; + daughter.lactationDuration = 0; + daughter.boobsImplant = 0; + daughter.boobsImplantType = "none"; + daughter.butt -= 2; + daughter.relationship = 3; + daughter.relationshipTarget = mother.ID; + if (daughter.physicalAge < 6) { + daughter.teeth = "baby"; + } else if (daughter.physicalAge < 12) { + daughter.teeth = "mixed"; + } + + mother.relationshipTarget = daughter.ID; + + recetsFamilyNames(mother, daughter); + + const { + He, + he, his + } = getPronouns(daughter); + const { + daughter2, his2, him2 + } = getPronouns(mother).appendSuffix("2"); + const { + HeA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a mother and ${daughter2} who had to flee their home after ${his} husband found out ${he} was having sex with their ${daughter2}. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [mother, daughter]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(daughter); + newSlave(mother); + cashX(forceNeg(contractCost), "slaveTransfer", mother); + cashX(forceNeg(contractCost), "slaveTransfer", daughter); + return `The ${daughter2} cheers happily and hugs ${his2} relieved mother. ${He} leans in and kisses ${him2} deeply. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestMotherSon.js b/src/events/resETS/recetsIncestMotherSon.js new file mode 100644 index 0000000000000000000000000000000000000000..79351b9b9f66e8436d5b6a641ac1f7dee4cbdb87 --- /dev/null +++ b/src/events/resETS/recetsIncestMotherSon.js @@ -0,0 +1,160 @@ +App.Events.recetsIncestMotherSon = class recetsIncestMotherSon extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.seeDicks !== 0, + () => V.seeIncest !== 0, + () => V.seePreg !== 0, + () => V.arcologies[0].FSRestart === "unset", + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Mother + const contractCost = 10000; + const mother = GenerateNewSlave("XX", { + minAge: Math.max(V.fertilityAge + 20, V.potencyAge + 20, V.minimumSlaveAge + 20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1 + }); + mother.origin = "$He offered to become your mother to protect $his incestuous relationship."; + mother.career = "a housewife"; + mother.devotion = random(-15, 15); + mother.trust = random(-15, 15); + mother.oldDevotion = mother.devotion; + mother.vagina = 2; + mother.preg = 31; + mother.pregType = 1; + mother.pregKnown = 1; + mother.pregWeek = mother.preg; + mother.belly = 8000; + mother.bellyPreg = 8000; + mother.ovaries = 1; + mother.counter.birthsTotal++; + mother.face = 15; + mother.skill.vaginal = 35; + mother.anus = 1; + mother.boobs += 600; + mother.lactation = 1; + mother.lactationDuration = 2; + mother.boobsImplant = 0; + mother.boobsImplantType = "none"; + mother.butt += 2; + mother.buttImplant = 0; + mother.buttImplantType = "none"; + mother.clothes = "conservative clothing"; + setHealth(mother, jsRandom(20, 40), 0, 0, 0); + mother.pubicHStyle = "bushy"; + if (mother.behavioralFlaw === "hates men") { + mother.behavioralFlaw = "none"; + } + mother.behavioralQuirk = "sinful"; + mother.canRecruit = 0; + mother.relationship = 3; + /* cost not needed, no option to sell */ + + // Son + const son = generateRelatedSlave(mother, "son"); + son.slaveName = son.birthName; + son.career = "a student"; + son.actualAge -= 18; + if (son.actualAge > 20) { + if (V.potencyAge >= V.minimumSlaveAge) { + son.actualAge = random(V.potencyAge, 20); + } else { + son.actualAge = random(V.minimumSlaveAge, 20); + } + } + son.physicalAge = son.actualAge; + son.visualAge = son.actualAge; + son.ovaryAge = son.actualAge; + son.genes = "XY"; + resyncSlaveHight(son); + son.vagina = -1; + son.pubertyXX = 0; + son.pubertyXY = 1; + WombFlush(son); + SetBellySize(son); + son.dick = 2; + son.foreskin = 3; + son.ovaries = 0; + son.balls = 2; + son.scrotum = 2; + son.prostate = 1; + son.clit = 0; + son.skill.vaginal = 0; + son.faceShape = "cute"; + son.boobs = 0; + son.counter.birthsTotal = 0; + son.lactation = 0; + son.lactationDuration = 0; + son.anus = 0; + son.butt -= 2; + if (son.behavioralFlaw === "hates women") { + son.behavioralFlaw = "none"; + } + son.behavioralQuirk = "none"; + son.sexualQuirk = "perverted"; + son.relationship = 3; + son.relationshipTarget = mother.ID; + if (son.physicalAge < 6) { + son.teeth = "baby"; + } else if (son.physicalAge < 12) { + son.teeth = "mixed"; + } + + mother.pregSource = son.ID; + mother.relationshipTarget = son.ID; + + const familyName = recetsFamilyNames(mother, son); + + let name1 = son.slaveName; + if (familyName) { + name1 += " " + son.slaveSurname; + } + WombChangeGene(mother, "fatherName", name1); + let name2 = mother.slaveName; + if (familyName) { + name2 += " " + mother.slaveSurname; + } + WombChangeGene(mother, "motherName", name2); + + const { + He, + his + } = getPronouns(son); + const { + daughter2, his2, him2 + } = getPronouns(mother).appendSuffix("2"); + const { + HeA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a mother and ${daughter2} who had to flee their home after ${his} husband found out the child in ${his} rounded middle was not his, but his ${daughter2}'s. They feel that life in an arcology together, even as slaves, would be better than their new life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [mother, son]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(son); + newSlave(mother); + cashX(forceNeg(contractCost), "slaveTransfer", mother); + cashX(forceNeg(contractCost), "slaveTransfer", son); + return `The ${daughter2} cheers happily and hugs ${his2} relieved mother. ${He} leans in and kisses ${him2} deeply. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestSisterSister.js b/src/events/resETS/recetsIncestSisterSister.js new file mode 100644 index 0000000000000000000000000000000000000000..71c811252bde6af7eb9943d7dc6da58282ee50a1 --- /dev/null +++ b/src/events/resETS/recetsIncestSisterSister.js @@ -0,0 +1,139 @@ +App.Events.recetsIncestSisterSister = class recetsIncestSisterSister extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.seeIncest !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Sister + const contractCost = 10000; + const sis1 = GenerateNewSlave("XX", { + minAge: Math.max(V.fertilityAge + 2, V.potencyAge + 2, V.minimumSlaveAge + 2), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1 + }); + sis1.origin = "$He offered to become your mother to protect $his incestuous relationship."; + sis1.career = "a dropout"; + sis1.devotion = random(-15, 15); + sis1.trust = random(-15, 15); + sis1.oldDevotion = sis1.devotion; + sis1.vagina = 1; + sis1.preg = 31; + sis1.pregType = 1; + sis1.pregKnown = 1; + sis1.pregWeek = sis1.preg; + sis1.belly = 8000; + sis1.bellyPreg = 8000; + sis1.ovaries = 1; + sis1.face = random(15, 40); + sis1.skill.vaginal = 15; + sis1.anus = 1; + sis1.lactation = 1; + sis1.lactationDuration = 2; + sis1.clothes = "cutoffs and a t-shirt"; + setHealth(sis1, jsRandom(20, 40), 0, 0, 0); + sis1.pubicHStyle = "in a strip"; + if (sis1.behavioralFlaw === "hates men") { + sis1.behavioralFlaw = "none"; + } + sis1.behavioralQuirk = "sinful"; + setMissingParents(sis1); + sis1.canRecruit = 0; + sis1.relationship = 3; + /* cost not needed, no option to sell */ + + // Child + const sis2 = generateRelatedSlave(sis1, "sister"); + sis2.slaveName = sis2.birthName; + sis2.actualAge -= 2; + sis2.physicalAge = sis2.actualAge; + sis2.visualAge = sis2.actualAge; + sis2.ovaryAge = sis2.actualAge; + sis2.genes = "XY"; + resyncSlaveHight(sis2); + sis2.vagina = -1; + sis2.pubertyXX = 0; + sis2.pubertyXY = 1; + WombFlush(sis2); + SetBellySize(sis2); + sis2.dick = 2; + sis2.foreskin = 2; + sis2.ovaries = 0; + sis2.balls = 2; + sis2.scrotum = 2; + sis2.prostate = 1; + sis2.clit = 0; + sis2.skill.vaginal = 0; + sis2.faceShape = "masculine"; + sis2.boobs = 0; + sis2.lactation = 0; + sis2.lactationDuration = 0; + sis2.anus = 0; + sis2.pubicHStyle = "bushy"; + if (sis2.behavioralFlaw === "hates women") { + sis2.behavioralFlaw = "none"; + } + sis2.behavioralQuirk = "none"; + sis2.sexualQuirk = "perverted"; + sis2.clothes = "conservative clothing"; + sis2.relationship = 3; + sis2.relationshipTarget = sis1.ID; + if (sis2.physicalAge < 6) { + sis2.teeth = "baby"; + } else if (sis2.physicalAge < 12) { + sis2.teeth = "mixed"; + } + + sis1.pregSource = sis2.ID; + sis1.relationshipTarget = sis2.ID; + + const familyName = recetsFamilyNames(sis1, sis2); + + let name1 = sis2.slaveName; + if (familyName) { + name1 += " " + sis2.slaveSurname; + } + WombChangeGene(sis1, "fatherName", name1); + let name2 = sis1.slaveName; + if (familyName) { + name2 += " " + sis1.slaveSurname; + } + WombChangeGene(sis1, "motherName", name2); + + const { + sister + } = getPronouns(sis2); + const { + HeA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are two ${sister}s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [sis1, sis2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(sis2); + newSlave(sis1); + cashX(forceNeg(contractCost), "slaveTransfer", sis1); + cashX(forceNeg(contractCost), "slaveTransfer", sis2); + return `They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestTwinBrother.js b/src/events/resETS/recetsIncestTwinBrother.js new file mode 100644 index 0000000000000000000000000000000000000000..baefaa5678959f73390ca7329cebed03cdc3f601 --- /dev/null +++ b/src/events/resETS/recetsIncestTwinBrother.js @@ -0,0 +1,89 @@ +App.Events.recetsIncestTwinBrother = class recetsIncestTwinBrother extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeIncest !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Parent + const contractCost = 10000; + const brother1 = GenerateNewSlave("XY", { + minAge: Math.max(V.potencyAge, V.minimumSlaveAge), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1 + }); + brother1.origin = "$He offered to become your mother to protect $his incestuous relationship."; + brother1.devotion = random(-15, 15); + brother1.trust = random(-15, 15); + brother1.oldDevotion = brother1.devotion; + brother1.face = random(15, 40); + brother1.clothes = "conservative clothing"; + setHealth(brother1, jsRandom(20, 40), 0, 0, 0); + brother1.attrXY = 80; + brother1.pubicHStyle = "bushy"; + if (brother1.behavioralFlaw === "hates men") { + brother1.behavioralFlaw = "none"; + } + brother1.behavioralQuirk = "sinful"; + setMissingParents(brother1); + brother1.canRecruit = 0; + brother1.relationship = 3; + + // Child + const brother2 = generateRelatedSlave(brother1, "twin"); + brother2.slaveName = brother2.birthName; + brother2.height += random(-5, 5); + brother2.relationship = 3; + brother2.relationshipTarget = brother1.ID; + brother1.relationshipTarget = brother2.ID; + + + const familyName = recetsFamilyNames(brother1, brother2); + + let name1 = brother2.slaveName; + if (familyName) { + name1 += " " + brother2.slaveSurname; + } + WombChangeGene(brother1, "fatherName", name1); + let name2 = brother1.slaveName; + if (familyName) { + name2 += " " + brother1.slaveSurname; + } + WombChangeGene(brother1, "motherName", name2); + + const { + sister + } = getPronouns(brother2); + + const {HeA} = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are twin ${sister}s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [brother1, brother2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(brother2); + newSlave(brother1); + cashX(forceNeg(contractCost), "slaveTransfer", brother1); + cashX(forceNeg(contractCost), "slaveTransfer", brother2); + return `They hug each other tightly as they slip a hand down the other's pants. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestTwinSister.js b/src/events/resETS/recetsIncestTwinSister.js new file mode 100644 index 0000000000000000000000000000000000000000..4b91805311c24dc22d174e4e70340d4bf76807cc --- /dev/null +++ b/src/events/resETS/recetsIncestTwinSister.js @@ -0,0 +1,91 @@ +App.Events.recetsIncestTwinSister = class recetsIncestTwinSister extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.seeIncest !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Parent + const contractCost = 10000; + const sis1 = GenerateNewSlave("XX", { + minAge: Math.max(V.fertilityAge, V.minimumSlaveAge), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1 + }); + sis1.origin = "$He offered to become your mother to protect $his incestuous relationship."; + sis1.devotion = random(-15, 15); + sis1.trust = random(-15, 15); + sis1.oldDevotion = sis1.devotion; + sis1.face = random(15, 40); + sis1.attrXX = 80; + sis1.skill.vaginal = 15; + sis1.clothes = "cutoffs and a t-shirt"; + setHealth(sis1, jsRandom(20, 40), 0, 0, 0); + sis1.pubicHStyle = "in a strip"; + if (sis1.behavioralFlaw === "hates women") { + sis1.behavioralFlaw = "none"; + } + sis1.behavioralQuirk = "sinful"; + setMissingParents(sis1); + sis1.canRecruit = 0; + sis1.relationship = 3; + /* cost not needed, no option to sell */ + + // Child + const sis2 = generateRelatedSlave(sis1, "twin"); + sis2.slaveName = sis2.birthName; + sis2.height += random(-5, 5); + sis2.relationship = 3; + sis2.relationshipTarget = sis1.ID; + sis1.relationshipTarget = sis2.ID; + + + const familyName = recetsFamilyNames(sis1, sis2); + + let name1 = sis2.slaveName; + if (familyName) { + name1 += " " + sis2.slaveSurname; + } + WombChangeGene(sis1, "fatherName", name1); + let name2 = sis1.slaveName; + if (familyName) { + name2 += " " + sis1.slaveSurname; + } + WombChangeGene(sis1, "motherName", name2); + + const {sister} = getPronouns(sis2); + + const { + HeA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are twin ${sister}s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [sis1, sis2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(sis2); + newSlave(sis1); + cashX(forceNeg(contractCost), "slaveTransfer", sis1); + cashX(forceNeg(contractCost), "slaveTransfer", sis2); + return `They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsIncestTwinsMixed.js b/src/events/resETS/recetsIncestTwinsMixed.js new file mode 100644 index 0000000000000000000000000000000000000000..4d133169d91011d1ddcb241ef4ab393e81de9ec3 --- /dev/null +++ b/src/events/resETS/recetsIncestTwinsMixed.js @@ -0,0 +1,102 @@ +App.Events.recetsIncestTwinsMixed = class recetsIncestTwinsMixed extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeDicks !== 100, + () => V.seeIncest !== 0, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Parent + const contractCost = 10000; + const sis1 = GenerateNewSlave("XX", { + minAge: Math.max(V.fertilityAge, V.minimumSlaveAge), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1 + }); + sis1.vagina = 1; + sis1.origin = "$He offered to become your mother to protect $his incestuous relationship."; + sis1.devotion = random(-15, 15); + sis1.trust = random(-15, 15); + sis1.oldDevotion = sis1.devotion; + sis1.face = random(15, 40); + sis1.attrXX = 80; + sis1.skill.vaginal = 15; + sis1.clothes = "cutoffs and a t-shirt"; + setHealth(sis1, jsRandom(20, 40), 0, 0, 0); + sis1.pubicHStyle = "in a strip"; + if (sis1.behavioralFlaw === "hates men") { + sis1.behavioralFlaw = "none"; + } + sis1.behavioralQuirk = "sinful"; + setMissingParents(sis1); + sis1.canRecruit = 0; + sis1.relationship = 3; + /* cost not needed, no option to sell */ + + // Child + const sis2 = generateRelatedSlave(sis1, "twins", true); + sis2.slaveName = sis2.birthName; + sis2.genes = "XY"; + sis2.height += random(-5, 5); + sis2.vagina = -1; + sis2.pubertyXX = 0; + sis2.pubertyXY = 1; + sis2.dick = 2; + sis2.foreskin = 2; + sis2.ovaries = 0; + sis2.balls = 2; + sis2.scrotum = 2; + sis2.prostate = 1; + sis2.clit = 0; + sis2.skill.vaginal = 0; + sis2.faceShape = "masculine"; + sis2.boobs = 0; + sis2.lactation = 0; + sis2.lactationDuration = 0; + sis2.anus = 0; + sis2.pubicHStyle = "bushy"; + if (sis2.behavioralFlaw === "hates women") { + sis2.behavioralFlaw = "none"; + } + sis2.behavioralQuirk = "none"; + sis2.sexualQuirk = "perverted"; + sis2.clothes = "conservative clothing"; + sis2.relationship = 3; + sis2.relationshipTarget = sis1.ID; + sis1.relationshipTarget = sis2.ID; + + + recetsFamilyNames(sis1, sis2); + + const {HeA} = getPronouns(assistant.pronouns().main).appendSuffix("A"); + + App.Events.addParagraph(node, [`You receive so many messages, as a noted titan of the new Free Cities world, that ${V.assistant.name} has to be quite draconian in culling them. ${HeA} lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were.`]); + + App.Events.addParagraph(node, [`This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are twins who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets.`]); + + App.Events.addParagraph(node, [`${capFirstChar(V.assistant.name)} assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection.`]); + + App.UI.DOM.appendNewElement("p", node, `It would cost ${cashFormat(contractCost * 2)} to enslave the two of them.`, "detail"); + + const newSlaves = [sis1, sis2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave them.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(sis2); + newSlave(sis1); + cashX(forceNeg(contractCost), "slaveTransfer", sis1); + cashX(forceNeg(contractCost), "slaveTransfer", sis2); + return `They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse.`; + } + } +}; diff --git a/src/events/resETS/recetsMatchedPair.js b/src/events/resETS/recetsMatchedPair.js new file mode 100644 index 0000000000000000000000000000000000000000..91f312350fa250cac9a4474f01fbd99ce3308f38 --- /dev/null +++ b/src/events/resETS/recetsMatchedPair.js @@ -0,0 +1,125 @@ +App.Events.recetsMatchedPair = class recetsMatchedPair extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeDicks !== 100, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Parent + /* contractCost not needed, no option to sell */ + const sis1 = GenerateNewSlave("XX", {minAge: 12, maxAge: 21, disableDisability: 1}); + sis1.origin = "$He was brought up in a radical mother school to match $his twin."; + sis1.career = "a mother"; + sis1.devotion = random(25, 45); + sis1.trust = random(-15, 15); + sis1.oldDevotion = sis1.devotion; + setHealth(sis1, jsRandom(0, 20), undefined, undefined, 0, 0); + sis1.anus = 1; + sis1.vagina = -1; + sis1.dick = 1; + if (sis1.foreskin > 0) { + sis1.foreskin = sis1.dick; + } + if (sis1.balls > 0) { + sis1.scrotum = sis1.balls; + } + sis1.balls = 1; + sis1.ovaries = 0; + sis1.clit = 0; + sis1.weight = 0; + sis1.face = 15; + sis1.skill.vaginal = 0; + sis1.skill.oral = 15; + sis1.skill.anal = 15; + sis1.boobs = either(500, 600); + sis1.boobsImplant = 400; + sis1.boobsImplantType = "normal"; + sis1.butt = either(2, 3); + sis1.buttImplant = 1; + sis1.buttImplantType = "normal"; + sis1.preg = -3; + sis1.hStyle = "tails"; + sis1.pubicHStyle = "waxed"; + sis1.underArmHStyle = "waxed"; + sis1.sexualFlaw = "none"; + sis1.behavioralFlaw = "none"; + setMissingParents(sis1); + sis1.canRecruit = 0; + sis1.relationship = 2; + let cost = slaveCost(sis1); + let contractCost = cost; + + // Child + const sis2 = generateRelatedSlave(sis1, "twin"); + sis2.slaveName = sis2.birthName; + sis2.vagina = 1; + sis2.preg = -1; + sis2.dick = 0; + sis2.scrotum = 0; + sis2.clit = 2; + sis2.ovaries = 1; + sis2.balls = 0; + sis2.skill.vaginal = 15; + sis2.boobsImplant = 0; + sis2.boobsImplantType = "none"; + sis2.buttImplant = 0; + sis2.buttImplantType = "none"; + sis2.relationship = 2; + + sis2.relationshipTarget = sis1.ID; + sis1.relationshipTarget = sis2.ID; + + recetsFamilyNames(sis1, sis2); + + const { + His, + his, him + } = getPronouns(sis2); + const { + he2, sister2, + } = getPronouns(sis1).appendSuffix("2"); + + let r = []; + + App.Events.addParagraph(node, [ + `A pair of young slaves is going door to door offering themselves for sale on behalf of their owner. It's rare to see a slave obedient enough to be entrusted with their own sale, and the price alone suggests there's something interesting, so you let them up. They stand in front of your desk and wait for instructions. They appear to be twins, and are dressed identically: they're wearing very skimpy miniskirts and bikini tops so brief that their areolae are clearly visible around the scrap of cloth over each nipple. You instruct them to tell you about themselves.` + ]); + + App.Events.addParagraph(node, r); + r = []; + r.push( + `One of them speaks up.`, + Spoken(sis2, `"We're twins, ${(V.PC.title !== 0) ? "sir" : "ma'am"}. Fraternal twins. We have been given hormone treatments and surgery to match one another more closely, except for one detail."`), + `They lift their skirts; the speaker has a hormone-atrophied cock, while ${his} ${sister2} has a pussy, along with a large clit that almost matches ${his} sibling's member in size.`, + Spoken(sis2, `"We've also been trained ever since we turned ${V.minimumSlaveAge} to be completely obedient, ${(V.PC.title !== 0) ? "sir" : "ma'am"}, in everything, and sexually proficient."`) + ); + App.Events.addParagraph(node, r); + r = []; + r.push(Spoken(sis2, `"We cost ${cashFormat(contractCost)}, ${(V.PC.title !== 0) ? "sir" : "ma'am"}."`)); + App.Events.addParagraph(node, r); + App.UI.DOM.appendNewElement("p", node, `${His} ${sister2} is identical except that ${he2} is naturally female and lacks implants, having reached that size the normal way.`, "detail"); + + const newSlaves = [sis1, sis2]; + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Buy them both`, both, `This will cost in ${contractCost}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + App.Events.addResponses(node, choices); + + function both() { + newSlave(sis1); + cashX(forceNeg(contractCost), "slaveTransfer", sis1); + newSlave(sis2); + cashX(forceNeg(contractCost), "slaveTransfer", sis2); + return `They giggle and kiss each other rather sexually, pressing their nearly identical bodies closely together so their hips and shapely buttocks hide any sign of their difference. They're clearly very well trained.`; + } + } +}; diff --git a/src/events/resETS/recetsMismatchedPair.js b/src/events/resETS/recetsMismatchedPair.js new file mode 100644 index 0000000000000000000000000000000000000000..8432b86123515242e2423b1f19e412afcd937834 --- /dev/null +++ b/src/events/resETS/recetsMismatchedPair.js @@ -0,0 +1,171 @@ +App.Events.recetsMismatchedPair = class recetsMismatchedPair extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 0, + () => V.seeDicks !== 100, + () => (S.HeadGirl && S.HeadGirl.devotion > 50), + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + // Parent + const contractCost = 1500; + const bro = GenerateNewSlave("XY", { + minAge: V.minimumSlaveAge, maxAge: 21, disableDisability: 1, race: "nonslave" + }); + bro.origin = "$He was sold into slavery by $his older sister."; + bro.career = "a prostitute"; + bro.devotion = random(-15, 15); + bro.trust = random(-15, 15); + bro.oldDevotion = bro.devotion; + setHealth(bro, jsRandom(0, 20)); + bro.anus = 1; + bro.vagina = -1; + bro.dick = 1; + if (bro.foreskin > 0) { + bro.foreskin = bro.dick; + } + if (bro.balls > 0) { + bro.scrotum = bro.balls; + } + bro.clit = 0; + bro.balls = 1; + bro.face = 15; + bro.weight = 0; + bro.skill.vaginal = 0; + bro.skill.oral = 15; + bro.skill.anal = 15; + bro.boobs = 600; + bro.boobsImplant = 400; + bro.boobsImplantType = "normal"; + bro.butt = either(1, 2); + bro.preg = -2; + bro.birthWeek = 0; + bro.sexualFlaw = "hates anal"; + bro.hStyle = "tails"; + bro.pubicHStyle = "waxed"; + bro.underArmHStyle = "waxed"; + setMissingParents(bro); + bro.canRecruit = 0; + bro.rivalry = 3; + let cost = slaveCost(bro); + cost -= 1500; + + // Child + const sis = generateRelatedSlave(bro, "twin"); + sis.origin = "You acquired $him along with $his sissy sister due to $his inexperience as a madam."; + sis.career = "a pimp"; + sis.slaveName = sis.birthName; + sis.devotion -= 50; + sis.trust -= 10; + sis.oldDevotion = sis.devotion; + sis.anus = 0; + sis.vagina = 1; + sis.preg = -1; + sis.dick = 0; + sis.scrotum = 0; + sis.ovaries = 1; + sis.balls = 0; + sis.skill.vaginal = 0; + sis.skill.oral = 0; + sis.skill.anal = 0; + sis.behavioralFlaw = "arrogant"; + sis.sexualFlaw = "hates penetration"; + sis.boobs = either(400, 500); + sis.boobsImplant = 0; + sis.boobsImplantType = "none"; + sis.butt = either(2, 3); + if (sis.actualAge < 12) { + sis.actualAge = 16; + } else { + sis.actualAge += 4; + } + sis.visualAge = sis.actualAge; + sis.physicalAge = sis.actualAge; + sis.ovaryAge = sis.actualAge; + sis.rivalry = 3; + sis.rivalryTarget = bro.ID; + bro.rivalryTarget = sis.ID; + + recetsFamilyNames(bro, sis); + + const { + He, His, + he, his, him, himself, sister + } = getPronouns(sis); + const { + He2, His2, + he2, him2, his2, sister2, + } = getPronouns(bro).appendSuffix("2"); + const { + He3, + he3, + } = getPronouns(S.HeadGirl).appendSuffix("3"); + + const {title: Master} = getEnunciation(S.HeadGirl); + let r = []; + + App.Events.addParagraph(node, [ + `Your Head Girl comes to see you. ${He3} flags a slave posted for sale on your desk. The posting seems completely unimpressive — just a bitch barely past ${his} ${ordinalSuffix(sis.actualAge)} birthday with basic implants and a pathetic little dick — until ${he3} points out that the person posting ${him} for sale is ${his} ${sister2}. ${His} slightly older, naturally female ${sister2}. Who, to go by the pictures, the younger sibling has desperately been trying to mold ${himself} to look more like.`, + Spoken(S.HeadGirl, `"It won't show on the desk yet, but rumor is the little cunt's gotten them both in bad debt, ${Master}. You could grab them both cheap."`), + `You bring up a video feed of the one-room apartment they share. A man, clearly a client, is sitting on the bed while the sissy rides him. ${He}'s facing away from the john, so ${he} isn't trying to hide the fact that ${he} isn't happy selling ${his} anus for money. The older ${sister2} is naked, but ${he2}'s trying to act as a pimp of sorts rather than helping fuck. ${He2} alternately poses and preens for the john and nonverbally scolds the wincing sissy when he's not paying attention. After the customer finishes, the sissy heads to the toilet to clean ${himself}, and ${his} older ${sister2} whispers to the john that the sissy's for sale. The john laughs at ${him2} and excuses himself.` + ]); + + App.Events.addParagraph(node, r); + r = []; + r.push(`Enslaving the younger, sissy ${sister} will cost ${cashFormat(contractCost)}. Alternatively, you could sell your rights to ${him}. Including costs, this will bring in ${cashFormat(cost - contractCost)}. As a third option, for ${cashFormat(contractCost * 2)} you could enslave both`); + if (sister === sister2) { + r.push(`${sister}`); + } else { + r.push(`sibling`); + } + r.push(`s, but you wouldn't be able to examine the older one first. ${He2}'ll likely be very rebellious and sexually unskilled.`); + App.Events.addParagraph(node, r); + + const newSlaves = [sis]; /* caller doesn't want relative involved, so you don't get to inspect her even if you can force a sale */ + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= contractCost) { + choices.push(new App.Events.Result(`Enslave the sissy slut`, enslave, `This will cost in ${contractCost}`)); + choices.push(new App.Events.Result(`Sell ${him} immediately`, sell, `This will bring in ${cost}`)); + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Enslave both`, both, `This will cost in ${contractCost}`)); + } + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + App.Events.addResponses(node, choices); + + function enslave() { + sis.mother = 0; + sis.father = 0; + sis.rivalry = 0; + sis.rivalryTarget = 0; + newSlave(sis); + cashX(forceNeg(contractCost), "slaveTransfer", sis); + return `The poor sissy isn't happy to become a slave, but ${he}'s clearly relieved to be away from ${his} ${sister2}. The bitch isn't likely to have an easy time; the sale didn't clear ${him2} from debt. ${sis.slaveName} describes ${his} basic sexual experience, which includes a lot of sucking and anal whoring. Without further ado ${he} moves from practical sexual slavery at the hands of ${his} ${sister2} to actual sexual slavery.`; + } + + function sell() { + cashX(cost, "slaveTransfer"); + return `${sis.slaveName} accepts being resold without much fuss. ${He}'s merely exchanged one unknown owner for another. For all ${he} knows ${his} new buyer will be less abusive than you would have been. ${He} would be less complacent if ${he} knew who ${his} buyers are; ${he}'ll be immured in an arcade within the hour.`; + } + + function both() { + newSlave(bro); + cashX(forceNeg(contractCost), "slaveTransfer", bro); + newSlave(sis); + cashX(forceNeg(contractCost), "slaveTransfer", sis); + const frag = new DocumentFragment(); + r = []; + App.Events.addParagraph(frag, [`The poor sissy isn't happy to become a slave, but ${he}'s clearly relieved to be away from ${his} ${sister2}. The bitch isn't likely to have an easy time; the sale didn't clear ${him2} from debt. ${sis.slaveName} describes ${his} basic sexual experience, which includes a lot of sucking and anal whoring. Without further ado ${he} moves from practical sexual slavery at the hands of ${his} ${sister2} to actual sexual slavery.`]); + r.push(); + App.Events.addParagraph(frag, [`${His} ${sister2}-pimp walks in angrily demanding to know why you called ${him2} here. ${He2} sees ${his2} sissy ${sister} kneeling naked next to you, hears the hiss-click of the door closing and locking behind ${him2}, and makes the connection far too late to run. ${He2} begins to scream at both you and ${his2} ${sister} at the top of ${his2} lungs, and manages to keep up an impressive volume until you get ${him2} gagged. ${His2} ${sister} does not move to interfere as you strip and bind ${his2} struggling body. In fact, as you get the gag in place, ${he} begins to laugh an unstable, cracking laugh that degenerates into sobbing.`]); + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/resETS/recetsPoshMotherDaughter.js b/src/events/resETS/recetsPoshMotherDaughter.js new file mode 100644 index 0000000000000000000000000000000000000000..35ec6286470d0012100b9eeb96e2b17551c86816 --- /dev/null +++ b/src/events/resETS/recetsPoshMotherDaughter.js @@ -0,0 +1,141 @@ +App.Events.recetsPoshMotherDaughter = class recetsPoshMotherDaughter extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.seeDicks !== 100, + () => V.rep / 400 > random(1, 100) || (V.debugMode > 0 && V.debugModeEventSelection > 0) + ]; + } + + execute(node) { + let r = []; + + // Mother + let pram = new GenerateNewSlavePram(); + Object.apply(pram, { + minAge: V.fertilityAge + V.minimumSlaveAge, maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1, race: "nonslave" + }); + const contractCost = 1500; + const mother = GenerateNewSlave("XX", pram); + mother.origin = "$He was enslaved after you called in $his business debts."; + mother.career = "a business owner"; + mother.devotion = random(-15, 15); + mother.trust = random(-15, 15); + mother.oldDevotion = mother.devotion; + mother.vagina = 2; + mother.preg = -2; + mother.ovaries = 1; + mother.counter.birthsTotal++; + mother.face = 15; + mother.skill.vaginal = 15; + mother.anus = 0; + mother.boobs += 400; + mother.boobsImplant = 400; + mother.boobsImplantType = "normal"; + mother.butt++; + mother.buttImplant = 1; + mother.buttImplantType = "normal"; + mother.clothes = "nice business attire"; + setHealth(mother, jsRandom(20, 40), 0, 0, 0); + mother.pubicHStyle = "neat"; + mother.underArmHStyle = "shaved"; + mother.canRecruit = 0; + let cost = slaveCost(mother); + cost -= 1500; + + // Daughter + const daught = generateRelatedSlave(mother, "daughter"); + daught.origin = "You acquired $him along with $his mother when the family business failed."; + daught.slaveName = daught.birthName; + daught.devotion -= 25; + daught.trust -= 10; + daught.oldDevotion = daught.devotion; + daught.boobs -= 400; + daught.boobsImplant = 0; + daught.boobsImplantType = "none"; + daught.butt -= 1; + daught.vagina = 1; + daught.anus = 0; + daught.skill.vaginal = 0; + pram.maxAge = Math.max(V.minimumSlaveAge, Math.min(19, (daught.actualAge - Math.min(11, V.fertilityAge)))); + pram.minAge = Math.min(18, pram.maxAge); + if (V.pedo_mode === 1) { + pram.minAge = V.minimumSlaveAge; + } + daught.actualAge = random(pram.minAge, pram.maxAge); + daught.counter.birthsTotal = 0; + daught.preg = 0; + daught.visualAge = daught.actualAge; + daught.physicalAge = daught.actualAge; + daught.ovaryAge = daught.actualAge; + if (daught.physicalAge < 6) { + daught.teeth = "baby"; + } else if (daught.physicalAge < 12) { + daught.teeth = "mixed"; + } + + recetsFamilyNames(mother, daught); + + const { + His, He, + his, he, him, woman + } = getPronouns(daught); + const { + He2, His2, + daughter2, he2, his2, him2 + } = getPronouns(mother).appendSuffix("2"); + + App.Events.addParagraph(node, [`An older ${woman} comes to see you representing ${his} family business. ${He}'s pretty enough, but extremely unpleasant to deal with. ${He} pushes hard for a deal that strongly favors ${him}, and is not above leaning over your desk to give you an eyeful of probably-enhanced cleavage behind ${his} business attire. As you argue, a discreet alert appears on your desk: ${his} family business is actually on the verge of bankruptcy. With a press of your thumb you could acquire enough of ${his} debts to be able to enslave ${him}. And what's more, ${his}${daughter2} just came of age and became a partner in the business. ${He2}'s in play, too. Based on the desk report, ${he2}'s likely to be a spoiled little bitch.`]); + + App.Events.addParagraph(node, [`Enslaving the mother will cost ${cashFormat(contractCost)}. Alternatively, you could sell your rights to ${him}. Including costs, this will bring in ${cashFormat(cost - contractCost)}. As a third option, for ${cashFormat(contractCost * 2)} you could enslave both mother and ${daughter2}, but you wouldn't be able to examine the ${daughter2} first.`]); + + const newSlaves = [mother]; /* caller doesn't want relative involved, so you don't get to inspect her even if you can force a sale */ + + node.append(App.UI.MultipleInspect(newSlaves, true, "generic")); + const choices = []; + + if (V.cash >= contractCost) { + choices.push(new App.Events.Result(`Enslave the mother`, enslave, `This will cost in ${contractCost}`)); + choices.push(new App.Events.Result(`Sell ${him} immediately`, sell, `This will bring in ${cashFormat(cost - contractCost)}`)); + if (V.cash >= (contractCost * 2)) { + choices.push(new App.Events.Result(`Manipulate ${him} to enslave both mother and ${daughter2}`, both, `This will cost in ${contractCost}`)); + } + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + App.Events.addResponses(node, choices); + + function enslave() { + newSlave(daught); + cashX(forceNeg(contractCost), "slaveTransfer", daught); + return `You press your thumb down on your desk interface and then tell ${him} to read the display, strip, and show you ${his} body. ${He} knits ${his} brow in confusion and begins to curse at you but reads anyway. Comprehension dawns on ${him} and ${he} stares you in the eye for a long moment — and then drops ${his} gaze. ${He} knows the Free Cities well enough to understand. ${He} stands and sadly strips off ${his} blouse and slacks. Following orders, ${he} rotates slowly for you. Then, ${he} bends over facing away from you and spreads ${his} buttocks to display ${his} holes. Unsurprisingly, ${he}'s got a well-used pussy but has clearly never taken it up the ass. That will change.`; + } + + function sell() { + cashX((cost - contractCost), "slaveTransfer", daught); + return `slave.slaveName accepts being resold without much fuss. ${He}'s merely exchanged one unknown owner for another. For all ${he} knows ${his} new buyer will be less abusive than you would have been. ${He} would be less complacent if ${he} knew who ${his} buyers are; ${he}'ll be immured in an arcade within the hour.`; + } + + function both() { + const frag = new DocumentFragment(); + r = []; + newSlave(mother); + cashX(forceNeg(contractCost), "slaveTransfer", mother); + newSlave(daught); + cashX(forceNeg(contractCost), "slaveTransfer", daught); + + mother.devotion -= 25; + r.push(`You press your thumb down on your desk interface and then tell ${him} to read the display, strip, and show you ${his} body. ${He} knits ${his} brow in confusion and begins to curse at you but reads anyway. Comprehension dawns on ${him} and ${he} stares you in the eye for a long moment — and then drops to`); + if (hasBothLegs(daught)) { + r.push(`${his} knees`); + } else { + r.push(`the floor`); + } + r.push(`and begins to beg for ${his} ${daughter2}'s freedom. ${He} knows the Free Cities well enough to be unsurprised when you ignore ${him} completely. ${He} stands and sadly strips off ${his} blouse and slacks. Following orders, ${he} rotates slowly for you. Then, ${he} bends over facing away from you and spreads ${his} buttocks to display ${his} holes. Unsurprisingly, ${he}'s got a well-used pussy but has clearly never taken it up the ass. That will change.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`${His} ${daughter2} walks in angrily demanding to know why you called ${him2} here. ${He2} sees ${his2} mother kneeling naked next to you, hears the hiss-click of the door closing and locking behind ${him2}, and makes the connection far too late to run. ${He2} begins to scream at both you and ${his2} mother at the top of ${his2} lungs, and manages to keep up an impressive volume until you get ${him2} gagged. ${His2} mother does not move to interfere as you strip and bind ${his} ${daughter2}'s struggling body.`); + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/resETS/rescetsUtils.js b/src/events/resETS/rescetsUtils.js new file mode 100644 index 0000000000000000000000000000000000000000..81d22516c0b06af16028a662c50bdb5af2b65e28 --- /dev/null +++ b/src/events/resETS/rescetsUtils.js @@ -0,0 +1,18 @@ +/** + * + * @param {App.Entity.SlaveState} mother + * @param {App.Entity.SlaveState} slave + */ +globalThis.recetsFamilyNames = function(mother, slave) { + let familyName; + if (mother.slaveSurname) { + familyName = mother.slaveSurname; + } + let familyBirthSurname = mother.birthSurname; + nationalityToName(slave); + if (familyName) { + slave.slaveSurname = familyName; + } + slave.birthSurname = familyBirthSurname; + return familyName; +}; diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 1826f92891ac981c25a5be36980468fe1139339e..61ad4de3f04ef9158573ce198b785a0232dfadc8 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -121,83 +121,6 @@ <</if>> <</if>> - <<if $seeDicks != 100>> /*XX ACQUISITIONS*/ - - <<if $seePreg != 0>> - <<if $seeHyperPreg == 1>> - <<if $arcologies[0].FSRestart == "unset" && ((random(1,100) <= 5) || ($debugMode > 0 && $debugModeEventSelection > 0))>> - <<set $RecETSevent.push("desperate broodmother")>> - <</if>> - <</if>> - <</if>> - <<if (($rep/400) > random(1,100)) || ($debugMode > 0 && $debugModeEventSelection > 0)>> - <<set $RecETSevent.push("identical pair")>> - <</if>> - <<if (($rep/400) > random(1,100)) || ($debugMode > 0 && $debugModeEventSelection > 0)>> - <<set $RecETSevent.push("posh mother daughter")>> - <</if>> - <<if $seeIncest != 0>> - <<if (($rep/400) > random(1,100)) || ($debugMode > 0 && $debugModeEventSelection > 0)>> - <<set $RecETSevent.push("incest sister sister")>> - <</if>> - <<if (($rep/400) > random(1,100)) || ($debugMode > 0 && $debugModeEventSelection > 0)>> - <<set $RecETSevent.push("incest twin sister")>> - <</if>> - <<if (($rep/400) > random(1,100)) || ($debugMode > 0 && $debugModeEventSelection > 0)>> - <<set $RecETSevent.push("incest mother daughter")>> - <</if>> - <</if>> - <<if $seeCats != 0 && $projectN.techReleased != 0>> - <</if>> - - - <</if>> - - <<if $seeDicks != 0>> /*XY ACQUISITIONS*/ - <<if $seeDicks != 100>> - <<if (_S.HeadGirl && _S.HeadGirl.devotion > 50)>> - <<set $RecETSevent.push("mismatched pair")>> - <</if>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug)>> - <<set $RecETSevent.push("matched pair")>> - <</if>> - <<if $seeIncest != 0>> - <<if $seePreg != 0>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug) && $arcologies[0].FSRestart == "unset">> - <<set $RecETSevent.push("identical herm pair")>> - <</if>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug) && $arcologies[0].FSRestart == "unset">> - <<set $RecETSevent.push("incest mother son")>> - <</if>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug) && $arcologies[0].FSRestart == "unset">> - <<set $RecETSevent.push("incest father daughter")>> - <</if>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug)>> - <<set $RecETSevent.push("incest brother sister")>> - <</if>> - <</if>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug)>> - <<set $RecETSevent.push("incest twins mixed")>> - <</if>> - <</if>> - <</if>> - <<if $seeIncest != 0>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug)>> - <<set $RecETSevent.push("incest brother brother")>> - <</if>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug)>> - <<set $RecETSevent.push("incest twin brother")>> - <</if>> - <<if ($rep/400) > (random(1,100) || _oneIfDebug)>> - <<set $RecETSevent.push("incest father son")>> - <</if>> - <</if>> - <</if>> - - <<if ($rep/400) > (random(1,100) || _oneIfDebug)>> - <<set $RecETSevent.push("addict mother daughter")>> - <</if>> - /* FUTURE SOCIETY EVENTS */ <<if $arcologies[0].FSBodyPurist > (random(25,100) || _oneIfDebug+24)>> diff --git a/src/uncategorized/recETS.tw b/src/uncategorized/recETS.tw deleted file mode 100644 index 76311e920f950f45180cc7faea4d02123474b89e..0000000000000000000000000000000000000000 --- a/src/uncategorized/recETS.tw +++ /dev/null @@ -1,1586 +0,0 @@ -:: RecETS [nobr] - -<<if Array.isArray($RecETSevent)>> - <<set _slave = $eventSlave>> - <<if $debugMode > 0 && $debugModeEventSelection > 0>> - <<set $nextButton = "Back", $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> /* if user just clicks spacebar */ - <div style="font-weight:bold"> - A random two slave recruitment event would have been selected from the following: - </div> - <<for _i = 0; _i < $RecETSevent.length; _i++>> - <div> - <<print "[[$RecETSevent[_i]|RecETS][$RecETSevent = $RecETSevent[" + _i + "]]]">> - </div> - <</for>> - <div> - For debug purposes, the following scenes would not have been selected but can be chosen. - </div> - <<set _allEvents = [ - "addict mother daughter", - "posh mother daughter", - "incest mother son", - "incest father daughter", - "incest brother sister", - "incest sister sister", - "incest brother brother", - "incest twin sister", - "incest twin brother", - "incest twins mixed", - "incest mother daughter", - "incest father son", - "mismatched pair", - "matched pair", - "identical pair", - "identical herm pair", - "desperate broodmother" - ]>> - <<for _i = 0; _i < _allEvents.length; _i++>> - <<if !$RecETSevent.includes(_allEvents[_i])>> - <div> - <<print "[[_allEvents[_i]|RecETS][$RecETSevent = _allEvents[" + _i + "]]]">> - </div> - <</if>> - <</for>> - - <p> - [[Go Back to Random Nonindividual Event|Random Nonindividual Event][$eventSlave = 0]] - </p> - <<else>> - <<set $RecETSevent = $RecETSevent.random()>> - <<goto "RecETS">> - <</if>> -<<else>> - -<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check", $encyclopedia = "Enslaving People">> - -/* Set variables needed for scenes; create slave objects. No text. */ -<span id="setup"> - /* Set up primary slave */ - <<switch $RecETSevent>> - <<case "addict mother daughter">> - <<set _ContractCost = 1000>> - <<set _pram = {minAge: $fertilityAge + $minimumSlaveAge, maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1, race: "nonslave"}>> - <<set _slave = GenerateNewSlave("XX", _pram)>> - <<set _slave.origin = "$He sold $himself into slavery to escape addiction debts.">> - <<set _slave.career = App.Data.Careers.General.uneducated.random()>> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.addict = 8>> - <<set _slave.boobs += 100>> - <<set _slave.face = -15>> - <<set _slave.butt++>> - <<if _slave.vagina > -1>><<set _slave.vagina++>><</if>> - <<set _slave.anus++>> - <<run setHealth(_slave, jsRandom(-60, 20), Math.max(normalRandInt(5, 3), 0), Math.max(normalRandInt(5, 3), 0))>> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.canRecruit = 0>> - <<set _slave.counter.birthsTotal++>> - <<set _slaveCost = slaveCost(_slave)>> - <<set _slaveCost -= 1000>> - <<case "posh mother daughter">> - <<set _ContractCost = 1500>> - <<set _pram = {minAge: $fertilityAge + $minimumSlaveAge, maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1, race: "nonslave"}>> - <<set _slave = GenerateNewSlave("XX", _pram)>> - <<set _slave.origin = "$He was enslaved after you called in $his business debts.">> - <<set _slave.career = "a business owner">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.vagina = 2>> - <<set _slave.preg = -2>> - <<set _slave.ovaries = 1>> - <<set _slave.counter.birthsTotal++>> - <<set _slave.face = 15>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.anus = 0>> - <<set _slave.boobs += 400>> - <<set _slave.boobsImplant = 400>> - <<set _slave.boobsImplantType = "normal">> - <<set _slave.butt++>> - <<set _slave.buttImplant = 1>> - <<set _slave.buttImplantType = "normal">> - <<set _slave.clothes = "nice business attire">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.pubicHStyle = "neat">> - <<set _slave.underArmHStyle = "shaved">> - <<set _slave.canRecruit = 0>> - <<set _slaveCost = slaveCost(_slave)>> - <<set _slaveCost -= 1500>> - <<case "incest mother son">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XX", {minAge:Math.max($fertilityAge+20, $potencyAge+20, $minimumSlaveAge+20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.career = "a housewife">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.vagina = 2>> - <<set _slave.preg = 31>> - <<set _slave.pregType = 1>> - <<set _slave.pregSource = _slave.ID + 1000>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<set _slave.belly = 8000>> - <<set _slave.bellyPreg = 8000>> - <<set _slave.ovaries = 1>> - <<set _slave.counter.birthsTotal++>> - <<set _slave.face = 15>> - <<set _slave.skill.vaginal = 35>> - <<set _slave.anus = 1>> - <<set _slave.boobs += 600>> - <<set _slave.lactation = 1>> - <<set _slave.lactationDuration = 2>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.butt += 2>> - <<set _slave.buttImplant = 0>> - <<set _slave.buttImplantType = "none">> - <<set _slave.clothes = "conservative clothing">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.pubicHStyle = "bushy">> - <<if _slave.behavioralFlaw === "hates men">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest father daughter">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XY", {minAge: Math.max($potencyAge+20, $fertilityAge+20, $minimumSlaveAge+20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.dick = 4>> - <<set _slave.balls = 3>> - <<set _slave.scrotum = 3>> - <<set _slave.face = 15>> - <<set _slave.faceShape = "masculine">> - <<set _slave.clothes = "conservative clothing">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<if _slave.behavioralFlaw === "hates women">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest brother sister">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XX", {minAge: Math.max($fertilityAge+2, $potencyAge+2, $minimumSlaveAge+2), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.career = "a dropout">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.vagina = 1>> - <<set _slave.preg = 31>> - <<set _slave.pregType = 1>> - <<set _slave.pregSource = _slave.ID + 1000>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<set _slave.belly = 8000>> - <<set _slave.bellyPreg = 8000>> - <<set _slave.ovaries = 1>> - <<set _slave.face = random(15,40)>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.anus = 1>> - <<set _slave.lactation = 1>> - <<set _slave.lactationDuration = 2>> - <<set _slave.clothes = "cutoffs and a t-shirt">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.pubicHStyle = "in a strip">> - <<if _slave.behavioralFlaw === "hates men">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest sister sister">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XX", {minAge: Math.max($fertilityAge+2, $minimumSlaveAge+2), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.career = "a dropout">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.ovaries = 1>> - <<set _slave.face = random(15,40)>> - <<set _slave.attrXX = 80>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.clothes = "cutoffs and a t-shirt">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.pubicHStyle = "in a strip">> - <<if _slave.behavioralFlaw === "hates women">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest brother brother">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XY", {minAge: Math.max($potencyAge+2, $minimumSlaveAge+2), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.career = "a dropout">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.face = random(15,40)>> - <<set _slave.clothes = "conservative clothing">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.attrXY = 80>> - <<set _slave.pubicHStyle = "bushy">> - <<if _slave.behavioralFlaw === "hates men">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest twin sister">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XX", {minAge: Math.max($fertilityAge, $minimumSlaveAge), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.face = random(15,40)>> - <<set _slave.attrXX = 80>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.clothes = "cutoffs and a t-shirt">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.pubicHStyle = "in a strip">> - <<if _slave.behavioralFlaw === "hates women">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest twin brother">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XY", {minAge: Math.max($potencyAge, $minimumSlaveAge), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.face = random(15,40)>> - <<set _slave.clothes = "conservative clothing">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.attrXY = 80>> - <<set _slave.pubicHStyle = "bushy">> - <<if _slave.behavioralFlaw === "hates men">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - <<case "incest twins mixed">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XX", {minAge: Math.max($fertilityAge, $minimumSlaveAge), maxAge: 20, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.vagina = 1>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.face = random(15,40)>> - <<set _slave.attrXX = 80>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.clothes = "cutoffs and a t-shirt">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.pubicHStyle = "in a strip">> - <<if _slave.behavioralFlaw === "hates men">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest mother daughter">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XX", {minAge: Math.max($fertilityAge+20, $minimumSlaveAge+20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.career = "a housewife">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.vagina = 2>> - <<set _slave.ovaries = 1>> - <<set _slave.counter.birthsTotal++>> - <<set _slave.face = random(15,60)>> - <<set _slave.skill.vaginal = 35>> - <<set _slave.anus = 1>> - <<set _slave.boobs += 600>> - <<set _slave.lactation = 1>> - <<set _slave.lactationDuration = 2>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.butt += 2>> - <<set _slave.buttImplant = 0>> - <<set _slave.buttImplantType = "none">> - <<set _slave.clothes = "conservative clothing">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<set _slave.pubicHStyle = "bushy">> - <<if _slave.behavioralFlaw === "hates women">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "incest father son">> - <<set _ContractCost = 10000>> - <<set _slave = GenerateNewSlave("XY", {minAge: Math.max($potencyAge+20, $minimumSlaveAge+20), maxAge: 40, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He offered to become your slave to protect $his incestuous relationship.">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.dick = 4>> - <<set _slave.balls = 3>> - <<set _slave.scrotum = 3>> - <<set _slave.face = random(15,50)>> - <<set _slave.faceShape = "masculine">> - <<set _slave.clothes = "conservative clothing">> - <<run setHealth(_slave, jsRandom(20, 40), 0, 0, 0)>> - <<if _slave.behavioralFlaw === "hates men">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "sinful">> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - /* _slaveCost not needed, no option to sell */ - <<case "mismatched pair">> - <<set _ContractCost = 1500>> - <<set _slave = GenerateNewSlave("XY", {minAge: $minimumSlaveAge, maxAge: 21, disableDisability: 1, race: "nonslave"})>> - <<set _slave.origin = "$He was sold into slavery by $his older sister.">> - <<set _slave.career = "a prostitute">> - <<set _slave.devotion = random(-15,15)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<run setHealth(_slave, jsRandom(0, 20))>> - <<set _slave.anus = 1>> - <<set _slave.vagina = -1>> - <<set _slave.dick = 1>> - <<if _slave.foreskin > 0>><<set _slave.foreskin = _slave.dick>><</if>> - <<if _slave.balls > 0>><<set _slave.scrotum = _slave.balls>><</if>> - <<set _slave.clit = 0>> - <<set _slave.balls = 1>> - <<set _slave.face = 15>> - <<set _slave.weight = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.oral = 15>> - <<set _slave.skill.anal = 15>> - <<set _slave.boobs = 600>> - <<set _slave.boobsImplant = 400>> - <<set _slave.boobsImplantType = "normal">> - <<set _slave.butt = either(1, 2)>> - <<set _slave.preg = -2>> - <<set _slave.birthWeek = 0>> - <<set _slave.sexualFlaw = "hates anal">> - <<set _slave.hStyle = "in twin tails">> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.rivalry = 3>> - <<set _slave.rivalryTarget = _slave.ID + 1000>> - <<set _slaveCost = slaveCost(_slave)>> - <<set _slaveCost -= 1500>> - <<case "matched pair">> - /* _ContractCost not needed, no option to sell */ - <<set _slave = GenerateNewSlave("XX", {minAge: 12, maxAge: 21, disableDisability: 1})>> - <<set _slave.origin = "$He was brought up in a radical slave school to match $his twin.">> - <<set _slave.career = "a slave">> - <<set _slave.devotion = random(25,45)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<run setHealth(_slave, jsRandom(0, 20), undefined, undefined, 0, 0)>> - <<set _slave.anus = 1>> - <<set _slave.vagina = -1>> - <<set _slave.dick = 1>> - <<if _slave.foreskin > 0>><<set _slave.foreskin = _slave.dick>><</if>> - <<if _slave.balls > 0>><<set _slave.scrotum = _slave.balls>><</if>> - <<set _slave.balls = 1>> - <<set _slave.ovaries = 0>> - <<set _slave.clit = 0>> - <<set _slave.weight = 0>> - <<set _slave.face = 15>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.oral = 15>> - <<set _slave.skill.anal = 15>> - <<set _slave.boobs = either(500,600)>> - <<set _slave.boobsImplant = 400>> - <<set _slave.boobsImplantType = "normal">> - <<set _slave.butt = either(2, 3)>> - <<set _slave.buttImplant = 1>> - <<set _slave.buttImplantType = "normal">> - <<set _slave.preg = -3>> - <<set _slave.hStyle = "in twin tails">> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.underArmHStyle = "waxed">> - <<set _slave.sexualFlaw = "none">> - <<set _slave.behavioralFlaw = "none">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 2>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - <<set _slaveCost = slaveCost(_slave)>> - <<set _ContractCost = _slaveCost>> - <<case "identical pair">> - <<set _slave = GenerateNewSlave("XX", {minAge: $minimumSlaveAge, maxAge: 21, disableDisability: 1})>> - <<set _slave.origin = "$He was brought up in a radical slave school to match $his twin.">> - <<set _slave.career = "a slave">> - <<set _slave.devotion = random(25,45)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<run setHealth(_slave, jsRandom(0, 20), undefined, undefined, 0, 0)>> - <<set _slave.anus = 1>> - <<set _slave.dick = 0>> - <<set _slave.foreskin = 0>> - <<set _slave.balls = 0>> - <<set _slave.scrotum = 0>> - <<set _slave.clit = 2>> - <<set _slave.vagina = 1>> - <<set _slave.weight = 0>> - <<set _slave.face = 15>> - <<set _slave.faceShape = "cute">> - <<set _slave.attrXX = 80>> - <<if _slave.physicalAge >= 12>> - <<set _slave.teeth = "normal">> - <</if>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.skill.oral = 15>> - <<set _slave.skill.anal = 15>> - <<if _slave.physicalAge >= random(13,17)>> - <<set _slave.boobs = either(500,600)>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.butt = either(2, 3)>> - <<set _slave.buttImplant = 0>> - <<set _slave.buttImplantType = "none">> - <</if>> - <<set _slave.preg = -1>> - <<set _slave.hStyle = "in twin tails">> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.sexualFlaw = "none">> - <<set _slave.behavioralFlaw = "none">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 2>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - <<set _slaveCost = slaveCost(_slave)>> - <<set _ContractCost = _slaveCost>> - <<case "identical herm pair">> - <<set _slave = GenerateNewSlave("XX", {minAge: $fertilityAge, maxAge: 21, ageOverridesPedoMode: 1, disableDisability: 1})>> - <<set _slave.origin = "$He was brought up in a radical slave school to match $his twin.">> - <<set _slave.career = "a slave">> - <<set _slave.devotion = random(25,45)>> - <<set _slave.trust = random(-15,15)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<run setHealth(_slave, jsRandom(0, 20), undefined, undefined, 0, 10)>> - <<set _slave.anus = 1>> - <<set _slave.dick = 5>> - <<set _slave.foreskin = 4>> - <<set _slave.balls = 6>> - <<set _slave.scrotum = 3>> - <<set _slave.clit = 0>> - <<set _slave.vagina = 2>> - <<set _slave.weight = 0>> - <<set _slave.face = 15>> - <<set _slave.faceShape = "cute">> - <<if _slave.physicalAge >= 12>> - <<set _slave.teeth = "normal">> - <</if>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.skill.oral = 15>> - <<set _slave.skill.anal = 15>> - <<if _slave.physicalAge >= random(13,17)>> - <<set _slave.boobs = either(500,600)>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.butt = either(2, 3)>> - <<set _slave.buttImplant = 0>> - <<set _slave.buttImplantType = "none">> - <</if>> - <<set _slave.preg = 30>> - <<set _slave.pregType = 2>> - <<set _slave.pregSource = _slave.ID + 1000>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<set _slave.belly = 14000>> - <<set _slave.bellyPreg = 14000>> - <<set _slave.pubertyXX = 1>> - <<set _slave.pubertyXY = 1>> - <<set _slave.hStyle = "in twin tails">> - <<set _slave.pubicHStyle = "waxed">> - <<set _slave.fetish = "pregnancy">> - <<set _slave.fetishStrength = 100>> - <<set _slave.sexualQuirk = "perverted">> - <<set _slave.sexualFlaw = "none">> - <<set _slave.behavioralFlaw = "none">> - <<run setMissingParents(_slave)>> - <<set _slave.canRecruit = 0>> - <<set _slave.relationship = 4>> - <<set _slave.relationshipTarget = _slave.ID + 1000>> - <<set _slaveCost = slaveCost(_slave)>> - <<set _ContractCost = _slaveCost>> - <<case "desperate broodmother">> - <<set _ContractCost = 1000>> - <<set _pram = {minAge: $fertilityAge + 3, maxAge: ($pedo_mode === 1 ? 18 : 24), disableDisability: 1, ageOverridesPedoMode: 1}>> - <<set _slave = GenerateNewSlave("XX", _pram)>> - <<set _slave.origin = "$He begged to be enslaved in a desperate attempt to provide for $his many children.">> - <<set _slave.career = "homeless">> - <<run setHealth(_slave, jsRandom(-45, -30), -1, -1, -1, 80)>> - <<set _slave.devotion = random(35,45)>> - <<set _slave.trust = random(15,25)>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.preg = 41>> - <<set _slave.pregType = random(25,29)>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<run SetBellySize(_slave)>> - <<set _slave.pregAdaptation = 600>> - <<set _slave.ovaries = 1>> - <<set _slave.counter.birthsTotal = 5>> - /* Being pregnant with 25-29 children requires either hyper fertility drugs (1/3 odds) or a genetic quirk (2/3 odds) */ - <<set _slave.geneticQuirks.hyperFertility = either(_slave.geneticQuirks.hyperFertility, 2, 2)>> - <<set _slave.face = 15>> - <<set _slave.vagina = 4>> - <<set _slave.skill.vaginal = 45>> - <<set _slave.skill.whoring = 20>> - <<set _slave.skill.anal = 10>> - <<set _slave.anus = 1>> - <<set _slave.weight = random(-80,-50)>> - <<set _slave.muscles = 0>> - <<set _slave.underArmHStyle = "bushy">> - <<set _slave.pubicHStyle = "bushy">> - <<set _slave.boobs = 1600>> - <<set _slave.boobShape = "saggy">> - <<set _slave.nipples = "huge">> - <<set _slave.lactation = 1>> - <<set _slave.lactationDuration = 2>> - <<set _slave.lactationAdaptation = 30>> - <<set _slave.hips = 2>> - <<set _slave.vaginaLube = 1>> - <<set _slave.butt += 3>> - <<set _slave.sexualQuirk = "caring">> - <<set _slave.bellySag = 20>> - <<set _slave.bellySagPreg = 20>> - <<set _slave.pubertyXX = 1>> - <<set _slave.canRecruit = 0>> - <<set _slaveCost = slaveCost(_slave)>> - <<set _slaveCost -= 1500>> - <</switch>> - - /* Set up related slave */ - <<set $relative = clone(_slave)>> - - <<switch $RecETSevent>> - <<case "addict mother daughter">> - <<set _slave.origin = "You tricked $his mother into selling $him into slavery to clear addiction debts.">> - <<set _slave.career = App.Data.Careers.General.uneducated.random()>> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.devotion += 10>> - <<set _slave.trust += 10>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.boobs -= 100>> - <<set _slave.butt -= 1>> - <<if _slave.vagina > -1>><<set _slave.vagina = 1>><</if>> - <<set _slave.anus = 1>> - <<set _pram = {maxAge: Math.min(22, Math.max($minimumSlaveAge, _slave.actualAge - 11))}>> - <<set _pram.minAge = Math.min(Math.max(15, $minimumSlaveAge), _pram.maxAge)>> - <<if $pedo_mode === 1>> <<set _pram.minAge = $minimumSlaveAge>> <</if>> - <<set _slave.actualAge = random(_pram.minAge, _pram.maxAge)>> - <<set _slave.mother = _slave.ID - 1000>> - <<set _slave.counter.birthsTotal = 0>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "posh mother daughter">> - <<set _slave.origin = "You acquired $him along with $his mother when the family business failed.">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.devotion -= 25>> - <<set _slave.trust -= 10>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.boobs -= 400>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.butt -= 1>> - <<set _slave.vagina = 1>> - <<set _slave.anus = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _pram.maxAge = Math.max($minimumSlaveAge,Math.min(19, (_slave.actualAge - Math.min(11, $fertilityAge))))>> - <<set _pram.minAge = Math.min(18, _pram.maxAge)>> - <<if $pedo_mode === 1>><<set _pram.minAge = $minimumSlaveAge>><</if>> - <<set _slave.actualAge = random(_pram.minAge, _pram.maxAge)>> - <<set _slave.mother = _slave.ID - 1000>> - <<set _slave.counter.birthsTotal = 0>> - <<set _slave.preg = 0>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "incest mother son">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.career = "a student">> - <<set _slave.actualAge -= 18>> - <<if _slave.actualAge > 20>> - <<if $potencyAge >= $minimumSlaveAge>> - <<set _slave.actualAge = random($potencyAge, 20)>> - <<else>> - <<set _slave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> - <</if>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.genes = "XY">> - <<run resyncSlaveHight(_slave)>> - <<set _slave.vagina = -1>> - <<set _slave.pubertyXX = 0>> - <<set _slave.pubertyXY = 1>> - <<set WombFlush(_slave)>> - <<run SetBellySize(_slave)>> - <<set _slave.dick = 2>> - <<set _slave.foreskin = 3>> - <<set _slave.ovaries = 0>> - <<set _slave.balls = 2>> - <<set _slave.scrotum = 2>> - <<set _slave.prostate = 1>> - <<set _slave.clit = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.faceShape = "cute">> - <<set _slave.boobs = 0>> - <<set _slave.counter.birthsTotal = 0>> - <<set _slave.lactation = 0>> - <<set _slave.lactationDuration = 0>> - <<set _slave.anus = 0>> - <<set _slave.butt -= 2>> - <<if _slave.behavioralFlaw === "hates women">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "none">> - <<set _slave.sexualQuirk = "perverted">> - <<set _slave.mother = _slave.ID - 1000>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "incest father daughter">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.career = "a student">> - <<set _slave.actualAge -= 18>> - <<if _slave.actualAge > 20>> - <<if $fertilityAge >= $minimumSlaveAge>> - <<set _slave.actualAge = random($fertilityAge, 20)>> - <<else>> - <<set _slave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> - <</if>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.genes = "XX">> - <<run resyncSlaveHight(_slave)>> - <<set _slave.pubertyXX = 1>> - <<set _slave.pubertyXY = 0>> - <<set _slave.vagina = 3>> - <<set _slave.preg = 30>> - <<set _slave.dick = 0>> - <<set _slave.ovaries = 1>> - <<set _slave.balls = 0>> - <<set _slave.scrotum = 0>> - <<set _slave.clit = 1>> - <<set _slave.prostate = 0>> - <<set _slave.voice = 2>> - <<set _slave.skill.vaginal = 50>> - <<set _slave.boobs = (random(3,6)*100)>> - <<set _slave.pregType = 1>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<set _slave.pregSource = _slave.ID - 1000>> - <<run SetBellySize(_slave)>> - <<set _slave.faceShape = "cute">> - <<if _slave.behavioralFlaw === "hates men">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "none">> - <<set _slave.sexualQuirk = "perverted">> - <<set _slave.father = _slave.ID - 1000>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "incest brother sister">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.actualAge -= 2>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.genes = "XY">> - <<run resyncSlaveHight(_slave)>> - <<set _slave.vagina = -1>> - <<set _slave.pubertyXX = 0>> - <<set _slave.pubertyXY = 1>> - <<set WombFlush(_slave)>> - <<run SetBellySize(_slave)>> - <<set _slave.dick = 2>> - <<set _slave.foreskin = 2>> - <<set _slave.ovaries = 0>> - <<set _slave.balls = 2>> - <<set _slave.scrotum = 2>> - <<set _slave.prostate = 1>> - <<set _slave.clit = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.faceShape = "masculine">> - <<set _slave.boobs = 0>> - <<set _slave.lactation = 0>> - <<set _slave.lactationDuration = 0>> - <<set _slave.anus = 0>> - <<set _slave.pubicHStyle = "bushy">> - <<if _slave.behavioralFlaw === "hates women">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "none">> - <<set _slave.sexualQuirk = "perverted">> - <<set _slave.clothes = "conservative clothing">> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "incest sister sister">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.actualAge -= 2>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<run resyncSlaveHight(_slave)>> - <<set _slave.pubicHStyle = "shaved">> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<case "incest brother brother">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.actualAge -= 2>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.height += random(-5,5)>> - <<set _slave.pubicHStyle = "shaved">> - <<set _slave.dick += 2>> - <<set _slave.balls += 2>> - <<set _slave.scrotum = _slave.balls>> - <<if _slave.foreskin>> - <<set _slave.foreskin = _slave.dick>> - <</if>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "incest twin sister">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.height += random(-5,5)>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<case "incest twin brother">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.height += random(-5,5)>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<case "incest twins mixed">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.genes = "XY">> - <<set _slave.height += random(-5,5)>> - <<set _slave.vagina = -1>> - <<set _slave.pubertyXX = 0>> - <<set _slave.pubertyXY = 1>> - <<set _slave.dick = 2>> - <<set _slave.foreskin = 2>> - <<set _slave.ovaries = 0>> - <<set _slave.balls = 2>> - <<set _slave.scrotum = 2>> - <<set _slave.prostate = 1>> - <<set _slave.clit = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.faceShape = "masculine">> - <<set _slave.boobs = 0>> - <<set _slave.lactation = 0>> - <<set _slave.lactationDuration = 0>> - <<set _slave.anus = 0>> - <<set _slave.pubicHStyle = "bushy">> - <<if _slave.behavioralFlaw === "hates women">> - <<set _slave.behavioralFlaw = "none">> - <</if>> - <<set _slave.behavioralQuirk = "none">> - <<set _slave.sexualQuirk = "perverted">> - <<set _slave.clothes = "conservative clothing">> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<case "incest mother daughter">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.career = "a student">> - <<set _slave.actualAge -= 18>> - <<if _slave.actualAge > 20>> - <<if $fertilityAge >= $minimumSlaveAge>> - <<set _slave.actualAge = random($fertilityAge, 20)>> - <<else>> - <<set _slave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> - <</if>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<run resyncSlaveHight(_slave)>> - <<set _slave.vagina = 0>> - <<if _slave.actualAge < $fertilityAge>> - <<set _slave.pubertyXX = 0>> - <</if>> - <<set _slave.vagina = 0>> - <<set _slave.counter.birthsTotal = 0>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.anus = 0>> - <<set _slave.boobs -= 300>> - <<set _slave.lactation = 0>> - <<set _slave.lactationDuration = 0>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.butt -= 2>> - <<set _slave.mother = _slave.ID - 1000>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "incest father son">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.career = "a student">> - <<set _slave.actualAge -= 18>> - <<if _slave.actualAge > 20>> - <<if $potencyAge >= $minimumSlaveAge>> - <<set _slave.actualAge = random($potencyAge, 20)>> - <<else>> - <<set _slave.actualAge = random($minimumSlaveAge, 20)>> - <</if>> - <</if>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<run resyncSlaveHight(_slave)>> - <<set _slave.vagina = -1>> - <<if _slave.actualAge < $potencyAge>> - <<set _slave.pubertyXY = 0>> - <</if>> - <<set _slave.dick -= 2>> - <<set _slave.balls -= 1>> - <<set _slave.scrotum -= 1>> - <<set _slave.mother = _slave.ID - 1000>> - <<set _slave.relationship = 3>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<case "mismatched pair">> - <<set _slave.origin = "You acquired $him along with $his sissy sister due to $his inexperience as a madam.">> - <<set _slave.career = "a pimp">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.devotion -= 50>> - <<set _slave.trust -= 10>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.anus = 0>> - <<set _slave.vagina = 1>> - <<set _slave.preg = -1>> - <<set _slave.dick = 0>> - <<set _slave.scrotum = 0>> - <<set _slave.ovaries = 1>> - <<set _slave.balls = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.oral = 0>> - <<set _slave.skill.anal = 0>> - <<set _slave.behavioralFlaw = "arrogant">> - <<set _slave.sexualFlaw = "hates penetration">> - <<set _slave.boobs = either(400, 500)>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.butt = either(2, 3)>> - <<if _slave.actualAge < 12>> - <<set _slave.actualAge = 16>> - <<else>> - <<set _slave.actualAge += 4>> - <</if>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<set _slave.rivalry = 3>> - <<set _slave.rivalryTarget = _slave.ID - 1000>> - <<case "matched pair">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.vagina = 1>> - <<set _slave.preg = -1>> - <<set _slave.dick = 0>> - <<set _slave.scrotum = 0>> - <<set _slave.clit = 2>> - <<set _slave.ovaries = 1>> - <<set _slave.balls = 0>> - <<set _slave.skill.vaginal = 15>> - <<set _slave.boobsImplant = 0>> - <<set _slave.boobsImplantType = "none">> - <<set _slave.buttImplant = 0>> - <<set _slave.buttImplantType = "none">> - <<set _slave.relationship = 2>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<case "identical pair">> - <<set _slave.ID = _slave.ID + 1000>> - <<set _slave.relationship = 2>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<case "identical herm pair">> - <<set _slave.ID = _slave.ID + 1000>> - <<set WombFlush(_slave)>> - <<set _slave.preg = 30>> - <<set _slave.pregType = 2>> - <<set _slave.pregSource = _slave.ID - 1000>> - <<set _slave.pregKnown = 1>> - <<set _slave.pregWeek = _slave.preg>> - <<set _slave.belly = 14000>> - <<set _slave.bellyPreg = 14000>> - <<set _slave.relationship = 4>> - <<set _slave.relationshipTarget = _slave.ID - 1000>> - <<case "desperate broodmother">> - <<if random(1,100) < $seeDicks>> /*boy*/ - <<set _slave.origin = "$His mother offered $him to you as an incentive to take them in.">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<run setHealth(_slave, jsRandom(10, 20))>> - <<set _slave.devotion -= 5>> - <<set _slave.trust -= 5>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.genes = "XY">> - <<set _slave.pregAdaptation = 10>> - <<set WombFlush(_slave)>> - <<run SetBellySize(_slave)>> - <<set _slave.ovaries = 0>> - <<set _slave.counter.birthsTotal = 0>> - <<set _slave.geneticQuirks.hyperFertility = Math.min(_slave.geneticQuirks.hyperFertility, 1)>> /* if mother is hyper-fertile, make son only carrier */ - <<set _slave.anus = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.whoring = 0>> - <<set _slave.skill.anal = 0>> - <<set _slave.weight = random(-80,-50)>> - <<set _slave.muscles = 0>> - <<set _slave.underArmHStyle = "bushy">> - <<set _slave.pubicHStyle = "bushy">> - <<set _slave.boobs = 0>> - <<set _slave.boobShape = "perky">> - <<set _slave.nipples = "tiny">> - <<set _slave.lactation = 0>> - <<set _slave.lactationDuration = 0>> - <<set _slave.lactationAdaptation = 0>> - <<set _slave.hips = -2>> - <<set _slave.shoulders = -2>> - <<set _slave.waist = 0>> - <<set _slave.vaginaLube = 0>> - <<set _slave.butt = 0>> - <<set _slave.fetish = "none">> - <<set _slave.fetishStrength = 0>> - <<set _slave.sexualFlaw = "none">> - <<set _slave.sexualQuirk = "none">> - <<set _slave.bellySag = 0>> - <<set _slave.bellySagPreg = 0>> - <<set _slave.pubertyXX = 0>> - <<set _slave.dick = 1>> - <<set _slave.foreskin = 1>> - <<set _slave.balls = 2>> - <<set _slave.scrotum = 3>> - <<set _slave.prostate = 1>> - <<set _slave.actualAge = 3>> - <<set _slave.mother = _slave.ID - 1000>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <<else>> /*girl*/ - <<set _slave.origin = "$His mother offered $him to you as an incentive to take them in.">> - <<set _slave.slaveName = _slave.birthName>> - <<set _slave.ID = _slave.ID + 1000>> - <<run setHealth(_slave, jsRandom(10, 20))>> - <<set _slave.devotion -= 5>> - <<set _slave.trust -= 5>> - <<set _slave.oldDevotion = _slave.devotion>> - <<set _slave.counter.birthsTotal = 0>> - <<set _slave.anus = 0>> - <<set _slave.skill.vaginal = 0>> - <<set _slave.skill.whoring = 0>> - <<set _slave.skill.anal = 0>> - <<set _slave.weight = random(-80,-50)>> - <<set _slave.muscles = 0>> - <<set _slave.underArmHStyle = "bushy">> - <<set _slave.pubicHStyle = "bushy">> - <<set _slave.boobs = 0>> - <<set _slave.boobShape = "perky">> - <<set _slave.nipples = "tiny">> - <<set _slave.lactation = 0>> - <<set _slave.lactationDuration = 0>> - <<set _slave.lactationAdaptation = 0>> - <<set _slave.hips = -2>> - <<set _slave.shoulders = -2>> - <<set _slave.waist = 0>> - <<set _slave.vaginaLube = 0>> - <<set _slave.butt = 0>> - <<set _slave.fetish = "none">> - <<set _slave.fetishStrength = 0>> - <<set _slave.sexualFlaw = "none">> - <<set _slave.sexualQuirk = "none">> - <<set _slave.bellySag = 0>> - <<set _slave.bellySagPreg = 0>> - <<set _slave.pubertyXX = 0>> - <<set _slave.vagina = 0>> - <<set _slave.pregKnown = 0>> - <<set _slave.pregAdaptation = 10>> - <<set WombFlush(_slave)>> - <<if $fertilityAge <= 3>> - <<set _slave.pubertyXX = 1>> - <<set _slave.preg = 6>> - <<set _slave.pregType = 1>> - <<set _slave.pregKnown = 1>> - <<set _slave.vagina = 1>> - <</if>> - <<set _slave.pregWeek = _slave.preg>> - <<run SetBellySize(_slave)>> - <<set _slave.actualAge = 3>> - <<set _slave.mother = _slave.ID - 1000>> - <<set _slave.visualAge = _slave.actualAge>> - <<set _slave.physicalAge = _slave.actualAge>> - <<set _slave.ovaryAge = _slave.actualAge>> - <<if _slave.physicalAge < 6>> - <<set _slave.teeth = "baby">> - <<elseif _slave.physicalAge < 12>> - <<set _slave.teeth = "mixed">> - <</if>> - <</if>> - <</switch>> - - <<run generatePronouns(_slave)>> - - <<set $relative2 = clone(_slave)>> - <<set _slave = clone($relative)>> - - <<if $relative.slaveSurname>> - <<set _familyName = $relative.slaveSurname>> - <</if>> - <<set _familyBirthSurname = $relative.birthSurname>> - <<run nationalityToName($relative2)>> - <<if _familyName>> - <<set $relative2.slaveSurname = _familyName>> - <</if>> - <<set $relative2.birthSurname = _familyBirthSurname>> - - /* set first slave pregnancy stats */ - <<switch $RecETSevent>> - <<case "incest mother son" "incest brother sister" "identical herm pair">> - <<set _name1 = $relative2.slaveName>> - <<if _familyName>> - <<set _name1 += " " + $relative2.slaveSurname>> - <</if>> - <<run WombChangeGene($relative, "fatherName", _name1)>> - <<set _name2 = $relative.slaveName>> - <<if _familyName>> - <<set _name2 += " " + $relative.slaveSurname>> - <</if>> - <<run WombChangeGene($relative, "motherName", _name2)>> - <</switch>> - - /* set second slave pregnancy stats */ - <<switch $RecETSevent>> - <<case "incest father daughter" "identical herm pair">> - <<set _name1 = $relative.slaveName>> - <<if _familyName>> - <<set _name1 += " " + $relative.slaveSurname>> - <</if>> - <<run WombChangeGene($relative2, "fatherName", _name1)>> - <<set _name2 = $relative2.slaveName>> - <<if _familyName>> - <<set _name2 += " " + $relative2.slaveSurname>> - <</if>> - <<run WombChangeGene($relative2, "motherName", _name2)>> - <</switch>> - - <<setLocalPronouns $relative>> - <<setLocalPronouns $relative2 2>> - <<setAssistantPronouns>> -</span> - -<span id="mainbody"> - /* Scene intro */ - <span id="intro"> - /* So many messages */ - <<switch $RecETSevent>> - <<case - "incest mother son" - "incest father daughter" - "incest brother sister" - "incest sister sister" - "incest brother brother" - "incest twin sister" - "incest twin brother" - "incest twins mixed" - "incest mother daughter" - "incest father son" - "desperate broodmother">> - <p> - You receive so many messages, as a noted titan of the new Free Cities world, that $assistant.name has to be quite draconian in culling them. _HeA lets only the most important through to you. One category of message that always gets through regardless of content, though, is requests for voluntary enslavement. As the new world takes shape, they've become less rare than they once were. - </p> - <<case "matched pair" "identical pair" "identical herm pair">> - <p> - A pair of young slaves is going door to door offering themselves for sale on behalf of their owner. It's rare to see a slave obedient enough to be entrusted with their own sale, and the price alone suggests there's something interesting, so you let them up. - <<if $RecETSevent === "identical herm pair">> - They stand in front of your desk, an arm around the other, and wait for instructions. They appear to be twins, and are dressed identically: they're wearing very skimpy miniskirts, which fail to conceal their semi erect cocks at all, bikini tops so brief that their areolae are clearly visible around the scrap of cloth over each nipple, and nothing over their huge pregnant bellies. - <<else>> - They stand in front of your desk and wait for instructions. They appear to be twins, and are dressed identically: they're wearing very skimpy miniskirts and bikini tops so brief that their areolae are clearly visible around the scrap of cloth over each nipple. - <</if>> - You instruct them to tell you about themselves. - </p> - <</switch>> - - <<switch $RecETSevent>> - <<case "addict mother daughter">> - <p> - A matronly $woman comes to your penthouse in tears. It seems $he is a tenant of yours, and has fallen deeply into debt as a result of aphrodisiac addiction. $He offers to sell $himself into slavery if you will pay off $his debts. $He is strangely eager about this, and after some probing it becomes apparent that $he is living with $his _daughter2 and wants to avoid having $his _daughter2 involved in this debt. - </p> - <<case "posh mother daughter">> - <p> - An older $woman comes to see you representing $his family business. $He's pretty enough, but extremely unpleasant to deal with. $He pushes hard for a deal that strongly favors $him, and is not above leaning over your desk to give you an eyeful of probably-enhanced cleavage behind $his business attire. As you argue, a discreet alert appears on your desk: $his family business is actually on the verge of bankruptcy. With a press of your thumb you could acquire enough of $his debts to be able to enslave $him. And what's more, $his _daughter2 just came of age and became a partner in the business. _He2's in play, too. Based on the desk report, _he2's likely to be a spoiled little bitch. - </p> - <<case "incest mother son">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a mother and _daughter2 who had to flee their home after $his husband found out the child in $his rounded middle was not his, but his _daughter2's. They feel that life in an arcology together, even as slaves, would be better than their new life on the streets. - </p> - <<case "incest father daughter">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and _daughter2 who had to flee their home after $his wife found out $he was having sex with their _daughter2. _His2 gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest brother sister">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a _sister2 and $sister who had to flee their home after their parents found out they were having sex with each other. $His gravid middle is testament to that. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest sister sister">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are two <<= $sister>>s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest brother brother">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are two <<= $sister>>s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest twin sister">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are twin <<= $sister>>s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest twin brother">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are twin <<= $sister>>s who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest twins mixed">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are twins who had to flee their home after their parents found out they were having sex with each other. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest mother daughter">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a mother and _daughter2 who had to flee their home after $his husband found out $he was having sex with their _daughter2. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "incest father son">> - <p> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. In this case, however, the story is more unusual — the callers seem stressed, but otherwise normal. They haltingly and quietly explain that they are a father and _daughter2 who had to flee their home after $his wife found out $he was having sex with their _daughter2. They feel that life in an arcology together, even as slaves, would be better than their current life on the streets. - </p> - <<case "mismatched pair">> - <<setLocalPronouns _S.HeadGirl 3>> - <p> - Your Head Girl comes to see you. _He3 flags a slave posted for sale on your desk. The posting seems completely unimpressive — just a bitch barely past $his <<= ordinalSuffix(_slave.actualAge)>> birthday with basic implants and a pathetic little dick — until _he3 points out that the person posting $him for sale is $his _sister2. $His slightly older, naturally female _sister2. Who, to go by the pictures, the younger sibling has desperately been trying to mold $himself to look more like. - </p> - <p> - <<run Enunciate (_S.HeadGirl)>> - "It won't <<sh>>ow on the de<<s>>k yet, but rumor i<<s>> the little cunt'<<s>> gotten them both in bad debt, <<Master>>. You could grab them both cheap." - </p> - <p> - You bring up a video feed of the one-room apartment they share. A man, clearly a client, is sitting on the bed while the sissy rides him. $He's facing away from the john, so $he isn't trying to hide the fact that $he isn't happy selling $his anus for money. The older _sister2 is naked, but _he2's trying to act as a pimp of sorts rather than helping fuck. _He2 alternately poses and preens for the john and nonverbally scolds the wincing sissy when he's not paying attention. After the customer finishes, the sissy heads to the toilet to clean $himself, and $his older _sister2 whispers to the john that the sissy's for sale. The john laughs at _him2 and excuses himself. - </p> - <<case "matched pair">> - <p> - <<run Enunciate ($relative2)>> - One of them speaks up. "We're twin<<s>>, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>. Fraternal twin<<s>>. We have been given hormone treatment<<s>> and <<s>>urgery to match one another more clo<<s>>ely, e<<x>><<c>>ept for one detail." They lift their skirts; the speaker has a hormone-atrophied cock, while $his _sister2 has a pussy, along with a large clit that almost matches $his sibling's member in size. "We've al<<s>>o been trained ever <<s>>in<<c>>e we turned $minimumSlaveAge to be completely obedient, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>, in everything, and <<s>>e<<x>>ually profi<<c>>ient." - </p> - <<case "identical pair">> - <p> - <<run Enunciate ($relative)>> - One of them speaks up. "We're twin<<s>>, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>. Identical twin<<s>>. We've al<<s>>o been trained <<if (_slave.actualAge > $minimumSlaveAge)>>ever <<s>>in<<c>>e we turned $minimumSlaveAge<</if>> to be completely obedient, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>, in everything, and <<s>>e<<x>>ually profi<<c>>ient." - </p> - <<case "identical herm pair">> - <p> - They pull themselves together, bringing their gravid middles in tight contact with one another. - <<run Enunciate ($relative)>> - One of them speaks up. "We're twin<<s>>, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>. Identical twin<<s>>. We've al<<s>>o been trained <<if (_slave.actualAge > $minimumSlaveAge)>>ever <<s>>in<<c>>e we turned $minimumSlaveAge<</if>> to be completely obedient, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>, in everything, and <<s>>e<<x>>ually profi<<c>>ient." - - <<run Enunciate ($relative2)>> - The other blurts out. "But we kinda got too into each other, in more way<<s>> than one!" _He2 winks. - </p> - <<case "desperate broodmother">> - <p> - <<run Enunciate ($relative)>> - This call is coming from a public kiosk, which is usually an indication that the person on the other end is a transient individual who has decided to take slavery over homelessness. You aren't far off; the caller is a <<if _slave.actualAge >= 18>>young $woman<<elseif _slave.actualAge >= 13>>teen<<else>>$loli<</if>> desperate for work, carrying a young child on $his shoulder, quadruplets on $his back and a large sack against $his middle, while looking absolutely exhausted. "Plea<<s>>e, would you happen to have any work for a de<<s>>perate mother? I need to eat, and my babie<<s>> are <<s>>tarting to go hungry... I tried whoring, but I got pregnant again..." $He struggles back to allow you to see $his full body. The object you thought were $his possessions is, in fact, $his massively distended stomach. "I'm having <<s>>o many and I don't know what to do anymore... I can't care for thi<<s>> many... Anything you can do for meeEEEEEE!" $He groans as an intense contraction hits $him. "Oh god! Not now! Not like thi<<s>>! I'm not ready... Plea<<s>>e, I'm giving birth right now... Forget work, I'll be your <<s>>lave if you can help me..." $He begs, tears streaming down $his face as $he struggles to hold back the child threatening to slide into $his birth canal.<<if $minimumSlaveAge <= 3>> "Plea<<s>>e... My elde<<s>>t is of age here... Help me and they'll be your<<s>> too! You'll help mommy, right <<s>>weetie?" The toddler nods to $him, unlikely to understand exactly what is going on.<</if>> - </p> - <<default>> - <div class="error"> - ERROR: bad recETS event $RecETSevent - </div> - <</switch>> - - /* Extra price flavor */ - <<switch $RecETSevent>> - <<case "matched pair">> - "We co<<s>>t <<print cashFormat(_ContractCost)>>, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>." - <<case "identical pair">> - "We co<<s>>t <<print cashFormat(_ContractCost)>>, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>." - <<case "identical herm pair">> - <<run Enunciate ($relative)>> - "We co<<s>>t <<print cashFormat(_ContractCost)>>, <<if $PC.title != 0>><<s>>ir<<else>>ma'am<</if>>." - <</switch>> - - /* Inspection details for videocall recruitment */ - <<if ["incest brother brother", "incest brother sister", "incest father daughter", "incest father son", "incest mother daughter", "incest mother son", "incest sister sister", "incest twin brother", "incest twin sister", "incest twins mixed"].includes($RecETSevent)>> - <p> - <<= capFirstChar($assistant.name)>> assembles a dossier of information and photos from information they've sent describing their bodies and skills, to be used as a substitute for an in-person inspection. - </p> - <</if>> - - /* The price */ - <p class="detail"> - <<switch $RecETSevent>> - <<case "addict mother daughter">> - Enslaving $him will cost <<print cashFormat(_ContractCost)>>. Alternatively, you could sell your rights to $him. Including costs, this will bring in <<print cashFormat(_slaveCost - _ContractCost)>>. As a third option, for <<print cashFormat(_ContractCost*2)>> you could manipulate $him to bind both mother and _daughter2, but you wouldn't be able to examine the _daughter2 first. - <<case "posh mother daughter">> - Enslaving the mother will cost <<print cashFormat(_ContractCost)>>. Alternatively, you could sell your rights to $him. Including costs, this will bring in <<print cashFormat(_slaveCost - _ContractCost)>>. As a third option, for <<print cashFormat(_ContractCost*2)>> you could enslave both mother and _daughter2, but you wouldn't be able to examine the _daughter2 first. - <<case "incest mother son" "incest father daughter" "incest brother sister" "incest sister sister" "incest brother brother" "incest twin sister" "incest twin brother" "incest twins mixed" "incest mother daughter" "incest father son">> - It would cost <<print cashFormat(_ContractCost*2)>> to enslave the two of them. - <<case "mismatched pair">> - Enslaving the younger, sissy $sister will cost <<print cashFormat(_ContractCost)>>. Alternatively, you could sell your rights to $him. Including costs, this will bring in <<print cashFormat(_slaveCost - _ContractCost)>>. As a third option, for <<print cashFormat(_ContractCost*2)>> you could enslave both <<if $sister === _sister2>>$sister<<else>>sibling<</if>>s, but you wouldn't be able to examine the older one first. _He2'll likely be very rebellious and sexually unskilled. - <<case "matched pair">> - $His _sister2 is identical except that _he2 is naturally female and lacks implants, having reached that size the normal way. - <<case "identical pair">> - $His _sister2 is identical. - <<case "identical herm pair">> - $His _sister2 is identical. - <<case "desperate broodmother">> - Enslaving $him will cost <<print cashFormat(_ContractCost)>>.<<if $minimumSlaveAge <= 3>> Alternatively, for <<print cashFormat(_ContractCost*2)>> you could enslave both mother and $his eldest child, the rest being sent to the slave orphanages.<</if>> - <<default>> - <div class="error" font-style="normal"> - ERROR: bad recETS event $RecETSevent - </div> - <</switch>> - </p> - - <<set _newSlaves = [$relative, $relative2]>> - <<if $RecETSevent === "desperate broodmother">> - <<set _newSlaves = [$relative]>> /* rushed videocall, no dossier */ - <<elseif ["addict mother daughter", "mismatched pair", "posh mother daughter"].includes($RecETSevent)>> - <<set _newSlaves = [$relative]>> /* caller doesn't want relative involved, so you don't get to inspect her even if you can force a sale */ - <</if>> - <<includeDOM App.UI.MultipleInspect(_newSlaves, true, "generic")>> - </span> - - <span id="result"> - /* Enslave one... */ - <<if $cash >= _ContractCost>> - /* ...and keep */ - <<switch $RecETSevent>> - <<case "addict mother daughter">> - <<link "Accept $his proposal and enslave $him">> - <<set _slave.counter.oral++>> - <<set $oralTotal++>> - <<run newSlave(_slave)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _slave)>> - <<replace "#result">> - Despite $himself, $he sobs with relief when you agree. $He offers to <<if $PC.dick != 0>>suck you off<<if $PC.vagina != -1>> and <</if>><</if>><<if $PC.vagina != -1>>eat you out<</if>> while you complete the necessary legalities, so you work away with a <<if $PC.dick != 0>>pair of motherly lips wrapped around your dick<<else>>motherly tongue pleasuring your clit<</if>> as $he pumps away eagerly under the desk. $He's definitely on aphrodisiacs. $He masturbates while $he sucks. - <</replace>> - <</link>> - <<case "posh mother daughter">> - <<link "Enslave the mother">> - <<run newSlave(_slave)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _slave)>> - <<replace "#result">> - You press your thumb down on your desk interface and then tell $him to read the display, strip, and show you $his body. $He knits $his brow in confusion and begins to curse at you but reads anyway. Comprehension dawns on $him and $he stares you in the eye for a long moment — and then drops $his gaze. $He knows the Free Cities well enough to understand. $He stands and sadly strips off $his blouse and slacks. Following orders, $he rotates slowly for you. Then, $he bends over facing away from you and spreads $his buttocks to display $his holes. Unsurprisingly, $he's got a well-used pussy but has clearly never taken it up the ass. That will change. - <</replace>> - <</link>> - <<case "mismatched pair">> - <<link "Enslave the sissy slut">> - <<set _slave.mother = 0>> - <<set _slave.father = 0>> - <<set _slave.rivalry = 0>> - <<set _slave.rivalryTarget = 0>> - <<run newSlave(_slave)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _slave)>> - <<replace "#result">> - The poor sissy isn't happy to become a slave, but $he's clearly relieved to be away from $his _sister2. The bitch isn't likely to have an easy time; the sale didn't clear _him2 from debt. _slave.slaveName describes $his basic sexual experience, which includes a lot of sucking and anal whoring. Without further ado $he moves from practical sexual slavery at the hands of $his _sister2 to actual sexual slavery. - <</replace>> - <</link>> - <<case "desperate broodmother">> - <<link "Enslave the mother">> - <<run newSlave(_slave)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _slave)>> - <<run startLabor(_slave)>> - <<replace "#result">> - You have the needy $girl immediately bought to your penthouse where you help $his laboring body into an available bed for inspection. $He asks where $his children were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of $him. $He's a little depressed at the news, but understands your reasons. You take the opportunity to give $him a good look over; $he is really dilated! Apart from that, between all the births and dicks, $his vagina is rather worn out, though $he seems to understand how to use it. $His anus has also seen use, but not nearly as much. - <</replace>> - <</link>> - <<case "identical herm pair" "identical pair" "incest brother brother" "incest brother sister" "incest father daughter" "incest father son" "incest mother daughter" "incest mother son" "incest sister sister" "incest twin brother" "incest twin sister" "incest twins mixed" "matched pair">> - <<default>> - <div class="error"> - ERROR: bad recETS event $RecETSevent - </div> - <</switch>> - - /* ...and resell */ - <<switch $RecETSevent>> - <<case "addict mother daughter" "mismatched pair" "posh mother daughter">> - <div> - <<link "Sell $him immediately">> - <<run cashX((_slaveCost - _ContractCost), "slaveTransfer", _slave)>> - <<replace "#result">> - _slave.slaveName accepts being resold without much fuss. $He's merely exchanged one unknown owner for another. For all $he knows $his new buyer will be less abusive than you would have been. $He would be less complacent if $he knew who $his buyers are; $he'll be immured in an arcade within the hour. - <</replace>> - <</link>> - <span class="detail"> - This will bring in <<print cashFormat(_slaveCost - _ContractCost)>> - </span> - </div> - <<case "desperate broodmother" "identical herm pair" "identical pair" "incest brother brother" "incest brother sister" "incest father daughter" "incest father son" "incest mother daughter" "incest mother son" "incest sister sister" "incest twin brother" "incest twin sister" "incest twins mixed" "matched pair">> - <<default>> - <div class="error"> - ERROR: bad recETS event $RecETSevent - </div> - <</switch>> - <<else>> - <div class="detail"> - You lack the necessary funds to enslave $him. - </div> - <</if>> - - /* Enslave both */ - <<if $cash >= (_ContractCost*2)>> - <<switch $RecETSevent>> - <<case "addict mother daughter" "desperate broodmother" "mismatched pair" "posh mother daughter">> - <<switch $RecETSevent>> - <<case "addict mother daughter" "posh mother daughter">> - <<link "Manipulate $him to enslave both mother and _daughter2">> - <<run newSlave($relative)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative)>> - <<run newSlave($relative2)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative2)>> - <<replace "#result">> - <<switch $RecETSevent>> - <<case "addict mother daughter">> - <<set $relative.devotion -= 50>> - <p> - Despite $himself, $he sobs with relief when you agree. $He offers to <<if $PC.dick != 0>>suck you off<<else>>eat you out<</if>> while you complete the necessary legalities, but instead you idly place a big dose of aphrodisiac on your desk and tell $him to wait quietly. After ten minutes of careful manipulation, $he's signed away both $his own freedom and $his _daughter2's without realizing it, in return for the drug. $He's masturbating furiously on a chair when $his _daughter2 arrives. $He immediately realizes what's happened and $his eyes fill with all-consuming hatred, but $he can't stop rubbing. - </p> - <p> - Unsurprisingly the _daughter2 is an addict too, and before long _he2's given _his2 signature and is sitting on a different chair on a strong dose of aphrodisiacs. <<if _slave.dick > 0>>Mother and _daughter2 crank it desperately,<<else>>Mother and _daughter2 schlick themselves desperately,<</if>> sobbing in despair as you hurry to complete the nastily complex paperwork. This is going to be fun. - </p> - <<case "posh mother daughter">> - <<set $relative.devotion -= 25>> - <p> - You press your thumb down on your desk interface and then tell $him to read the display, strip, and show you $his body. $He knits $his brow in confusion and begins to curse at you but reads anyway. Comprehension dawns on $him and $he stares you in the eye for a long moment — and then drops to <<if hasBothLegs(_slave)>>$his knees<<else>>the floor<</if>> and begins to beg for $his _daughter2's freedom. $He knows the Free Cities well enough to be unsurprised when you ignore $him completely. $He stands and sadly strips off $his blouse and slacks. Following orders, $he rotates slowly for you. Then, $he bends over facing away from you and spreads $his buttocks to display $his holes. Unsurprisingly, $he's got a well-used pussy but has clearly never taken it up the ass. That will change. - </p> - <p> - $His _daughter2 walks in angrily demanding to know why you called _him2 here. _He2 sees _his2 mother kneeling naked next to you, hears the hiss-click of the door closing and locking behind _him2, and makes the connection far too late to run. _He2 begins to scream at both you and _his2 mother at the top of _his2 lungs, and manages to keep up an impressive volume until you get _him2 gagged. _His2 mother does not move to interfere as you strip and bind $his _daughter2's struggling body. - </p> - <</switch>> - <</replace>> - <</link>> - <<case "mismatched pair">> - <<link "Enslave both">> - <<run newSlave($relative)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative)>> - <<run newSlave($relative2)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative2)>> - <<replace "#result">> - <p> - The poor sissy isn't happy to become a slave, but $he's clearly relieved to be away from $his _sister2. The bitch isn't likely to have an easy time; the sale didn't clear _him2 from debt. _slave.slaveName describes $his basic sexual experience, which includes a lot of sucking and anal whoring. Without further ado $he moves from practical sexual slavery at the hands of $his _sister2 to actual sexual slavery. - </p> - <p> - $His <<= _sister2>>-pimp walks in angrily demanding to know why you called _him2 here. _He2 sees _his2 sissy $sister kneeling naked next to you, hears the hiss-click of the door closing and locking behind _him2, and makes the connection far too late to run. _He2 begins to scream at both you and _his2 $sister at the top of _his2 lungs, and manages to keep up an impressive volume until you get _him2 gagged. _His2 $sister does not move to interfere as you strip and bind _his2 struggling body. In fact, as you get the gag in place, $he begins to laugh an unstable, cracking laugh that degenerates into sobbing. - </p> - <</replace>> - <</link>> - <<case "desperate broodmother">> - <<if $minimumSlaveAge <= 3>> - <<link "Accept $his offer">> - <<run newSlave($relative)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative)>> - <<run newSlave($relative2)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative2)>> - <<replace "#result">> - <p> - You have the needy $girl immediately bought to your penthouse where you help $his laboring body into an available bed for inspection. $He asks where $his other babies were taken, to which you reply somewhere they can be raised properly. They'll be taken care of and won't have to grow up on the streets, plus they were sucking the life out of $him. $He's a little depressed at the news, but understands your reasons. You take the opportunity to give $him a good look over; $he is really dilated! Apart from that, between all the births and dicks, $his vagina is rather worn out, though $he seems to understand how to use it. $His anus has also seen use, but not nearly as much. - </p> - <p> - You turn to the child clutching $his mother's grotesque belly. _He2 is in better shape than _his2 mother and tries to hide behind $his belly when you look at _him2. _He2'll be broken into a good little _girl2 for you soon enough. - <<if $relative2.preg > 0>> - You notice _his2 belly is slightly distended. It could be hunger, but upon closer inspection, you realize _his2 hymen has been torn. _He2's likely been servicing men alongside _his2 mother and has a bun in the oven too. - <</if>> - </p> - <</replace>> - <</link>> - <</if>> - <<default>> - <div class="error"> - ERROR: bad recETS event $RecETSevent <<print "[[Go back to previous passage '" + previous() +"'][previous()]]">> - </div> - <</switch>> - <<case "identical herm pair" "identical pair" "incest brother brother" "incest brother sister" "incest father daughter" "incest father son" "incest mother daughter" "incest mother son" "incest sister sister" "incest twin brother" "incest twin sister" "incest twins mixed" "matched pair">> - <<switch $RecETSevent>> - <<case "identical herm pair" "identical pair" "matched pair">> - <<link "Buy them both">> - <<run newSlave($relative)>> - <<run newSlave($relative2)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative2)>> - <<replace #result>> - <p> - <<switch $RecETSevent>> - <<case "identical herm pair">> - They giggle and kiss each other rather passionately, their miniskirts becoming pinned against their pregnancies by their stiffening pricks. They're very well trained but not very disciplined, though their pervertedness will be fun. - "You know we each are carrying the other'<<s>> twin<<s>>, right?" - <<case "identical pair">> - They giggle and kiss each other rather sexually, pressing their nearly identical bodies closely together. They're clearly very well trained. - <<case "matched pair">> - They giggle and kiss each other rather sexually, pressing their nearly identical bodies closely together so their hips and shapely buttocks hide any sign of their difference. They're clearly very well trained. - <</switch>> - </p> - <</replace>> - <</link>> - <<case "incest brother brother" "incest brother sister" "incest father daughter" "incest father son" "incest mother daughter" "incest mother son" "incest sister sister" "incest twin brother" "incest twin sister" "incest twins mixed">> - <<link "Buy them both">> - <<replace #mainbody>> - <<switch $RecETSevent>> - <<case "incest brother brother">> - They hug each other tightly as the older $sister slips a hand down the younger's pants. They ought to be an interesting addition to your penthouse. - <<case "incest brother sister">> - They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. - <<case "incest father daughter">> - The _daughter2 cheers happily and hugs _his2 relieved father. $He leans in and kisses _him2 deeply. They ought to be an interesting addition to your penthouse. - <<case "incest father son">> - The father hugs $his _daughter2 tight and slips a hand down _his2 pants. They ought to be an interesting addition to your penthouse. - <<case "incest mother daughter">> - The _daughter2 cheers happily and hugs _his2 relieved mother. $He leans in and kisses _him2 deeply. They ought to be an interesting addition to your penthouse. - <<case "incest mother son">> - The _daughter2 cheers happily and hugs _his2 relieved mother. $He leans in and kisses _him2 deeply. They ought to be an interesting addition to your penthouse. - <<case "incest sister sister">> - They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. - <<case "incest twin brother">> - They hug each other tightly as they slip a hand down the other's pants. They ought to be an interesting addition to your penthouse. - <<case "incest twin sister">> - They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. - <<case "incest twins mixed">> - They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse. - <</switch>> - <<switch $RecETSevent>> - <<case "incest brother sister" "incest mother son">> - <<run newSlave($relative2)>> - <<run newSlave($relative)>> - <<default>> - <<run newSlave($relative)>> - <<run newSlave($relative2)>> - <</switch>> - <<include "newSlaveIncestSex">> - <</replace>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative)>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", $relative2)>> - <</link>> - <<default>> - <div class="error"> - ERROR: bad recETS event $RecETSevent <<print "[[Go back to previous passage '" + previous() +"'][previous()]]">> - </div> - <</switch>> - <<default>> - <div class="error"> - ERROR: bad recETS event $RecETSevent <<print "[[Go back to previous passage '" + previous() +"'][previous()]]">> - </div> - <</switch>> - <<else>> - <div class="detail"> - You lack the necessary funds to enslave them both. - </div> - <</if>> - - <<if $debugMode > 0 && $debugModeEventSelection > 0>> - <p> - DEBUG: - <span class="indent"> - [[Go back to Nonrandom Event|Nonrandom Event][$eventSlave = 0]] - </span> - </p> - <</if>> - </span> -</span> - -<</if>> /* CLOSES EVENT SELECTION */ \ No newline at end of file