diff --git a/src/endWeek/economics/neighborsDevelopment.js b/src/endWeek/economics/neighborsDevelopment.js index 5c6dc3ee59c7d9868b7d3bfa5ed09375404e7d8d..2c5ea67278153f4df50d48ca5307276196a89b90 100644 --- a/src/endWeek/economics/neighborsDevelopment.js +++ b/src/endWeek/economics/neighborsDevelopment.js @@ -2124,410 +2124,427 @@ App.EndWeek.neighborsDevelopment = function() { } } - /* CROSS-FS ADOPTION*/ - if (arc.FSSubjugationist > random(50, 200)) { - if (validFSes.includes("FSDegradationist")) { - r.push(`The arcology's racial Subjugationist culture <span class="yellow">pushes it towards Degradationism.</span>`); - arc.FSDegradationist = 5; - return; - } else if ((validFSes.includes("FSAztecRevivalist") && validFSes.includes("FSEgyptianRevivalist"))) { - if (random(0, 1) === 0) { - r.push(`The arcology's racial Subjugationist culture <span class="yellow">pushes it towards Egyptian Revivalism,</span> since the Ancient Egyptians are famous for keeping a race of slaves.`); - arc.FSEgyptianRevivalist = 5; - return; - } else { - r.push(`The arcology's racial Supremacist culture <span class="yellow">pushes it towards Aztec Revivalism,</span> since the enslavement and sacrifice of slaves was fundamental to the culture.`); - arc.FSAztecRevivalist = 5; - return; - } - } - } - if (arc.FSRestart > random(50, 200)) { - if (validFSes.includes("FSNeoImperialist")) { - r.push(`The arcology's elitist, eugenicist culture <span class="yellow">pushes it towards Neo-Imperialism,</span> since the societal elite view themselves as the only appropriate rulers of their society.`); - arc.FSNeoImperialist = 5; - return; - } - } - if (arc.FSSupremacist > random(50, 200)) { - if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's racial Supremacist culture <span class="yellow">pushes it towards Paternalism.</span>`); - arc.FSPaternalist = 5; - return; - } else if ((validFSes.includes("FSEdoRevivalist") && validFSes.includes("FSChineseRevivalist") && (arc.FSSupremacistRace === "asian"))) { - if (random(0, 1) === 0) { - r.push(`The arcology's racial Supremacist culture <span class="yellow">pushes it towards Edo Revivalism,</span> since the beauty and grace of the Japanese people are watchwords there.`); - arc.FSEdoRevivalist = 5; - return; - } else { - r.push(`The arcology's racial Supremacist culture <span class="yellow">pushes it towards Chinese Revivalism,</span> since the wisdom of the Middle Kingdom is admired there.`); - arc.FSChineseRevivalist = 5; - return; - } - } - } - if (arc.FSRepopulationFocus > random(50, 200)) { - if (validFSes.includes("FSAssetExpansionist")) { - r.push(`The arcology's Repopulationist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since big pregnant bellies go great with huge tits and asses.`); - arc.FSAssetExpansionist = 5; - return; - } else if (validFSes.includes("FSGenderFundamentalist")) { - r.push(`The arcology's Repopulationist culture <span class="yellow">pushes it towards Gender Fundamentalism,</span> since traditional women make better mothers.`); - arc.FSGenderFundamentalist = 5; - return; - } else if (validFSes.includes("FSPetiteAdmiration")) { - r.push(`The arcology's Repopulationist culture <span class="yellow">pushes it towards Petite Admiration,</span> since shorter women tend to have an easier time with childbirth.`); - arc.FSPetiteAdmiration = 5; - return; - } - } else if (arc.FSRestart > random(50, 200)) { - if (validFSes.includes("FSDegradationist")) { - r.push(`The arcology's elite focused culture <span class="yellow">pushes it towards Degradationism,</span> since its lowest class deserves nothing but misery.`); - arc.FSDegradationist = 5; - return; - } else if (validFSes.includes("FSSlaveProfessionalism")) { - r.push(`The arcology's elite focused culture <span class="yellow">pushes it towards Slave Professionalism,</span> since the highest class deserve nothing less than the best slaves.`); - arc.FSSlaveProfessionalism = 5; - return; - } else if (validFSes.includes("FSHedonisticDecadence")) { - r.push(`The arcology's wide range of imports <span class="yellow">pushes it towards Decadent Hedonism,</span> since it has access to so many undiscovered pleasures.`); - arc.FSHedonisticDecadence = 5; - return; - } - } - if (arc.FSGenderRadicalist > random(50, 200)) { - if (validFSes.includes("FSTransformationFetishist")) { - r.push(`The arcology's Gender Radicalist culture <span class="yellow">pushes it towards Transformation Fetishism,</span> since surgery can turn a slave into anything.`); - arc.FSTransformationFetishist = 5; - return; - } else if (validFSes.includes("FSSlimnessEnthusiast")) { - r.push(`The arcology's Gender Radicalist culture <span class="yellow">pushes it towards Slimness Enthusiasm,</span> since that's the kind of body many of its slaves have.`); - arc.FSSlimnessEnthusiast = 5; - return; - } else if (validFSes.includes("FSCummunism")) { - r.push(`The arcology's Gender Radicalist culture <span class="yellow">pushes it towards Cummunism,</span> since many of its slaves are capable of giving cum.`); - arc.FSCummunism = 5; - return; - } - } else if (arc.FSGenderFundamentalist > random(50, 200)) { - if (validFSes.includes("FSPastoralist")) { - r.push(`The arcology's Gender Fundamentalist culture <span class="yellow">pushes it towards Pastoralism,</span> since its pregnant slaves are already giving milk.`); - arc.FSPastoralist = 5; - return; - } else if (validFSes.includes("FSIntellectualDependency")) { - r.push(`The arcology's Gender Fundamentalist culture <span class="yellow">pushes it towards Intellectual Dependency,</span> since women don't need to think to serve men.`); - arc.FSYouthPreferentialist = 5; - return; - } else if (validFSes.includes("FSYouthPreferentialist")) { - r.push(`The arcology's Gender Fundamentalist culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since younger slaves are beautiful and fertile.`); - arc.FSYouthPreferentialist = 5; - return; - } - } - if (arc.FSPaternalist > random(50, 200)) { - if (validFSes.includes("FSChattelReligionist")) { - r.push(`The arcology's Paternalist culture <span class="yellow">pushes it towards Chattel Religionism,</span> since many of its slaves are already worshipful.`); - arc.FSChattelReligionist = 5; - return; - } else if (validFSes.includes("FSBodyPurist")) { - r.push(`The arcology's Paternalist culture <span class="yellow">pushes it towards Body Purism,</span> since giving slaves dangerous drugs is hardly good for them.`); - arc.FSBodyPurist = 5; - return; - } else if (validFSes.includes("FSRomanRevivalist")) { - r.push(`The arcology's Paternalist culture <span class="yellow">pushes it towards Roman Revivalism,</span> since loyal service to the res publica bears similarity to their existing mores.`); - arc.FSRomanRevivalist = 5; - return; - } - } else if (arc.FSDegradationist > random(50, 200)) { - if (validFSes.includes("FSTransformationFetishist")) { - r.push(`The arcology's Degradationist culture <span class="yellow">pushes it towards Transformation Fetishism,</span> the ultimate expression of power over slave bodies.`); - arc.FSTransformationFetishist = 5; - return; - } else if (validFSes.includes("FSGenderRadicalist")) { - r.push(`The arcology's Degradationist culture <span class="yellow">pushes it towards Gender Radicalism,</span> since the joy of forcing a gender role on a slave is already popular.`); - arc.FSGenderRadicalist = 5; - return; - } - } - if (arc.FSIntellectualDependency > random(50, 200)) { - if (validFSes.includes("FSTransformationFetishist")) { - r.push(`The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Transformation Fetishism,</span> to give its bimbos a body most fitting.`); - arc.FSTransformationFetishist = 5; - return; - } else if (validFSes.includes("FSYouthPreferentialist")) { - r.push(`The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since the young have more energy to party.`); - arc.FSYouthPreferentialist = 5; - return; - } else if (validFSes.includes("FSHedonisticDecadence")) { - r.push(`The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Decadent Hedonism,</span> since base instinct already rules slaves' lives.`); - arc.FSHedonisticDecadence = 5; - return; - } else if (validFSes.includes("FSRepopulationFocus")) { - r.push(`The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Repopulationism,</span> since there has been an epidemic of unplanned pregnancies among the slave population.`); - arc.FSRepopulationFocus = 5; - return; - } - } else if (arc.FSSlaveProfessionalism > random(50, 200)) { - if (validFSes.includes("FSMaturityPreferentialist")) { - r.push(`The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Maturity Preferentialist,</span> since with age comes experience.`); - arc.FSMaturityPreferentialist = 5; - return; - } else if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Paternalism,</span> since happy slaves are much more willing to be molded in to shape.`); - arc.FSPaternalist = 5; - return; - } else if (validFSes.includes("FSPhysicalIdealist")) { - r.push(`The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Physical Idealism,</span> since a fitting body is required to house the perfect mind.`); - arc.FSPhysicalIdealist = 5; - return; - } else if (validFSes.includes("FSChattelReligionist")) { - r.push(`The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Chattel Religionism,</span> since skilled service is already a part of a slave's daily life.`); - arc.FSChattelReligionist = 5; - return; - } - } - if (arc.FSBodyPurist > random(50, 200)) { - if (validFSes.includes("FSPhysicalIdealist")) { - r.push(`The arcology's Body Purist culture <span class="yellow">pushes it towards Physical Idealism,</span> since it already takes an intense interest in bodily perfection.`); - arc.FSPhysicalIdealist = 5; - return; - } else if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Body Purist culture <span class="yellow">pushes it towards Paternalism,</span> since it's become obvious that happiness is a necessary part of wellness.`); - arc.FSPaternalist = 5; - return; - } - } else if (arc.FSTransformationFetishist > random(50, 200)) { - if (validFSes.includes("FSAssetExpansionist")) { - r.push(`The arcology's Transformation Fetishist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since it's already overrun with massive tits and asses.`); - arc.FSAssetExpansionist = 5; - return; - } else if (validFSes.includes("FSDegradationist")) { - r.push(`The arcology's Transformation Fetishist culture <span class="yellow">pushes it towards Degradationism,</span> since it's already used to slaves whining about their latest surgeries.`); - arc.FSDegradationist = 5; - return; - } - } - if (arc.FSYouthPreferentialist > random(50, 200)) { - if (validFSes.includes("FSSlimnessEnthusiast")) { - r.push(`The arcology's Youth Preferentialist culture <span class="yellow">pushes it towards Slimness Enthusiasm,</span> since that's the kind of body many of its slaves have.`); - arc.FSSlimnessEnthusiast = 5; - return; - } else if (validFSes.includes("FSRepopulationFocus")) { - r.push(`The arcology's Youth Preferentialist culture <span class="yellow">pushes it towards Repopulationism,</span> since many of its slaves are deliciously ripe for breeding.`); - arc.FSRepopulationFocus = 5; - return; - } - } else if (arc.FSMaturityPreferentialist > random(50, 200)) { - if (validFSes.includes("FSAssetExpansionist")) { - r.push(`The arcology's Maturity Preferentialist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since that's the kind of body many of its slaves have.`); - arc.FSAssetExpansionist = 5; - return; - } else if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Maturity Preferentialist culture <span class="yellow">pushes it towards Paternalism,</span> since its many older slaves have skills best applied by a happy woman.`); - arc.FSPaternalist = 5; - return; - } - } - if (arc.FSPetiteAdmiration > random(50, 200)) { - if (validFSes.includes("FSAssetExpansionist")) { - r.push(`The arcology's Petite Admiration culture <span class="yellow">pushes it towards Asset Expansionist,</span> since a ${girlU} with tits wider than ${heU} is tall attracts quite some attention.`); - arc.FSAssetExpansionist = 5; - return; - } else if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Petite Admiration culture <span class="yellow">pushes it towards Paternalism,</span> since such tiny ${girlU}s need extra special attention.`); - arc.FSPaternalist = 5; - return; - } else if (validFSes.includes("FSIncestFetishist")) { - r.push(`The arcology's Petite Admiration culture <span class="yellow">pushes it towards Incest Fetishism,</span> since age play often goes hand-in-hand with size play.`); - arc.FSIncestFetishist = 5; - return; - } - } else if (arc.FSStatuesqueGlorification > random(50, 200)) { - if (validFSes.includes("FSPhysicalIdealist")) { - r.push(`The arcology's Statuesque Glorification culture <span class="yellow">pushes it towards Physical Idealism,</span> since being ripped complements being tall.`); - arc.FSPhysicalIdealist = 5; - return; - } else if (validFSes.includes("FSDegradationist")) { - r.push(`The arcology's Statuesque Glorification culture <span class="yellow">pushes it towards Degradationism,</span> since those that don't measure up deserve only suffering.`); - arc.FSDegradationist = 5; - return; - } - } - if (arc.FSSlimnessEnthusiast > random(50, 200)) { - if (validFSes.includes("FSYouthPreferentialist")) { - r.push(`The arcology's Slimness Enthusiast culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since younger slaves are often attractively slim.`); - arc.FSYouthPreferentialist = 5; - return; - } else if (validFSes.includes("FSBodyPurist")) { - r.push(`The arcology's Slimness Enthusiast culture <span class="yellow">pushes it towards Body Purism,</span> since the last thing they want is prettily slender girls with health trouble.`); - arc.FSBodyPurist = 5; - return; - } - } else if (arc.FSAssetExpansionist > random(50, 200)) { - if (validFSes.includes("FSMaturityPreferentialist")) { - r.push(`The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Maturity Preferentialism,</span> since MILF slaves tend to come with nice big tits.`); - arc.FSMaturityPreferentialist = 5; - return; - } else if (validFSes.includes("FSBodyPurist")) { - r.push(`The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Body Purism,</span> since slaves on curatives are slaves not on growth hormones.`); - arc.FSBodyPurist = 5; - return; - } else if (validFSes.includes("FSPetiteAdmiration") && validFSes.includes("FSStatuesqueGlorification")) { - if (random(0, 1) === 1) { - r.push(`The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Petite Admiration,</span> since the smaller a slave's body is, the bigger their breasts will look.`); - arc.FSPetiteAdmiration = 5; - return; - } else { - r.push(`The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Statuesque Glorification,</span> as the love of all things huge is rather indiscriminate.`); - arc.FSStatuesqueGlorification = 5; - return; + /* CROSS-FS ADOPTION */ + /** Map from source to an array of destination FSes. On the destination side, order matters; adoption is attempted in sequence through the array. + * If several destination FSes should be equally likely at a particular stage, put them in a nested array. + * @typedef {{fs: FC.FutureSociety, prereqs?: () => boolean, msg: string}} crossFSDest + * @type {Map<FC.FutureSociety, (crossFSDest|crossFSDest[])[]>} */ + const crossFS = new Map([ + ["FSSubjugationist", [ + { + fs: "FSDegradationist", + msg: `The arcology's racial Subjugationist culture <span class="yellow">pushes it towards Degradationism.</span>`, + }, + [ // pick one at random + { + fs: "FSAztecRevivalist", + msg: `The arcology's racial Supremacist culture <span class="yellow">pushes it towards Aztec Revivalism,</span> since the enslavement and sacrifice of slaves was fundamental to the culture.` + }, + { + fs: "FSEgyptianRevivalist", + msg: `The arcology's racial Subjugationist culture <span class="yellow">pushes it towards Egyptian Revivalism,</span> since the Ancient Egyptians are famous for keeping a race of slaves.` + } + ] + ]], + ["FSSupremacist", [ + { + fs: "FSPaternalist", + msg: `The arcology's racial Supremacist culture <span class="yellow">pushes it towards Paternalism.</span>`, + }, + [ // pick one at random + { + fs: "FSEdoRevivalist", + prereqs: () => arc.FSSupremacistRace === "asian", + msg: `The arcology's racial Supremacist culture <span class="yellow">pushes it towards Edo Revivalism,</span> since the beauty and grace of the Japanese people are watchwords there.` + }, + { + fs: "FSChineseRevivalist", + prereqs: () => arc.FSSupremacistRace === "asian", + msg: `The arcology's racial Supremacist culture <span class="yellow">pushes it towards Chinese Revivalism,</span> since the wisdom of the Middle Kingdom is admired there.` + } + ] + ]], + ["FSRepopulationFocus", [ + { + fs: "FSGenderFundamentalist", + msg: `The arcology's Repopulationist culture <span class="yellow">pushes it towards Gender Fundamentalism,</span> since traditional women make better mothers.` + }, + { + fs: "FSAssetExpansionist", + msg: `The arcology's Repopulationist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since big pregnant bellies go great with huge tits and asses.` + }, + { + fs: "FSPetiteAdmiration", + msg: `The arcology's Repopulationist culture <span class="yellow">pushes it towards Petite Admiration,</span> since shorter women tend to have an easier time with childbirth.` + }, + ]], + ["FSRestart", [ + { + fs: "FSNeoImperialist", + msg: `The arcology's elitist, eugenicist culture <span class="yellow">pushes it towards Neo-Imperialism,</span> since the societal elite view themselves as the only appropriate rulers of their society.` + }, + { + fs: "FSDegradationist", + msg: `The arcology's elite focused culture <span class="yellow">pushes it towards Degradationism,</span> since its lowest class deserves nothing but misery.` + }, + { + fs: "FSSlaveProfessionalism", + msg: `The arcology's elite focused culture <span class="yellow">pushes it towards Slave Professionalism,</span> since the highest class deserve nothing less than the best slaves.` + }, + { + fs: "FSHedonisticDecadence", + msg: `The arcology's wide range of imports <span class="yellow">pushes it towards Decadent Hedonism,</span> since it has access to so many undiscovered pleasures.` + }, + ]], + ["FSGenderRadicalist", [ + { + fs: "FSTransformationFetishist", + msg: `The arcology's Gender Radicalist culture <span class="yellow">pushes it towards Transformation Fetishism,</span> since surgery can turn a slave into anything.` + }, + { + fs: "FSSlimnessEnthusiast", + msg: `The arcology's Gender Radicalist culture <span class="yellow">pushes it towards Slimness Enthusiasm,</span> since that's the kind of body many of its slaves have.` + }, + { + fs: "FSCummunism", + msg: `The arcology's Gender Radicalist culture <span class="yellow">pushes it towards Cummunism,</span> since many of its slaves are capable of giving cum.` + }, + ]], + ["FSGenderFundamentalist", [ + { + fs: "FSPastoralist", + msg: `The arcology's Gender Fundamentalist culture <span class="yellow">pushes it towards Pastoralism,</span> since its pregnant slaves are already giving milk.` + }, + { + fs: "FSIntellectualDependency", + msg: `The arcology's Gender Fundamentalist culture <span class="yellow">pushes it towards Intellectual Dependency,</span> since women don't need to think to serve men.` + }, + { + fs: "FSYouthPreferentialist", + msg: `The arcology's Gender Fundamentalist culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since younger slaves are beautiful and fertile.` + }, + ]], + ["FSPaternalist", [ + { + fs: "FSChattelReligionist", + msg: `The arcology's Paternalist culture <span class="yellow">pushes it towards Chattel Religionism,</span> since many of its slaves are already worshipful.` + }, + { + fs: "FSBodyPurist", + msg: `The arcology's Paternalist culture <span class="yellow">pushes it towards Body Purism,</span> since giving slaves dangerous drugs is hardly good for them.` + }, + { + fs: "FSRomanRevivalist", + msg: `The arcology's Paternalist culture <span class="yellow">pushes it towards Roman Revivalism,</span> since loyal service to the res publica bears similarity to their existing mores.` + }, + ]], + ["FSDegradationist", [ + { + fs: "FSTransformationFetishist", + msg: `The arcology's Degradationist culture <span class="yellow">pushes it towards Transformation Fetishism,</span> the ultimate expression of power over slave bodies.` + }, + { + fs: "FSGenderRadicalist", + msg: `The arcology's Degradationist culture <span class="yellow">pushes it towards Gender Radicalism,</span> since the joy of forcing a gender role on a slave is already popular.` + }, + { + fs: "FSIntellectualDependency", + msg: `The arcology's Degradationist culture <span class="yellow">pushes it towards Intellectual Dependency,</span> since there's no need for a sex toy to be thinking.` + }, + ]], + ["FSIntellectualDependency", [ + { + fs: "FSTransformationFetishist", + msg: `The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Transformation Fetishism,</span> to give its bimbos a body most fitting.` + }, + { + fs: "FSYouthPreferentialist", + msg: `The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since the young have more energy to party.` + }, + { + fs: "FSHedonisticDecadence", + msg: `The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Decadent Hedonism,</span> since base instinct already rules slaves' lives.` + }, + { + fs: "FSRepopulationFocus", + msg: `The arcology's Intellectual Dependency culture <span class="yellow">pushes it towards Repopulationism,</span> since there has been an epidemic of unplanned pregnancies among the slave population.` + }, + ]], + ["FSSlaveProfessionalism", [ + { + fs: "FSMaturityPreferentialist", + msg: `The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Maturity Preferentialist,</span> since with age comes experience.` + }, + { + fs: "FSPaternalist", + msg: `The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Paternalism,</span> since happy slaves are much more willing to be molded into shape.` + }, + { + fs: "FSPhysicalIdealist", + msg: `The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Physical Idealism,</span> since a fitting body is required to house the perfect mind.` + }, + { + fs: "FSChattelReligionist", + msg: `The arcology's Slave Professionalism culture <span class="yellow">pushes it towards Chattel Religionism,</span> since skilled service is already a part of a slave's daily life.` + }, + ]], + ["FSBodyPurist", [ + { + fs: "FSPhysicalIdealist", + msg: `The arcology's Body Purist culture <span class="yellow">pushes it towards Physical Idealism,</span> since it already takes an intense interest in bodily perfection.` + }, + { + fs: "FSPaternalist", + msg: `The arcology's Body Purist culture <span class="yellow">pushes it towards Paternalism,</span> since it's become obvious that happiness is a necessary part of wellness.` + }, + ]], + ["FSTransformationFetishist", [ + { + fs: "FSAssetExpansionist", + msg: `The arcology's Transformation Fetishist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since it's already overrun with massive tits and asses.` + }, + { + fs: "FSDegradationist", + msg: `The arcology's Transformation Fetishist culture <span class="yellow">pushes it towards Degradationism,</span> since it's already used to slaves whining about their latest surgeries.` + }, + ]], + ["FSYouthPreferentialist", [ + { + fs: "FSSlimnessEnthusiast", + msg: `The arcology's Youth Preferentialist culture <span class="yellow">pushes it towards Slimness Enthusiasm,</span> since that's the kind of body many of its slaves have.` + }, + { + fs: "FSRepopulationFocus", + msg: `The arcology's Youth Preferentialist culture <span class="yellow">pushes it towards Repopulationism,</span> since many of its slaves are deliciously ripe for breeding.` + }, + ]], + ["FSMaturityPreferentialist", [ + { + fs: "FSAssetExpansionist", + msg: `The arcology's Maturity Preferentialist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since that's the kind of body many of its slaves have.` + }, + { + fs: "FSPaternalist", + msg: `The arcology's Maturity Preferentialist culture <span class="yellow">pushes it towards Paternalism,</span> since its many older slaves have skills best applied by a happy woman.` + }, + ]], + ["FSPetiteAdmiration", [ + { + fs: "FSAssetExpansionist", + msg: `The arcology's Petite Admiration culture <span class="yellow">pushes it towards Asset Expansionist,</span> since a ${girlU} with tits wider than ${heU} is tall attracts quite some attention.` + }, + { + fs: "FSPaternalist", + msg: `The arcology's Petite Admiration culture <span class="yellow">pushes it towards Paternalism,</span> since such tiny ${girlU}s need extra special attention.` + }, + { + fs: "FSIncestFetishist", + msg: `The arcology's Petite Admiration culture <span class="yellow">pushes it towards Incest Fetishism,</span> since age play often goes hand-in-hand with size play.` + }, + ]], + ["FSStatuesqueGlorification", [ + { + fs: "FSPhysicalIdealist", + msg: `The arcology's Statuesque Glorification culture <span class="yellow">pushes it towards Physical Idealism,</span> since being ripped complements being tall.` + }, + { + fs: "FSDegradationist", + msg: `The arcology's Statuesque Glorification culture <span class="yellow">pushes it towards Degradationism,</span> since those that don't measure up deserve only suffering.` + }, + ]], + ["FSSlimnessEnthusiast", [ + { + fs: "FSYouthPreferentialist", + msg: `The arcology's Slimness Enthusiast culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since younger slaves are often attractively slim.` + }, + { + fs: "FSBodyPurist", + msg: `The arcology's Slimness Enthusiast culture <span class="yellow">pushes it towards Body Purism,</span> since the last thing they want is prettily slender girls with health trouble.` + }, + ]], + ["FSAssetExpansionist", [ + { + fs: "FSMaturityPreferentialist", + msg: `The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Maturity Preferentialism,</span> since MILF slaves tend to come with nice big tits.` + }, + { + fs: "FSBodyPurist", + msg: `The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Body Purism,</span> since slaves on curatives are slaves not on growth hormones.` + }, + [ // pick one at random + { + fs: "FSPetiteAdmiration", + msg: `The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Petite Admiration,</span> since the smaller a slave's body is, the bigger their breasts will look.` + }, + { + fs: "FSStatuesqueGlorification", + msg: `The arcology's Asset Expansionist culture <span class="yellow">pushes it towards Statuesque Glorification,</span> as the love of all things huge is rather indiscriminate.` + }, + ] + ]], + ["FSPastoralist", [ + { + fs: "FSBodyPurist", + msg: `The arcology's Pastoralist culture <span class="yellow">pushes it towards Body Purism,</span> since there have been concerns about milk purity.` + }, + { + fs: "FSAssetExpansionist", + msg: `The arcology's Pastoralist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since they're convinced that there's no such thing as udders that are too big.` + }, + { + fs: "FSRepopulationFocus", + msg: `The arcology's Pastoralist culture <span class="yellow">pushes it towards Repopulationism,</span> since pregnancy stimulates milk flow.` + }, + ]], + ["FSCummunism", [ + { + fs: "FSPhysicalIdealist", + msg: `The arcology's Cummunist culture <span class="yellow">pushes it towards Physical Idealism,</span> since big balls and huge loads go hand in hand with masculine muscles.` + }, + { + fs: "FSAssetExpansionist", + msg: `The arcology's Cummunist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since they're convinced that there's no such thing as balls that are too big.` + }, + { + fs: "FSBodyPurist", + msg: `The arcology's Cummunist culture <span class="yellow">pushes it towards Body Purism,</span> since there have been concerns about cum purity.` + }, + ]], + ["FSHedonisticDecadence", [ + { + fs: "FSPastoralist", + msg: `The arcology's Hedonistic culture <span class="yellow">pushes it towards Pastoralism,</span> since nothing beats a nice glass of fresh squeezed milk with your cake.` + }, + { + fs: "FSIntellectualDependency", + msg: `The arcology's Hedonistic culture <span class="yellow">pushes it towards Intellectual Dependency,</span> since higher thought is unneeded when you have everything you want.` + }, + { + fs: "FSPaternalist", + msg: `The arcology's Hedonistic culture <span class="yellow">pushes it towards Paternalism,</span> since happiness is infectious.` + }, + ]], + ["FSPhysicalIdealist", [ + { + fs: "FSBodyPurist", + msg: `The arcology's Physical Idealist culture <span class="yellow">pushes it towards Body Purism,</span> since it's already used to treating slaves' bodies as temples.` + }, + { + fs: "FSYouthPreferentialist", + msg: `The arcology's Physical Idealist culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since beauty and athletic prowess do tend to peak early.` + }, + { + fs: "FSStatuesqueGlorification", + msg: `The arcology's Physical Idealist culture <span class="yellow">pushes it towards Statuesque Glorification,</span> to better emulate the titans of legend.` + }, + { + fs: "FSCummunism", + msg: `The arcology's Physical Idealist culture <span class="yellow">pushes it towards Cummunism,</span> since muscular, testosterone filled slaves make admirable cumshots.` + }, + ]], + ["FSIncestFetishist", [ + { + fs: "FSRepopulationFocus", + msg: `The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Repopulationism,</span> in order to create many new future loving couples.` + }, + { + fs: "FSBodyPurist", + msg: `The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Body Purism,</span> in order to keep its bloodlines pure.` + }, + { + fs: "FSPaternalist", + msg: `The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Paternalism,</span> as healthy slaves live longer allowing relationships to span generations.` + }, + { + fs: "FSEgyptianRevivalist", + msg: `The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Egyptian Revivalism,</span> as they naturally seek even more incestuous fun.` + }, + ]], + ["FSChattelReligionist", [ + { + fs: "FSPaternalist", + msg: `The arcology's Chattel Religionist culture <span class="yellow">pushes it towards Paternalism,</span> since charitable care for slaves' welfare has become widespread.` + }, + { + fs: "FSArabianRevivalist", + msg: `The arcology's Chattel Religionist culture <span class="yellow">pushes it towards Arabian Revivalism,</span> since such an intermingling of slavery and faith fascinates them.` + }, + ]], + ["FSRomanRevivalist", [ + { + fs: "FSPaternalist", + msg: `The arcology's Roman Revivalist culture <span class="yellow">pushes it towards Paternalism,</span> since some Roman slaves were traditionally permitted limited rights.` + }, + ]], + ["FSNeoImperialist", [ + { + fs: "FSRestart", + msg: `The arcology's Neo-Imperialist culture <span class="yellow">pushes it towards Eugenics,</span> since their hegemonic, noble culture naturally views itself as genetically superior to the unwashed masses.` + }, + ]], + ["FSAztecRevivalist", [ + { + fs: "FSDegradationist", + msg: `The arcology's Aztec Revivalist culture <span class="yellow">pushes it towards Degradation,</span> since most Aztec war slaves were tortured and sacrificed.` + }, + ]], + ["FSEgyptianRevivalist", [ + { + fs: "FSChattelReligionist", + msg: `The arcology's Egyptian Revivalist culture <span class="yellow">pushes it towards Chattel Religionism,</span> since worship is already becoming an established part of its life.` + }, + { + fs: "FSIncestFetishist", + msg: `The arcology's Egyptian Revivalist culture <span class="yellow">pushes it towards Incest Fetishism,</span> since more incest is only a good thing in its eyes.` + }, + ]], + ["FSEdoRevivalist", [ + { + fs: "FSSlimnessEnthusiast", + msg: `The arcology's Edo Revivalist culture <span class="yellow">pushes it towards Slimness Enthusiasm,</span> since slim and elegant slaves are already fashionable there.` + }, + ]], + ["FSArabianRevivalist", [ + { + fs: "FSChattelReligionist", + msg: `The arcology's Arabian Revivalist culture <span class="yellow">pushes it towards Chattel Religionism,</span> since the word of God is already a matter of daily significance there.` + }, + ]], + ["FSChineseRevivalist", [ + { + fs: "FSProfessionalist", + msg: `The arcology's Chinese Revivalist culture <span class="yellow">pushes it towards Slave Professionalism,</span> since well-educated, dispassionate slave leaders are more effective.` + }, + { + fs: "FSPaternalist", + msg: `The arcology's Chinese Revivalist culture <span class="yellow">pushes it towards Paternalism,</span> since traditional beliefs about duty and order have become accepted.` + }, + ]], + ]); + const validChoice = /** @param {crossFSDest} dest */ (dest) => validFSes.includes(dest.fs) && (!dest.prereqs || dest.prereqs()); + const candidates = []; + for (const [source, destArray] of crossFS) { + if (arc[source] > random(50, 200)) { + for (const dest of destArray) { + if (Array.isArray(dest)) { + // pick one at random + const choice = dest.filter(x => validChoice(x)).random(); + if (choice) { + candidates.push(choice); + break; // only select one dest per source + } + } else if (validChoice(dest)) { + candidates.push(dest); + break; // only select one dest per source + } } } } - if (arc.FSPastoralist > random(50, 200)) { - if (validFSes.includes("FSBodyPurist")) { - r.push(`The arcology's Pastoralist culture <span class="yellow">pushes it towards Body Purism,</span> since there have been concerns about milk purity.`); - arc.FSBodyPurist = 5; - return; - } else if (validFSes.includes("FSAssetExpansionist")) { - r.push(`The arcology's Pastoralist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since they're convinced that there's no such thing as udders that are too big.`); - arc.FSAssetExpansionist = 5; - return; - } else if (validFSes.includes("FSRepopulationFocus")) { - r.push(`The arcology's Pastoralist culture <span class="yellow">pushes it towards Repopulationism,</span> since pregnancy stimulates milk flow.`); - arc.FSRepopulationFocus = 5; - return; - } - } else if (arc.FSCummunism > random(50, 200)) { - if (validFSes.includes("FSPhysicalIdealist")) { - r.push(`The arcology's Cummunist culture <span class="yellow">pushes it towards Physical Idealism,</span> since big balls and huge loads go hand in hand with masculine muscles.`); - arc.FSPhysicalIdealist = 5; - return; - } else if (validFSes.includes("FSAssetExpansionist")) { - r.push(`The arcology's Cummunist culture <span class="yellow">pushes it towards Asset Expansionism,</span> since they're convinced that there's no such thing as balls that are too big.`); - arc.FSAssetExpansionist = 5; - return; - } else if (validFSes.includes("FSBodyPurist")) { - r.push(`The arcology's Cummunist culture <span class="yellow">pushes it towards Body Purism,</span> since there have been concerns about cum purity.`); - arc.FSBodyPurist = 5; - return; - } - } - if (arc.FSHedonisticDecadence > random(50, 200)) { - if (validFSes.includes("FSPastoralist")) { - r.push(`The arcology's Hedonistic culture <span class="yellow">pushes it towards Pastoralism,</span> since nothing beats a nice glass of fresh squeezed milk with your cake.`); - arc.FSPastoralist = 5; - return; - } else if (validFSes.includes("FSIntellectualDependency")) { - r.push(`The arcology's Hedonistic culture <span class="yellow">pushes it towards Intellectual Dependency,</span> since higher thought is unneeded when you have everything you want.`); - arc.FSIntellectualDependency = 5; - return; - } else if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Hedonistic culture <span class="yellow">pushes it towards Paternalism,</span> since happiness is infectious.`); - arc.FSPaternalist = 5; - return; - } - } else if (arc.FSPhysicalIdealist > random(50, 200)) { - if (validFSes.includes("FSBodyPurist")) { - r.push(`The arcology's Physical Idealist culture <span class="yellow">pushes it towards Body Purism,</span> since it's already used to treating slaves' bodies as temples.`); - arc.FSBodyPurist = 5; - return; - } else if (validFSes.includes("FSYouthPreferentialist")) { - r.push(`The arcology's Physical Idealist culture <span class="yellow">pushes it towards Youth Preferentialism,</span> since beauty and athletic prowess do tend to peak early.`); - arc.FSYouthPreferentialist = 5; - return; - } else if (validFSes.includes("FSStatuesqueGlorification")) { - r.push(`The arcology's Physical Idealist culture <span class="yellow">pushes it towards Statuesque Glorification,</span> to better emulate the titans of legend.`); - arc.FSStatuesqueGlorification = 5; - return; - } else if (validFSes.includes("FSCummunism")) { - r.push(`The arcology's Physical Idealist culture <span class="yellow">pushes it towards Cummunism,</span> since muscular, testosterone filled slaves make admirable cumshots.`); - arc.FSCummunism = 5; - return; - } - } - if (arc.FSIncestFetishist > random(50, 200)) { - if (validFSes.includes("FSRepopulationFocus")) { - r.push(`The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Repopulationism,</span> in order to create many new future loving couples.`); - arc.FSRepopulationFocus = 5; - return; - } else if (validFSes.includes("FSBodyPurist")) { - r.push(`The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Body Purism,</span> in order to keep its bloodlines pure.`); - arc.FSBodyPurist = 5; - return; - } else if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Paternalism,</span> as healthy slaves live longer allowing relationships to span generations.`); - arc.FSPaternalist = 5; - return; - } else if (validFSes.includes("FSEgyptianRevivalist")) { - r.push(`The arcology's Incest Fetishizing culture <span class="yellow">pushes it towards Egyptian Revivalism,</span> as they naturally seek even more incestuous fun.`); - arc.FSEgyptianRevivalist = 5; - return; - } - } - if (arc.FSChattelReligionist > random(50, 200)) { - if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Chattel Religionist culture <span class="yellow">pushes it towards Paternalism,</span> since charitable care for slaves' welfare has become widespread.`); - arc.FSPaternalist = 5; - return; - } else if (validFSes.includes("FSArabianRevivalist")) { - r.push(`The arcology's Chattel Religionist culture <span class="yellow">pushes it towards Arabian Revivalism,</span> since such an intermingling of slavery and faith fascinates them.`); - arc.FSArabianRevivalist = 5; - return; - } - } - if (arc.FSRomanRevivalist > random(50, 200)) { - if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Roman Revivalist culture <span class="yellow">pushes it towards Paternalism,</span> since some Roman slaves were traditionally permitted limited rights.`); - arc.FSPaternalist = 5; - return; - } - } - if (arc.FSNeoImperialist > random(50, 200)) { - if (validFSes.includes("FSRestart")) { - r.push(`The arcology's Neo-Imperialist culture <span class="yellow">pushes it towards Eugenics,</span> since their hegemonic, noble culture naturally views itself as genetically superior to the unwashed masses.`); - arc.FSRestart = 5; - return; - } - } - if (arc.FSAztecRevivalist > random(50, 200)) { - if (validFSes.includes("FSDegradationist")) { - r.push(`The arcology's Aztec Revivalist culture <span class="yellow">pushes it towards Degradation,</span> since most Aztec war slaves were tortured and sacrificed.`); - arc.FSDegradationist = 5; - return; - } - } - if (arc.FSEgyptianRevivalist > random(50, 200)) { - if (validFSes.includes("FSChattelReligionist")) { - r.push(`The arcology's Egyptian Revivalist culture <span class="yellow">pushes it towards Chattel Religionism,</span> since worship is already becoming an established part of its life.`); - arc.FSChattelReligionist = 5; - return; - } else if (validFSes.includes("FSIncestFetishist")) { - r.push(`The arcology's Egyptian Revivalist culture <span class="yellow">pushes it towards Incest Fetishism,</span> since more incest is only a good thing in its eyes.`); - arc.FSIncestFetishist = 5; - return; - } - } - if (arc.FSEdoRevivalist > random(50, 200)) { - if (validFSes.includes("FSSlimnessEnthusiast")) { - r.push(`The arcology's Edo Revivalist culture <span class="yellow">pushes it towards Slimness Enthusiasm,</span> since slim and elegant slaves are already fashionable there.`); - arc.FSSlimnessEnthusiast = 5; - return; - } - } - if (arc.FSArabianRevivalist > random(50, 200)) { - if (validFSes.includes("FSChattelReligionist")) { - r.push(`The arcology's Arabian Revivalist culture <span class="yellow">pushes it towards Chattel Religionism,</span> since the word of God is already a matter of daily significance there.`); - arc.FSChattelReligionist = 5; - return; - } - } - if (arc.FSChineseRevivalist > random(50, 200)) { - if (validFSes.includes("FSPaternalist")) { - r.push(`The arcology's Chinese Revivalist culture <span class="yellow">pushes it towards Paternalism,</span> since traditional beliefs about duty and order have become accepted.`); - arc.FSPaternalist = 5; - return; - } + if (candidates.length > 0) { + const candidate = candidates.random(); + r.push(candidate.msg); + arc[candidate.fs] = 5; + return; } /* NEIGHBOR ADOPTION*/