diff --git a/.jshintrc b/.jshintrc index 3be7392d7eddf06ac873c8b06f1de07b2e98e0a7..c5b16f7d864577aaa02028a102ad851e3ce0ec99 100644 --- a/.jshintrc +++ b/.jshintrc @@ -2,7 +2,7 @@ "browser": true, "devel": true, "jquery": true, - "esversion": 6, + "esversion": 8, "eqeqeq": true, "nocomma": true, "undef": false, diff --git a/Changelog.txt b/Changelog.txt index 74b44796f0d7c2fd7016593296e23ac3c9f01824..82794654c1bda3ea19c7575326b1ef5984620a8b 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -7,6 +7,7 @@ Pregmod -added polyhydramnios, galactorrhea, neoteny and progeria genetic quirks -added gumjob trendsetting -added support for deep pregnancy editing to chead edit slave new + -RA can now be set to only apply once to a slave 10/04/2020 diff --git a/devTools/types/FC/gameState.d.ts b/devTools/types/FC/gameState.d.ts index 616d6ba916c65c30543bb6b9d669c240e9bd2e03..91f7907885aa0e1aafaecbac93dfc1f69f62fd82 100644 --- a/devTools/types/FC/gameState.d.ts +++ b/devTools/types/FC/gameState.d.ts @@ -89,8 +89,6 @@ declare namespace FC { /** @deprecated */ REInterslaveBeggingIDs: number[]; /** @deprecated */ - bedSlaves: SlaveState[]; - /** @deprecated */ eligibleSlaves: SlaveState[]; /** @deprecated */ RERepressedAnalVirginSubIDs: number[]; diff --git a/devTools/types/FC/human.d.ts b/devTools/types/FC/human.d.ts index b248d064ee41e1032112b9b39280b8152ea9c601..83a96210997b8112fe0b43b9e6c0374220173154 100644 --- a/devTools/types/FC/human.d.ts +++ b/devTools/types/FC/human.d.ts @@ -353,6 +353,17 @@ declare global { mLoss: GeneticQuirk; /** slave can only ever birth girls */ girlsOnly: GeneticQuirk; + /** abnormal production of amniotic fluid + * only affects fetuses */ + polyhydramnios: GeneticQuirk; + /** inappropriate lactation*/ + galactorrhea: GeneticQuirk; + /** retains childlike characteristics*/ + neoteny: GeneticQuirk; + /** rapid aging + * + * **neoteny + progeria** - progeria wins, not that she'll make it to the point that neoteny really kicks in */ + progeria: GeneticQuirk, } interface FetusGenetics { gender: GenderGenes; diff --git a/js/003-data/miscData.js b/js/003-data/miscData.js index 564534e390935d1a6a8509d96614c84d8dacef89..34d649d8b22098c1c1c3f00accfb9f14eff2f393 100644 --- a/js/003-data/miscData.js +++ b/js/003-data/miscData.js @@ -1950,7 +1950,85 @@ App.Data.misc = { secExCombatPrestige: ["$He is well known for being a great commander.", "$He is famous for being an incredible commander.", "$He is known as a legendary commander all over the world."], - schools: ["GRI", "HA", "NUL", "SCP", "TCR", "TFS", "TGA", "TSS", "LDE", "TUO"], + schools: new Map([ + // Medical feel + ["GRI", { + title:"Growth Research Institute", + nickname: "institute", + branchName:"subsidiary lab", + slaveNoun: "test subjects", + get requirements() { return (V.seeDicks !== 100); } + }], + + // Cowgirls + ["TCR", { + title:"The Cattle Ranch", + nickname: "farm", + branchName:"local pasture", + slaveNoun: "stock", + get requirements() { return (V.seeDicks !== 100); } + }], + + // Futa + ["TFS", { + title:"The Futanari Sisters", + nickname: "community", + branchName:"community", + slaveNoun: "graduates", + get requirements() { return (V.seeDicks !== 0); } + }], + + // Standard + ["HA", { + title:"The Hippolyta Academy", + nickname: "school", + branchName:"branch campus", + slaveNoun: "graduates", + get requirements() { return (V.seeDicks !== 100); } + }], + ["NUL", { + title:"Nueva Universidad de Libertad", + nickname: "school", + branchName:"branch campus", + slaveNoun: "graduates", + requirements: true + }], + ["SCP", { + title:"St. Claver Preparatory", + nickname: "school", + branchName:"branch campus", + slaveNoun: "graduates", + get requirements() { return (V.seeDicks !== 100); } + }], + ["TGA", { + title:"The Gymnasium-Academy", + nickname: "school", + branchName:"branch campus", + slaveNoun: "graduates", + get requirements() { return (V.seeDicks !== 0); } + }], + ["TSS", { + title:"The Slavegirl School", + nickname: "school", + branchName:"branch campus", + slaveNoun: "graduates", + get requirements() { return (V.seeDicks !== 100); } + }], + ["LDE", { + title:"L'École des Enculées", + nickname: "school", + branchName:"branch campus", + slaveNoun: "graduates", + get requirements() { return (V.seeDicks !== 0); } + }], + ["TUO", { + title:"The Utopian Orphanage", + nickname: "school", + branchName:"branch campus", + slaveNoun: "graduates", + get requirements() { return (V.seeDicks !== 100); } + }], + ]), bioreactorFluids: { XX: { @@ -2000,7 +2078,7 @@ App.Data.misc.lawlessMarkets = [ "neighbor", "wetware", "white collar", - ...App.Data.misc.schools + ...App.Data.misc.schools.keys() ]; App.Data.weather = { diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index b49a9d561d84f7e5dfe6c978c4dd814c090e13a5..b06a6b49a996227e5ac7df68662632f812bc2155 100644 --- a/src/002-config/fc-version.js +++ b/src/002-config/fc-version.js @@ -2,5 +2,5 @@ App.Version = { base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed. pmod: "3.8.0", commitHash: null, - release: 1108 // When gettting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. + release: 1109 // When gettting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. }; diff --git a/src/Mods/SecExp/SecExpBackwardCompatibility.tw b/src/Mods/SecExp/SecExpBackwardCompatibility.tw index ceca54865e8d27ed03792c83548179fdacd5943c..e0d720c1eb0d5ca07480f07b2676534d96483e26 100644 --- a/src/Mods/SecExp/SecExpBackwardCompatibility.tw +++ b/src/Mods/SecExp/SecExpBackwardCompatibility.tw @@ -1,6 +1,4 @@ :: SecExpBackwardCompatibility [nobr] -<<set $nextButton = "Continue", $nextLink = "Main", $returnTo = "Main">> <<run App.SecExp.generalBC()>> /* base stats */ -<<fixBrokenStats>> /* recalculation widgets */ -<br>Missing Security Expansion variables set. All done! \ No newline at end of file +<<fixBrokenStats>> /* recalculation widgets */ \ No newline at end of file diff --git a/src/Mods/SecExp/buildings/weaponsManufacturing.tw b/src/Mods/SecExp/buildings/weaponsManufacturing.tw index bb4a3fffd6c8e15d9e9a4ae5254917cbfa4e0266..2b3727df17bfdfcf44a6174feeaf820b0dcdedb5 100644 --- a/src/Mods/SecExp/buildings/weaponsManufacturing.tw +++ b/src/Mods/SecExp/buildings/weaponsManufacturing.tw @@ -1,4 +1,4 @@ -:: weaponsManufacturing [nobr] +:: weaponsManufacturing [nobr jump-to-safe jump-from-safe] <<set $nextButton = "Back", $nextLink = "Main", _baseUpgradeTime = App.SecExp.weapManuUpgrade.baseTime()>> diff --git a/src/Mods/SecExp/js/buildingsJS.js b/src/Mods/SecExp/js/buildingsJS.js index f0ac128806045d97620b2e2d746c86042e4d8f3f..76b52a16408e9b86c220d9763471bd03f171411e 100644 --- a/src/Mods/SecExp/js/buildingsJS.js +++ b/src/Mods/SecExp/js/buildingsJS.js @@ -170,7 +170,7 @@ App.SecExp.propHub = (function() { function Init() { V.SecExp.buildings.propHub = { - recuriterOffice: 0, + recruiterOffice: 0, upgrades: { campaign: 0, miniTruth: 0, @@ -217,16 +217,16 @@ App.SecExp.propHub = (function() { if (V.propFocus && V.propFocus !== "none") { V.SecExp.buildings.propHub.focus = V.propFocus; } - + V.SecExp.buildings.propHub.upgrades.fakeNews = V.SecExp.buildings.propHub.upgrades.fakeNews || V.SecExp.buildings.propHub.fakeNews || V.fakeNews || 0; delete V.SecExp.buildings.propHub.fakeNews; - + V.SecExp.buildings.propHub.upgrades.controlLeaks = V.SecExp.buildings.propHub.upgrades.controlLeaks || V.SecExp.buildings.propHub.controlLeaks || V.controlLeaks || 0; delete V.SecExp.buildings.propHub.controlLeaks; - + V.SecExp.buildings.propHub.upgrades.marketInfiltration = V.SecExp.buildings.propHub.upgrades.marketInfiltration || V.SecExp.buildings.propHub.marketInfiltration || V.marketInfiltration || 0; delete V.SecExp.buildings.propHub.marketInfiltration; - + V.SecExp.buildings.propHub.upgrades.blackOps = V.SecExp.buildings.propHub.upgrades.blackOps || V.SecExp.buildings.propHub.blackOps || V.blackOps || 0; delete V.SecExp.buildings.propHub.blackOps; } diff --git a/src/Mods/SecExp/js/secExp.js b/src/Mods/SecExp/js/secExp.js index f9d117c916b3cdafe92ea0ab50a7ec52e06fad6e..8bd6a0d9ae605029d5a3dad95f0942a18ff1b231 100644 --- a/src/Mods/SecExp/js/secExp.js +++ b/src/Mods/SecExp/js/secExp.js @@ -1,46 +1,93 @@ +/** + * Returns the effect (if any) the Special Force provides. + * @param {string} [report] which report is this function being called from. + * @param {string} [section=''] which sub section (if any) is this function being called from. + * @returns {{text:string, bonus:number}} + */ +App.SecExp.SF_effect = function(report, section = '') { + const size = V.SF.Toggle && V.SF.Active >= 1 ? App.SF.upgrades.total() : 0; + let r = ``, bonus = 0; + if (size > 10) { + if (report === 'authority' || report === 'trade') { + r += `Having a powerful special force increases ${report === 'authority' ? 'your authority' : 'trade security'}.`; + bonus += size / 10; + } else if (report === 'security') { + r += `Having a powerful special force attracts a lot of ${section === 'militia' ? 'citizens' : 'mercenaries'}, hopeful that they may be able to fight along side it.`; + if (section === 'militia') { + bonus *= 1 + (random(1, (Math.round(size / 10))) / 20); // not sure how high size goes, so I hope this makes sense + } else if (section === 'mercs') { + bonus += random(1, Math.round(size / 10)); + } + } + } + return {text: r, bonus: bonus}; +}; + /** * Returns the effect of a campaign launched from the PR hub. + * @param {string} [focus] campaign option to check against. + * @returns {{text:string, effect:number}}} */ App.SecExp.propagandaEffects = function(focus) { let t = ``, increase = 0; - if (V.SecExp.buildings.propHub && V.SecExp.buildings.propHub.upgrades.campaign >= 1 && V.SecExp.buildings.propHub.focus === focus) { - let campaign, modifier, adjut; + if (V.secExpEnabled > 0 && V.SecExp.buildings.propHub && V.SecExp.buildings.propHub.upgrades.campaign >= 1 && V.SecExp.buildings.propHub.focus === focus) { + let campaign, modifier; const forcedViewing = V.SecExp.edicts.propCampaignBoost === 1; - const noRecuriter = V.SecExp.buildings.propHub.recruiterOffice === 0 || V.RecruiterID === 0; - const recuriterActive = V.SecExp.buildings.propHub.recruiterOffice && V.RecruiterID > 0; - switch(focus) { + const noRecruiter = V.SecExp.buildings.propHub.recruiterOffice === 0 || V.RecruiterID === 0; + const recruiterActive = V.SecExp.buildings.propHub.recruiterOffice && V.RecruiterID > 0; + switch (focus) { case "social engineering": campaign = 'societal engineering'; modifier = forcedViewing ? V.SecExp.buildings.propHub.upgrades.campaign : 1; - if (noRecuriter) { + if (noRecruiter) { increase += (forcedViewing ? 2 : 1) * modifier; - } else if (recuriterActive) { - increase += modifier + Math.floor((S.Recruiter.intelligence+S.Recruiter.intelligenceImplant)/32); + } else if (recruiterActive) { + increase += modifier + Math.floor((S.Recruiter.intelligence + S.Recruiter.intelligenceImplant) / 32); } break; case "recruitment": campaign = 'militia recruitment'; - modifier = forcedViewing ? 1.2 : 1.15; - if (noRecuriter) { - increase += (forcedViewing ? 1.1 : 1.05) * modifier; - } else if (recuriterActive) { - increase += modifier + Math.floor((S.Recruiter.intelligence+S.Recruiter.intelligenceImplant)/650); + modifier = forcedViewing ? 0.2 : 0.15; + if (noRecruiter) { + increase += modifier + (forcedViewing ? 0.1 : 0.05); + } else if (recruiterActive) { + increase += modifier + Math.floor((S.Recruiter.intelligence + S.Recruiter.intelligenceImplant) / 650); } break; + case "immigration": + modifier = forcedViewing ? V.SecExp.buildings.propHub.upgrades.campaign : 1; + if (noRecruiter) { + increase += (forcedViewing ? random(1, 4) : random(1, 2)) * modifier; + } else if (recruiterActive) { + increase += modifier + Math.floor((S.Recruiter.intelligence + S.Recruiter.intelligenceImplant) / 16); + } + t = `Your advertisement campaign outside the free city brings more people to the gates of your arcology`; + break; + case "enslavement": + modifier = forcedViewing ? V.SecExp.buildings.propHub.upgrades.campaign : 1; + if (noRecruiter) { + increase += (forcedViewing ? random(0, 4) : random(0, 2)) * modifier; + } else if (recruiterActive) { + increase += modifier + Math.floor((S.Recruiter.intelligence + S.Recruiter.intelligenceImplant) / 16); + } + t = `Many were attracted by your advertisement campaigns.`; + break; } - t += `<span class='green'>Your propaganda campaign helps further your ${campaign} efforts.`; - if (V.SecExp.buildings.propHub.recruiterOffice && V.RecruiterID > 0) { - const {his} = getPronouns(S.Recruiter); - t += ` <span class='slave-name'>${SlaveFullName(S.Recruiter)}</span> is able to further boost your ${campaign} campaign from ${his} PR hub office.`; + if (focus === "social engineering" || focus === "recruitment") { + t += `<span class='green'>Your propaganda campaign helps further your ${campaign} efforts.`; + if (recruiterActive) { + t += ` <span class='slave-name'>${SlaveFullName(S.Recruiter)}</span> is boosting your ${campaign} campaign.`; + } + t += `</span>`; } - t += `</span>`; } return {text: t, effect: Math.round(increase)}; -} +}; /** - * Returns the raw percetnage of socity that can be drafted. + * Returns the raw percentage of society that can be drafted. + * @returns {number} */ App.SecExp.militiaCap = function(x = 0) { x = x || V.SecExp.edicts.defense.militia; @@ -72,7 +119,7 @@ App.SecExp.initTrade = function() { } }; -App.SecExp.generalInit = function(){ +App.SecExp.generalInit = function() { if (V.secExpEnabled === 0) { return; } @@ -80,7 +127,7 @@ App.SecExp.generalInit = function(){ Object.assign(V.SecExp, { battles: { major: 0, - slaveVictories : [], + slaveVictories: [], lastSelection: [], victories: 0, victoryStreak: 0, @@ -145,19 +192,19 @@ App.SecExp.generalInit = function(){ slaves: { created: 0, casualties: 0, - sqauds: [] + squads: [] }, - milita: { + militia: { created: 0, free: 0, casualties: 0, - sqauds: [] + squads: [] }, mercs: { created: 0, free: 0, casualties: 0, - sqauds: [] + squads: [] } }, */ @@ -201,7 +248,7 @@ App.SecExp.generalInit = function(){ pharaonTradition: 0, } }, - smilingMan: { progress : 0 }, + smilingMan: {progress: 0}, defaultNames: { slaves: "slave platoon", militia: "citizens' platoon", @@ -239,7 +286,7 @@ App.SecExp.upkeep = (function() { if (V.SecExp.edicts.defense.mamluks) { value++; } if (V.SecExp.edicts.defense.sunTzu) { value++; } - return value*1000; + return value * 1000; } /** Upkeep cost of edicts, in authority @@ -310,10 +357,10 @@ App.SecExp.upkeep = (function() { value += V.SecExp.edicts.SFSupportLevel >= 5 ? 1000 : 0; } if (V.SecExp.buildings.barracks) { - value += base + upgrade* Object.values(V.SecExp.buildings.barracks).reduce((a, b) => a + b); + value += base + upgrade * Object.values(V.SecExp.buildings.barracks).reduce((a, b) => a + b); } if (V.SecExp.buildings.riotCenter) { - value += base + upgrade* Object.values(V.SecExp.buildings.riotCenter.upgrades).reduce((a, b) => a + b); + value += base + upgrade * Object.values(V.SecExp.buildings.riotCenter.upgrades).reduce((a, b) => a + b); if (V.SecExp.buildings.riotCenter.brainImplant < 106 && V.SecExp.buildings.riotCenter.brainImplantProject > 0) { value += 5000 * V.SecExp.buildings.riotCenter.brainImplantProject; } @@ -372,7 +419,7 @@ App.SecExp.battle = (function() { } if (input === '') { - return bots+militiaC+slavesC+mercsC+init; + return bots + militiaC + slavesC + mercsC + init; } else if (input === 'bots') { return bots; } else if (input === 'militia') { @@ -497,7 +544,7 @@ App.SecExp.battle = (function() { let max = 0; if (V.SecExp.buildings.barracks) { max = 8 + (V.SecExp.buildings.barracks.size * 2); - if(App.SecExp.battle.deploySpeed() === 10) { + if (App.SecExp.battle.deploySpeed() === 10) { max += 2; } } diff --git a/src/Mods/SecExp/js/tradeReport.js b/src/Mods/SecExp/js/tradeReport.js new file mode 100644 index 0000000000000000000000000000000000000000..582c987ab68eb560f4c2edc4dde6714d93d88f8f --- /dev/null +++ b/src/Mods/SecExp/js/tradeReport.js @@ -0,0 +1,149 @@ +App.SecExp.tradeReport = function() { + let r = [], tradeChange = 0, bonus = 0; + if (V.week < 30) { + r.push(`The world economy is in good enough shape to sustain economic growth. Trade flows liberally in all the globe.`); + tradeChange += 1; + } else if (V.week < 60) { + r.push(`The world economy is deteriorating, but still in good enough shape to sustain economic growth.`); + tradeChange += 0.5; + } else if (V.week < 90) { + r.push(`The world economy is deteriorating, but still in decent enough shape to sustain economic growth.`); + } else if (V.week < 120) { + r.push(`The world economy is deteriorating and the slowing down of global growth is starting to have some effect on trade flow.`); + tradeChange -= 1; + } else { + r.push(`The world economy is heavily deteriorated. The slowing down of global growth has a great negative effect on trade flow.`); + tradeChange -= 2; + } + + const warEffects = function(type) { + if (V.SecExp[type].victories + V.SecExp[type].losses >= 1) { + if (V.SecExp[type].lastEncounterWeeks < 2) { + r.push(`The recent ${type === 'battles' ? 'attack' : 'rebellion'} has a negative effect on the trade of the arcology.`); + tradeChange -= 1; + } else if (V.SecExp[type].lastEncounterWeeks < 4) { + r.push(`While some time has passed, the last ${type === 'battles' ? 'attack' : 'rebellion'} still has a negative effect on the commercial activity of the arcology.`); + tradeChange -= 0.5; + } + } + }; + + warEffects('battles'); + warEffects('rebellions'); + + if (V.terrain === "urban") { + r.push(`Since your arcology is located in the heart of an urban area, its commerce is naturally vibrant.`); + tradeChange++; + } else if (V.terrain === "ravine") { + r.push(`Since your arcology is located in the heart of a ravine, its commerce is hindered by a lack of accessibility.`); + tradeChange -= 0.5; + } + + if (["wealth", "capitalist", "celebrity", "BlackHat"].includes(V.PC.career)) { + tradeChange += 1; + } else if (["escort", "servant", "gang"].includes(V.PC.career)) { + tradeChange -= 0.5; + } + + if (V.rep > 12000) { + r.push(`Your ${V.rep > 18000 ? 'extremely' : ''} high reputation attracts trade from all over the world.`); + tradeChange += (V.rep > 18000 ? 2 : 1); + } + + if (V.assistant.power > 0) { + const lowPower = V.assistant.power === 1; + r.push(`Due to ${lowPower ? '' : 'incredible'} computing power, ${V.assistant.name} is able to guide the commercial development of the arcology to greater levels.`); + tradeChange += (lowPower ? 1 : 2); + } + + if (V.SecExp.edicts.tradeLegalAid === 1) { + r.push(`Your support in legal matters for new businesses helps improve the economic dynamicity of your arcology, boosting commercial activities.`); + tradeChange += 1; + } + + if (V.SecExp.edicts.taxTrade === 1) { + r.push(`The fees imposed on transitioning goods do little to earn you the favor of the companies making use of your arcology.`); + tradeChange -= 1; + } + + if (V.SecExp.buildings.weapManu) { + r.push(`The weapons manufacturing facility of the arcology attracts a significant amount of trade.`); + tradeChange += 0.5 * (V.SecExp.buildings.weapManu.productivity + V.SecExp.buildings.weapManu.lab); + } + if (V.SecExp.buildings.transportHub) { + if (V.SecExp.buildings.transportHub.airport === 1) { + r.push(`The airport, while small, helps facilitate the commercial development of the arcology.`); + tradeChange += 1; + } else if (V.SecExp.buildings.transportHub.airport === 2) { + r.push(`The airport, while fairly small, helps facilitate the commercial development of the arcology.`); + tradeChange += 1.5; + } else if (V.SecExp.buildings.transportHub.airport === 3) { + r.push(`The airport helps facilitate the commercial development of the arcology.`); + tradeChange += 2; + } else if (V.SecExp.buildings.transportHub.airport === 4) { + r.push(`The airport is a great boon to the commercial development of the arcology.`); + tradeChange += 2.5; + } else { + r.push(`The airport is an incredible boon to the commercial development of the arcology.`); + tradeChange += 3; + } + + if (V.terrain !== "oceanic" && V.terrain !== "marine") { + if (V.SecExp.buildings.transportHub.surfaceTransport === 1) { + r.push(`The railway network's age and limited extension limit commercial activity.`); + } else if (V.SecExp.buildings.transportHub.surfaceTransport === 2) { + r.push(`The railway network is a great help to the commercial development of the arcology, but its limited extension hampers its potential.`); + tradeChange += 1; + } else if (V.SecExp.buildings.transportHub.surfaceTransport === 3) { + r.push(`The railway network is a great help to the commercial development of the arcology.`); + tradeChange += 1.5; + } else { + r.push(`The railway network is a huge help to the commercial development of the arcology. Few in the world can boast such a modern and efficient transport system.`); + tradeChange += 2; + } + } else { + if (V.SecExp.buildings.transportHub.surfaceTransport === 1) { + r.push(`The docks' age and limited size limit commercial activity.`); + } else if (V.SecExp.buildings.transportHub.surfaceTransport === 2) { + r.push(`The docks are a great help to the commercial development of the arcology, but their limited size hampers its potential.`); + tradeChange += 1; + } else if (V.SecExp.buildings.transportHub.surfaceTransport === 3) { + r.push(`The docks are a great help to the commercial development of the arcology.`); + tradeChange += 1.5; + } else { + r.push(`The docks are a huge help to the commercial development of the arcology. Few in the world can boast such a modern and efficient transport system.`); + tradeChange += 2; + } + } + } + + const SF = App.SecExp.SF_effect('trade'); + r.push(SF.text); tradeChange += SF.bonus; + + if (tradeChange > 0) { + r.push(`This week <span class="green">trade improved.</span>`); + } else if (tradeChange === 0) { + r.push(`This week <span class="yellow">trade did not change.</span>`); + } else { + r.push(`This week <span class="red">trade diminished.</span>`); + } + + V.SecExp.core.trade = Math.clamp(V.SecExp.core.trade + tradeChange, 0, 100); + if (V.SecExp.core.trade <= 20) { + r.push(`The almost non-existent trade crossing the arcology <span class="yellow">does little to promote growth.</span>`); + } else if (V.SecExp.core.trade <= 40) { + r.push(`The low level of trade crossing the arcology promotes a <span class="green">slow yet steady growth</span> of its economy.`); + bonus += 1.5; + } else if (V.SecExp.core.trade <= 60) { + r.push(`With trade at positive levels, the <span class="green">prosperity of the arcology grows more powerful.</span>`); + bonus += 2.5; + } else if (V.SecExp.core.trade <= 80) { + r.push(`With trade at high levels, the <span class="green">prosperity of the arcology grows quickly and violently.</span>`); + bonus += 3.5; + } else { + r.push(`With trade at extremely high levels, the <span class="green">prosperity of the arcology grows with unprecedented speed.</span>`); + bonus += 4.5; + } + + return {text: r.join(" "), bonus: bonus}; +}; diff --git a/src/Mods/SecExp/potentialToDo.txt b/src/Mods/SecExp/potentialToDo.txt index 3c6cd44d8a6abadd26db7f0d9a91e29b235580a0..b4ee828e6fd795eef4680585fe1a326d041269b6 100644 --- a/src/Mods/SecExp/potentialToDo.txt +++ b/src/Mods/SecExp/potentialToDo.txt @@ -1,7 +1,7 @@ Hexall90's last merged commit: 52dde0b3 - Remove unit.isDeployed as it is only used in battles and add the IDs to an array. - This would require that units have unique IDs (e.g bots: -1 -> 99, milita: 100 -> 199, slaves: 200 -> 299, mercs: 300 - 399, etc). + This would require that units have unique IDs (e.g bots: -1 -> 99, militia: 100 -> 199, slaves: 200 -> 299, mercs: 300 - 399, etc). It would also allow for _*RebelledID to potentially be removed. - While at it something for barracks(general? commissar?) and riot center([Insert player title there]'s Will?? Big Sister? ) too would be nice diff --git a/src/Mods/SecExp/securityReport.tw b/src/Mods/SecExp/securityReport.tw index b0d2b1bf76c510a261cd35b55888aaea2c492ad0..ce5a7a471e275b47d0102884ba6219598cabf544 100644 --- a/src/Mods/SecExp/securityReport.tw +++ b/src/Mods/SecExp/securityReport.tw @@ -313,7 +313,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor <</if>> /* crime cap */ -<<set _crimeCap = Math.trunc(Math.clamp(App.SecExp.Check.crimeCap() + (App.SecExp.Check.crimeCap() - App.SecExp.Check.crimeCap() * ($SecExp.buildings.secHub ? $SecExp.buildings.secHub.menials : 0 / App.SecExp.Check.reqMenials())), 0, 100))>> +<<set _crimeCap = Math.trunc(Math.clamp(App.SecExp.Check.crimeCap() + (App.SecExp.Check.crimeCap() - App.SecExp.Check.crimeCap() * (($SecExp.buildings.secHub ? $SecExp.buildings.secHub.menials : 0) / App.SecExp.Check.reqMenials())), 0, 100))>> <<if _crimeCap > App.SecExp.Check.crimeCap() && $SecExp.buildings.secHub>> The limited staff assigned to the HQ allows more space for criminals to act. <</if>> @@ -344,7 +344,7 @@ Due to the deterioration of the old world countries, organized crime focuses mor <</if>> <<set _propagandaEffects = App.SecExp.propagandaEffects("recruitment")>> _propagandaEffects.text - <<set _recruitsMultiplier *= _propagandaEffects.effect>> + <<set _recruitsMultiplier *= (1 + _propagandaEffects.effect)>> <<if $SecExp.edicts.defense.militia === 2>> Your militia accepts only volunteering citizens, ready to defend their arcology. <<set _recruitLimit = App.SecExp.militiaCap(), _adjst = 0.0025>> diff --git a/src/Mods/SecExp/tradeReport.tw b/src/Mods/SecExp/tradeReport.tw deleted file mode 100644 index 266aa0a62f78c13f77f0481eabe93f1d4cf25579..0000000000000000000000000000000000000000 --- a/src/Mods/SecExp/tradeReport.tw +++ /dev/null @@ -1,158 +0,0 @@ -:: tradeReport [nobr] - -<<if $week < 30>> - The world economy is in good enough shape to sustain economic growth. Trade flows liberally in all the globe. - <<set _tradeChange += 1>> -<<elseif $week < 60>> - The world economy is deteriorating, but still in good enough shape to sustain economic growth. - <<set _tradeChange += 0.5>> -<<elseif $week < 90>> - The world economy is deteriorating, but still in decent enough shape to sustain economic growth. -<<elseif $week < 120>> - The world economy is deteriorating and the slowing down of global growth is starting to have some effect on trade flow. - <<set _tradeChange -= 1>> -<<else>> - The world economy is heavily deteriorated. The slowing down of global growth has a great negative effect on trade flow. - <<set _tradeChange -= 2>> -<</if>> - -<<set _tradeChange = 0>> -<<set _countBattles = $SecExp.battles.victories + $SecExp.battles.losses>> -<<set _countRebellions = $SecExp.rebellions.victories + $SecExp.rebellions.losses>> -<<if $SecExp.battles.lastEncounterWeeks < 2 && _countBattles > 0>> - The recent attack has a negative effect on the trade of the arcology. - <<set _tradeChange -= 1>> -<<elseif $SecExp.battles.lastEncounterWeeks < 4 && _countBattles > 0>> - While some time has passed, the last attack still has a negative effect on the commercial activity of the arcology. - <<set _tradeChange -= 0.5>> -<</if>> -<<if $SecExp.rebellions.lastEncounterWeeks < 2 && _countRebellions > 0>> - The recent rebellion has a negative effect on the trade of the arcology. - <<set _tradeChange -= 1>> -<<elseif $SecExp.rebellions.lastEncounterWeeks < 4 && _countRebellions > 0>> - While some time has passed, the last rebellion still has a negative effect on the commercial activity of the arcology. - <<set _tradeChange -= 0.5>> -<</if>> - -<<if $terrain == "urban">> - Since your arcology is located in the heart of an urban area, its commerce is naturally vibrant. - <<set _tradeChange++>> -<</if>> -<<if $terrain == "ravine">> - Since your arcology is located in the heart of a ravine, its commerce is hindered by a lack of accessibility. - <<set _tradeChange -= 0.5>> -<</if>> - -<<if $PC.career == "wealth" || $PC.career == "capitalist" || $PC.career == "celebrity" || $PC.career == "BlackHat">> - <<set _tradeChange += 1>> -<<elseif $PC.career == "escort" || $PC.career == "servant" || $PC.career == "gang">> - <<set _tradeChange -= 0.5>> -<</if>> - -<<if $rep > 18000>> - Your extremely high reputation attracts trade from all over the world. -<<elseif $rep > 12000>> - Your high reputation attracts trade from all over the world. -<</if>> - -<<setAssistantPronouns>> -<<if $assistant.power == 1>> - Thanks to the computing power available to _himA, $assistant.name is able to guide the commercial development of the arcology to greater levels. - <<set _tradeChange++>> -<<elseif $assistant.power >= 2>> - Thanks to the incredible computing power available to _himA, $assistant.name is able to guide the commercial development of the arcology to greater levels. - <<set _tradeChange += 2>> -<</if>> - -<<if $SecExp.edicts.tradeLegalAid == 1>> - Your support in legal matters for new businesses helps improve the economic dynamicity of your arcology, boosting commercial activities. - <<set _tradeChange += 1>> -<</if>> - -<<if $SecExp.edicts.taxTrade == 1>> - The fees imposed on transitioning goods do little to earn you the favor of the companies making use of your arcology. - <<set _tradeChange -= 1>> -<</if>> - -<<if $SecExp.buildings.weapManu>> - The weapons manufacturing facility of the arcology attracts a significant amount of trade. - <<set _tradeChange += 0.5 * ($SecExp.buildings.weapManu.productivity + $SecExp.buildings.weapManu.lab)>> -<</if>> -<<if $SecExp.buildings.transportHub>> - <<if $SecExp.buildings.transportHub.airport == 1>> - The airport, while small, helps facilitate the commercial development of the arcology. - <<set _tradeChange += 1>> - <<elseif $SecExp.buildings.transportHub.airport == 2>> - The airport, while fairly small, helps facilitate the commercial development of the arcology. - <<set _tradeChange += 1.5>> - <<elseif $SecExp.buildings.transportHub.airport == 3>> - The airport helps facilitate the commercial development of the arcology. - <<set _tradeChange += 2>> - <<elseif $SecExp.buildings.transportHub.airport == 4>> - The airport is a great boon to the commercial development of the arcology. - <<set _tradeChange += 2.5>> - <<else>> - The airport is an incredible boon to the commercial development of the arcology. - <<set _tradeChange += 3>> - <</if>> - - <<if $terrain != "oceanic" && $terrain != "marine">> - <<if $SecExp.buildings.transportHub.surfaceTransport == 1>> - The railway network's age and limited extension limit commercial activity. - <<elseif $SecExp.buildings.transportHub.surfaceTransport == 2>> - The railway network is a great help to the commercial development of the arcology, but its limited extension hampers its potential. - <<set _tradeChange += 1>> - <<elseif $SecExp.buildings.transportHub.surfaceTransport == 3>> - The railway network is a great help to the commercial development of the arcology. - <<set _tradeChange += 1.5>> - <<else>> - The railway network is a huge help to the commercial development of the arcology. Few in the world can boast such a modern and efficient transport system. - <<set _tradeChange += 2>> - <</if>> - <<else>> - <<if $SecExp.buildings.transportHub.surfaceTransport == 1>> - The docks' age and limited size limit commercial activity. - <<elseif $SecExp.buildings.transportHub.surfaceTransport == 2>> - The docks are a great help to the commercial development of the arcology, but their limited size hampers its potential. - <<set _tradeChange += 1>> - <<elseif $SecExp.buildings.transportHub.surfaceTransport == 3>> - The docks are a great help to the commercial development of the arcology. - <<set _tradeChange += 1.5>> - <<else>> - The docks are a huge help to the commercial development of the arcology. Few in the world can boast such a modern and efficient transport system. - <<set _tradeChange += 2>> - <</if>> - <</if>> -<</if>> - -<<set _size = App.SF.upgrades.total()>> -<<if $SF.Toggle && $SF.Active >= 1 && _size > 10>> - Having a powerful special force increases trade security. - <<set _tradeChange += _size/10>> -<</if>> - -<<if _tradeChange > 0>> - This week @@.green;trade improved.@@ -<<elseif _tradeChange == 0>> - This week @@.yellow;trade did not change.@@ -<<else>> - This week @@.red;trade diminished.@@ -<</if>> - -<<if $SecExp.core.trade <= 20>> - The almost non-existent trade crossing the arcology @@.yellow;does little to promote growth.@@ -<<elseif $SecExp.core.trade <= 40>> - The low level of trade crossing the arcology promotes a @@.green;slow yet steady growth@@ of its economy. - <<set _AWeekGrowth += 1.5>> -<<elseif $SecExp.core.trade <= 60>> - With trade at positive levels, the @@.green;prosperity of the arcology grows more powerful.@@ - <<set _AWeekGrowth += 2.5>> -<<elseif $SecExp.core.trade <= 80>> - With trade at high levels, the @@.green;prosperity of the arcology grows quickly and violently.@@ - <<set _AWeekGrowth += 3.5>> -<<else>> - With trade at extremely high levels, the @@.green;prosperity of the arcology grows with unprecedented speed.@@ - <<set _AWeekGrowth += 4.5>> -<</if>> - -<<set $SecExp.core.trade = Math.clamp($SecExp.core.trade + _tradeChange,0,100)>> diff --git a/src/Mods/SpecialForce/SpecialForce.js b/src/Mods/SpecialForce/SpecialForce.js index 7c5638805875142d7eb349246cc6ea75d28e7ac4..de04d0ebb50787169d9e0d3b0eecbea9d80f52a7 100644 --- a/src/Mods/SpecialForce/SpecialForce.js +++ b/src/Mods/SpecialForce/SpecialForce.js @@ -924,7 +924,7 @@ App.SF.fsIntegration = (function() { InputText0 += fsIncrease > 0 ? ` ` : ` (`; } InputText0 += `<span class='red'>${cashFormat(cost)},</span> tension:`; - InputText0 += `<span class=${fsIncrease > 0 ? `'red'>+` : `'green'>-`}`; + InputText0 += `${fsIncrease > 0 ? "<span class='red'>+" : "<span class='green'>-"}`; linkText += InputText0 + `15%</span>)`; return linkText; } diff --git a/src/arcologyBuilding/decorative.js b/src/arcologyBuilding/decorative.js index 9bd146f3494f75b8805ab3614e36130c3241c97e..a8239f7f6cf5b9f4ce3139dde453152a0568cf6b 100644 --- a/src/arcologyBuilding/decorative.js +++ b/src/arcologyBuilding/decorative.js @@ -1,14 +1,14 @@ App.Arcology.Cell.Decorative = class extends App.Arcology.Cell.BaseCell { /** * @param {object} params - * @param {number} params.width in cells + * @param {number} [params.width] in cells * @param {number} [params.xOffset=0] in % * @param {number} [params.yOffset=0] in px * @param {number} [params.rotation=0] in deg * @param {number} [params.cellHeight=0] in px, if default height is not enough to stop stuff going offscreen * @param {number} [params.absoluteWidth=0] 0/1, if width and xOffset should be read as absolute pixels */ - constructor({width, xOffset = 0, yOffset = 0, rotation = 0, cellHeight = 0, absoluteWidth = 0}) { + constructor({width = 1, xOffset = 0, yOffset = 0, rotation = 0, cellHeight = 0, absoluteWidth = 0} = {}) { super(1); this._width = width; this._xOffset = xOffset; diff --git a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw index 41ee8e1e832badd9f695a8e7afe8efe7fce17bd4..fd55cbd63b4d62d96f2d1a73f3312335c242cadb 100644 --- a/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw +++ b/src/cheats/mod_EditSlaveCheatDatatypeCleanupNew.tw @@ -20,21 +20,7 @@ <<set $rep = Number($rep) || 0>> <<set $cash = Number($cash) || 0>> <<set $week = Number($week) || 1>> -<<set $tempSlave.preg = Number($tempSlave.preg) || 0>> -<<set $tempSlave.pregType = Number($tempSlave.pregType) || 0>> -<<if $tempSlave.broodmother == 0>> - <<set WombInit($tempSlave)>> /* just to make sure */ - <<set $tempSlave.womb.length = 0>> /* simple way to delete all fetuses */ - <<set WombImpregnate($tempSlave, $tempSlave.pregType, $tempSlave.pregSource, $tempSlave.preg)>> /* recreates fetuses */ -<<else>> - <<set WombNormalizePreg($tempSlave)>> -<</if>> -<<set $tempSlave.pregWeek = Number($tempSlave.pregWeek) || Math.max($tempSlave.preg, 0)>> -<<if $tempSlave.preg <= 0>> - <<set $tempSlave.pregKnown = 0>> -<<elseif $tempSlave.preg > 0>> - <<set $tempSlave.pregKnown = 1>> -<</if>> +<<set WombUpdatePregVars($tempSlave)>> <<set $tempSlave.pregAdaptation = Number($tempSlave.pregAdaptation) || 0>> <<if $tempSlave.pregAdaptation <= 0>> <<if $tempSlave.genes === "XY">> /* copied from GenerateXYPregAdaptation */ diff --git a/src/data/backwardsCompatibility/datatypeCleanup.js b/src/data/backwardsCompatibility/datatypeCleanup.js index 1460d5e94e68f977c267ebd0d98aff3121d7f9c8..d1d1a16566635e5cc27699de10643a12cdac525c 100644 --- a/src/data/backwardsCompatibility/datatypeCleanup.js +++ b/src/data/backwardsCompatibility/datatypeCleanup.js @@ -1497,26 +1497,10 @@ globalThis.ArcologyDatatypeCleanup = function() { V.surgeryCost = Math.trunc(30000 / (V.localEcon * (V.PC.career === "medicine" ? 2 : 1))); V.facilityCost = +V.facilityCost || 100; - V.TSS.studentsBought = Math.max(+V.TSS.studentsBought, 0) || 0; - V.TSS.schoolProsperity = Math.clamp(+V.TSS.schoolProsperity, -10, 10) || 0; - V.TUO.studentsBought = Math.max(+V.TUO.studentsBought, 0) || 0; - V.TUO.schoolProsperity = Math.clamp(+V.TUO.schoolProsperity, -10, 10) || 0; - V.GRI.studentsBought = Math.max(+V.GRI.studentsBought, 0) || 0; - V.GRI.schoolProsperity = Math.clamp(+V.GRI.schoolProsperity, -10, 10) || 0; - V.SCP.studentsBought = Math.max(+V.SCP.studentsBought, 0) || 0; - V.SCP.schoolProsperity = Math.clamp(+V.SCP.schoolProsperity, -10, 10) || 0; - V.LDE.studentsBought = Math.max(+V.LDE.studentsBought, 0) || 0; - V.LDE.schoolProsperity = Math.clamp(+V.LDE.schoolProsperity, -10, 10) || 0; - V.TGA.studentsBought = Math.max(+V.TGA.studentsBought, 0) || 0; - V.TGA.schoolProsperity = Math.clamp(+V.TGA.schoolProsperity, -10, 10) || 0; - V.HA.studentsBought = Math.max(+V.HA.studentsBought, 0) || 0; - V.HA.schoolProsperity = Math.clamp(+V.HA.schoolProsperity, -10, 10) || 0; - V.TCR.studentsBought = Math.max(+V.TCR.studentsBought, 0) || 0; - V.TCR.schoolProsperity = Math.clamp(+V.TCR.schoolProsperity, -10, 10) || 0; - V.TFS.studentsBought = Math.max(+V.TFS.studentsBought, 0) || 0; - V.TFS.schoolProsperity = Math.clamp(+V.TFS.schoolProsperity, -10, 10) || 0; - V.NUL.studentsBought = Math.max(+V.NUL.studentsBought, 0) || 0; - V.NUL.schoolProsperity = Math.clamp(+V.NUL.schoolProsperity, -10, 10) || 0; + for (const school of App.Data.misc.schools.keys()) { + V[school].studentsBought = Math.max(+V[school].studentsBought, 0) || 0; + V[school].schoolProsperity = Math.clamp(+V[school].schoolProsperity, -10, 10) || 0; + } }; globalThis.FacilityDatatypeCleanup = (function() { diff --git a/src/descriptions/arcologyDescription.js b/src/descriptions/arcologyDescription.js index ca595e1aa34322a997dc4f014a652b6a13a1512d..a554299ecaeca119512ea7a5bab05e3e15b467cb 100644 --- a/src/descriptions/arcologyDescription.js +++ b/src/descriptions/arcologyDescription.js @@ -81,7 +81,7 @@ App.Desc.playerArcology = function(lastElement) { } else if (V.weatherToday.severity === 2 && V.weatherType === 6) { buffer.push(`It's a nice day out today, and citizens are trading and speaking in the bustling marketplace as usual.`); } else if (V.weatherToday.name === "Extreme T-Storms") { - buffer.push(`It's a torrent of rain and thunder today. Lightning angrily flashes through the air and the streets are watery and clogged, the cracks of terrifying thunder threatening to smash against the walls of the arcology. Many citizesn are staying inside due to the awful storm.`); + buffer.push(`It's a torrent of rain and thunder today. Lightning angrily flashes through the air and the streets are watery and clogged, the cracks of terrifying thunder threatening to smash against the walls of the arcology. Many citizens are staying inside due to the awful storm.`); } else if (V.weatherToday.name === "Heavy Acid Rain") { buffer.push(`Intense acidic rain splashes down from the skies, sizzling and popping against the arcology walls. The acid rain today is bad enough to be painful on bare skin, and it slowly rusts away metal like a toxic miasma. Many citizens are staying inside to avoid the horrific, polluted rain.`); } else if (V.weatherToday.severity === 3 && V.weatherType === 1) { @@ -875,7 +875,7 @@ App.Desc.playerArcology = function(lastElement) { buffer.push(`Every citizen has military responsibilities, which are a point of pride to many, with most opting to wear utilitarian clothing even when off duty.`); } if (A.FSNeoImperialistLaw1 === 1) { - buffer.push(`Occasionally, an Imperial Knight in expensive battle armor wanders through the plaza, often accompaned by a small group of lesser soldiers with battle armor painted in the same fashion as the Knight's.`); + buffer.push(`Occasionally, an Imperial Knight in expensive battle armor wanders through the plaza, often accompanied by a small group of lesser soldiers with battle armor painted in the same fashion as the Knight's.`); } if (A.FSNeoImperialistLaw2 === 1) { buffer.push(`You can see a Baron off in the distance, wearing a bright gold headband that shimmers in the dim neon light of the plaza, dictating some edict of yours down to a street merchant who scribbles down their words furiously.`); diff --git a/src/endWeek/brothelReport.js b/src/endWeek/brothelReport.js new file mode 100644 index 0000000000000000000000000000000000000000..284c94426d26baa0d3350344f23fd2330e6d6de2 --- /dev/null +++ b/src/endWeek/brothelReport.js @@ -0,0 +1,421 @@ +globalThis.brothelReport = function() { + const el = document.createElement("p"); + let His, He, he, him, his, himself, wife; + let r; + + const brothelStats = document.createElement("span"); + el.append(brothelStats); + + const slaves = App.Utils.sortedEmployees(App.Entity.facilities.brothel); + let SL = slaves.length, FLsFetish = 0, profits = 0; + V.legendaryWhoreID = 0; + V.legendaryWombID = 0; + + + // Statistics gathering + V.facility = V.facility || {}; + V.facility.brothel = initFacilityStatistics(V.facility.brothel); + const brothelNameCaps = capFirstChar(V.brothelName); + + function madamText() { + let r = []; + if (V.MadamID !== 0) { + if (S.Madam.health.condition < -80) { + improveCondition(S.Madam, 20); + } else if (S.Madam.health.condition < -40) { + improveCondition(S.Madam, 15); + } else if (S.Madam.health.condition < 0) { + improveCondition(S.Madam, 10); + } else if (S.Madam.health.condition < 90) { + improveCondition(S.Madam, 7); + } + if (S.Madam.devotion <= 45) { + S.Madam.devotion += 5; + } + if (S.Madam.trust < 45) { + S.Madam.trust += 5; + } + if (S.Madam.rules.living !== "luxurious") { + S.Madam.rules.living = "luxurious"; + } + if (S.Madam.rules.rest !== "restrictive") { + S.Madam.rules.rest = "restrictive"; + } + if (S.Madam.fetishStrength <= 95) { + if (S.Madam.fetish !== "dom") { + if (fetishChangeChance(S.Madam) > random(0, 100)) { + FLsFetish = 1; + S.Madam.fetishKnown = 1; + S.Madam.fetish = "dom"; + } + } else if (S.Madam.fetishKnown === 0) { + FLsFetish = 1; + S.Madam.fetishKnown = 1; + } else { + FLsFetish = 2; + S.Madam.fetishStrength += 4; + } + } + /* Make sure we have registered living expenses as for any other slave */ + getSlaveStatisticData(S.Madam, V.facility.brothel); + ({ + he, him, his, himself, He, His, wife + } = getPronouns(S.Madam)); + /* apply following SA passages to facility leader */ + + r = []; + if (S.Madam.relationship === -3 && S.Madam.devotion > 50) { + r.push(`As your loving ${wife}, ${he} does ${his} best to attract attention to your brothel.`); + } + if (FLsFetish === 1) { + r.push(`${He} isn't above sampling the merchandise ${himself}; before long it's obvious to ${his} girls that ${he}`); + r.push(App.UI.DOM.makeElement("span", `really likes fucking them.`, "fetish-gain")); + } else if ((FLsFetish === 2)) { + r.push(`${He}'s careful that all of the whores under ${his} supervision are all warmed up and ready to get fucked every morning, and ${he}`); + r.push(App.UI.DOM.makeElement("span", `really likes fucking them.`, ["fetish", "inc"])); + } + const improve = App.UI.DOM.makeElement("span", "improve", ["cash", "inc"]); + if (S.Madam.skill.whoring <= 10) { + r.push(`Though ${S.Madam.slaveName} does ${his} best to manage the brothel, with ${his} lack of skill ${he} can do little.`); + } else if ((S.Madam.skill.whoring <= 30)) { + r.push(`${S.Madam.slaveName}'s basic skills marginally`, improve, `business at ${V.brothelName}.`); + } else if ((S.Madam.skill.whoring <= 60)) { + r.push(`${S.Madam.slaveName}'s skills`, improve, `business at ${V.brothelName}.`); + } else if ((S.Madam.skill.whoring < 100)) { + r.push(`${S.Madam.slaveName}'s skills greatly`, improve, `business at ${V.brothelName}.`); + } else { + r.push(`${S.Madam.slaveName}'s mastery immensely`, improve, `business at ${V.brothelName}.`); + } + if (S.Madam.actualAge > 35) { + r.push(`${His} age and experience also contribute.`); + } + if (setup.madamCareers.includes(S.Madam.career)) { + r.push(`${He} has experience from ${his} life before ${he} was a slave that helps ${him} in the seedy business of selling other people's bodies for sex.`); + } else if (S.Madam.skill.madam >= V.masteredXP) { + r.push(`${He} has experience from working for you that helps ${him} in the seedy business of selling other people's bodies for sex.`); + } + if (S.Madam.intelligence + S.Madam.intelligenceImplant > 15) { + r.push(`${He} is a clever manager.`); + } + if ((S.Madam.dick > 2) && (canPenetrate(S.Madam))) { + r.push(`${His} turgid dick helps ${him} manage the bitches.`); + } + App.Events.addParagraph(el, r); + + for (const slave of slaves) { + const { + he2, him2, his2 + } = getPronouns(slave).appendSuffix('2'); + r = []; + + if (S.Madam.rivalryTarget === slave.ID) { + r.push(`${He} forces ${his} ${rivalryTerm(S.Madam)}, to service all the men in the brothel.`); + slave.devotion -= 2; + slave.trust -= 2; + if (canDoVaginal(slave)) { + seX(slave, "vaginal", "public", "penetrative", 10); + } + if (canDoAnal(slave)) { + seX(slave, "anal", "public", "penetrative", 12); + } + seX(slave, "anal", "public", "penetrative", 10); + if (random(1, 100) > 65) { + S.Madam.rivalry++; + slave.rivalry++; + } + } else if (S.Madam.relationshipTarget === slave.ID) { + r.push(`${He} dotes over ${his} ${relationshipTerm(S.Madam)}, ${slave.slaveName}, making sure ${he2} is safe, but unfortunately driving potential customers away from ${him2}.`); + slave.devotion++; + } else if (areRelated(S.Madam, slave)) { + r.push(`${He} pays special attention to ${his} ${relativeTerm(S.Madam, slave)}, ${slave.slaveName}, making sure ${he2} is treated well and showing off ${his2} skills.`); + slave.trust++; + } + if (slave.prestigeDesc === "$He is a famed Free Cities whore, and commands top prices.") { + r.push(`${He} makes sure to promote ${slave.slaveName}, the famed whore, in order to capitalize on ${his2} popularity.`); + } else if (slave.prestigeDesc === "$He is a famed Free Cities slut, and can please anyone.") { + r.push(`${He} makes sure to promote ${slave.slaveName}, the famed entertainer, in order to capitalize on ${his2} popularity.`); + } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a dairy cow.") { + if (V.arcologies[0].FSPhysicalIdealist !== "unset") { + if ((slave.muscles > 60) && (slave.weight < 30) && (slave.lactation > 0) && ((slave.boobs - slave.boobsImplant) > 6000)) { + r.push(`${He} shows off how even a cow like ${slave.slaveName} can achieve physical perfection.`); + } else { + if (slave.muscles < 30) { + r.push(`An unmuscled,`); + } else { + r.push(`A`); + } + if (slave.weight > 30) { + r.push(`fat,`); + } + r.push(`'prestigious'`); + if (slave.lactation > 0) { + r.push(`cow`); + } else if ((slave.boobs - slave.boobsImplant) > 6000) { + r.push(`mass of titflesh`); + } else { + r.push(`slave`); + } + r.push(`like ${slave.slaveName} is woefully out of fashion, so ${S.Madam.slaveName} tries to draw attention away from ${him2}.`); + } + } else { + if ((slave.lactation > 0) && ((slave.boobs - slave.boobsImplant) > 6000)) { + r.push(`${He} makes sure to massage ${slave.slaveName}'s huge breasts to get the milk flowing before enticing clients to suckle and play with ${him2}.`); + } else { + r.push(`${He} would like to show off ${slave.slaveName}'s huge udders, but ${slave.slaveName} `); + if (slave.lactation === 0) { + r.push(`isn't producing milk anymore.`); + } else { + r.push(`doesn't exactly have huge udders anymore.`); + } + } + } + } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a cockmilker.") { + if (V.arcologies[0].FSGenderFundamentalist !== "unset") { + /* this needs review - doesn't fit right. An XY slave would be expected to be masculine. */ + if ((slave.balls === 0) && (slave.dick === 0) && (slave.vagina > -1)) { + r.push(`${He} uses ${slave.slaveName} as an example of how even a huge-balled freak like ${him2} can be restored to proper femininity.`); + } else { + r.push(`${He} tries to hide ${slave.slaveName}, 'her' body being notorious for its defiance of conventional femininity.`); + } + } else { + if (((slave.balls > 5) && (slave.dick !== 0)) || ((slave.balls > 4) && (slave.dick !== 0) && (slave.prostate > 1))) { + r.push(`${He} shows off ${slave.slaveName}'s copious loads by putting a condom over ${his2} dick and teasing ${him2} till ${he2} bursts it. The show draws multiple clients that want to play with ${his2} oversized junk and messy orgasms.`); + } else { + r.push(`${He} would love to show off ${slave.slaveName}'s copious loads, but`); + if (slave.dick === 0) { + r.push(`${slave.slaveName} doesn't have a dick.`); + } else if (slave.balls === 0) { + r.push(`${slave.slaveName}'s not producing cum.`); + } else { + r.push(`${slave.slaveName}'s orgasms just aren't messy enough.`); + } + } + } + } else if (slave.prestigeDesc === "$He is remembered for winning best in show as a breeder.") { + if (slave.bellyPreg >= 5000) { + r.push(`${He} makes sure ${slave.slaveName}'s growing pregnancy is well taken care of, even if it means driving away potential customers away when the mother-to-be needs a rest.`); + } else if (canGetPregnant(slave)) { + r.push(`${He} makes sure to play off ${slave.slaveName}'s fame and fertility by enticing potential customers to be the one to claim ${his2} womb by filling it with their child.`); + } else { + r.push(`${He} would love to play off of ${slave.slaveName}'s fame and fertility, but unfortunately ${he2}`); + if (slave.pregKnown === 1 && slave.bellyPreg < 1500) { + r.push(`is already pregnant and not far enough along to show it.`); + } else if (slave.pregKnown === 1 && slave.bellyPreg < 5000) { + r.push(`already pregnant, but not enough to be exciting.`); + } else { + r.push(`is unable to get knocked up.`); + } + } + } + App.Events.addNode(el, r); + } + + if ((SL + V.brothelSlavesGettingHelp < 10) && V.MadamNoSex !== 1 && !slaveResting(S.Madam)) { + ({ + he, him, his, himself, He, His, wife + } = getPronouns(S.Madam)); + let oldCash = V.cash; + if (V.showEWD !== 0) { + App.Events.addParagraph( + el, + [ + He, + App.SlaveAssignment.whore(S.Madam) + ] + ); + } else { + App.SlaveAssignment.whore(S.Madam); + } + App.Events.addParagraph( + el, + [ + `${He} whores ${himself} because ${he} doesn't have enough whores to manage to keep ${him} busy, and makes`, + App.UI.DOM.makeElement("span", `${cashFormat(S.Madam.lastWeeksCashIncome)}.`, ["cash", "inc"]), + `${He} can charge more for ${his} time, since many citizens find it erotic to fuck the Madam.` + ] + ); + profits += V.cash - oldCash; + oldCash = V.cash; + } + } + return r.join(" "); + } + + const madamEffects = App.UI.DOM.appendNewElement("p", el, '', "indent"); + $(madamEffects).append(madamText()); + + if (SL > 0) { + const whoreNumber = document.createElement("p"); + whoreNumber.classList.add("indent", "bold"); + + if (SL === 1) { + whoreNumber.append(`There is one slave whore working out of ${V.brothelName}.`); + } else { + whoreNumber.append(`There are ${SL} slave whores working out of ${V.brothelName}.`); + } + el.append(whoreNumber); + } + + if (S.Madam) { + const slave = S.Madam; + if (V.showEWD !== 0) { + const madamEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); + if (V.seeImages && V.seeReportImages) { + App.UI.DOM.appendNewElement("div", madamEntry, App.Art.SlaveArtElement(slave, 0, 0), ["imageRef", "tinyImg"]); + } + madamEntry.append(App.EndWeek.favoriteIcon(slave), " "); + App.Events.addNode( + madamEntry, + [ + App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name"), + `is serving as the Madam.`, + App.SlaveAssignment.standardSlaveReport(slave, false), + ] + ); + } else { + App.SlaveAssignment.standardSlaveReport(slave, true); + } + } + + if (SL > 0) { + let healthBonus = 0; + let aphrodisiacs = 0; + if (V.brothelUpgradeDrugs === 1) { + healthBonus += 1; + aphrodisiacs = 1; + } else if (V.brothelUpgradeDrugs === 2) { + healthBonus += 3; + aphrodisiacs = 2; + } + let oldCash = V.cash; + for (const slave of slaves) { + ({ + he, him, his, himself, He, His, wife + } = getPronouns(slave)); + if ((V.legendaryWombID === 0) && (!isAmputee(slave)) && (slave.preg > slave.pregData.normalBirth / 1.33) && (slave.broodmother === 0) && (slave.eggType === "human") && (slave.counter.births > 10) && (slave.devotion > 50) && (slave.prestige === 0)) { + V.legendaryWombID = slave.ID; + } + if ((V.legendaryWhoreID === 0) && (slave.skill.whoring >= 100) && (slave.devotion > 50) && (slave.prestige === 0)) { + V.legendaryWhoreID = slave.ID; + } + + /* Perform facility based rule changes */ + improveCondition(slave, healthBonus); + slave.aphrodisiacs = aphrodisiacs; + switch (V.brothelDecoration) { + case "Degradationist": + case "standard": + slave.rules.living = "spare"; + break; + default: + slave.rules.living = "normal"; + } + if (slave.health.condition < -80) { + improveCondition(slave, 20); + } else if (slave.health.condition < -40) { + improveCondition(slave, 15); + } else if (slave.health.condition < 0) { + improveCondition(slave, 10); + } else if (slave.health.condition < 90) { + improveCondition(slave, 7); + } + if ((slave.devotion <= 20) && (slave.trust >= -20)) { + slave.devotion -= 5; + slave.trust -= 5; + } else if ((slave.devotion < 45)) { + slave.devotion += 4; + } else if ((slave.devotion > 50)) { + slave.devotion -= 4; + } + if (slave.trust < 30) { + slave.trust += 5; + } + if (slave.energy > 40 && slave.energy < 95) { + slave.energy++; + } + + if (V.showEWD !== 0) { + const slaveEntry = App.UI.DOM.appendNewElement("div", el, '', "slave-report"); + if (V.seeImages && V.seeReportImages) { + App.UI.DOM.appendNewElement("div", slaveEntry, App.Art.SlaveArtElement(slave, 0, 0), ["imageRef", "tinyImg"]); + } + slaveEntry.append(App.EndWeek.favoriteIcon(slave), " "); + r = []; + r.push(App.UI.DOM.makeElement("span", SlaveFullName(slave), "slave-name")); + if (slave.choosesOwnAssignment === 2) { + r.push(App.SlaveAssignment.choosesOwnJob(slave)); + } else { + r.push(`is working out of ${V.brothelName}.`); + } + App.Events.addNode(slaveEntry, r, "div"); + + const indented = document.createElement("div"); + indented.classList.add("indent"); + App.Events.addNode( + indented, + [ + He, + App.SlaveAssignment.whore(slave), + App.SlaveAssignment.standardSlaveReport(slave, false) + ] + ); + slaveEntry.append(indented); + } else { + // discard return values silently + App.SlaveAssignment.choosesOwnJob(slave); + App.SlaveAssignment.whore(slave); + App.SlaveAssignment.standardSlaveReport(slave, true); + } + + const seed = Math.max(App.Ads.getMatchedCategoryCount(slave, "brothel"), 1); + const adsIncome = seed * random(50, 60) * Math.trunc(V.brothelAdsSpending / 1000); + getSlaveStatisticData(slave, V.facility.brothel).adsIncome += adsIncome; + cashX(adsIncome, "brothelAds"); + } + App.Events.addNode(el, [App.Ads.report("brothel", false)]); + + profits += V.cash - oldCash; + + // Record statistics gathering + const b = V.facility.brothel; + b.whoreIncome = 0; + b.customers = 0; + b.whoreCosts = 0; + b.rep = 0; + for (const si of b.income.values()) { + b.whoreIncome += si.income + si.adsIncome; + b.customers += si.customers; + b.whoreCosts += si.cost; + b.rep += si.rep; + } + b.adsCosts = V.brothelAdsSpending; + b.maintenance = V.brothel * V.facilityCost * (1.0 + 0.2 * V.brothelUpgradeDrugs); + b.totalIncome = b.whoreIncome + b.adsIncome; + b.totalExpenses = b.whoreCosts + b.adsCosts + b.maintenance; + b.profit = b.totalIncome - b.totalExpenses; + + App.Events.addNode( + el, + [ + `${brothelNameCaps} makes you`, + App.UI.DOM.makeElement("span", cashFormat(profits), ["cash", "inc"]), + `this week.` + ] + ); + + if (V.brothelDecoration !== "standard") { + App.Events.addParagraph( + el, + [ + `${brothelNameCaps}'s customers enjoyed`, + App.UI.DOM.makeElement("span", `fucking whores in ${V.brothelDecoration} surroundings.`, ["reputation", "inc"]) + ] + ); + } + + // Brothel stats + el.append(App.Facilities.Brothel.Stats(false)); + brothelStats.append(App.Facilities.Brothel.Stats(true)); + } + return el; +}; diff --git a/src/endWeek/clinicReport.js b/src/endWeek/clinicReport.js index 87ffbc9daf2b9e9d620d4c0ae5f164613c4f11dc..b741896901b99e518f6093c35ed09ae52080da62 100644 --- a/src/endWeek/clinicReport.js +++ b/src/endWeek/clinicReport.js @@ -240,8 +240,6 @@ App.EndWeek.clinicReport = function() { if (S.Nurse) { const slave = S.Nurse; - V.i = V.slaveIndices[slave.ID]; - App.Utils.setLocalPronouns(slave); // need this for the includes /* apply following SA passages to facility leader */ if (V.showEWD !== 0) { const nurseEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); @@ -258,7 +256,6 @@ App.EndWeek.clinicReport = function() { let restedSlaves = 0; for (const slave of slaves) { - V.i = V.slaveIndices[slave.ID]; if (slave.devotion < 45) { slave.devotion += 4; } @@ -376,7 +373,6 @@ App.EndWeek.clinicReport = function() { continue; } - App.Utils.setLocalPronouns(slave); // need this for the includes if (V.showEWD !== 0) { const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); if (V.seeImages && V.seeReportImages) { diff --git a/src/endWeek/economics/arcmgmt.js b/src/endWeek/economics/arcmgmt.js new file mode 100644 index 0000000000000000000000000000000000000000..9132b05c0588d7f78b67972fa1c80b3edec71598 --- /dev/null +++ b/src/endWeek/economics/arcmgmt.js @@ -0,0 +1,1971 @@ +App.EndWeek.arcmgmt = function() { + const el = new DocumentFragment(); + let r; + let _enslaved; + let _crime; + let _terrain; + let _transportHub; + let _honeymoon; + let _LCD; + let _SCD; + let _LSCD; + let _MCD; + let _UCD; + let _TCD; + let _percACitizens; + let _percMiddleClass; + let _percLowerClass; + let _percTopClass; + let _percUpperClass; + let _percASlaves; + let _rentMultiplier; + let _AWeekGrowth; + let _econMult; + + if (V.useTabs === 0) { + App.UI.DOM.appendNewElement("h2", el, "Arcology Management"); + } + const _schools = App.Utils.schoolCounter(); + + App.UI.DOM.appendNewElement("p", el, ownershipReport(false)); + + /* Sexual Satisfaction */ + if (V.arcologies[0].FSDegradationist !== "unset") { + if (V.arcadeDemandDegResult === 1) { + appendDiv(`Your endeavors to see slaves as less than human are hampered as citizens find that there are too few slaves ready to be treated as sexual objects around. <span class="red">Development towards a degradationist society is damaged</span> as a result.`); + } else if (V.arcadeDemandDegResult === 2) { + appendDiv(`Your endeavors to see slaves as less than human are slightly hampered as citizens find that there are not quite enough slaves ready to be treated as sexual objects around. <span class="red">Development towards a degradationist society is lightly damaged</span> as a result.`); + } else if (V.arcadeDemandDegResult === 3) { + appendDiv(`Your citizens were expecting to see more slaves available as sexual objects, but there aren't enough complaints to damage your societal development at this time.`); + } else if (V.arcadeDemandDegResult === 4) { + appendDiv(`Your citizens find themselves surrounded by slaves ready to be degraded and used as sexual objects, this <span class="green">helps to establish your degradationist society</span>.`); + } else if (V.arcadeDemandDegResult === 5) { + appendDiv(`You are providing your citizens with an adequate amount of slaves to be used as sexual objects, as is expected in your degradationist society.`); + } + } + + $(el).append(supplyPoliciesReport("lower")); + $(el).append(supplyPoliciesReport("middle")); + $(el).append(supplyPoliciesReport("upper")); + $(el).append(supplyPoliciesReport("top")); + + /* New Population + Populations depend on the 'demand' for them. People flock to the Free City when there are jobs. Jobs for lower class people depend on prosperity and the need for labor from other classes. They compete with slaves for work. + More elite citizens require their own slaves and will cause the population of slaves to increase as they move in. FS and policies will impact how many slaves they desire and how productive they are. The PC's menials also compete for labor within the arcology. Slaves can now 'expire', speed depends on FS and policies. Default lifespan for menials is an average of ~4 years. */ + + V.oldACitizens = V.ACitizens; + let _FSScore = 0; /* FS progress for tourism */ + let _slaveDemandU = 1; /* Changes to upperClass slave demand */ + let _slaveDemandT = 1; /* Changes to topClass slave demand */ + let _expirationFS = 0.005; /* Changes to likelihood of slave death */ + let _expirationLC = 0.003; /* Changes to likelihood of lowerClass death */ + let _expirationMC = 0.002; /* Changes to likelihood of middleClass death */ + let _expirationUC = 0.001; /* Changes to likelihood of upperClass death */ + let _expirationTC = 0.001; /* Changes to likelihood of topClass death */ + let _slaveProductivity = 0.8; /* Changes to slave productivity*/ + let _lowerClass = 0; /* Fixed amount of changes to lowerClass interest to move in*/ + let _lowerClassP = 1; /* Scaling changes to lowerClass interest ("stacking bonus")*/ + let _welfareFS = 0.004; /* Changes to likelihood of lowerClass getting enslaved*/ + let _middleClass = 0; /* See lowerClass examples for the rest of these*/ + let _middleClassP = 1; + let _upperClass = 0; + let _upperClassP = 1; + let _topClass = 0; + let _topClassP = 1; + + el.append(fsImpact()); + el.append(policiesImpact()); + + const schoolSubsidy = Array.from(App.Data.misc.schools.keys()).reduce((acc, current) => acc + V[current].subsidize, 0); + _middleClass += (schoolSubsidy) * 40; + _middleClassP *= 1 + (schoolSubsidy) * 0.005; + + r = []; + r.push(slaveRetirement()); + r.push(expiration()); + r.push(denseApartments()); + App.Events.addParagraph(el, r); + + citizenToSlave(); + + V.GDP = Math.trunc(((V.NPCSlaves + V.menials) * 0.35 * _slaveProductivity) + (V.lowerClass * 0.35) + (V.middleClass * 0.75) + (V.upperClass * 2) + (V.topClass * 10)) / 10; + + /* formula to calculate localEcon effect */ + if (V.localEcon >= 100) { + _econMult = (1 + 1.15 * (Math.trunc(1000-100000/200)/8.5)/100); + } else { + _econMult = (1/(1 + 5 * Math.sqrt(Math.trunc(100000/50-1000)/8.5)/100)); + } + + if (!isFrozen()) { + transport(); + } else { + /* enslavement happens even if there's no traffic due to weather */ + enslavement(); + } + + V.ASlaves = V.NPCSlaves + V.menials + V.fuckdolls + V.menialBioreactors; + if (V.secExpEnabled > 0) { + V.ASlaves += (V.SecExp.buildings.secHub ? V.SecExp.buildings.secHub.menials : 0) + App.SecExp.Manpower.employedSlave; + } + V.ACitizens = V.lowerClass + V.middleClass + V.upperClass + V.topClass; + _percACitizens = Math.trunc((V.ACitizens / (V.ACitizens + V.ASlaves)) * 1000) / 10; + _percASlaves = Math.trunc((V.ASlaves / (V.ACitizens + V.ASlaves)) * 1000) / 10; + _percLowerClass = Math.trunc((V.lowerClass / (V.ACitizens + V.ASlaves)) * 1000) / 10; + _percMiddleClass = Math.trunc((V.middleClass / (V.ACitizens + V.ASlaves)) * 1000) / 10; + _percUpperClass = Math.trunc((V.upperClass / (V.ACitizens + V.ASlaves)) * 1000) / 10; + _percTopClass = Math.trunc((V.topClass / (V.ACitizens + V.ASlaves)) * 1000) / 10; + if (V.cheatMode === 1 || V.debugMode === 1) { + appendDiv(`${V.arcologies[0].prosperity} Prosperity | ${_FSScore} FS Score | ${_honeymoon} Honeymoon | ${_transportHub} Transporthub | ${_terrain} Terrain | ${_crime} Crime`); + appendDiv(`${_LSCD} Lower + Slave Class Demand | ${_SCD} Slave Class Demand | ${_slaveProductivity} Slave Productivity`); + appendDiv(`${_LCD} Lower Class Demand | ${_lowerClassP} LC Multiplier`); + appendDiv(`${_MCD} Middle Class Demand | ${_middleClassP} MC Multiplier`); + appendDiv(`${_UCD} Upper Class Demand | ${_upperClassP} UC Multiplier`); + appendDiv(`${_TCD} Top Class Demand | ${_topClassP} TC Multiplier`); + } + appendDiv(`${V.arcologies[0].name} is home to the following:`); + appendDiv(`Citizens | ${V.ACitizens} | ${_percACitizens}%`); + appendDiv(`Lower Class Citizens | ${V.lowerClass} | ${_percLowerClass}%`); + appendDiv(`Middle Class Citizens | ${V.middleClass} | ${_percMiddleClass}%`); + appendDiv(`Upper Class Citizens | ${V.upperClass} | ${_percUpperClass}%`); + appendDiv(`Millionaires | ${V.topClass} | ${_percTopClass}%`); + appendDiv(`Slaves | ${V.ASlaves} | ${_percASlaves}%`); + + r = []; + if (V.arcologies[0].FSSupremacistLawME === 1) { + r.push(`The citizenry is entirely ${V.arcologies[0].FSSupremacistRace}.`); + } + if (V.arcologies[0].FSRomanRevivalistLaw === 1) { + r.push(`The citizens take pride in their martial duties, preferring to wear utilitarian clothing even when off duty.`); + } + if (V.arcologies[0].FSNeoImperialistLaw1 === 1) { + r.push(`You can occasionally see an Imperial Knight in full, noble battle-dress coordinating groups of organized citizen's militias, dressed in uniform liveries. Your citizens take pride in their fighting abilities.`); + } + if (V.arcologies[0].FSGenderRadicalistDecoration === 100) { + r.push(`Every single one of the slaves is female by virtue of her fuckable asshole.`); + } else if (V.arcologies[0].FSGenderFundamentalistSMR === 1) { + r.push(`Almost every prominent citizen is an upstanding man, while the slave population is almost completely female.`); + } + if (V.arcologies[0].FSEgyptianRevivalistLaw === 1) { + r.push(`Close relationships between citizens and slaves, especially slave siblings, are common.`); + } else if (V.arcologies[0].FSEgyptianRevivalistIncestPolicy === 1) { + r.push(`Close relationships between citizens, slaves and siblings are common.`); + } + if (V.arcologies[0].FSSubjugationistLawME === 1) { + r.push(`${capFirstChar(V.arcologies[0].FSSubjugationistRace)} subhumans form a majority of the slaves.`); + } + if (V.arcologies[0].FSChattelReligionistLaw === 1) { + r.push(`The slave population as a whole is unusually accepting of its station.`); + } + if (V.arcologies[0].FSPaternalistLaw === 1) { + r.push(`The slaves are well cared for, and it can sometimes be difficult to tell slaves from citizens.`); + } else if (V.arcologies[0].FSDegradationistLaw === 1) { + r.push(`Most of the slaves are recent captures, since the vicious society that's taken root here uses people up quickly.`); + } + if (V.arcologies[0].FSBodyPuristLaw === 1) { + r.push(`The average slave is quite healthy.`); + } else if (V.arcologies[0].FSTransformationFetishistSMR === 1) { + if (V.arcologies[0].FSTransformationFetishistResearch === 1) { + r.push(`Breast implants are almost universal;`); + if (V.arcologies[0].FSSlimnessEnthusiast === "unset") { + r.push(`an M-cup bust is below average among the slave population.`); + } else { + r.push(`even the most lithe slave sports a pair of overly round chest balloons.`); + } + } else { + r.push(`Breast implants are almost universal;`); + if (V.arcologies[0].FSSlimnessEnthusiast === "unset") { + r.push(`a D-cup bust is below average among the slave population.`); + } else { + r.push(`even the most lithe slave sports a pair of overly round chest balloons.`); + } + } + } + if (V.arcologies[0].FSIntellectualDependencySMR === 1) { + r.push(`The average slave is entirely dependent on its master.`); + } else if (V.arcologies[0].FSSlaveProfessionalismSMR === 1) { + r.push(`The average slave is entirely capable of acting on its master's behalf.`); + } + if (V.arcologies[0].FSSlimnessEnthusiastSMR === 1) { + r.push(`Most of the slave population is quite slim and physically fit.`); + } else if (V.arcologies[0].FSAssetExpansionistSMR === 1) { + r.push(`The arcology's consumption of pharmaceuticals is impressive, since slave growth hormones are nearly ubiquitous.`); + } + if (V.arcologies[0].FSPetiteAdmirationSMR === 1) { + r.push(`Slaves are both easy to identify, but hard to find in a crowd given their short stature.`); + } else if (V.arcologies[0].FSStatuesqueGlorificationSMR === 1) { + r.push(`${V.arcologies[0].name}'s`); + if (V.arcologies[0].FSStatuesqueGlorificationLaw === 1) { + r.push(`entire`); + } else { + r.push(`slave`); + } + r.push(`population stands taller than most visitors.`); + } + if (V.arcologies[0].FSRepopulationFocusLaw === 1) { + r.push(`Many of the women in the arcology are pregnant.`); + } else if (V.arcologies[0].FSRepopulationFocusSMR === 1) { + r.push(`Most of the slaves in the arcology are pregnant.`); + } else if (V.arcologies[0].FSRestartLaw === 1) { + r.push(`Many of your civilians have agreed to be sterilized.`); + } else if (V.arcologies[0].FSRestartSMR === 1) { + r.push(`Many of slave slaves in your arcology are infertile.`); + } + if (V.arcologies[0].FSPastoralistLaw === 1) { + r.push(`Much of the menial slave labor force works to service the arcology's hundreds of human cattle.`); + } + if (V.arcologies[0].FSPhysicalIdealistSMR === 1) { + r.push(`The arcology must import a very large quantity of nutritive protein to nourish its slaves.`); + } + if (V.arcologies[0].FSHedonisticDecadenceSMR === 1) { + r.push(`The arcology must import a very large quantity of fattening food to plump up its slaves.`); + } + + if (V.ACitizens > V.ASlaves * 2) { /* This will need to go away Eventually*/ + r.push(`Since most citizens do not own sex slaves, <span class="yellowgreen">demand for sexual services is intense.</span>`); + } else if (V.ACitizens > V.ASlaves) { + r.push(`Since many citizens do not own sex slaves, <span class="yellowgreen">demand for sexual services is healthy.</span>`); + } else if (V.ACitizens > V.ASlaves * 0.5) { + r.push(`Since many citizens keep a personal sex slave, <span class="yellow">demand for sexual services is only moderate.</span>`); + } else if (V.ACitizens > V.ASlaves * 0.25) { + r.push(`Since most citizens keep at least one sex slave, <span class="gold">local demand for sexual services is low,</span> though visitors to the arcology will always keep it above a certain minimum.`); + } else { + r.push(`Since most of your citizens now keep private harems of sex slaves, <span class="gold">local demand for sexual services is very low,</span> though visitors to the arcology will always keep it above a certain minimum.`); + } + App.Events.addParagraph(el, r); + r = []; + + _rentMultiplier = 1; + if (V.arcologies[0].FSPaternalistLaw === 1) { + _rentMultiplier *= 0.95; + r.push(`Tenants who can prove that they abstain from certain practices are given a reduction to their rent.`); + } + if (V.arcologies[0].FSYouthPreferentialistLaw === 1) { + _rentMultiplier *= 0.95; + r.push(`Younger citizens are offered subsidized rent to encourage young people to join the free population of your arcology.`); + } else if (V.arcologies[0].FSMaturityPreferentialistLaw === 1) { + _rentMultiplier *= 0.95; + r.push(`Older citizens are offered subsidized rent to encourage mature people to join the free population of your arcology.`); + } + if (V.arcologies[0].FSPetiteAdmirationLaw === 1) { + _rentMultiplier *= 0.95; + r.push(`Citizens are offered subsidized rent to take drastically shorter partners and harem members.`); + } else if (V.arcologies[0].FSStatuesqueGlorificationLaw === 1) { + _rentMultiplier *= 0.95; + r.push(`Tall citizens are offered rent subsidies, at the expense of short citizens, to encourage more statuesque individuals to join the free population of your arcology.`); + } + if (V.arcologies[0].FSRepopulationFocusLaw === 1) { + _rentMultiplier *= 0.95; + r.push(`Pregnant citizens are offered subsidized rent to encourage free women to become pregnant and pregnant women to join the free population of your arcology.`); + } else if (V.arcologies[0].FSRestartLaw === 1) { + _rentMultiplier *= 1.05; + r.push(`Non-Elite citizens who refuse to be sterilized face a moderate tax and the looming possibility of expulsion or enslavement.`); + } + if (V.arcologies[0].FSHedonisticDecadenceLaw === 1) { + _rentMultiplier *= 0.95; + r.push(`Food vendors are offered subsidized rent and operating expenses to set up shop in your arcology.`); + } + if (V.secExpEnabled > 0) { + if (V.SecExp.edicts.alternativeRents === 1) { + /* A silly policy*/ + r.push(`Your citizens are allowed to pay their rents in slaves rather than cash and a few financially challenged individuals make use of this.`); + _rentMultiplier *= 0.95; + const _movement = random(0, 3); + V.menials += _movement; + V.NPCSlaves -= _movement; + } + if (V.SecExp.edicts.defense.discountMercenaries === 1) { + r.push(`Mercenaries willing to come to your arcology are given a discount on rent.`); + _rentMultiplier *= 0.98; + } + if (V.SecExp.edicts.defense.privilege.militiaSoldier === 1) { + r.push(`Citizens in the militia are exempt from rent payment.`); + _rentMultiplier *= 0.98; + } + } + if (V.arcologies[0].FSArabianRevivalistLaw === 1) { + _rentMultiplier *= 1.05; + r.push(`Those of your citizens who have not yet subscribed to the society you are building are permitted to live and do business here, but must pay a moderate jizya tax for the privilege as part of their rent.`); + } + if (V.arcologies[0].FSNeoImperialistLaw2 === 1) { + _rentMultiplier *= 1.05; + r.push(`Your Barons, equipped with golden bands as a symbol of office, flit about their assigned sections of the arcology to personally check up on businesses and punish petty criminals. They make any evasion of your rent extraordinarily difficult, and consistently earn you more than they take.`); + } + App.Events.addParagraph(el, r); + r = []; + _rentMultiplier *= 1 + (5 - V.baseDifficulty) / 20; + const _rents = Math.trunc((V.lowerClass * V.rent.lowerClass + V.middleClass * V.rent.middleClass + V.upperClass * V.rent.upperClass + V.topClass * V.rent.topClass) * _rentMultiplier / 25); + if (!Number.isInteger(_rents)) { + appendDiv(`<span class="red">Error: rents is outside accepted range, please report this issue</span>`); + } else { + cashX(_rents, "rents"); + } + + r.push(`This week, rents from ${V.arcologies[0].name} came to <span class="yellowgreen"> ${cashFormat(_rents)}.</span>`); + if (V.difficultySwitch === 0) { + if (V.localEcon < 100) { + let _bribes = (V.week * 100) + random(-100, 100); + if (V.cash > 1000) { + _bribes += Math.trunc(V.cash * 0.02); + } + r.push(`The <span class="red">degenerating world economy</span> makes supplying and maintaining ${V.arcologies[0].name} extremely difficult. This week, bribes and other costs to keep it running came to <span class="yellowgreen">${cashFormat(_bribes)}.</span>`); + cashX(forceNeg(_bribes), "rents"); + } + } + + if (V.menials + V.menialBioreactors + V.fuckdolls > 0) { + let _menialEarnings = 0; + let _bioreactorEarnings = 0; + let _fuckdollsEarnings = 0; + r.push(`You own`); + if (V.menials > 0) { + if (V.menials > Math.trunc(_LSCD / _slaveProductivity - _SCD)) { + _menialEarnings += Math.trunc(_LSCD / _slaveProductivity - _SCD) * 10; + r.push(`<span class="red">more menial slaves than there was work,</span> consider selling some.<br> You own`); + } else { + _menialEarnings = V.menials * 10; + if (V.Sweatshops > 0) { + if (V.Sweatshops * 500 <= V.menials) { + _menialEarnings += V.Sweatshops * 7000; + _menialEarnings += (V.menials - V.Sweatshops * 500) * 10; + } else { + _menialEarnings += V.menials * 14; + } + } + } + if (V.illegalDeals.menialDrug === 1) { + _menialEarnings = Math.trunc(_menialEarnings * 1.5); + } + if (V.menials > 1) { + r.push(`${num(V.menials)} menial slaves${((V.menialBioreactors > 0) && (V.fuckdolls === 0)) ? ` and` : `,`}`); + } else { + r.push(`one menial slave${((V.menialBioreactors > 0) && (V.fuckdolls === 0)) ? ` and` : `,`}`); + } + cashX(_menialEarnings, "menialTrades"); + } + + if (V.menialBioreactors > 0) { + _bioreactorEarnings = V.menialBioreactors * (10 + (10 * V.arcologies[0].FSPastoralistLaw)); + if (V.dairy && V.dairyUpgradeMenials) { + _bioreactorEarnings += V.menialBioreactors * 5; + } + if (V.menialBioreactors > 1) { + r.push(`${num(V.menialBioreactors)} standard bioreactors,`); + } else { + r.push(`one standard bioreactor,`); + } + if (V.fuckdolls > 0) { + r.push(`and`); + } + cashX(_bioreactorEarnings, "menialBioreactors"); + } + + + if (V.fuckdolls > 0) { + const arcadeFreeSpace = V.arcade - App.Entity.facilities.arcade.employeesIDs().size; + const _fuckdollsArcade = arcadeFreeSpace > 0 ? Math.min(arcadeFreeSpace, V.fuckdolls) : 0; + let _arcadeUpgradeInjectors; + if (V.arcadeUpgradeInjectors === 0) { + _arcadeUpgradeInjectors = 0; + } else if (V.arcadeUpgradeInjectors === 1) { + _arcadeUpgradeInjectors = 1; + } else { + _arcadeUpgradeInjectors = 1.5; + } + _fuckdollsEarnings = Math.trunc(((V.fuckdolls - _fuckdollsArcade) * 140 + _fuckdollsArcade * (175 + 35 * _arcadeUpgradeInjectors)) * (V.arcadePrice - 0.5) / 10); + /* The "/ 10" at the end is just there to keep the price in line with other current prices, hopefully prices will get to a spot where this can be dropped*/ + if (V.fuckdolls > 1) { + r.push(`${num(V.fuckdolls)} standard Fuckdolls,`); + } else if (V.fuckdolls === 1) { + r.push(`one Fuckdoll,`); + } + if (_fuckdollsArcade > 1) { + r.push(`${num(_fuckdollsArcade)} of which are stationed in the arcade,`); + } else if (_fuckdollsArcade === 1 && V.fuckdolls > 1) { + r.push(`one of which is stationed in the arcade,`); + } else if (_fuckdollsArcade === 1) { + r.push(`which is stationed in the arcade,`); + } + if (V.policies.publicFuckdolls === 1) { + repX(_fuckdollsEarnings / 5, "fuckdolls"); + _fuckdollsEarnings = Math.trunc(V.fuckdolls * -0.5); + /* The upkeep of a Fuckdoll*/ + } + cashX(_fuckdollsEarnings, "fuckdolls"); + } + + if (_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings > 0) { + r.push(`earning you <span class="yellowgreen">${cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)}.</span>`); + } else { + r.push(`costing you <span class="red">${cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)}</span> on account of your free Fuckdoll policy.`); + } + if (V.illegalDeals.menialDrug === 1) { + r.push(`Your menial slave productivity has been boosted by performance enhancing drugs.`); + } + } + + _AWeekGrowth = V.AGrowth; + if (_AWeekGrowth + V.arcologies[0].prosperity > V.AProsperityCap) { + r.push(`<span class="yellow">${V.arcologies[0].name} is at its maximum prosperity, so rents will not increase until it is improved.</span>`); + } else if ((2 * _AWeekGrowth) + V.arcologies[0].prosperity >= V.AProsperityCap) { + r.push(`<span class="yellow">Your arcology is nearly at its maximum prosperity.</span>`); + V.arcologies[0].prosperity += _AWeekGrowth; + } else { + if (V.arcologies[0].ownership >= 100) { + r.push(`Your controlling interest in ${V.arcologies[0].name} allows you to lead it economically, <span class="green">supercharging growth.</span>`); + _AWeekGrowth += 3; + } else if (V.arcologies[0].ownership >= random(40, 100)) { + r.push(`Your interest in ${V.arcologies[0].name} allows you to lead it economically, <span class="green">boosting growth.</span>`); + _AWeekGrowth++; + } + if (V.arcologies[0].prosperity < (V.rep / 100)) { + r.push(`Your impressive reputation relative to ${V.arcologies[0].name}'s prosperity <span class="green">drives an increase in business.</span>`); + _AWeekGrowth++; + } else if (V.rep > 18000) { + /* no growth penalty if PC is at high rep, no matter how high prosperity goes */ + } else if (V.arcologies[0].prosperity > (V.rep / 60)) { + r.push(`Your low reputation relative to ${V.arcologies[0].name}'s prosperity <span class="red">seriously impedes business growth.</span>`); + _AWeekGrowth -= 2; + } else if (V.arcologies[0].prosperity > (V.rep / 80)) { + r.push(`Your unimpressive reputation relative to ${V.arcologies[0].name}'s prosperity <span class="yellow">slows business growth.</span>`); + _AWeekGrowth--; + } + if (V.secExpEnabled > 0) { + if (V.SecExp.core.trade <= 20) { + _AWeekGrowth += 1; + } else if (V.SecExp.core.trade <= 40) { + _AWeekGrowth += 2; + } else if (V.SecExp.core.trade <= 60) { + _AWeekGrowth += 3; + } else if (V.SecExp.core.trade <= 80) { + _AWeekGrowth += 4; + } else { + _AWeekGrowth += 5; + } + + if (V.SecExp.smilingMan.progress === 10) { + r.push(`The ex-criminal known to the world as The Smiling Man puts her impressive skills to work, improving the financial situation of the arcology with ease.`); + _AWeekGrowth++; + } + } + if (V.personalAttention === "business") { + if ((V.PC.skill.trading >= 100) || (V.PC.career === "arcology owner")) { + r.push(`Your <span class="springgreen">business focus and your experience</span> allow you to greatly assist in advancing the arcology's prosperity.`); + _AWeekGrowth += 2; + } else { + r.push(`Your business focus allows you to help improve the arcology's prosperity.`); + _AWeekGrowth++; + } + if (V.PC.actualAge >= 50) { + if (V.arcologies[0].FSMaturityPreferentialistLaw === 1) { + r.push(`You are able to leverage your long seniority in the business community using the arcology's favorable laws to further advance prosperity.`); + _AWeekGrowth++; + } + } else if (V.PC.actualAge < 35) { + if (V.arcologies[0].FSYouthPreferentialistLaw === 1) { + r.push(`You are able to leverage your freshness in the business community using the arcology's favorable laws to further advance prosperity.`); + _AWeekGrowth++; + } + } + } + if (V.arcologies[0].FSNull !== "unset") { + r.push(`Your cultural openness is a powerful driver of economic activity.`); + _AWeekGrowth += Math.max(1, Math.trunc(V.arcologies[0].FSNull / 25)); + } + if (V.arcologies[0].FSRestart !== "unset") { + r.push(`Your powerful connections open many avenues of economic expansion.`); + _AWeekGrowth += Math.max(1, Math.trunc(V.arcologies[0].FSRestart / 10)); + } + if (V.arcologies[0].FSPaternalist >= random(1, 100)) { + r.push(`This week, the careful attention to slave welfare your new society emphasizes has been a driver of prosperity.`); + _AWeekGrowth++; + } + if (V.arcologies[0].FSHedonisticDecadence >= random(1, 100)) { + r.push(`This week, several new businesses opened local branches or broke ground, greatly increasing prosperity.`); + _AWeekGrowth += 2; + } + if (V.arcologies[0].FSChattelReligionistCreed === 1) { + if (V.nicaea.focus === "owners") { + r.push(`The focus on slaveowners' whims in the creed of ${V.nicaea.name} interests the rich and powerful, increasing prosperity.`); + _AWeekGrowth += V.nicaea.power; + } + } + if (V.arcologies[0].FSSlaveProfessionalismLaw === 1) { + r.push(`The concentrated intelligence of the free population finds innovative ways to spur prosperity.`); + _AWeekGrowth++; + } + if (V.arcologies[0].FSRomanRevivalist >= random(1, 100)) { + r.push(`This week, intense interest in your project to revive Roman values has driven prosperity.`); + _AWeekGrowth++; + } else if (V.arcologies[0].FSNeoImperialist >= random(1, 100)) { + r.push(`This week, your tightly hierarchical Imperial society's efficient organization has attracted traders and increased prosperity.`); + _AWeekGrowth++; + } else if (V.arcologies[0].FSChineseRevivalist !== "unset") { + if ((V.HeadGirlID !== 0) && (V.RecruiterID !== 0) && (V.BodyguardID !== 0)) { + r.push(`This week, your imperial administration, staffed with a Head Girl, a Recruiter, and a Bodyguard, has improved prosperity.`); + _AWeekGrowth += 2; + } + } + if (V.PC.skill.trading >= 100) { + r.push(`Your <span class="springgreen">business skills</span> drive increased prosperity.`); + _AWeekGrowth++; + } else if (V.PC.career === "arcology owner") { + r.push(`Your <span class="springgreen">experience in the Free Cities</span> helps increase prosperity.`); + _AWeekGrowth++; + } + if (_schools === 1) { + r.push(`The presence of a slave school in the arcology improves the local economy.`); + } else if (_schools > 0) { + r.push(`The presence of slave schools in the arcology greatly improves the local economy.`); + } else if (V.arcologies[0].prosperity > 80) { + r.push(`The lack of a branch campus from a reputable slave school is slowing further development of the local economy.`); + _AWeekGrowth--; + } + _AWeekGrowth += _schools; + if (V.arcologies[0].FSDegradationistLaw === 1) { + r.push(`Requiring menials to be given time to fuck human sex toys in the arcade reduces labor efficiency, slowing growth and costs money for each menial slave you own.`); + _AWeekGrowth--; + cashX(forceNeg(V.menials * 3 * V.arcadePrice), "fuckdolls"); + } + if (V.arcologies[0].FSBodyPuristLaw === 1) { + r.push(`The drug surcharge used to fund the purity regime reduces growth.`); + _AWeekGrowth--; + } + if (V.arcologies[0].FSPastoralistLaw === 1) { + r.push(`Prosperity improvement is slowed by the regulations on animal products.`); + _AWeekGrowth--; + } + if (V.arcologies[0].FSPaternalistSMR === 1) { + r.push(`Your slave market regulations slow the flow of chattel through the arcology.`); + _AWeekGrowth--; + } + + /* deactivated with sec Exp as they are modifiers for the trade mechanic */ + if (V.secExpEnabled === 0) { + if (V.terrain === "urban") { + r.push(`Since your arcology is located in the heart of an urban area, its commerce is naturally vibrant.`); + _AWeekGrowth++; + } + if (V.terrain === "ravine") { + r.push(`Since your arcology is located in the heart of a ravine, its commerce is hindered by a lack of accessibility.`); + _AWeekGrowth--; + } + } + + if (V.arcologies[0].embargoTarget && V.arcologies[0].embargoTarget !== -1) { + r.push(`The local economy is hurt by the double edged sword of your economic warfare.`); + _AWeekGrowth -= V.arcologies[0].embargo * 2; + } + + let _desc = []; + let _descNeg = []; + for (let i = 1; i < V.arcologies.length; i++) { + const _opinion = App.Neighbor.opinion(0, i); + if (_opinion >= 100) { + _desc.push(V.arcologies[i].name); + } else if (_opinion <= -100) { + _descNeg.push(V.arcologies[i].name); + } + } + if (_desc.length > 0) { + r.push(`Your arcology's economy benefits from close social alignment with`); + if (_descNeg.length > 0) { + r.push(`${arrayToSentence(_desc)}, but`); + } else { + r.push(`${arrayToSentence(_desc)}.`); + } + _AWeekGrowth += _desc.length; + } + if (_descNeg.length > 0) { + if (_desc.length === 0) { + r.push(`Your arcology's economy is hindered by social conflicts with ${arrayToSentence(_descNeg)}.`); + _AWeekGrowth -= _descNeg.length; + } + } + if (V.policies.alwaysSubsidizeGrowth === 1) { + r.push(`Growth was subsidized as planned.`); + _AWeekGrowth++; + } + if (V.secExpEnabled > 0) { + App.Events.addParagraph(el, r); + r = []; + if (V.SecExp.core.authority > 18000) { + r.push(`Your authority is so high it discourages new business, slowing down the economic growth of the arcology.`); + _AWeekGrowth--; + } + if (V.SecExp.core.security > 80) { + r.push(`Your arcology is extremely safe and stable. Many businesses are attracted to it because of this.`); + _AWeekGrowth++; + } else if (V.SecExp.core.security < 20) { + r.push(`Your arcology's low security is an instability factor simply too dangerous to be ignored. Many businesses avoid your arcology because of this.`); + _AWeekGrowth--; + } + + if (V.SecExp.edicts.weaponsLaw === 3) { + r.push(`The free flow of weapons in your arcology has a positive impact on its economy.`); + _AWeekGrowth++; + } else if (V.SecExp.edicts.weaponsLaw === 2) { + r.push(`The fairly liberal flow of weapons in your arcology has a positive impact on its economy.`); + _AWeekGrowth++; + } + if (V.SecExp.buildings.propHub && V.SecExp.buildings.propHub.upgrades.controlLeaks > 0) { + r.push(`The authenticity department prepares extremely accurate, but false financial reports, misleading many of your competitors, allowing your arcology more space to grow undisturbed.`); + _AWeekGrowth++; + } + if (V.SecExp.smilingMan.progress >= 2) { + if (V.SecExp.smilingMan.globalCrisisWeeks && V.SecExp.smilingMan.globalCrisisWeeks > 0) { + r.push(`The great global crisis ignited by The Smiling Man plan is a great weight on the shoulders of everyone, causing great harm to the prosperity of the arcology.`); + _AWeekGrowth -= random(2, 4); + V.SecExp.smilingMan.globalCrisisWeeks--; + } else if (V.SecExp.smilingMan.progress >= 3) { + r.push(`With the global economy recovering from the great crisis unleashed by the Smiling Man, there is plenty of room to grow. Your arcology's prosperity benefits from this greatly.`); + _AWeekGrowth++; + } + if ((V.SecExp.smilingMan.globalCrisisWeeks) && V.SecExp.smilingMan.globalCrisisWeeks === 0) { + delete V.SecExp.smilingMan.globalCrisisWeeks; + } + } + if (V.garrison.reactorTime > 0) { + r.push(`The damage to the reactor caused by the last rebellion is extensive. Businesses and private citizens struggle to operate with the unreliable and limited energy production offered by the auxiliary generators.`); + r.push(`It will still take`); + if (V.garrison.reactorTime > 1) { + r.push(`${V.garrison.reactorTime} weeks`); + } else { + r.push(`a week`); + } + r.push(`to finish repair works.`); + _AWeekGrowth -= random(1, 2); + V.garrison.reactorTime--; + IncreasePCSkills('engineering', 0.1); + } + + const secExpTrade = App.SecExp.tradeReport(); + r.push(secExpTrade.text); + _AWeekGrowth += secExpTrade.bonus; + App.Events.addParagraph(el, r); + r = []; + } + _AWeekGrowth = Math.trunc(0.5 * _AWeekGrowth); + if (_AWeekGrowth > 0) { + r.push(`Since ${V.arcologies[0].name} can support more citizens and more activity, <span class="green">its prosperity improved this week.</span>`); + } else if (_AWeekGrowth === 0) { + r.push(`Though ${V.arcologies[0].name} can support more citizens and more activity, <span class="yellow">growth was moribund this week.</span>`); + } else { + r.push(`Though ${V.arcologies[0].name} can support more citizens and more activity, <span class="red">it lost prosperity this week.</span>`); + } + + App.Events.addNode(el, r); + r = []; + + if (isNaN(_AWeekGrowth)) { + r.push(App.UI.DOM.makeElement("div", `Error: AWeekGrowth is NaN`, "red")); + } else { + V.arcologies[0].prosperity += _AWeekGrowth; + } + + if (_schools > 0) { + el.append(schools()); + } + + if (V.assistant.market && V.assistant.market.limit > 0) { + let _popCap = menialPopCap(); + let _menialSlaveValue = menialSlaveCost(); + const {HeM, heM} = getPronouns(assistant.pronouns().market).appendSuffix('M'); + // <br> + r.push(`Your <span class="bold">business assistant</span> manages the menial slave market.`); + if (_menialSlaveValue <= 900 + V.assistant.market.aggressiveness) { /* BUY */ + let _bulkMax = _popCap.value - V.menials - V.fuckdolls - V.menialBioreactors; + if (_bulkMax <= 0) { + r.push(`There is no room in the parts of your arcology you own for more menial slaves.`); + } else { + if (V.cash > V.assistant.market.limit + _menialSlaveValue) { + let _menialBulkPremium = Math.trunc(1 + Math.clamp((V.cash - V.assistant.market.limit) / _menialSlaveValue, 0, _bulkMax) / 400); + r.push(`${HeM} acquires more chattel, since it's a buyers' market.`); + if ((V.arcologies[0].FSPastoralist !== "unset") && (V.arcologies[0].FSPaternalist === "unset")) { + V.menialBioreactors += Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / (_menialSlaveValue + _menialBulkPremium - 100), 0, _bulkMax)); + V.menialSupplyFactor -= Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / (_menialSlaveValue + _menialBulkPremium - 100), 0, _bulkMax)); + cashX(forceNeg(Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / (_menialSlaveValue + _menialBulkPremium - 100), 0, _bulkMax)) * (_menialSlaveValue + _menialBulkPremium - 100)), "menialBioreactorsTransferA"); + } else if ((V.arcologies[0].FSDegradationist !== "unset")) { + V.fuckdolls += Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / ((_menialSlaveValue + _menialBulkPremium) * 2), 0, _bulkMax)); + V.menialSupplyFactor -= Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / ((_menialSlaveValue + _menialBulkPremium) * 2), 0, _bulkMax)); + cashX(forceNeg(Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / ((_menialSlaveValue + _menialBulkPremium) * 2), 0, _bulkMax)) * ((_menialSlaveValue + _menialBulkPremium) * 2)), "fuckdollsTransferA"); + } else { + V.menials += Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / (_menialSlaveValue + _menialBulkPremium), 0, _bulkMax)); + V.menialSupplyFactor -= Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / (_menialSlaveValue + _menialBulkPremium), 0, _bulkMax)); + cashX(forceNeg(Math.trunc(Math.clamp((V.cash - V.assistant.market.limit) / (_menialSlaveValue + _menialBulkPremium), 0, _bulkMax) * (_menialSlaveValue + _menialBulkPremium))), "menialTransferA"); + } + } + } + } else if (_menialSlaveValue >= 1100 - V.assistant.market.aggressiveness) { /* SELL */ + if (V.menials + V.fuckdolls + V.menialBioreactors > 0) { + r.push(`${HeM} liquidates your chattel holdings, since it's a sellers' market.`); + } + let _cashX; + if (V.menials > 0) { + _cashX = V.menials * (menialSlaveCost(-V.menials)); + V.menialDemandFactor -= V.menials; + V.menials = 0; + cashX(_cashX, "menialTransferA"); + } + if (V.fuckdolls > 0) { + _cashX = V.fuckdolls * (menialSlaveCost(-V.fuckdolls) * 2); + V.menialDemandFactor -= V.fuckdolls; + V.fuckdolls = 0; + cashX(_cashX, "fuckdollsTransferA"); + } + if (V.menialBioreactors > 0) { + _cashX = V.menialBioreactors * (menialSlaveCost(-V.menialBioreactors) - 100); + V.menialDemandFactor -= V.menialBioreactors; + V.menialBioreactors = 0; + cashX(_cashX, "menialBioreactorsTransferA"); + } + } else { + r.push(`Prices are average, so ${heM} does not make any significant moves.`); + } + App.Events.addParagraph(el, r); + r = []; + } + + const food = document.createElement("span"); + food.id = "food"; + if (V.foodMarket > 0) { + food.append(App.UI.DOM.renderPassage("Food Report")); + } + el.append(food); + } + App.Events.addNode(el, r); + return el; + + function fsImpact() { + const el = new DocumentFragment(); + const r = []; + + if (V.arcologies[0].FSSupremacist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSSupremacist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * 0.04; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * 0.05; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * -80; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * -0.004; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * -16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * 5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * 0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * 2; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSupremacist, 100) / 20) * 0.004; + r.push(`Your racial policies are concentrating power in the hands of ${V.arcologies[0].FSSupremacistRace} people.`); /* perhaps too obvious to bother with printing? */ + } + if (V.arcologies[0].FSSubjugationist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSSubjugationist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * 0.04; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * 0.05; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * -80; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * -0.004; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * -16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * 5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * 0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * 2; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSubjugationist, 100) / 20) * 0.004; + r.push(`Your racial policies are stripping all power from the ${V.arcologies[0].FSSubjugationistRace} people.`); /* perhaps too obvious to bother with printing? */ + } + if (V.arcologies[0].FSGenderRadicalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSGenderRadicalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSGenderRadicalist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSGenderRadicalist, 100) / 20) * 0.025; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSGenderRadicalist, 100) / 20) * -40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSGenderRadicalist, 100) / 20) * -0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSGenderRadicalist, 100) / 20); + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSGenderRadicalist, 100) / 20) * 0.002; + r.push(`Your radical views on gender are scaring away the more traditionally minded.`); + } + if (V.arcologies[0].FSGenderFundamentalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSGenderFundamentalist, 100); + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSGenderFundamentalist, 100) / 20) * 40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSGenderFundamentalist, 100) / 20) * 0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSGenderFundamentalist, 100) / 20) * -1; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSGenderFundamentalist, 100) / 20) * -0.002; + r.push(`Your traditional views on gender are comforting to many, unimaginative to some.`); + } + if (V.arcologies[0].FSPaternalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSPaternalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.04; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.05; + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.15; + _slaveProductivity += Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * 0.02; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * 80; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * 0.004; + _welfareFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.1; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * 16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * 0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -2; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.002; + r.push(`Poor citizens can rely on their better-off peers in ${V.arcologies[0].name}.`); + } + if (V.arcologies[0].FSDegradationist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSDegradationist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 0.04; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 0.05; + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 0.2; + _slaveProductivity += Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 0.01; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * -80; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * -0.004; + _welfareFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 0.1; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * -16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 2; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSDegradationist, 100) / 20) * 0.004; + r.push(`The arcology is a cutthroat place in which falling into slavery is very easy.`); + } + if (V.arcologies[0].FSIntellectualDependency !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSIntellectualDependency, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * 0.03; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * 0.04; + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * 0.05; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * 20; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * 0.002; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * 10; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * 0.003; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * -3; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSIntellectualDependency, 100) / 20) * -0.020; + r.push(`It's always a party in ${V.arcologies[0].name}, giving it a strong appeal to those unable to host such an event.`); + } + if (V.arcologies[0].FSSlaveProfessionalism !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSSlaveProfessionalism, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * -0.1; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * -0.125; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * -20; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * 2.7; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * 0.001; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * 0.5; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSSlaveProfessionalism, 100) / 20) * 0.001; + r.push(`The intelligent atmosphere of ${V.arcologies[0].name} makes it an attractive place for those with the brains to define their place in the world.`); + } + if (V.arcologies[0].FSBodyPurist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSBodyPurist, 100); + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSBodyPurist, 100) / 20) * 40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSBodyPurist, 100) / 20) * 0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSBodyPurist, 100) / 20) * -2.7; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSBodyPurist, 100) / 20) * -0.001; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSBodyPurist, 100) / 20) * -0.5; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSBodyPurist, 100) / 20) * -0.001; + r.push(`Body purist fashion standards comfort the poor as they stand out less from their more fortunate neighbors.`); + } + if (V.arcologies[0].FSTransformationFetishist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSTransformationFetishist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * 0.025; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * -40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * 2.7; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * 0.001; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * 0.5; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSTransformationFetishist, 100) / 20) * 0.001; + r.push(`The lower class fear the kind of transformations could be forced on them if they ever end up enslaved, whereas the rich enjoy wielding such power.`); + } + if (V.arcologies[0].FSYouthPreferentialist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSYouthPreferentialist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSYouthPreferentialist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSYouthPreferentialist, 100) / 20) * 0.025; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSYouthPreferentialist, 100) / 20) * 40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSYouthPreferentialist, 100) / 20) * 0.002; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSYouthPreferentialist, 100) / 20) * -8; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSYouthPreferentialist, 100) / 20) * -0.002; + r.push(`Preference for youth makes the young poor in your arcology feel appreciated despite their lack of wealth.`); + } + if (V.arcologies[0].FSMaturityPreferentialist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSMaturityPreferentialist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSMaturityPreferentialist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSMaturityPreferentialist, 100) / 20) * 0.025; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSMaturityPreferentialist, 100) / 20) * -40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSMaturityPreferentialist, 100) / 20) * -0.002; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSMaturityPreferentialist, 100) / 20) * 8; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSMaturityPreferentialist, 100) / 20) * 0.002; + r.push(`Preference for maturity makes the middle class of your arcology feel like their experience is finally properly appreciated.`); + } + if (V.arcologies[0].FSPetiteAdmiration !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSPetiteAdmiration, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPetiteAdmiration, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPetiteAdmiration, 100) / 20) * 0.025; + } + if (V.arcologies[0].FSStatuesqueGlorification !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSStatuesqueGlorification, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSStatuesqueGlorification, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSStatuesqueGlorification, 100) / 20) * 0.025; + } + if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSSlimnessEnthusiast, 100); + } + if (V.arcologies[0].FSAssetExpansionist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSAssetExpansionist, 100); + if (V.arcologies[0].FSBodyPurist !== "unset") { + _expirationFS *= 1 + (Math.trunc(Math.min(V.arcologies[0].FSAssetExpansionist, 100) / 20) * 0.05) * (1 + (Math.trunc(Math.min(V.arcologies[0].FSBodyPurist, 100) / 20) * -0.1)); + } else { + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSAssetExpansionist, 100) / 20) * 0.05; + } + } + if (V.arcologies[0].FSPastoralist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSPastoralist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.04; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.05; + if (V.arcologies[0].FSPaternalist !== "unset") { + _expirationFS *= 1 + (Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.05) * (1 + (Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.1)); + } else { + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.05; + } + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * -80; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * -0.004; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 2.7; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.001; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.5; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPastoralist, 100) / 20) * 0.001; + r.push(`The pastoralization of ${V.arcologies[0].name} spurs a whole industry around human produce.`); + } + if (V.arcologies[0].FSPhysicalIdealist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSPhysicalIdealist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.025; + _slaveProductivity += Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.01; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * -40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * 2.7; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.001; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.5; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.001; + r.push(`Fit slaves and citizens are more productive! However, your arcology's poor do not look forward to even more toil and sweat.`); + } + if (V.arcologies[0].FSChattelReligionist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSChattelReligionist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * 0.025; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * -40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * 2.7; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * 0.001; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * 0.5; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSChattelReligionist, 100) / 20) * 0.001; + r.push(`Chattel Religionism helps some poor citizens see slavery as a spiritually pure fate.`); + } + if (V.arcologies[0].FSRomanRevivalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSRomanRevivalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20) * 0.025; + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20) * -0.1; + _welfareFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20) * -0.05; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20) * 40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20) * 0.00; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20); + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRomanRevivalist, 100) / 20) * -0.002; + r.push(`Your citizens take pride in looking after each other.`); + } + if (V.arcologies[0].FSNeoImperialist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSNeoImperialist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 0.05; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 0.030; + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * -0.06; + _welfareFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * -0.025; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * -20; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * -0.002; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 0.004; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 0.5; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNeoImperialist, 100) / 20) * 0.002; + r.push(`Your new Imperium creates a staunchly hierarchical society, and while your elites and soldiers enjoy social prestige and luxury, the lower classes are often unhappy about being made to grovel.`); + } + if (V.arcologies[0].FSEgyptianRevivalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSEgyptianRevivalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSEgyptianRevivalist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSEgyptianRevivalist, 100) / 20) * 0.025; + _welfareFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSEgyptianRevivalist, 100) / 20) * -0.05; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSEgyptianRevivalist, 100) / 20) * 40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSEgyptianRevivalist, 100) / 20) * 0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSEgyptianRevivalist, 100) / 20); + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSEgyptianRevivalist, 100) / 20) * -0.002; + r.push(`Egyptian Revivalism is benevolent in some ways, and charity is common here.`); + } + if (V.arcologies[0].FSEdoRevivalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSEdoRevivalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSEdoRevivalist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSEdoRevivalist, 100) / 20) * 0.025; + } + if (V.arcologies[0].FSArabianRevivalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSArabianRevivalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSArabianRevivalist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSArabianRevivalist, 100) / 20) * 0.025; + } + if (V.arcologies[0].FSChineseRevivalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSChineseRevivalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSChineseRevivalist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSChineseRevivalist, 100) / 20) * 0.025; + } + if (V.arcologies[0].FSAztecRevivalist !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSAztecRevivalist, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSAztecRevivalist, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSAztecRevivalist, 100) / 20) * 0.025; + } + if (V.arcologies[0].FSNull !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSNull, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * -0.1; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * -0.125; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * 400; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * 0.016; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * 64; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * 0.008; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * -21.6; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * -0.008; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * -8; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSNull, 100) / 20) * -0.016; + r.push(`Your arcology's vibrant, open culture helps everyone succeed, preventing many struggling citizens from falling into slavery.`); + } + if (V.arcologies[0].FSRepopulationFocus !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSRepopulationFocus, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 0.04; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 0.05; + _slaveProductivity += Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * -0.01; + if (V.arcologies[0].FSPaternalist !== "unset") { + _expirationFS *= 1 + (Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 0.05) * (1 + (Math.trunc(Math.min(V.arcologies[0].FSPaternalist, 100) / 20) * -0.1)); + } else { + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 0.05; + } + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 80; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 0.004; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * 0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * -5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * -0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * -2; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRepopulationFocus, 100) / 20) * -0.004; + r.push(`You've made repopulation a priority and the less fortunate hope all these new children will make their lives easier in the future, but the wealthy are wary.`); + } + if (V.arcologies[0].FSRestart !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSRestart, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * 0.04; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * 0.05; + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * -80; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * -0.004; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * -16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * 5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * 0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * 2; + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSRestart, 100) / 20) * 0.004; + r.push(`Highly restricted breeding pleases the powerful, but the less fortunate may seek reproductive freedom elsewhere.`); + } + if (V.arcologies[0].FSHedonisticDecadence !== "unset") { + _FSScore += Math.min(V.arcologies[0].FSHedonisticDecadence, 100); + _slaveDemandU *= 1 + Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.02; + _slaveDemandT *= 1 + Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.025; + _slaveProductivity += Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * -0.01; + _expirationFS *= 1 + Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.1; /* too high?*/ + _lowerClass += Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * 40; + _lowerClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.002; + _middleClass += Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * -16; + _middleClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * -0.002; + _upperClass += Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * -5.4; + _upperClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * -0.002; + _topClass += Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20); + _topClassP *= 1 + Math.trunc(Math.min(V.arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.002; + r.push(`Your citizens enjoy the pleasures of life to their fullest, but some prefer to earn these pleasures.`); + } + if (r.length > 0) { + App.UI.DOM.appendNewElement("h3", el, "Future Societies"); + } + App.Events.addNode(el, r); + return el; + } + + function policiesImpact() { + const el = new DocumentFragment(); + const r = []; + if (V.policies.retirement.menial2Citizen === 1) { + _slaveDemandU *= 0.8; + _slaveDemandT *= 0.75; + _slaveProductivity += 0.05; + _expirationFS *= 0.8; + _lowerClass += 200; + _lowerClassP *= 1.01; + _middleClass += 80; + _middleClassP *= 1.01; + _upperClass += -27; + _upperClassP *= 0.99; + _topClass += -5; + _topClassP *= 0.99; + } + if (V.policies.proRefugees === 1) { + _slaveDemandU *= 1.1; + _slaveDemandT *= 1.125; + r.push(`Some desperate people filtered into the arcology during the week: as owner, you were able to enslave a handful of them.`); + } + if (V.policies.immigrationCash === 1) { + _lowerClass += 200; + _lowerClassP *= 1.01; + _middleClass += 40; + _middleClassP *= 1.005; + _upperClass += -13.5; + _upperClassP *= 0.995; + _topClass += -5; + _topClass *= 0.99; + r.push(`The rent promotion for new immigrants brings new citizens to the arcology.`); + } + if (V.policies.immigrationRep === 1) { + _lowerClass += 200; + _lowerClassP *= 1.01; + _middleClass += 40; + _middleClassP *= 1.005; + _upperClass += -13.5; + _upperClassP *= 0.995; + _topClass += -5; + _topClass *= 0.99; + r.push(`Your welcome program for new citizens helps encourage wealthy people from the old world to immigrate, but <span class="red">annoys some longstanding citizens.</span>`); + repX(forceNeg(100), "policies"); + } + if (V.policies.immigrationCash === -1) { + _lowerClass += -200; + _lowerClassP *= 0.99; + _middleClass += -40; + _middleClassP *= 0.995; + _upperClass += 13.5; + _upperClassP *= 1.005; + _topClass += 5; + _topClass *= 1.01; + r.push(`You covertly <span class="yellowgreen">sell</span> the private information of potential arcology immigrants on the old world black market.`); + cashX(random(500, 1500), "policies"); + } + if (V.policies.immigrationRep === -1) { + _lowerClass += -200; + _lowerClassP *= 0.99; + _middleClass += -40; + _middleClassP *= 0.995; + _upperClass += 13.5; + _upperClassP *= 1.005; + _topClass += 5; + _topClass *= 1.01; + r.push(`You allow citizens input on potential immigrants, a <span class="green">popular</span> program.`); + repX(100, "policies"); + } + if (V.policies.enslavementCash === 1) { + _slaveDemandU *= 1.1; + _slaveDemandT *= 1.125; + _lowerClass += -200; + _lowerClassP *= .99; + _topClass += 5; + _topClass *= 1.01; + r.push(`You <span class="yellowgreen">take kickbacks</span> for ignoring enslavement of citizens.`); + cashX(random(500, 1500), "policies"); + } + if (V.policies.enslavementRep === 1) { + _slaveDemandU *= 1.1; + _slaveDemandT *= 1.125; + _lowerClass += -200; + _lowerClassP *= 0.99; + _topClass += 5; + _topClass *= 1.01; + r.push(`You <span class="green">make friends</span> by tacitly supporting enslavement of upstart citizens.`); + repX(100, "policies"); + } + if (V.policies.enslavementCash === -1) { + _slaveDemandU *= 0.9; + _slaveDemandT *= 0.875; + _lowerClass += 200; + _lowerClassP *= 1.02; + _topClass += -5; + _topClass *= 0.98; + r.push(`Your charity purse prevents a few citizens from falling into slavery.`); + } + if (V.policies.enslavementRep === -1) { + _slaveDemandU *= 0.9; + _slaveDemandT *= 0.875; + _lowerClass += 200; + _lowerClassP *= 1.01; + _topClass += -5; + _topClass *= 0.99; + r.push(`You use your personal influence to help struggling citizens.`); + repX(forceNeg(100), "policies"); + } + if (V.arcologies[0].FSSupremacistLawME === 1) { + _slaveDemandU *= 2.2; + _slaveDemandT *= 2.5; + _lowerClass += -400; + _lowerClassP *= 0.98; + _middleClass += -80; + _middleClassP *= 0.99; + _upperClass += 27; + _upperClassP *= 1.01; + _topClass += 10; + _topClassP *= 1.02; + if (V.FSSupLawTrigger === 1) { + const _slavesSupLaw = Math.trunc((V.lowerClass + V.middleClass + V.upperClass) * 0.65); + V.NPCSlaves += Math.trunc(_slavesSupLaw * 0.7); + V.menials += Math.trunc(_slavesSupLaw * 0.2); + V.lowerClass = Math.trunc(V.lowerClass * 0.35); + V.middleClass = Math.trunc(V.middleClass * 0.35); + V.upperClass = Math.trunc(V.upperClass * 0.35); + V.FSSupLawTrigger = 2; + } + } + if (V.arcologies[0].FSSubjugationistLawME === 1) { + _slaveDemandU *= 1.24; + _slaveDemandT *= 1.3; + _lowerClass += -200; + _lowerClassP *= 0.99; + _middleClass += -40; + _middleClassP *= 0.995; + _upperClass += 13.5; + _upperClassP *= 1.005; + _topClass += 5; + _topClassP *= 1.01; + if (V.FSSubLawTrigger === 1) { + const _slavesSubLaw = Math.trunc((V.lowerClass + V.middleClass + V.upperClass) * 0.2); + V.NPCSlaves += Math.trunc(_slavesSubLaw * 0.7); + V.menials += Math.trunc(_slavesSubLaw * 0.2); + V.lowerClass = Math.trunc(V.lowerClass * 0.8); + V.middleClass = Math.trunc(V.middleClass * 0.8); + V.upperClass = Math.trunc(V.upperClass * 0.8); + V.FSSubLawTrigger = 2; + } + } + if (V.arcologies[0].FSRepopulationFocusLaw === 1) { + _lowerClass += 100; + _lowerClassP *= 1.005; + _topClass += -2.5; + _topClassP *= 0.995; + r.push(`The rent promotion for pregnant women attracts several gravid ladies and a few girls eager to become mothers to enroll as citizens in your arcology.`); + } + if (V.arcologies[0].FSRestartLaw === 1) { + _lowerClass += -100; + _lowerClassP *= 0.99; + _topClass += 2.5; + _topClassP *= 1.01; + r.push(`Your sterilization program drives several disloyal citizens out of the arcology.`); + } + if (V.arcologies[0].FSHedonisticDecadenceLaw === 1) { + _middleClass += 80; + _middleClassP *= 1.01; + } + if (V.arcologies[0].FSDegradationistLaw === 1) { + _slaveProductivity += -0.05; + } + if (V.arcologies[0].FSPaternalistLaw === 1) { + _slaveDemandU *= 0.9; + _slaveDemandT *= 0.875; + _upperClass += -13.5; + _upperClassP *= 1.005; + _topClass += -2.5; + _topClassP *= 1.005; + } + if (V.arcologies[0].FSYouthPreferentialistLaw === 1) { + _lowerClass += 200; + _lowerClassP *= 1.01; + _middleClass += -80; + _middleClassP *= 0.99; + } + if (V.arcologies[0].FSMaturityPreferentialistLaw === 1) { + _lowerClass += -200; + _lowerClassP *= 0.99; + _middleClass += 80; + _middleClassP *= 1.01; + } + if (V.arcologies[0].FSPetiteAdmirationLaw === 1) { + _lowerClass += -200; + _lowerClassP *= 0.99; + _middleClass += 80; + _middleClassP *= 1.01; + } + if (V.arcologies[0].FSStatuesqueGlorificationLaw === 1) { + _lowerClass += -400; + _lowerClassP *= 0.95; + _middleClass += 40; + _middleClassP *= 1.01; + _upperClass += -10; + _upperClassP *= .99; + } + if (V.arcologies[0].FSIntellectualDependencyLaw === 1) { + _slaveDemandU *= 1.24; + _slaveDemandT *= 1.3; + _lowerClass += -50; + _lowerClassP *= 0.90; + _middleClass += -40; + _middleClassP *= 0.90; + _upperClass += -1; + _upperClassP *= .99; + } + if (V.arcologies[0].FSSlaveProfessionalismLaw === 1) { + _slaveDemandU *= 1.4; + _slaveDemandT *= 1.5; + _lowerClass += -300; + _lowerClassP *= 0.95; + _middleClass += -40; + _middleClassP *= 0.995; + _upperClass += -5; + _upperClassP *= .99; + _topClass += 7; + _topClassP *= 1.05; + if (V.FSSlaveProfLawTrigger === 1) { + V.lowerClass = Math.trunc(V.lowerClass * 0.8); + V.middleClass = Math.trunc(V.middleClass * 0.8); + V.upperClass = Math.trunc(V.upperClass * 0.8); + V.FSSlaveProfLawTrigger = 2; + } + } + if (V.arcologies[0].FSChattelReligionistCreed === 1) { + if (V.nicaea.focus === "slaves") { + _slaveDemandU *= 1 + V.nicaea.power * -0.05; + _slaveDemandT *= 1 + V.nicaea.power * -0.0625; + _slaveProductivity += V.nicaea.power * 0.025; + _expirationFS *= 1 + V.nicaea.power * -0.125; + _lowerClass += V.nicaea.power * 100; + _lowerClassP *= 1 + V.nicaea.power * 0.005; + _topClass += V.nicaea.power * -2.5; + _topClassP *= 1 + V.nicaea.power * -0.005; + } else if (V.nicaea.focus === "owners") { + _slaveDemandU *= 1 + V.nicaea.power * 0.05; + _slaveDemandT *= 1 + V.nicaea.power * 0.0625; + _lowerClass += V.nicaea.power * -100; + _lowerClassP *= 1 + V.nicaea.power * -0.005; + _middleClass += V.nicaea.power * -20; + _middleClassP *= 1 + V.nicaea.power * -0.0025; + _upperClass += V.nicaea.power * 6.75; + _upperClassP *= 1 + V.nicaea.power * 0.0025; + _topClass += V.nicaea.power * 2.5; + _topClassP *= 1 + V.nicaea.power * 0.005; + } + if (V.nicaea.assignment === "whore") { + _upperClass += V.nicaea.power * 6.75; + _upperClassP *= 1 + V.nicaea.power * 0.0025; + _topClass += V.nicaea.power * 1.25; + _topClassP *= 1 + V.nicaea.power * 0.0025; + } else if (V.nicaea.assignment === "serve the public") { + _lowerClass += V.nicaea.power * 50; + _lowerClassP *= 1 + V.nicaea.power * 0.0025; + _middleClass += V.nicaea.power * 20; + _middleClassP *= 1 + V.nicaea.power * 0.0025; + } else { + _slaveDemandU *= 1 + V.nicaea.power * 0.05; + _slaveDemandT *= 1 + V.nicaea.power * 0.0625; + _lowerClass += V.nicaea.power * -50; + _lowerClassP *= 1 + V.nicaea.power * -0.0025; + _middleClass += V.nicaea.power * -20; + _middleClassP *= 1 + V.nicaea.power * -0.0025; + _upperClass += V.nicaea.power * 13.5; + _upperClassP *= 1 + V.nicaea.power * 0.005; + _topClass += V.nicaea.power * 2.5; + _topClassP *= 1 + V.nicaea.power * 0.005; + } + if (V.nicaea.achievement === "slaves") { + _slaveDemandU *= 1 + V.nicaea.power * 0.2; + _slaveDemandT *= 1 + V.nicaea.power * 0.25; + _lowerClass += V.nicaea.power * -200; + _lowerClassP *= 1 + V.nicaea.power * -0.01; + } + } + if (V.arcologies[0].FSAztecRevivalistLaw === 1) { + _lowerClass += 200; + _lowerClassP *= 1.01; + _middleClass += -40; + _middleClassP *= 0.995; + _upperClass += -13.5; + _upperClassP *= 0.995; + } + if (r.length > 0) { + App.UI.DOM.appendNewElement("h3", el, "Policies"); + } + App.Events.addNode(el, r); + return el; + } + + function schools() { + const el = document.createElement("p"); + for (const [SCH, schObj] of App.Data.misc.schools) { + if (V[SCH].schoolPresent !== 1) { + continue; + } + const r = []; + r.push(`${capFirstChar(schObj.title)} has a`); + if (V[SCH].schoolProsperity > 4) { + r.push(`very prosperous`); + } else if (V[SCH].schoolProsperity < -4) { + r.push(`struggling`); + } else { + r.push(`thriving`); + } + r.push(`${schObj.branchName} in ${V.arcologies[0].name}.`); + if (V[SCH].schoolProsperity >= 10) { + switch (SCH) { + case "GRI": + r.push(`It is one of the finest research facilities in the world`); + break; + case "TFS": + r.push(`They are one of the most renowned futa societies in the world`); + break; + case "HA": + r.push(`It is one of the most famous schools in the world`); + break; + default: + r.push(`It is one of the finest slave schools in the world`); + } + if (V.rep > 19000) { + r.push(r.pop() + `.`); + } else { + r.push(r.pop() + `, <span class="green">improving your reputation.</span>`); + repX(200, "policies"); + } + V[SCH].subsidize = 0; + V[SCH].schoolProsperity = 10; + } + if (V[SCH].subsidize === 1) { + r.push(`You have a policy of subsidizing them.`); + V[SCH].schoolProsperity++; + } else if (V[SCH].subsidize === -1) { + r.push(`You have a policy of covertly undermining them.`); + V[SCH].schoolProsperity--; + } + App.Events.addNode(el, r, "div"); + } + + return el; + } + + function isFrozen() { + /* during bad weather and without appropriate upgrades, transport (including visitors and immigration/emigration) will be halted */ + let _weatherFreeze = 0; + if (V.weatherToday.severity > 3) { + if (V.secExpEnabled > 0 && V.SecExp.buildings.transportHub) { + if (V.SecExp.buildings.transportHub.surfaceTransport < 4) { + _weatherFreeze = 1; + } + } else if (V.antiWeatherFreeze < 2) { + _weatherFreeze = 1; + } + } else if (V.weatherToday.severity > 2) { + if (V.secExpEnabled > 0 && V.SecExp.buildings.transportHub) { + if (V.SecExp.buildings.transportHub.surfaceTransport < 3) { + _weatherFreeze = 1; + } + } else if (V.antiWeatherFreeze < 1) { + _weatherFreeze = 1; + } + } + if (_weatherFreeze) { + const warning = App.UI.DOM.combineNodes(`The terrible weather is `, App.UI.DOM.makeElement("span", `preventing people from entering or leaving`, "red"), ` your arcology. Improving your transport infrastructure will prevent this from happening.`); + App.UI.DOM.appendNewElement("div", el, warning, "note"); + V.weatherAwareness = 1; + } + return _weatherFreeze; + } + + function enslavement() { + if (_enslaved > 0) { + const _enslavedPC = Math.max(Math.trunc(_enslaved / 4), 1); + const _enslavedNPC = _enslaved - _enslavedPC; + V.menials += _enslavedPC; + V.NPCSlaves += _enslavedNPC; + if (_enslaved > 1) { + appendDiv(`In total <span class="green">${_enslaved} lower class citizens</span> were enslaved for failing to pay their debts.`); + appendDiv(`<span class="green">You enslaved ${_enslavedPC}</span> of them while other debtholders in the arcology enslaved the remaining ${_enslavedNPC}.`); + } else { + appendDiv(`<span class="green">As arcology owner you claimed the slave.</span>`); + } + } + } + + function transport() { + _FSScore = _FSScore / V.FSCreditCount; + _transportHub = 1; + _crime = 0.8; + if (V.secExpEnabled > 0) { + _transportHub = 0.7; + if (V.SecExp.buildings.transportHub) { + _transportHub += V.SecExp.buildings.transportHub.airport / 10 + V.SecExp.buildings.transportHub.surfaceTransport / 10; + } + _crime = (100 - V.SecExp.core.crimeLow) / 100 + 0.2; + } + if (V.terrain === "urban") { + _terrain = 1.2; + } else if (V.terrain === "rural" || V.terrain === "marine") { + _terrain = 1; + } else { + _terrain = 0.8; + } + + _honeymoon = 0; + if (V.arcologies[0].honeymoon > 0) { + _honeymoon = 10 * V.arcologies[0].honeymoon; + } + const _oldVisitors = V.visitors; + V.visitors = Math.trunc(((V.arcologies[0].prosperity + _FSScore * 5 + _honeymoon) * _transportHub * _terrain * _crime) * _econMult); + if (V.visitors < 50) { + V.visitors = normalRandInt(50, 2); + } + if (isNaN(V.visitors)) { + appendDiv(`<span class="red">Visitors is NaN, report this issue!</span>`); + V.visitors = _oldVisitors; + } + appendDiv(`<span class="green">${V.visitors} traders and tourists</span> visited your arcology this week.`); + appendDiv(App.SecExp.propagandaEffects("enslavement").text); + _enslaved += App.SecExp.propagandaEffects("enslavement").effect; + + /* slaves*/ + /* Slaves getting retired*/ + if (V.policies.retirement.menial2Citizen === 1) { + let _weeklyRetiredMenials = V.menials / ((V.customMenialRetirementAge - 15) * 52); + let _weeklyRetiredNPCMenials = V.NPCSlaves / ((V.customMenialRetirementAge - 15) * 52); + /* This implies a minimum menial age of 15. Even if the player sets minimum ages lower, there's no point having a 3 year old menial slave. 15 seems alright while being nice and round. This also implies ages are distributed evenly, no easy way around that.*/ + if (_weeklyRetiredMenials > 1) { + _weeklyRetiredMenials = Math.trunc(_weeklyRetiredMenials); + if (_weeklyRetiredMenials > 1) { + appendDiv(`<span class="red">${_weeklyRetiredMenials} of your menial slaves</span> retired as free citizens this week.`); + } else { + appendDiv(`<span class="red">One of your menial slaves</span> retired as a free citizen this week.`); + } + } else { + _weeklyRetiredMenials *= 100; + if (_weeklyRetiredMenials > random(1, 100)) { + _weeklyRetiredMenials = 1; + appendDiv(`<span class="red">One of your menial slaves</span> retired as a free citizen this week.`); + } else { + _weeklyRetiredMenials = 0; + } + } + if (_weeklyRetiredNPCMenials > 1) { + _weeklyRetiredNPCMenials = Math.trunc(_weeklyRetiredNPCMenials); + if (_weeklyRetiredNPCMenials > 1) { + appendDiv(`<span class="red">${_weeklyRetiredNPCMenials} menial slaves</span> were retired as free citizens by other slave owners in your arcology this week.`); + } else { + appendDiv(`<span class="red">One menial slave</span> was retired as a free citizen by another slave owner in your arcology this week.`); + } + } else { + _weeklyRetiredNPCMenials *= 100; + if (_weeklyRetiredNPCMenials > random(1, 100)) { + _weeklyRetiredNPCMenials = 1; + appendDiv(`<span class="red">One menial slave</span> was retired as a free citizen by another slave owner in your arcology this week.`); + } else { + _weeklyRetiredNPCMenials = 0; + } + } + V.menials -= _weeklyRetiredMenials; + V.NPCSlaves -= _weeklyRetiredNPCMenials; + V.lowerClass += _weeklyRetiredMenials + _weeklyRetiredNPCMenials; + } + /* Demand for simple labor*/ + _LSCD = Math.trunc((V.LSCBase * _econMult) + (V.arcologies[0].prosperity * 4) + ((V.middleClass + V.visitors * 0.6) * 1.5) + ((V.upperClass + V.visitors * 0.2) * 3.5) + (V.topClass * 18)); + /* Demand for owning slaves*/ + _SCD = Math.trunc((V.upperClass * (2 + _slaveDemandU)) + (V.topClass * (12 + _slaveDemandT))); + if (isNaN(_LSCD)) { + appendDiv(`<span class="red">LSCD is NaN, report this issue!</span>`); + } else if (isNaN(_SCD)) { + appendDiv(`<span class="red">SCD is NaN, report this issue!</span>`); + } else { + /* More slaves than they know what to do with*/ + if (V.NPCSlaves > _SCD * 1.6) { + const _NPCSlavesSold = V.NPCSlaves - Math.trunc(_SCD * 1.6); + V.menialDemandFactor -= _NPCSlavesSold; + V.NPCSlaves = Math.trunc(_SCD * 1.6); + if (_NPCSlavesSold > 1) { + appendDiv(`<span class="red">${_NPCSlavesSold}</span> slaves were sold by your inhabitants. They've got more than enough of them already.`); + } else if (_NPCSlavesSold > 0) { + appendDiv(`<span class="red">One slave</span> was sold by your inhabitants. They've got more than enough of them already.`); + } + /* More slaves than there is work*/ + } else if (V.NPCSlaves > (_LSCD / _slaveProductivity) - V.menials + _SCD) { + const _NPCSlavesSold = V.NPCSlaves - Math.trunc(_LSCD / _slaveProductivity - V.menials + _SCD); + V.menialDemandFactor -= _NPCSlavesSold; + V.NPCSlaves = Math.trunc(_LSCD / _slaveProductivity); + if (_NPCSlavesSold > 1) { + appendDiv(`<span class="red">${_NPCSlavesSold}</span> slaves were sold by your inhabitants. There was so little work that they failed to earn their keep.`); + } else if (_NPCSlavesSold > 0) { + appendDiv(`<span class="red">One slave</span> was sold by your inhabitants. There was so little work that it failed to earn its keep.`); + } + /* Cutting back on slaves*/ + } else if (V.NPCSlaves > _SCD * 1.4) { + if (V.slaveCostFactor > 0.95) { + const _NPCSlavesSold = Math.trunc((V.NPCSlaves - _SCD) * 0.4); + V.menialDemandFactor -= _NPCSlavesSold; + V.NPCSlaves -= _NPCSlavesSold; + if (_NPCSlavesSold > 1) { + appendDiv(`<span class="red">${_NPCSlavesSold}</span> slaves were sold by your inhabitants. They've got more than enough of them already.`); + } else if (_NPCSlavesSold > 0) { + appendDiv(`<span class="red">One slave</span> was sold by your inhabitants. They've got more than enough of them already.`); + } + } + /* Selling excess slaves for profit*/ + } else if (V.NPCSlaves > _SCD * 1.2) { + if (V.slaveCostFactor > 1.1) { + const _NPCSlavesSold = Math.trunc((V.NPCSlaves - _SCD) * 0.4); + V.menialDemandFactor -= _NPCSlavesSold; + V.NPCSlaves -= _NPCSlavesSold; + if (_NPCSlavesSold > 1) { + appendDiv(`<span class="red">${_NPCSlavesSold}</span> were sold by your inhabitants. They saw an opportunity for profit.`); + } else if (_NPCSlavesSold > 0) { + appendDiv(`<span class="red">One slave</span> was sold by your inhabitants. They saw an opportunity for profit.`); + } + } + } + /* Buying slaves because they are really cheap*/ + if (V.slaveCostFactor < 0.8) { + if (V.NPCSlaves < _SCD * 1.5) { + const _NPCSlavesBought = Math.trunc(_SCD * 0.05); + V.menialSupplyFactor -= _NPCSlavesBought; + V.NPCSlaves += _NPCSlavesBought; + if (_NPCSlavesBought > 1) { + appendDiv(`<span class="green">${_NPCSlavesBought} slaves</span> were bought by your inhabitants. They were too cheap to pass up on.`); + } /* there's no way this ever ends up needing a 1 slave version*/ + } + } + } + + /* Lower Class Citizens*/ + /* Work left for lower class citizens*/ + _LCD = Math.trunc(((V.LSCBase * _econMult) + (V.arcologies[0].prosperity * 4) + _lowerClass + ((V.middleClass + V.visitors * 0.6) * 1.5) + ((V.upperClass + V.visitors * 0.2) * 3.5) + (V.topClass * 18) - (V.NPCSlaves + V.menials) * _slaveProductivity) * V.rentEffectL * _lowerClassP); + if (V.classSatisfied.lowerClass !== 0) { + _LCD *= 1 + V.classSatisfied.lowerClass * 0.06; + } + if (_LCD < 0) { + _LCD = 0; + } + if (isNaN(_LCD)) { + appendDiv(`<span class="red">LCD is NaN, report this issue!</span>`); + } else { /* Changing population depending on work available*/ + if (V.classSatisfied.lowerClass < 0) { + appendDiv(`Your lower class is <span class="red">sexually frustrated</span> and would rather live elsewhere.`); + } else if (V.classSatisfied.lowerClass > 0) { + appendDiv(`Your lower class is <span class="green">sexually satiated</span> and their happiness attracts others.`); + } + r = []; + if (V.lowerClass < _LCD) { + let _LCImmigration = Math.trunc((_LCD - V.lowerClass) * (0.3 * _terrain)) + 1 + App.SecExp.propagandaEffects("immigration").effect; + if (V.arcologies[0].FSIntellectualDependencyLaw === 1) { /* Enslaving the dumb lower class immigrants*/ + const _intellectualDependencyEnslaved = Math.trunc(_LCImmigration * 0.25); + _LCImmigration -= _intellectualDependencyEnslaved; + _enslaved += _intellectualDependencyEnslaved; + r.push(`<span class="green">${_intellectualDependencyEnslaved} dumb immigrants</span> were enslaved for their own good.`); + } + + V.lowerClass += _LCImmigration; + if (_LCImmigration > 1) { + r.push(`<span class="green">${_LCImmigration} lower class citizens</span> moved to your arcology.`); + } else if (_LCImmigration > 0) { + r.push(`<span class="green">One lower class citizen</span> moved to your arcology.`); + } + } else if (V.lowerClass > _LCD) { + let _LCEmigration = Math.trunc((V.lowerClass - _LCD) * 0.4); + const enslaveChance = 0.2; + const _enslavedEmigrants = Math.trunc(_LCEmigration * enslaveChance * (1.0 - getBanishRatio())); + V.lowerClass -= _LCEmigration; + _enslaved += _enslavedEmigrants; + if (_LCEmigration > 1) { + r.push(`<span class="red">${_LCEmigration} lower class citizens</span> had no work and tried to leave your arcology.`); + if (_enslavedEmigrants > 1) { + r.push(`<span class="green">${_enslavedEmigrants} of them were enslaved instead.</span>`); + } else if (_enslavedEmigrants > 0) { + r.push(`<span class="green">One of them was enslaved instead.</span>`); + } + } else if (_LCEmigration > 0) { + r.push(`<span class="red">One lower class citizen</span> left your arcology due to a lack of work.`); + } + } + App.Events.addNode(el, r, "div"); + enslavement(); + /* Need more slaves still*/ + if (V.NPCSlaves < _SCD) { + const _NPCSlavesBought = Math.trunc((_SCD - V.NPCSlaves) * 0.75) + 1; + V.menialSupplyFactor -= _NPCSlavesBought; + V.NPCSlaves += _NPCSlavesBought; + if (_NPCSlavesBought > 1) { + appendDiv(`<span class="green">${_NPCSlavesBought} slaves</span> were bought by your inhabitants. They did not have enough of them to satisfy their needs.`); + } else if (_NPCSlavesBought > 0) { + appendDiv(`<span class="green">One slave</span> was bought by your inhabitants. They did not quite have enough of them to satisfy their needs.`); + } + } + } + + /* Middle Class Citizens*/ + /* Demand for Middle Class*/ + _MCD = Math.trunc(((V.MCBase * _econMult) + V.arcologies[0].prosperity + _middleClass + (V.NPCSlaves * 0.15) + (V.lowerClass * 0.1) + ((V.upperClass + V.visitors * 0.2) * 0.5) + (V.topClass * 2.5)) * V.rentEffectM * _middleClassP); + if (V.classSatisfied.middleClass !== 0) { + _MCD *= 1 + V.classSatisfied.middleClass * 0.06; + } + if (_MCD < 200) { + _MCD = 200; + } + if (isNaN(_MCD)) { + appendDiv(`<span class="red">MCD is NaN, report this issue!</span>`); + } else { + /* Middle Class Citizens immigrating*/ + if (V.classSatisfied.middleClass < 0) { + appendDiv(`Your middle class is <span class="red">sexually frustrated</span> and would rather live elsewhere.`); + } else if (V.classSatisfied.middleClass > 0) { + appendDiv(`Your middle class is <span class="green">sexually satiated</span> and their happiness attracts others.`); + } + if (V.middleClass < _MCD) { + let _MCImmigration = Math.trunc((_MCD - V.middleClass) * (0.3 * _terrain)) + 1 + App.SecExp.propagandaEffects("immigration").effect; + + V.middleClass += _MCImmigration; + if (_MCImmigration > 1) { + appendDiv(`<span class="green">${_MCImmigration} middle class citizens</span> moved to your arcology.`); + } else if (_MCImmigration > 0) { + appendDiv(`<span class="green">One middle class citizen</span> moved to your arcology.`); + } + /* Middle Class Citizens emigrating*/ + } else if (V.middleClass > _MCD) { + let _MCEmigration = Math.trunc((V.middleClass - _MCD) * 0.4); + V.middleClass -= _MCEmigration; + if (_MCEmigration > 1) { + appendDiv(`<span class="red">${_MCEmigration} middle class citizens</span> left your arcology.`); + } else if (_MCEmigration > 0) { + appendDiv(`<span class="red">One middle class citizen</span> left your arcology.`); + } + } + } + + /* Upper Class Citizens*/ + /* Demand for Upper Class*/ + _UCD = Math.trunc(((V.UCBase * _econMult) + (V.arcologies[0].prosperity * 0.2) + _upperClass + (V.NPCSlaves * 0.02) + (V.lowerClass * 0.025) + ((V.middleClass + V.visitors * 0.6) * 0.05) + (V.topClass * 0.3)) * V.rentEffectU * _upperClassP); + if (V.classSatisfied.upperClass !== 0) { + _UCD *= 1 + V.classSatisfied.upperClass * 0.06; + } + if (_UCD < 50) { + _UCD = 50; + } + if (isNaN(_UCD)) { + appendDiv(`<span class="red">UCD is NaN, report this issue!</span>`); + } else { + /* Upper Class Citizens immigrating*/ + if (V.classSatisfied.upperClass < 0) { + appendDiv(`Your upper class is <span class="red">sexually frustrated</span> and would rather live elsewhere.`); + } else if (V.classSatisfied.upperClass > 0) { + appendDiv(`Your upper class is <span class="green">sexually satiated</span> and their happiness attracts others.`); + } + if (V.upperClass < _UCD) { + let _UCImmigration = Math.trunc((_UCD - V.upperClass) * (0.3 * _terrain)) + 1 + App.SecExp.propagandaEffects("immigration").effect; + V.upperClass += _UCImmigration; + + if (_UCImmigration > 1) { + appendDiv(`<span class="green">${_UCImmigration} upper class citizens</span> moved to your arcology.`); + } else if (_UCImmigration > 0) { + appendDiv(`<span class="green">One upper class citizen</span> moved to your arcology.`); + } + /* Upper Class Citizens Emigrating*/ + } else if (V.upperClass > _UCD) { + let _UCEmigration = Math.trunc((V.upperClass - _UCD) * 0.4); + V.upperClass -= _UCEmigration; + if (_UCEmigration > 1) { + appendDiv(`<span class="red">${_UCEmigration} upper class citizens</span> left your arcology.`); + } else if (_UCEmigration > 0) { + appendDiv(`<span class="red">One upper class citizen</span> left your arcology.`); + } + } + } + + /* Top Class Citizens*/ + /* Top Class Interest in living in your arcology*/ + if (V.eliteFailTimer > 0) { + /* when you fail the eugenics Elite and they leave this triggers*/ + _TCD = Math.trunc((V.GDP / 15 + _topClass) * V.rentEffectT * _topClassP + V.TCBase - (V.eliteFail / 15 * V.eliteFailTimer)); + V.eliteFailTimer -= 1; + } else { + _TCD = Math.trunc((V.GDP / 15 + _topClass) * V.rentEffectT * _topClassP + V.TCBase); + } + if (V.classSatisfied.topClass !== 0) { + _TCD *= 1 + V.classSatisfied.topClass * 0.06; + } + if (_TCD < 15) { + _TCD = 15; + } + if (isNaN(_TCD)) { + appendDiv(`<span class="red">TCD is NaN, report this issue!</span>`); + } else { + /* Top Class Citizens immigrating*/ + if (V.classSatisfied.topClass < 0) { + appendDiv(`Your millionaires are <span class="red">sexually frustrated</span> and would rather live elsewhere.`); + } else if (V.classSatisfied.topClass > 0) { + appendDiv(`Your millionaires are <span class="green">sexually satiated</span> and their happiness attracts others.`); + } + if (V.topClass < _TCD) { + let _TCImmigration = Math.trunc((_TCD - V.topClass) * (0.3 * _terrain)) + 1 + App.SecExp.propagandaEffects("immigration").effect; + + V.topClass += _TCImmigration; + if (_TCImmigration > 1) { + appendDiv(`<span class="green">${_TCImmigration} millionaires</span> moved to your arcology.`); /* Fat Cat? One-Percenter? */ + } else if (_TCImmigration > 0) { + appendDiv(`<span class="green">One millionaire</span> moved to your arcology.`); + } + /* Top Class Citizens emigrating*/ + } else if (V.topClass > _TCD) { + let _TCEmigration = Math.trunc((V.topClass - _TCD) * 0.4) + 1; + V.topClass -= _TCEmigration; + if (_TCEmigration > 1) { + appendDiv(`<span class="red">${_TCEmigration} millionaires</span> left your arcology.`); + } else if (_TCEmigration > 0) { + appendDiv(`<span class="red">One millionaire</span> left your arcology.`); + } + } + } + appendDiv(App.SecExp.propagandaEffects("immigration").text); + } + + function slaveRetirement() { + const el = new DocumentFragment(); + const r = []; + /* Slave retirement trigger pulled (one time only)*/ + if (V.citizenRetirementTrigger === 1) { + let _citizenRetirementImpact; + if (V.customMenialRetirementAge >= 65) { + _citizenRetirementImpact = 0.475 - Math.clamp(V.customMenialRetirementAge / 200, 0.325, 0.475); + } else { + _citizenRetirementImpact = 0.9 - Math.clamp(V.customMenialRetirementAge / 100, 0.2, 0.65); + } + if (V.arcologies[0].FSSupremacistLawME + V.arcologies[0].FSSubjugationistLawME > 0) { + _citizenRetirementImpact *= 2 / 3; + } + V.lowerClass += Math.trunc((V.NPCSlaves + V.menials) * (0.05 + _citizenRetirementImpact)); + const _menialsRetirement = Math.trunc(V.menials * (0.05 + _citizenRetirementImpact)); + V.menials = Math.trunc(V.menials * (0.95 - _citizenRetirementImpact)); + const _ASlavesRetirement = Math.trunc(V.NPCSlaves * (0.05 + _citizenRetirementImpact)); + V.NPCSlaves = Math.trunc(V.NPCSlaves * (0.95 - _citizenRetirementImpact)); + V.citizenRetirementTrigger = 2; + r.push(`You have enacted citizen retirement, the slaves of eligible age are granted freedom.`); + if (_menialsRetirement > 1) { + r.push(`<span class="red">${_menialsRetirement} of your menial slaves</span> were retired.`); + } else if (_menialsRetirement > 0) { + r.push(`<span class="red">One of your menial slaves</span> was retired.`); + } + if (_ASlavesRetirement > 1) { + r.push(`<span class="red">${_ASlavesRetirement} slaves</span> in your arcology were given a citizen retirement.`); + } + /* I could bother with a single slave retirement message, but that's never going to get used*/ + } + App.Events.addNode(el, r); + return el; + } + + function expiration() { + const el = document.createElement("div"); + const r = []; + /* Citizen expiration */ + let z = []; + let ret = ""; + const _deathsLC = Math.trunc(V.lowerClass * _expirationLC); + const _deathsMC = Math.trunc(V.middleClass * _expirationMC); + const _deathsUC = Math.trunc(V.upperClass * _expirationUC); + const _deathsTC = Math.trunc(V.topClass * _expirationTC); + V.lowerClass -= _deathsLC; + V.middleClass -= _deathsMC; + V.upperClass -= _deathsUC; + V.lowerClass -= _deathsTC; + if (_deathsLC > 0) { + z.push(`<span class="red">${_deathsLC} lower class citizen(s)`); + } + if (_deathsMC > 0) { + z.push(`<span class="red">${_deathsMC} middle class citizen(s)`); + } + if (_deathsUC > 0) { + z.push(`<span class="red">${_deathsUC} upper class citizen(s)`); + } + if (_deathsTC > 0) { + z.push(`<span class="red">${_deathsTC} millionaire(s)`); + } + if (_deathsLC > 0|| _deathsMC > 0|| _deathsUC > 0 || _deathsTC > 0) { + ret += z.reduce(function(res, ch, i, arr) { return res + (i === arr.length - 1 ? ' and ' : ', ') + ch; }) + " passed away due to natural causes.</span>"; + r.push(ret); + } + + /* Slave expiration*/ + const _expirationPC = Math.trunc(V.menials * _expirationFS); + const _expirationFD = Math.trunc(V.fuckdolls * _expirationFS); + const _expirationBR = Math.trunc(V.menialBioreactors * _expirationFS); + const _expirationNPC = Math.trunc(V.NPCSlaves * _expirationFS); + const _expiration = _expirationPC + _expirationNPC + _expirationFD + _expirationBR; + V.NPCSlaves -= _expirationNPC; + V.menials -= _expirationPC; + V.fuckdolls -= _expirationFD; + V.menialBioreactors -= _expirationBR; + if (_expiration > 0) { + if (_expirationFS <= 0.5) { + r.push(`<span class="red">${_expiration} slave(s) passed away</span> due to natural causes.`); + } else { + r.push(`<span class="red">${_expiration} slave(s) died</span> due to the tough working conditions in your arcology.`); + } + if (_expirationPC > 1) { + r.push(`Of which <span class="red">${_expirationPC} were yours.</span>`); + } else if (_expirationPC > 0) { + r.push(`<span class="red">One of them was yours.</span>`); + } + } + + App.Events.addNode(el, r); + return el; + } + + function denseApartments() { + /* increases lowerclass attraction based on number of dense apartments */ + let el = new DocumentFragment(); + let r = []; + let _count = 0; + V.building.findCells(cell => !(cell instanceof App.Arcology.Cell.Penthouse)) + .forEach(cell => { + if (cell instanceof App.Arcology.Cell.Apartment) { + if (cell.type === 3) { + _count += 1; + _lowerClass += 40; + } + } + }); + if (_count > 9) { + r.push(App.UI.DOM.makeElement("span", `A great amount of lower class citizens`, "green")); + r.push(` were attracted by the sectors filled with dense apartments.`); + } else if (_count > 5) { + r.push(App.UI.DOM.makeElement("span", `A large amount of lower class citizens`, "green")); + r.push(` were attracted by your sprawling blocks of dense apartments.`); + } else if (_count > 2) { + r.push(App.UI.DOM.makeElement("span", `A moderate amount of lower class citizens`, "green")); + r.push(` were attracted by your dense apartment complexes`); + } else if (_count > 0) { + r.push(App.UI.DOM.makeElement("span", `A small amount of lower class citizens`, "green")); + r.push(` were attracted by your dense apartments.`); + } + App.Events.addNode(el, r); + return el; + } + + function getBanishRatio() { + /* Some proportion of newly-enslaved citizens might instead be banished, if you don't keep old menials. + * This should probably use an actuarial age distribution instead of this piecewise function. */ + let _banishedRatio = 0.0; + if (V.policies.retirement.menial2Citizen === 1) { + if (V.customMenialRetirementAge >= 65) { + _banishedRatio = 0.475 - Math.clamp(V.customMenialRetirementAge / 200, 0.325, 0.475); + } else { + _banishedRatio = 0.9 - Math.clamp(V.customMenialRetirementAge / 100, 0.2, 0.65); + } + if (V.arcologies[0].FSSupremacistLawME + V.arcologies[0].FSSubjugationistLawME > 0) { + _banishedRatio *= 2 / 3; + } + _banishedRatio += 0.05; // not sure what the extra 5% is for... + } + return _banishedRatio; + } + + function citizenToSlave() { + /* Citizens turning into slaves, or being banished because they can't be */ + const _banished = Math.trunc((V.lowerClass * _welfareFS) * getBanishRatio()); + _enslaved = Math.trunc(V.lowerClass * _welfareFS) - _banished; + V.lowerClass -= (_enslaved + _banished); + if (_banished > 0) { + appendDiv(`<span class="red">${_banished} citizens were banished</span> from your arcology; they committed enslavable offenses, but were too old to be enslaved.`); + } + } + + function appendDiv(text) { + const div = document.createElement("div"); + $(div).append(text); + el.append(div); + } +}; diff --git a/src/endWeek/economics/persBusiness.js b/src/endWeek/economics/persBusiness.js new file mode 100644 index 0000000000000000000000000000000000000000..d3f11a542b9c6fe29357d29d034190dd0de93807 --- /dev/null +++ b/src/endWeek/economics/persBusiness.js @@ -0,0 +1,1183 @@ +/** + * @returns {HTMLElement} + */ +App.EndWeek.personalBusiness = function() { + const el = document.createElement("p"); + let r = []; + let he, him; + let income; + let cal; + let X; + let windfall; + let catchTChance; + let upgradeCount; + let dataGain; + if (V.useTabs === 0) { + App.UI.DOM.appendNewElement("h2", el, `Personal Business`); + } + + if (V.cash < 0) { + const interest = 1 + Math.trunc(Math.abs(V.cash) / 100); + cashX(forceNeg(interest), "personalBusiness"); + r.push(`<span class="red">You are in debt.</span> This week, interest came to ${cashFormat(interest)}.`); + if (V.arcologies[0].FSRomanRevivalist !== "unset") { + r.push(`Society <span class="red">very strongly disapproves</span> of your being in debt; this damages the idea that you model yourself on what a Roman leader should be.`); + FutureSocieties.Change("RomanRevivalist", -10); + } + if (V.cash < 0 && V.cash > -25000 && V.arcologies[0].FSRestartDecoration === 100) { + if (V.eugenicsFullControl !== 1) { + r.push(`Money is quickly shifted to bring you out of debt, though <span class="red">the Societal Elite are left doubting</span> your worth.`); + V.cash = 0; + V.failedElite += 100; + } else { + r.push(`Money is quickly shifted to bring you out of debt, though the Societal Elite grumble all the while.`); + V.cash = 0; + } + } else if (V.cash < -9000) { + r.push(`<span class="red">WARNING: you are dangerously indebted.</span> Immediately acquire more liquid assets or you will be in danger of being enslaved yourself.`); + V.debtWarned += 1; + if (V.debtWarned > 1) { + V.ui = "start"; + V.gameover = "debt"; + Engine.play("Gameover"); + } + } + } + if (V.PC.health.shortDamage >= 30) { + endWeekHealthDamage(V.PC); + r.push(`The injuries received in the recent battle prevents you from engaging in tiring endeavors.`); + if (V.PC.health.shortDamage >= 51) { + r.push(`Your trusted physician believes it will still take a few weeks to fully recover.`); + } else if (V.PC.health.shortDamage >= 39) { + r.push(`You are starting to feel better. It's very likely you will be back to full working order within the next week.`); + } else { + r.push(`You have finally recovered from your injuries.`); + } + } else if (V.personalAttention === "whoring") { + income = random(2000, 4500); + if (V.PC.belly >= 1500) { + if (V.arcologies[0].FSRepopulationFocus !== "unset") { + r.push(`You focus on finding "dates" this week and earn <span class="yellowgreen">${cashFormat(Math.trunc((income * (V.rep / 500)) + (V.PC.belly)))}</span> for your body, much more than usual; you guess your pregnancy-focused population wants your baby-rounded body more than ever. However, doing such things <span class="red">damages your reputation.</span>`); + cashX(Math.trunc((income * (V.rep / 500)) + (V.PC.belly)), "personalBusiness"); + repX((V.rep * .95) - V.rep, "personalBusiness"); + } else if (V.arcologies[0].FSRepopulationFocusPregPolicy === 1) { + r.push(`You focus on finding "dates" this week and earn <span class="yellowgreen">${cashFormat(Math.trunc((income * (V.rep / 500)) + (V.PC.belly / 2)))}</span> for your body, more than usual; but that's to be expected, after all, pregnancy is trendy right now. Event still, doing such things <span class="red">damages your reputation.</span>`); + cashX(Math.trunc((income * (V.rep / 500)) + (V.PC.belly / 2)), "personalBusiness"); + repX((V.rep * .95) - V.rep, "personalBusiness"); + } else if (V.arcologies[0].FSRestart !== "unset") { + if (V.PC.pregSource !== -1 && V.PC.pregSource !== -6) { + r.push(`You focus on finding "dates" this week and earn <span class="yellowgreen">${cashFormat(25)},</span> barely enough to cover the abortion the john that gave it to you told you to get. Showing off your gravid body <span class="red">infuriates your citizens and cripples your reputation.</span>`); + cashX(25, "personalBusiness"); + repX((V.rep * .5) - V.rep, "personalBusiness"); + if (V.eugenicsFullControl !== 1) { + V.failedElite += 25; + } + } else { + r.push(`You focus on finding "dates" this week and earn <span class="yellowgreen">${cashFormat(Math.trunc(income * (V.rep / 500)))}</span> for your body. However, doing such things <span class="red">damages your reputation.</span>`); + cashX(Math.trunc(income * (V.rep / 500)), "personalBusiness"); + repX((V.rep * .9) - V.rep, "personalBusiness"); + } + } else { + income = random(5, 2500); + r.push(`You focus on finding "dates" this week and earn <span class="yellowgreen">${cashFormat(Math.trunc(income * (V.rep / 800)))}</span> for your body, much less than usual; your pregnancy must be turning off potential clients. However, doing such things <span class="red">damages your reputation.</span>`); + cashX(Math.trunc(income * (V.rep / 800)), "personalBusiness"); + repX((V.rep * .9) - V.rep, "personalBusiness"); + } + } else { + r.push(`You focus on finding "dates" this week and earn <span class="yellowgreen">${cashFormat(Math.trunc(income * (V.rep / 500)))}</span> for your body. However, doing such things <span class="red">damages your reputation.</span>`); + cashX(Math.trunc(income * (V.rep / 500)), "personalBusiness"); + repX((V.rep * .9) - V.rep, "personalBusiness"); + if (canGetPregnant(V.PC)) { + if (V.arcologies[0].FSRepopulationFocus !== "unset" && random(1, 100) > 80) { + r.push(`A horny client offered you an extra <span class="yellowgreen">${cashFormat(1000)}</span> for downing some fertility drugs. You're already forgoing birth control, so what harm could an extra baby do?`); + cashX(1000, "personalBusiness"); + V.PC.forcedFertDrugs += 2; + } else if (random(1, 100) > 90) { + if (V.PC.skill.medicine >= 25) { + r.push(`Your client this week tried to trick you into taking fertility supplements disguised as party drugs. You still took them, of course, but made sure he <span class="yellowgreen">paid extra</span> for the privilege.`); + cashX(1000, "personalBusiness"); + } else { + r.push(`Your client this week offered you some free pills to make sex more fun. He was right; it made bareback sex feel amazing.`); + } + V.PC.forcedFertDrugs += 2; + } + r.push(knockMeUp(V.PC, 20, 0, -5)); + } + } + V.enduringRep *= .5; + } else if (V.personalAttention === "upkeep") { + if (V.PC.belly >= 5000) { + r.push(`You spend your free time hustling around your penthouse, cleaning and making sure everything is in order. You manage to reduce your upkeep by 20%. Your`); + if (V.PC.preg > 0) { + r.push(`pregnancy`); + } else { + r.push(`big belly`); + } + r.push(`slows you down some${(V.PC.counter.birthMaster > 0) ? `, but you're used to working around it` : ``}.`); + } else { + r.push(`You spend your free time hustling around your penthouse, cleaning and making sure everything is in order. You manage to reduce your upkeep by 25%.`); + if (V.PC.counter.birthMaster > 0) { + r.push(`This is much easier to do without a big baby bump in the way.`); + } + } + } else if (V.personalAttention === "defensive survey") { + r.push(`This week you focus on surveying your defenses in person, <span class="green">making yourself more known throughout ${V.arcologies[0].name}.</span>`); + repX(50 * V.PC.skill.warfare, "personalBusiness"); + if (V.PC.skill.warfare < 100) { + r.push(`${IncreasePCSkills('warfare', 0.5)}`); + } + } else if (V.personalAttention === "development project") { + if ((V.arcologies[0].prosperity + 1 * (1 + Math.ceil(V.PC.skill.engineering / 100))) < V.AProsperityCap) { + r.push(`This week you focus on contributing to a local development project, <span class="green">boosting prosperity.</span>`); + V.arcologies[0].prosperity += 1 * (1 + Math.ceil(V.PC.skill.engineering / 100)); + if (V.PC.skill.engineering < 100) { + r.push(`${IncreasePCSkills('engineering', 0.5)}`); + } + } else { + r.push(`Contributing to a local development project this week <span class="yellow">would be futile.</span>`); + V.personalAttention = "business"; + } + } else if (V.personalAttention === "proclamation") { + /* handled after this if chain */ + } else if (V.personalAttention === "smuggling") { + const qualifiedFS = []; + if (V.arcologies[0].FSDegradationistDecoration >= 80) { + qualifiedFS.push("degradationist"); + } + if (V.arcologies[0].FSPaternalistDecoration >= 80) { + qualifiedFS.push("paternalist"); + } + if (V.arcologies[0].FSHedonisticDecadenceDecoration >= 80) { + qualifiedFS.push("hedonistic"); + } + if (V.arcologies[0].FSSlaveProfessionalismLaw === 1) { + qualifiedFS.push("professionalism"); + } + if (V.arcologies[0].FSIntellectualDependencyLaw === 1) { + qualifiedFS.push("dependency"); + } + if (V.arcologies[0].FSPetiteAdmiration >= 80) { + qualifiedFS.push("petite"); + } + if (V.arcologies[0].FSStatuesqueGlorification >= 80) { + qualifiedFS.push("statuesque"); + } + if (V.arcologies[0].FSPastoralistDecoration >= 80 && V.arcologies[0].FSPastoralistLaw === 1) { + qualifiedFS.push("pastoralist"); + } + if (V.arcologies[0].FSSupremacistDecoration >= 80) { + qualifiedFS.push("supremacist"); + } + if (V.arcologies[0].FSBodyPuristDecoration >= 80) { + qualifiedFS.push("body purist"); + } + if (V.arcologies[0].FSRestartDecoration >= 80) { + qualifiedFS.push("eugenics"); + } + if (V.arcologies[0].FSRepopulationFocusDecoration >= 80) { + qualifiedFS.push("repopulation"); + } + if (V.arcologies[0].FSGenderFundamentalistDecoration >= 80) { + qualifiedFS.push("fundamentalist"); + } + if (V.arcologies[0].FSSubjugationistDecoration >= 80) { + qualifiedFS.push("subjugationist"); + } + if (V.arcologies[0].FSGenderRadicalistResearch === 1) { + qualifiedFS.push("radicalist"); + } + if (V.arcologies[0].FSTransformationFetishistResearch === 1) { + qualifiedFS.push("transformation"); + } + if (V.arcologies[0].FSYouthPreferentialistDecoration >= 80) { + qualifiedFS.push("youth"); + } + if (V.arcologies[0].FSMaturityPreferentialistDecoration >= 80) { + qualifiedFS.push("maturity"); + } + if (V.arcologies[0].FSSlimnessEnthusiastDecoration >= 80) { + qualifiedFS.push("slimness"); + } + if (V.arcologies[0].FSAssetExpansionistResearch === 1) { + qualifiedFS.push("expansionist"); + } + if (V.arcologies[0].FSPhysicalIdealistDecoration >= 80) { + qualifiedFS.push("idealist"); + } + if (V.arcologies[0].FSChattelReligionistLaw === 1) { + qualifiedFS.push("religion"); + } + if (V.arcologies[0].FSRomanRevivalistLaw === 1) { + qualifiedFS.push("roman law"); + } else if (V.arcologies[0].FSRomanRevivalistDecoration >= 80) { + qualifiedFS.push("roman"); + } else if (V.arcologies[0].FSEgyptianRevivalistDecoration >= 80) { + qualifiedFS.push("egyptian"); + } else if (V.arcologies[0].FSAztecRevivalistLaw === 1) { + qualifiedFS.push("aztec law"); + } else if (V.arcologies[0].FSAztecRevivalistDecoration >= 80) { + qualifiedFS.push("aztec"); + } else if (V.arcologies[0].FSNeoImperialistLaw1 === 1) { + qualifiedFS.push("imperial law"); + } else if (V.arcologies[0].FSNeoImperialistDecoration >= 80) { + qualifiedFS.push("imperial"); + } else if (V.arcologies[0].FSArabianRevivalistLaw === 1) { + qualifiedFS.push("arabian law"); + } else if (V.arcologies[0].FSArabianRevivalistDecoration >= 80) { + qualifiedFS.push("arabian"); + } else if (V.arcologies[0].FSEdoRevivalistLaw === 1) { + qualifiedFS.push("edo law"); + } else if (V.arcologies[0].FSEdoRevivalistDecoration >= 80) { + qualifiedFS.push("edo"); + } else if (V.arcologies[0].FSChineseRevivalistLaw === 1) { + qualifiedFS.push("chinese law"); + } else if (V.arcologies[0].FSChineseRevivalistDecoration >= 80) { + qualifiedFS.push("chinese"); + } + let caught = 0; + if (V.rep >= 18000) { /* prestigious */ + income = random(8500, 9000); + } else if (V.rep >= 9000) { /* well known */ + income = random(4500, 5000); + } else { + income = random(1500, 2000); + } + switch (qualifiedFS.random()) { + case "eugenics": + income += random(2500, 4000); + if (V.eugenicsFullControl !== 1) { + r.push(`You are smuggling`); + if (V.PC.dick !== 0) { + r.push(`your`); + } else { + r.push(`one of the Societal Elite's`); + } + r.push(`semen to allow some desperate girls to be pregnant. Anonymity is really hard to attain, and it is easy to find out what you've been doing. Even if you did manage to make <span class="yellowgreen">${cashFormat(income)},</span> the Societal Elite are <span class="red">quite displeased</span> by your actions.`); + V.failedElite += 50; + caught = 1; + } else { + r.push(`You are smuggling`); + if (V.PC.dick !== 0) { + r.push(`your`); + } else { + r.push(`one of the Societal Elite's`); + } + r.push(`semen to allow some desperate girls to be pregnant. Anonymity is really hard to attain, and it is easy to find out what you've been doing. Even if you did manage to make <span class="yellowgreen">${cashFormat(income)},</span> the Societal Elite are <span class="red">quite displeased</span> by your actions, even though they know how little they can do about it now.`); + caught = 1; + } + break; + case "paternalist": + income += random(1000, 1500); + r.push(`You manage to find a few low-standards slavers without any problem, but when you actually try to do business, you are quickly recognized. You only manage to make <span class="yellowgreen">${cashFormat(income)}</span> before you are sent away. The people of your arcology are <span class="red">outraged by your lack of respect</span> for slave rights.`); + caught = 1; + break; + case "supremacist": + income += random(2000, 3000); + r.push(`When it comes to smuggling in your arcology, there is no better target than ${V.arcologies[0].FSSupremacistRace} slaves, and there is a high demand for them, making you a nice <span class="yellowgreen">${cashFormat(income)}.</span> Participating in this slave trade means you can control who is set. Your people do not see things in the same light though, and <span class="red">your reputation takes a big hit.</span>`); + caught = 1; + break; + case "degradationist": + income += random(2000, 3000); + r.push(`During your free time, you make business with a few low-standards slavers and manage to buy stolen slaves and sell them at a profit. Even if people recognized you, such treatment of slaves is normal, and only a few people would really complain about it. Your dealings have made you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "repopulation": + income += random(1500, 2500); + r.push(`You manage to discreetly rent out your remote surgery services for abortions. You make sure the people do not recognize your penthouse, having them come blindfolded or unconscious, should the abortion request does not come from themselves. With this, you make <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "fundamentalist": + income += random(1500, 2500); + r.push(`You manage to arrange a few sex-changes and geldings in your own remote surgery for some powerful people to accommodate your arcology's sense of power, but also for people who want to transform others into females so that they lose all the power they have. This makes you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "hedonistic": + income += random(1500, 2500); + r.push(`Since most of what the old world considered to be illegal is legal in your arcology, "smuggling" is quite common, and you easily find people ready to pay for your help with dealing with their competition. With this, you manage to make <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "pastoralist": + income += random(1500, 2500); + r.push(`You take advantage of your own laws, making sure that animal products still come into your arcology. But you also make sure to make them as disgusting as possible so that people would rather turn to slave-produced ones instead. This allows you to make <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "body purist": + income += random(1500, 2500); + r.push(`In your arcology, people are expected to be all natural, but this doesn't mean the same thing applies outside. By buying slaves, giving them implants and quickly selling them before anyone notices, you manage to make <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "subjugationist": + income += random(1500, 2500); + r.push(`You manage to work with some slavers that deal exclusively in ${V.arcologies[0].FSSubjugationistRace} slaves, and you export them from the arcology at a cost, bringing in <span class="yellowgreen">${cashFormat(income)}.</span> Considering most people do not care about the fate of the slaves, they are simply mildly annoyed at the short-term raise of prices due to the exportation.`); + break; + case "radicalist": + income += random(2500, 4000); + r.push(`Anal pregnancy may be accepted in your arcology, but seeing how it goes against the laws of nature makes it a gold mine for dirty businesses; you have rich slaveowners and well-known slavers come to you with their best sissies so that you can implant them with artificial uteri. This flourishing business made you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "transformation": + income += random(2500, 4000); + r.push(`Your arcology is well known for its implants, and usually, one would have to pay a fortune simply to have a clinic implant them with normal implants. You take advantage of this trend to rent your remote surgery and your knowledge of gigantic implants to slavers for a cut of their profit. This gets you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "youth": + income += random(1500, 2500); + r.push(`Youth is more important than anything in your arcology, yet some people who are not really in their prime are rich and powerful, enough that renting your remote surgery to them for age lifts and total body rework is quite worth it, both for them and for you. You get paid <span class="yellowgreen">${cashFormat(income)}</span> for these services.`); + break; + case "maturity": + income += random(1500, 2500); + r.push(`In your arcology, the older the slave, the better. This also means that your arcology deals a lot in curatives and preventatives, as well as less-than-legal drugs that are supposed to extend one's lifespan. You manage to ship in a few of these drugs and sell them at a high price, making you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "slimness": + income += random(1500, 2500); + r.push(`Your arcology treats chubby people quite poorly, so they are ready to spend a lot of money on surgeries and supposed "miracle" solutions. When they can't afford legal and efficient methods, they have to turn to other drugs. The sales bring you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "expansionist": + income += random(2500, 4000); + r.push(`Your arcology likes its slaves nice and stacked and you have exactly the drugs for it. But you always make sure to produce just a bit more, enough to not alarm anybody who might be watching, but also enough to sell to other prominent slaveowners outside your arcology, who pay you <span class="yellowgreen">${cashFormat(income)}</span> for them.`); + break; + case "idealist": + income += random(1500, 2500); + r.push(`Your society's obsession with fit and muscular slaves has developed a particular interest in steroids and all kinds of drugs to tone one's body. As an arcology owner, you always have access to the most potent of them, but this is not the case for lower class citizens; some of them just aren't willing to pay a lot for them, so they buy experimental drugs off the black market. Participating in these activities made you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "professionalism": + income += random(2500, 5500); + r.push(`Your arcology has strict laws when it comes to who may be stay within its walls and those that don't cut it are often desperate for a loop hole; one you can easily provide. <span class="yellowgreen">${cashFormat(income)}</span> for your pocket and another taxable citizen. Win, win.`); + break; + case "dependency": + income += random(5500, 15000); + r.push(`Your arcology has strict laws when it comes to who may be claimed as a dependent and thusly excused from taxation. Of course, there are always those looking to cheat the system for their own benefit and more than willing to slip you a sum of credits to make it happen. While in the long term it may cost you, but for now you rake in a quick <span class="yellowgreen">${cashFormat(income)}</span> for the forged documents.`); + break; + case "statuesque": + income += random(1500, 3500); + r.push(`Your arcology likes its slaves tall, but even then there is the occasional outlier. An outlier usually keen on paying a lovely sum to have a tiny embarrassment of a slave slipped discreetly into their possession. All that is seen is a pair of suitcases changing hands and you walk away with <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "petite": + income += random(1500, 3000); + r.push(`Your arcology prefer a couple with a sizable gap between their heights. When they can't quite achieve that goal, they turn to any means they can. A few discreet surgeries and growth inhibitor sales net you <span class="yellowgreen">${cashFormat(income)}</span> this week.`); + break; + case "religion": + income += random(2000, 3000); + r.push(`The best smugglers know how to use the law to its advantage, and not only are you a really good smuggler, you're also the law itself. You have word spread that some company has done something blasphemous, and have them pray and pay for forgiveness. Panicked at the word of their Prophet, the higher-ups of the company give you <span class="yellowgreen">${cashFormat(income)}</span> for salvation.`); + break; + case "roman law": + income += random(2000, 3000); + r.push(`Every citizen of your arcology is trained in the art of war and supposed to defend its arcology when the time comes. This, of course, also means that people are supposed to be able to defend themselves. By arranging with the best fighters around, you manage to make some citizens face outrageous losses; so bad, in fact, that they are forced to pay <span class="yellowgreen">${cashFormat(income)}</span> for you to forget the shame they've put on your arcology.`); + break; + case "roman": + income += random(1500, 2500); + r.push(`Slaveowners from all around your arcology are rushing to the pit, eager to show their most recent training. Some of them, having more cunning than experience, are ready to sway the fight in their direction, no matter what it takes. You make sure to catch such people, and only agree to let them do their dirty tricks if they pay you. By the times the bribes and betting are done, you have made <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "egyptian": + income += random(1500, 2500); + r.push(`Having a society that likes incest often means that people are ready to go to great lengths to get their hands on people related to their slaves. In the smuggling business, this means that kidnapped relatives are common, and as an arcology owner with access to data on most of the slaves, you are able to control this trade a bit in exchange for <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "aztec law": + income += random(2000, 3000); + r.push(`People that inherit trades are sometimes too lazy to take classes in an academy, but at the same time, they fear what might happen were they to go against you. To solve both problems, you arrange a trade of fake diplomas, making sure that there is always a small detail to recognize them, so that they will get exposed in due time. This has made you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "aztec": + income += random(1500, 2500); + r.push(`There are a lot of slaveowners in your arcology that tend to grow quickly attached to the slaves they planned on sacrificing to sate the blood thirst of other important citizens, and such owners often come to you, begging you to swap two of their slaves' appearance. You accept, but not for free. After the surgery, this has made you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "imperial law": + income += random(2000, 3000); + r.push(`With Imperial Knights constantly patrolling the streets and a strict noble hierarchy flowing up from your Barons directly to you, you have a great deal of room to play with legal codes and edifices - which, of course, are constantly being modified to be eternally in your favor. The Barons and Knights who maintain your arcology happily turn a blind eye as you skim trade income directly into your pockets - after all, they're going to benefit from your success too. Sly manipulation of trade codes has earned you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "imperial": + income += random(1500, 2500); + r.push(`Your new Imperial culture fosters a particularly large amount of trade, given its fascination with high technology and old world culture. The constant influx of new fashions, materials, and technologies allows for one of the rarest opportunities for an ultra-wealthy plutocrat such as yourself; the chance to earn an honest dollar. By spending time at the bustling marketplace and trading in fashion, you've made <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "arabian law": + income += random(2000, 3000); + r.push(`You have a lot of persons scared of the consequences of not being a part of your society; even if they pay the Jizya, other citizens are not forced to accept them. So if they were to get mugged in some dark alley, people would not get outraged, and there probably wouldn't be any investigations. After buying everyone's silence, you still had <span class="yellowgreen">${cashFormat(income)}</span> to put in your pockets.`); + break; + case "arabian": + income += random(1500, 2500); + r.push(`People in your arcology are supposed to keep a myriad of slaves as their personal harem, and failure to do so is considered to be highly dishonorable. This opens up some opportunities for smuggling, as people are ready to go to great length to get an edge against their competitors. Becoming a part for this business has made you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "edo law": + income += random(2000, 3000); + r.push(`Outside culture is banned in your arcology. Your citizens do not need anything other than what you have inside. But this doesn't help with their curiosity — they always want to discover what the outside world is like. So you let some news and a few books from other cultures slip in, but not before you made sure they would disgust your citizens and reinforce their love for the Edo culture. The sales brought you <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + case "edo": + income += random(1500, 2500); + r.push(`During important meetings with higher society, it is wise to have a lot of slaves to put at the disposition of others. But some slaveowners grow really attached to their slaves, and so they'd much rather rent out unknown slaves from an anonymous owner's stock than use their own. This is a good opportunity to make some money, as shown by the <span class="yellowgreen">${cashFormat(income)}</span> you managed to make.`); + break; + case "chinese law": + income += random(2000, 3000); + ({he, him} = getPronouns(S.HeadGirl)); + r.push(`This time, you have a good idea that will also make use of your Head Girl. You coax ${him} into thinking ${he} should accept bribes for the time being, making up a good reason on the spot, and ${he} ends up bringing back <span class="yellowgreen">${cashFormat(income)}</span> from all the bribes people gave for ${him} to turn the other way.`); + break; + case "chinese": + income += random(1500, 2500); + r.push(`Being under what people call the Mandate of Heaven means you have a crucial importance in society, and some desperate people are willing to pay just for you to throw a word or small gesture in their direction, such as simply acknowledging a child or a slave, thinking that such things will make sure the Heavens smile upon them. For these services, you get <span class="yellowgreen">${cashFormat(income)}.</span>`); + break; + default: + income += random(500, 2000); + r.push(`You use former contacts to get you some opportunities in your arcology and deal with them. You make little money, only <span class="yellowgreen">${cashFormat(income)}.</span>`); + } + /* reputation effects */ + if (V.rep >= 18000) { /* prestigious */ + r.push(`Your strong reputation makes it both really easy to find opportunities to gain quite a bit of money, but at the same time, it makes it hard to do so anonymously.`); + if (caught || random(1, 100) >= 25) { + r.push(`Even with your attempts at discretion, people somehow manage to recognize you, and <span class="red">rumors that you're back in the gang business</span> are spreading through your arcology like wildfire.`); + repX((V.rep * .8) - V.rep, "personalBusiness"); + V.enduringRep *= .5; + } else if (random(1, 100) >= 50) { + r.push(`You are as discreet as possible, but yet some people seem to have doubts about who you are, and for quite some time, you can hear whispers <span class="red">that you may be helping the shadier businesses in your arcology.</span>`); + repX((V.rep * .9) - V.rep, "personalBusiness"); + V.enduringRep *= .75; + } else { + r.push(`You fool almost everyone with your`); + if (V.PC.actualAge >= 30) { + r.push(`experience and`); + } + r.push(`cunning, but the sole fact that smugglers are in your arcology <span class="red">damages your reputation.</span>`); + repX((V.rep * .95) - V.rep, "personalBusiness"); + V.enduringRep *= .9; + } + } else if (V.rep >= 9000) { // well known + r.push(`Your reputation helps you find opportunities that need people who have proved discreet. But even when taking precautions, nothing guarantees you can stay anonymous.`); + if (caught || random(1, 100) >= 40) { + r.push(`Try as you might, people notice who you are, and the next day, <span class="red">rumors about your business affairs</span> are already spreading everywhere in your arcology.`); + repX((V.rep * .9) - V.rep, "personalBusiness"); + V.enduringRep *= .65; + } else if (random(1, 100) >= 50) { + r.push(`You manage to fool some people, but not everyone, and soon enough, people are <span class="red">discussing whether you're smuggling or not.</span>`); + repX((V.rep * .95) - V.rep, "personalBusiness"); + V.enduringRep *= .9; + } else { + r.push(`You somehow manage to hide your identity for all but the most cunning of people, so the only thing that really <span class="red">damages your reputation</span> is the fact that people associate you with gangs all the time.`); + repX((V.rep * .98) - V.rep, "personalBusiness"); + } + } else { /* low reputation */ + if (!caught && random(1, 100) >= 90) { + r.push(`You work efficiently, not spending any time talking to people more than you need. Your efficiency even managed to earn you <span class="green">quite a few good words</span> from some people who were leading double lives like you were, and they made sure to get a word in about you in their business conversations.`); + repX((V.rep * 1.05) - V.rep, "personalBusiness"); + } else if (!caught && random(1, 100) >= 50) { + r.push(`You get a few curious glances from some people here and there, but most people do not care about who you are, or maybe they don't know, and it's better this way. Though your regular absences have <span class="red">not gone unnoticed</span> and some baseless rumors are spreading.`); + repX((V.rep * .95) - V.rep, "personalBusiness"); + V.enduringRep *= .95; + } else { + r.push(`Some people whisper when you pass by them. They seem to know who you are, and you know that <span class="red">after a bit of alcohol, their tongue will come loose,</span> and you can't afford to shut them up right here, right now.`); + repX((V.rep * .9) - V.rep, "personalBusiness"); + V.enduringRep *= .8; + } + } + income += Math.trunc(Math.min(3000 * Math.log(V.cash + 1), V.cash * 0.07)); + r.push(`This week, your illicit and legitimate business dealings earned you a combined total of <span class="yellowgreen">${cashFormat(income)}.</span>`); + cashX(income, "personalBusiness"); + } else if ((V.cash > 1000) && (V.personalAttention === "business")) { + if (V.PC.belly >= 1500) { + income = random(500, 1000); + } else { + income = random(1000, 1500); + } + if (V.PC.skill.trading >= 100) { + r.push(`You focus on business and leverage your <span class="springgreen">venture capital experience</span> to make good money:`); + income += random(5000, 10000) + Math.trunc(Math.min(4000 * Math.log(V.cash), V.cash * 0.07)); + } else if (V.PC.career === "arcology owner") { + r.push(`You focus on business and leverage your <span class="springgreen">Free Cities experience</span> to make good money:`); + income += random(5000, 10000) + Math.trunc(Math.min(4000 * Math.log(V.cash), V.cash * 0.07)); + } else { + r.push(`You focus on business this week and make some money:`); + income += Math.trunc(Math.min(3500 * Math.log(V.cash), V.cash * 0.07)); + } + r.push(`<span class="yellowgreen">${cashFormat(income)}.</span>`); + cashX(income, "personalBusiness"); + if (V.arcologies[0].FSRomanRevivalist !== "unset") { + r.push(`Society <span class="green">approves</span> of your close attention to your own affairs; this advances your image as a`); + if (V.PC.title === 1) { + r.push(`well-rounded Roman man.`); + } else { + r.push(`responsible Roman lady.`); + } + FutureSocieties.Change("RomanRevivalist", 2); + } + } else if (V.cash > 1000) { + income = Math.trunc(Math.min(3000 * Math.log(V.cash), V.cash * 0.07)); + r.push(`This week, your business endeavors made you <span class="yellowgreen">${cashFormat(income)}.</span>`); + cashX(income, "personalBusiness"); + } else { + r.push(`You have enough cash to manage your affairs, but not enough to do much business.`); + } + + if (V.personalAttention === "proclamation") { + if ((V.SecExp.proclamation.currency === "authority" && V.SecExp.core.authority >= 2000) || (V.SecExp.proclamation.currency === "reputation" && V.rep >= 4000) || (V.SecExp.proclamation.currency === "cash" && V.cash >= 8000)) { + r.push(`After several days of preparation you are ready to issue the proclamation. You announce to the arcology your plans and in short order you use`); + if (V.SecExp.proclamation.currency === "authority") { + r.push(`control over the arcology`); + } else if (V.SecExp.proclamation.currency === "reputation") { + r.push(`great influence`); + } else if (V.SecExp.proclamation.currency === "cash") { + r.push(`vast financial means`); + } + r.push(`to`); + if (V.SecExp.proclamation.type === "security") { + r.push(`gather crucial information for your security department. In just a few many hours holes are plugged and most moles are eliminated. <span class="green">Your security greatly increased.</span>`); + V.SecExp.core.security = Math.clamp(V.SecExp.core.security + 25, 0, 100); + } else if (V.SecExp.proclamation.type === "crime") { + r.push(`force the arrest of many suspected citizens. Their personal power allowed them to avoid justice for a long time, but this day is their end. <span class="green">Your crime greatly decreased.</span>`); + V.SecExp.core.crimeLow = Math.clamp(V.SecExp.core.crimeLow - 25, 0, 100); + } + if (V.SecExp.proclamation.currency === "authority") { + V.SecExp.core.authority = Math.clamp(V.SecExp.core.authority - 2000, 0, 20000); + } else if (V.SecExp.proclamation.currency === "reputation") { + repX(Math.clamp(V.rep - 2000, 0, 20000), "personalBusiness"); + } else { + cashX(-8000, "personalBusiness"); + } + V.SecExp.proclamation.cooldown = 4; + V.personalAttention = "business"; + } else { + r.push(`As you currently lack the minimum amount of your chosen proclamation currency, ${V.SecExp.proclamation.currency}, it would be unwise to attempt execution of your V.SecExp.proclamation.type this week.`); + } + } + + if (V.PC.actualAge >= V.IsInPrimePC && V.PC.actualAge < V.IsPastPrimePC) { + cal = Math.ceil(random(V.AgeTrainingLowerBoundPC, V.AgeTrainingUpperBoundPC) * V.AgeEffectOnTrainerEffectivenessPC); + X = 1; + } + /* + if V.PC.actualAge >= V.IsPastPrimePC { + cal = Math.ceil(random(V.AgeTrainingLowerBoundPC,V.AgeTrainingUpperBoundPC)*V.AgeEffectOnTrainerEffectivenessPC); + X = 0; + } + */ + + if (V.PC.health.shortDamage < 30) { + let oldSkill; + switch (V.personalAttention) { + case "trading": + oldSkill = V.PC.skill.trading; + if (X === 1) { + V.PC.skill.trading += cal; + } else { + V.PC.skill.trading -= cal; + } + if (oldSkill <= 10) { + if (V.PC.skill.trading > 10) { + r.push(`You now have <span class="green">basic knowledge</span> about how to be a venture capitalist.`); + } else { + r.push(`You have made progress towards a basic knowledge of venture capitalism.`); + } + } else if (oldSkill <= 30) { + if (V.PC.skill.trading > 30) { + r.push(`You now have <span class="green">some skill</span> as a venture capitalist.`); + } else { + r.push(`You have made progress towards being skilled in venture capitalism.`); + } + } else if (oldSkill <= 60) { + if (V.PC.skill.trading > 60) { + r.push(`You are now an <span class="green">expert venture capitalist.</span>`); + } else { + r.push(`You have made progress towards being an expert in venture capitalism.`); + } + } else { + if (V.PC.skill.trading >= 100) { + V.personalAttention = "sex"; + r.push(`You are now a <span class="green">master venture capitalist.</span>`); + } else { + r.push(`You have made progress towards mastering venture capitalism.`); + } + } + + break; + case "warfare": + oldSkill = V.PC.skill.warfare; + if (X === 1) { + V.PC.skill.warfare += cal; + } else { + V.PC.skill.warfare -= cal; + } + if (oldSkill <= 10) { + if (V.PC.skill.warfare > 10) { + r.push(`You now have <span class="green">basic knowledge</span> about how to be a mercenary.`); + } else { + r.push(`You have made progress towards a basic knowledge of mercenary work.`); + } + } else if (oldSkill <= 30) { + if (V.PC.skill.warfare > 30) { + r.push(`You now have <span class="green">some skill</span> as a mercenary.`); + } else { + r.push(`You have made progress towards being skilled in mercenary work.`); + } + } else if (oldSkill <= 60) { + if (V.PC.skill.warfare > 60) { + r.push(`You are now an <span class="green">expert mercenary.</span>`); + } else { + r.push(`You have made progress towards being an expert in mercenary work.`); + } + } else { + if (V.PC.skill.warfare >= 100) { + V.personalAttention = "sex"; + r.push(`You are now a <span class="green">master mercenary.</span>`); + } else { + r.push(`You have made progress towards mastering mercenary work.`); + } + } + + break; + case "slaving": + oldSkill = V.PC.skill.slaving; + if (X === 1) { + V.PC.skill.slaving += cal; + } else { + V.PC.skill.slaving -= cal; + } + if (oldSkill <= 10) { + if (V.PC.skill.slaving > 10) { + r.push(`You now have <span class="green">basic knowledge</span> about how to be a slaver.`); + } else { + r.push(`You have made progress towards a basic knowledge of slaving.`); + } + } else if (oldSkill <= 30) { + if (V.PC.skill.slaving > 30) { + r.push(`You now have <span class="green">some skill</span> as a slaver.`); + } else { + r.push(`You have made progress towards being skilled in slaving.`); + } + } else if (oldSkill <= 60) { + if (V.PC.skill.slaving > 60) { + r.push(`You are now an <span class="green">expert slaver.</span>`); + } else { + r.push(`You have made progress towards being an expert in slaving.`); + } + } else { + if (V.PC.skill.slaving >= 100) { + V.personalAttention = "sex"; + r.push(`You are now a <span class="green">master slaver.</span>`); + } else { + r.push(`You have made progress towards mastering slaving.`); + } + } + + break; + case "engineering": + oldSkill = V.PC.skill.engineering; + if (X === 1) { + V.PC.skill.engineering += cal; + } else { + V.PC.skill.engineering -= cal; + } + if (oldSkill <= 10) { + if (V.PC.skill.engineering > 10) { + r.push(`You now have <span class="green">basic knowledge</span> about how to be an arcology engineer.`); + } else { + r.push(`You have made progress towards a basic knowledge of arcology engineering.`); + } + } else if (oldSkill <= 30) { + if (V.PC.skill.engineering > 30) { + r.push(`You now have <span class="green">some skill</span> as an arcology engineer.`); + } else { + r.push(`You have made progress towards being skilled in arcology engineering.`); + } + } else if (oldSkill <= 60) { + if (V.PC.skill.engineering > 60) { + r.push(`You are now an <span class="green">expert arcology engineer.</span>`); + } else { + r.push(`You have made progress towards being an expert in arcology engineering.`); + } + } else { + if (V.PC.skill.engineering >= 100) { + V.personalAttention = "sex"; + r.push(`You are now a <span class="green">master arcology engineer.</span>`); + } else { + r.push(`You have made progress towards mastering arcology engineering.`); + } + } + + break; + case "medicine": + oldSkill = V.PC.skill.medicine; + if (X === 1) { + V.PC.skill.medicine += cal; + } else { + V.PC.skill.medicine -= cal; + } + if (oldSkill <= 10) { + if (V.PC.skill.medicine > 10) { + r.push(`You now have <span class="green">basic knowledge</span> about how to be a slave surgeon.`); + } else { + r.push(`You have made progress towards a basic knowledge of slave surgery.`); + } + } else if (oldSkill <= 30) { + if (V.PC.skill.medicine > 30) { + r.push(`You now have <span class="green">some skill</span> as a slave surgeon.`); + } else { + r.push(`You have made progress towards being skilled in slave surgery.`); + } + } else if (oldSkill <= 60) { + if (V.PC.skill.medicine > 60) { + r.push(`You are now an <span class="green">expert slave surgeon.</span>`); + } else { + r.push(`You have made progress towards being an expert in slave surgery.`); + } + } else { + if (V.PC.skill.medicine >= 100) { + V.personalAttention = "sex"; + r.push(`You are now a <span class="green">master slave surgeon.</span>`); + } else { + r.push(`You have made progress towards mastering slave surgery.`); + } + } + + break; + case "hacking": + oldSkill = V.PC.skill.hacking; + if (X === 1) { + V.PC.skill.hacking += cal; + } else { + V.PC.skill.hacking -= cal; + } + if (oldSkill <= 10) { + if (V.PC.skill.hacking > 10) { + r.push(`You now have <span class="green">basic knowledge</span> about how to hack and manipulate data.`); + } else { + r.push(`You have made progress towards a basic knowledge of hacking and data manipulation.`); + } + } else if (oldSkill <= 30) { + if (V.PC.skill.hacking > 30) { + r.push(`You now have <span class="green">some skill</span> as a hacker.`); + } else { + r.push(`You have made progress towards being skilled in hacking and data manipulation.`); + } + } else if (oldSkill <= 60) { + if (V.PC.skill.hacking > 60) { + r.push(`You are now an <span class="green">expert hacker.</span>`); + } else { + r.push(`You have made progress towards being an expert in hacking and data manipulation.`); + } + } else { + if (V.PC.skill.hacking >= 100) { + V.personalAttention = "sex"; + r.push(`You are now a <span class="green">master hacker.</span>`); + } else { + r.push(`You have made progress towards mastering hacking and data manipulation.`); + } + } + + break; + case "technical accidents": + windfall = Math.trunc((150 * V.PC.skill.hacking) + random(100, 2500)); + X = 0; + if (V.PC.skill.hacking === -100) { + catchTChance = 10; + } else if (V.PC.skill.hacking <= -75) { + catchTChance = 30; + } else if (V.PC.skill.hacking <= -50) { + catchTChance = 40; + } else if (V.PC.skill.hacking <= -25) { + catchTChance = 45; + } else if (V.PC.skill.hacking === 0) { + catchTChance = 50; + } else if (V.PC.skill.hacking <= 25) { + catchTChance = 60; + } else if (V.PC.skill.hacking <= 50) { + catchTChance = 70; + } else if (V.PC.skill.hacking <= 75) { + catchTChance = 85; + } else if (V.PC.skill.hacking >= 100) { + catchTChance = 100; + } + r.push(`This week your services to the highest bidder earned you <span class="yellowgreen">${cashFormat(windfall)}.</span>`); + if (random(0, 100) >= catchTChance) { + r.push(`However, since the source of the attack was traced back to your arcology, your`); + if (V.secExpEnabled > 0) { + X = 1; + r.push(`<span class="red">authority,</span>`); + V.SecExp.core.authority -= random(100, 500); + r.push(`<span class="red">crime rate</span>`); + V.SecExp.core.crimeLow += random(10, 25); + r.push(`and`); + } + r.push(`<span class="red">reputation</span>`); + repX(forceNeg(random(50, 500)), "event"); + if (X !== 1) { + r.push(`has`); + } else { + r.push(`have all`); + } + r.push(`been negatively affected.`); + } + if (V.PC.skill.hacking < 100) { + r.push(`${IncreasePCSkills('hacking', 0.5)}`); + } + cashX(windfall, "personalBusiness"); + } + } + + if (V.policies.cashForRep === 1) { + if (V.cash > 1000) { + r.push(`This week you gave up business opportunities worth ${cashFormat(policies.cost())} to help deserving citizens, <span class="green">burnishing your reputation.</span>`); + repX(1000, "personalBusiness"); + cashX(forceNeg(policies.cost()), "policies"); + if (V.PC.degeneracy > 1) { + r.push(`This also helps <span class="green">offset any rumors</span> about your private actions.`); + V.PC.degeneracy -= 1; + } + } else { + r.push(`Money was too tight this week to risk giving up any business opportunities.`); + } + } + if (V.policies.goodImageCampaign === 1) { + if (V.cash > 5000) { + r.push(`This week you paid ${cashFormat(policies.cost())} to have positive rumors spread about you, <span class="green">making you look`); + if (V.PC.degeneracy > 1) { + r.push(`good and weakening existing undesirable rumors.</span>`); + V.PC.degeneracy -= 2; + } else { + r.push(`good.</span>`); + } + repX(500, "personalBusiness"); + cashX(forceNeg(policies.cost()), "policies"); + } else { + r.push(`You lacked enough extra ¤ to pay people to spread positive rumors about you this week.`); + } + } + if (V.rep > 20) { + if (V.policies.cashForRep === -1) { + r.push(`This week you used your position to secure business opportunities worth ${cashFormat(policies.cost())} at the expense of citizens, <span class="red">damaging your reputation.</span>`); + repX(-20, "personalBusiness"); + cashX(policies.cost(), "personalBusiness"); + } + } + if (V.rep <= 18000) { + if (V.policies.regularParties === 0) { + if (V.rep > 3000) { + r.push(`Your <span class="red">reputation is damaged</span> by your not hosting regular social events for your leading citizens.`); + repX(-50, "personalBusiness"); + } else { + r.push(`Though you are not hosting regular social events for your leading citizens, your lack of renown prevents this from damaging your reputation; they don't expect someone so relatively unknown to be throwing parties.`); + } + } + } + App.Events.addParagraph(el, r); + r = []; + + if (V.secExpEnabled > 0) { + if (V.SecExp.smilingMan.progress === 10 && random(1, 100) >= 85) { + r.push(`This week one of the offside adventures of The Smiling Man produced a copious amount of money, of which <span class="yellowgreen">you receive your share.</span>`); + cashX(random(10, 20) * 1000, "personalBusiness"); + } + + if (V.SecExp.buildings.secHub && V.SecExp.edicts.sellData === 1) { + upgradeCount = 0; + upgradeCount += Object.values(V.SecExp.buildings.secHub.upgrades.security).reduce((a, b) => a + b); + upgradeCount += Object.values(V.SecExp.buildings.secHub.upgrades.crime).reduce((a, b) => a + b); + upgradeCount += Object.values(V.SecExp.buildings.secHub.upgrades.intel).reduce((a, b) => a + b); + + dataGain = upgradeCount * 200; + if (!Number.isInteger(dataGain)) { + r.push(App.UI.DOM.makeElement("div", `Error, dataGain is NaN`, "red")); + } else { + r.push(`You are selling the data collected by your security department, which earns a discreet sum of <span class="yellowgreen">${cashFormat(dataGain)}.</span>`); + cashX(dataGain, "personalBusiness"); + r.push(`Many of your citizens are not enthusiastic of this however, <span class="red">damaging your authority.</span>`); + V.SecExp.core.authority -= 50; + } + } + + if (V.SecExp.buildings.propHub && V.SecExp.buildings.propHub.upgrades.marketInfiltration > 0) { + const blackMarket = random(7000, 8000); + r.push(`Your secret service makes use of black markets and illegal streams of goods to make a profit, making you <span class="yellowgreen">${cashFormat(blackMarket)}.</span> This however allows <span class="red">crime to flourish</span> in the underbelly of the arcology.`); + V.SecExp.core.crimeLow += random(1, 3); + cashX(blackMarket, "personalBusiness"); + } + + if (V.arcRepairTime > 0) { + r.push(`The recent rebellion left the arcology wounded and it falls to its owner to fix it. It will still take`); + if (V.arcRepairTime > 1) { + r.push(`${V.arcRepairTime} weeks`); + } else { + r.push(`a week`); + } + r.push(`to finish repair works.`); + cashX(-5000, "personalBusiness"); + V.arcRepairTime--; + IncreasePCSkills('engineering', 0.1); + } + App.Events.addParagraph(el, r); + + if (V.SecExp.buildings.weapManu) { + r = []; + r.push(`The weapons manufacturing complex produces armaments`); + if (V.SecExp.buildings.weapManu.productivity <= 2) { + r.push(`at a steady pace.`); + } else { + r.push(`with great efficiency.`); + } + income = 0; + const price = Math.trunc(Math.clamp(random(1, 2) + (V.arcologies[0].prosperity / 15) - (V.week / 30), 2, 8)); + const factoryMod = Math.round(1 + (V.SecExp.buildings.weapManu.productivity + V.SecExp.buildings.weapManu.lab) / 2 + (V.SecExp.buildings.weapManu.menials / 100)); + if (V.SecExp.buildings.weapManu.sellTo.citizen === 1) { + if (V.SecExp.edicts.weaponsLaw === 3) { + r.push(`Your lax regulations regarding weapons allows your citizens to buy much of what you are capable of producing.`); + income += Math.round((V.ACitizens * 0.1) * price * factoryMod); + } else if (V.SecExp.edicts.weaponsLaw >= 1) { + r.push(`Your policies allow your citizen to buy your weaponry and they buy much of what you are capable of producing.`); + income += Math.round(((V.ACitizens * 0.1) * price * factoryMod) / (3 - V.SecExp.edicts.weaponsLaw)); + } else { + r.push(`Your policies do allow your citizen to buy weaponry, meaning all your income will come from exports.`); + } + } + if (V.SecExp.buildings.weapManu.sellTo.raiders === 1) { + r.push(`Some weapons are sold to the various raider gangs infesting the wastelands.`); + income += Math.round(V.week / 3 * (price / 2) * 10 * factoryMod); + } + if (V.SecExp.buildings.weapManu.sellTo.oldWorld === 1) { + r.push(`Part of our production is sold to some old world nations.`); + income += Math.round(V.week / 3 * price * 10 * factoryMod); + } + if (V.SecExp.buildings.weapManu.sellTo.FC === 1) { + r.push(`A share of our weapons production is sold to other Free Cities.`); + income += Math.round(V.week / 3 * price * 10 * factoryMod); + } + if (V.peacekeepers.strength >= 50) { + r.push(`The peacekeeping force is always in need of new armaments and is happy to be supplied by their ally.`); + income += Math.round(V.peacekeepers.strength * price * 10 * factoryMod); + } + income = Math.trunc(income * 0.5); + r.push(`This week we made <span class="yellowgreen">${cashFormat(income)}.</span>`); + if (!Number.isInteger(income)) { + r.push(App.UI.DOM.makeElement("div", `Error failed to calculate income`, "red")); + } else { + cashX(income, "personalBusiness"); + } + App.Events.addParagraph(el, r); + } + + if (V.SecExp.edicts.taxTrade === 1) { + const tradeTax = Math.ceil(V.SecExp.core.trade * random(80, 120)); + App.Events.addNode( + el, + [ + `Fees on transitioning goods this week made`, + App.UI.DOM.makeElement("span", `${cashFormat(tradeTax)}.`, "yellowgreen") + ], + "div" + ); + cashX(Math.ceil(tradeTax), "personalBusiness"); + } + } + r = []; + r.push(`Routine upkeep of your demesne costs <span class="yellow">${cashFormat(V.costs)}.</span>`); + if (V.plot === 1) { + if (V.week > 10) { + if (V.weatherToday.severity - V.weatherCladding > 2) { + V.weatherAwareness = 1; + let weatherRepairCost; + if (V.weatherCladding === 1) { + weatherRepairCost = Math.trunc(((V.weatherToday.severity - 3) * (V.arcologies[0].prosperity * random(50, 100))) + random(1, 100)); + IncreasePCSkills('engineering', 0.1); + r.push(`${V.arcologies[0].name}'s hardened exterior only partially resisted the extreme weather this week, and it requires repairs costing <span class="yellow">${cashFormat(weatherRepairCost)}.</span> Your citizens are <span class="green">grateful</span> to you for upgrading ${V.arcologies[0].name} to provide a safe haven from the terrible climate.`); + repX(500, "architecture"); + } else if (V.weatherCladding === 2) { + weatherRepairCost = Math.trunc(((V.weatherToday.severity - 4) * (V.arcologies[0].prosperity * random(50, 100))) + random(1, 100)); + IncreasePCSkills('engineering', 0.1); + r.push(`${V.arcologies[0].name}'s hardened exterior only partially resisted the extreme weather this week, and it requires repairs costing <span class="yellow">${cashFormat(weatherRepairCost)}.</span> Your citizens are <span class="green">grateful</span> to you for upgrading ${V.arcologies[0].name} to provide a safe haven from the terrible climate.`); + repX(500, "architecture"); + } else { + weatherRepairCost = Math.trunc(((V.weatherToday.severity - 2) * (V.arcologies[0].prosperity * random(50, 100))) + random(1, 100)); + IncreasePCSkills('engineering', 0.1); + r.push(`Severe weather damaged the arcology this week, requiring repairs costing <span class="yellow">${cashFormat(weatherRepairCost)}.</span> Your citizens are <span class="red">unhappy</span> that the arcology has proven vulnerable to the terrible climate.`); + repX(-50, "architecture"); + } + if (V.cash > 0) { + cashX(forceNeg(Math.trunc(weatherRepairCost)), "weather"); + } else if (V.arcologies[0].FSRestartDecoration === 100) { + r.push(`Since you lack the resources to effect prompt repairs yourself, the Societal Elite cover for you. The arcology's prosperity is <span class="red">is damaged,</span> but your public reputation is left intact.`); + if (V.eugenicsFullControl !== 1) { + r.push(`The Societal Elite <span class="red">are troubled by your failure.</span>`); + V.failedElite += 100; + } + if (V.arcologies[0].prosperity > 50) { + V.arcologies[0].prosperity -= random(5, 10); + IncreasePCSkills('engineering', 0.1); + } + cashX(forceNeg(Math.trunc(weatherRepairCost / 4)), "weather"); + } else { + r.push(`Since you lack the resources to effect prompt repairs yourself, prominent citizens step in to repair their own parts of the arcology. This is <span class="red">terrible for your reputation,</span> and it also <span class="red">severely reduces the arcology's prosperity.</span>`); + if (V.arcologies[0].prosperity > 50) { + V.arcologies[0].prosperity -= random(5, 10); + IncreasePCSkills('engineering', 0.1); + } + repX((Math.trunc(V.rep * 0.9)) - V.rep, "weather"); + r.push(`${IncreasePCSkills('engineering', 0.1)}`); + cashX(forceNeg(Math.trunc(weatherRepairCost / 4)), "weather"); + } + } else if (V.weatherToday.severity - V.weatherCladding <= 2) { + if (V.weatherToday.severity > 2) { + V.weatherAwareness = 1; + r.push(`The arcology's hardened exterior resisted severe weather this week. Your citizens are <span class="green">grateful</span> to you for maintaining the arcology as a safe haven from the terrible climate.`); + repX(500, "architecture"); + } + } + } + } + V.costs = Math.trunc(Math.abs(calculateCosts.bill()) * 100) / 100; + /* overwrite the prediction and actually pay the bill. GetCost should return a negative. Round to two decimal places.*/ + if (isNaN(V.costs)) { + r.push(App.UI.DOM.makeElement("div", `Error, costs is NaN`, "red")); + } + App.Events.addParagraph(el, r); + + /* Adding random changes to slave demand and supply*/ + endWeekSlaveMarket(); + r = []; + if (V.menialDemandFactor <= -35000) { + r.push(`Demand for slaves is approaching a <span class="red bold">historic low,</span> forecasts predict`); + if (V.deltaDemand > 0) { + r.push(`the market will turn soon and <span class="green bold">demand will rise.</span>`); + } else if (V.deltaDemand < 0) { + r.push(`<span class="red bold">demand will continue to weaken,</span> but warn the bottom is in sight.`); + } else { + r.push(`the current demand will <span class="yellow bold">stabilize.</span>`); + } + } else if (V.menialDemandFactor <= -20000) { + r.push(`Demand for slaves is <span class="red bold">very low,</span> forecasts predict`); + if (V.deltaDemand > 0) { + r.push(`the market will turn soon and <span class="green bold">demand will rise.</span>`); + } else if (V.deltaDemand < 0) { + r.push(`<span class="red bold">demand will continue to weaken.</span>`); + } else { + r.push(`the current demand will <span class="yellow bold">stabilize.</span>`); + } + } else if (V.menialDemandFactor >= 35000) { + r.push(`Demand for slaves is approaching a <span class="green bold">historic high,</span> forecasts predict`); + if (V.deltaDemand > 0) { + r.push(`<span class="green bold">demand will continue to rise,</span> but warn the peak is in sight.`); + } else if (V.deltaDemand < 0) { + r.push(`the market will turn soon and <span class="red bold">demand will weaken.</span>`); + } else { + r.push(`the current demand will <span class="yellow bold">stabilize.</span>`); + } + } else if (V.menialDemandFactor >= 20000) { + r.push(`Demand for slaves is <span class="green bold">very high,</span> forecasts predict`); + if (V.deltaDemand > 0) { + r.push(`<span class="green bold">demand will continue to rise.</span>`); + } else if (V.deltaDemand < 0) { + r.push(`the market will turn soon and <span class="red bold">demand will weaken.</span>`); + } else { + r.push(`the current demand will <span class="yellow bold">stabilize.</span>`); + } + } else { + r.push(`Demand for slaves is <span class="yellow bold">average,</span> forecasts predict`); + if (V.deltaDemand > 0) { + r.push(`the market will see <span class="green bold">rising demand.</span>`); + } else if (V.deltaDemand < 0) { + r.push(`the market will see <span class="red bold">weakening demand.</span>`); + } else { + r.push(`it will <span class="yellow bold">remain stable</span> for the coming months.`); + } + } + App.Events.addParagraph(el, r); + r = []; + if (V.menialSupplyFactor <= -35000) { + r.push(`Supply of slaves is approaching a <span class="green bold">historic low,</span> forecasts predict`); + if (V.deltaSupply > 0) { + r.push(`the market will turn soon and <span class="red bold">supply will rise.</span>`); + } else if (V.deltaSupply < 0) { + r.push(`<span class="green bold">supply will continue to weaken,</span> but warn the bottom is in sight.`); + } else { + r.push(`the current supply will <span class="yellow bold">stabilize.</span>`); + } + } else if (V.menialSupplyFactor <= -20000) { + r.push(`Supply for slaves is <span class="green bold">very low,</span> forecasts predict`); + if (V.deltaSupply > 0) { + r.push(`the market will turn soon and <span class="red bold">supply will rise.</span>`); + } else if (V.deltaSupply < 0) { + r.push(`<span class="green bold">supply will continue to weaken.</span>`); + } else { + r.push(`the current supply will <span class="yellow bold">stabilize.</span>`); + } + } else if (V.menialSupplyFactor >= 35000) { + r.push(`Supply for slaves is approaching a <span class="red bold">historic high,</span> forecasts predict`); + if (V.deltaSupply > 0) { + r.push(`<span class="red bold">supply will continue to rise,</span> but warn the peak is in sight.`); + } else if (V.deltaSupply < 0) { + r.push(`the market will turn soon and <span class="green bold">supply will weaken.</span>`); + } else { + r.push(`the current supply will <span class="yellow bold">stabilize.</span>`); + } + } else if (V.menialSupplyFactor >= 20000) { + r.push(`Supply for slaves is <span class="red bold">very high,</span> forecasts predict`); + if (V.deltaSupply > 0) { + r.push(`<span class="red bold">supply will continue to rise.</span>`); + } else if (V.deltaSupply < 0) { + r.push(`the market will turn soon and <span class="green bold">supply will weaken.</span>`); + } else { + r.push(`the current supply will <span class="yellow bold">stabilize.</span>`); + } + } else { + r.push(`Supply for slaves is <span class="yellow bold">average,</span> forecasts predict`); + if (V.deltaSupply > 0) { + r.push(`the market will see <span class="red bold">rising supply.</span>`); + } else if (V.deltaSupply < 0) { + r.push(`the market will see <span class="green bold">weakening supply.</span>`); + } else { + r.push(`it will <span class="yellow bold">remain stable</span> for the coming months.`); + } + } + App.Events.addParagraph(el, r); + r = []; + + /* Menial and regular slave markets are part of the same market, e.a. if (menial)slave supply goes up, all slave prices fall. + The RomanFS may need further tweaking (it probably got weaker). Could increase the slave supply cap if this FS is chosen to fix. */ + + V.slaveCostFactor = menialSlaveCost() / 1000; + if (V.arcologies[0].FSRomanRevivalist > random(1, 150)) { + if (V.slaveCostFactor > 0.8) { + App.UI.DOM.appendNewElement("p", el, `<span class="yellow">Your Roman Revivalism is having an effect on the slave market and has driven local prices down</span> by convincing slave traders that this is a staunchly pro-slavery area.`); + V.menialSupplyFactor += 2000; + } else { + App.UI.DOM.appendNewElement("p", el, `<span class="yellow">Your Roman Revivalism is having an effect on the slave market and is holding local prices down</span> by convincing slave traders that this is a staunchly pro-slavery area.`); + } + } + + if (V.difficultySwitch === 1) { + if (V.econWeatherDamage > 0) { + const repairSeed = random(1, 3); + if (V.disasterResponse === 0) { + if (repairSeed === 3) { + V.econWeatherDamage -= 1; + V.localEcon += 1; + } + } else if (V.disasterResponse === 1) { + if (repairSeed > 1) { + V.econWeatherDamage -= 1; + V.localEcon += 1; + } + } else { + if (repairSeed === 3) { + if (V.econWeatherDamage > 1) { + V.econWeatherDamage -= 2; + V.localEcon += 2; + } else { + V.econWeatherDamage -= 1; + V.localEcon += 1; + } + } else { + V.econWeatherDamage -= 1; + V.localEcon += 1; + } + } + } + if (V.terrain !== "oceanic") { + if (V.weatherToday.severity === 3) { + V.localEcon -= 1; + V.econWeatherDamage += 1; + r.push(`This week's terrible weather did a number on the region, <span class="red">hurting the local economy.</span>`); + if (V.disasterResponse === 0) { + r.push(App.UI.DOM.makeElement("span", `Investing in a disaster response unit will speed up recovery`, "note")); + } + } else if (V.weatherToday.severity > 3) { + V.localEcon -= 3; + V.econWeatherDamage += 3; + r.push(`This week's extreme weather ravaged the region, <span class="red">the local economy is seriously disrupted.</span>`); + if (V.disasterResponse === 0) { + r.push(App.UI.DOM.makeElement("span", `Investing in a disaster response unit will speed up recovery`, "note")); + } + } + } + } + App.Events.addParagraph(el, r); + + if (V.SF.Toggle && V.SF.Active >= 1) { + $(el).wiki(App.SF.AAR()); + } + return el; +}; diff --git a/src/endWeek/economics/personalNotes.js b/src/endWeek/economics/personalNotes.js new file mode 100644 index 0000000000000000000000000000000000000000..f066bba907a7a2c4a074fb4ecd2229da2e20caab --- /dev/null +++ b/src/endWeek/economics/personalNotes.js @@ -0,0 +1,475 @@ +/** + * @returns {HTMLElement} + */ +App.EndWeek.personalNotes = function() { + const el = document.createElement("p"); + let r = []; + let milk; + let milkSale; + if (V.useTabs === 0) { + App.UI.DOM.appendNewElement("h2", el, `Personal Notes`); + } + if (V.playerAging !== 0) { + let birthday = `Your birthday is `; + if (V.PC.birthWeek === 51) { + birthday += `next week`; + if (V.playerAging === 2) { + birthday += `; you'll be turning ${V.PC.actualAge + 1}`; + } + } else { + birthday += `in ${52 - V.PC.birthWeek} weeks`; + } + birthday += `.`; + r.push(birthday); + } + r.push(App.Desc.Player.boobs()); + r.push(App.Desc.Player.belly()); + r.push(App.Desc.Player.crotch()); + r.push(App.Desc.Player.butt()); + if (V.PC.lactation > 0) { + if (V.PC.rules.lactation !== "none" && V.PC.rules.lactation !== "induce") { + V.PC.lactationDuration = 2; + if (V.PC.rules.lactation === "sell") { + /* watch this be a disaster */ + milk = milkAmount(V.PC); + r.push(`Whenever you have a free moment and a chest swollen with milk, you spend your time attached to the nearest milker. As a result, you produce${milk} liters of sellable milk over the week.`); + if (V.arcologies[0].FSPastoralistLaw === 1) { + milkSale = milk * (28 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); + r.push(`Since breast milk is ${V.arcologies[0].name}'s only legal dairy product, and yours is in a class all of its own, society can't get enough of it and you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } else if (V.arcologies[0].FSPastoralist !== "unset") { + milkSale = milk * (12 + Math.trunc(V.arcologies[0].FSPastoralist / 30)); + r.push(`Since milk is fast becoming a major part of the ${V.arcologies[0].name}'s dietary culture, and yours is in a class all of its own, you make <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } else { + milkSale = milk * 8; + r.push(`Your milk is sold for <span class="yellowgreen">${cashFormat(milkSale)}.</span>`); + } + cashX(milkSale, "personalBusiness"); + } else { + r.push(`You regularly see to your breasts to make sure your milk production doesn't dry up; be it by hand, milker, or mouth, you keep yourself comfortably drained.`); + } + } else { + if (V.PC.belly < 1500) { + V.PC.lactationDuration--; + if (V.PC.lactationDuration === 0) { + r.push(`With no reason to continue production, your <span class="yellow">lactation has stopped.</span>`); + V.PC.lactation = 0; + } + } + } + } + if (V.PC.preg > 0) { + const oldCount = V.PC.pregType; + if (V.PC.preg <= 2) { + fetalSplit(V.PC, 1000); + WombCleanYYFetuses(V.PC); + } + if (V.pregnancyMonitoringUpgrade === 1) { + if (oldCount < V.PC.pregType) { + r.push(`While making use of the advanced pregnancy monitoring equipment, you are surprised to find <span class="lime">your womb is a little more occupied than last checkup.</span>`); + } else if (oldCount > V.PC.pregType) { + r.push(`While making use of the advanced pregnancy monitoring equipment, you are surprised to find <span class="orange">your womb houses less life than last checkup.</span>`); + if (V.PC.pregType === 0) { + r.push(`For all intents and purposes, <span class="yellow">you are no longer pregnant.</span>`); + TerminatePregnancy(V.PC); + } + } + } else if (oldCount > V.PC.pregType && V.PC.pregType === 0) { + TerminatePregnancy(V.PC); + } + if (V.PC.preg === 15) { + if (V.PC.pregKnown === 0) { + r.push(`Your areolae have gotten dark. Some cursory tests reveal <span class="lime">you are about fifteen weeks pregnant.</span> How did that manage to slip past you?`); + V.PC.pregKnown = 1; + } else { + r.push(`Your areolae have gotten dark. Just another step along your pregnancy.`); + } + } else if (V.PC.belly >= 1500) { + if ((V.PC.preg > 20) && (V.PC.lactation === 0)) { + if (V.PC.preg > random(18, 30)) { + r.push(`A moist sensation on your breasts draws your attention; <span class="lime">your milk has come in.</span>`); + V.PC.lactation = 1; + } + } + if (V.PC.lactation === 1) { + V.PC.lactationDuration = 2; + } + } + if (V.PC.preg >= V.PC.pregData.normalBirth / 4) { + const gigantomastiaMod = V.PC.geneticQuirks.gigantomastia === 2 ? (V.PC.geneticQuirks.macromastia === 2 ? 3 : 2) : 1; + /* trim this down */ + let boobTarget; + if (V.PC.geneMods.NCS === 1) { + boobTarget = 100; + } else if (V.PC.geneticQuirks.androgyny === 2) { + boobTarget = 400; + } else if (V.PC.physicalAge >= 18) { + if (V.PC.pregType >= 8) { + boobTarget = 1500; + /* 2000 */ + } else if (V.PC.pregType >= 5) { + boobTarget = 1400; + } else if (V.PC.pregType >= 2) { + boobTarget = 1000; + } else { + boobTarget = 800; + } + } else if (V.PC.physicalAge >= 13) { + if (V.PC.pregType >= 8) { + boobTarget = 1500; + /* 1800 */ + } else if (V.PC.pregType >= 5) { + boobTarget = 1400; + } else if (V.PC.pregType >= 2) { + boobTarget = 1000; + } else { + boobTarget = 800; + } + } else if (V.PC.physicalAge >= 8) { + if (V.PC.pregType >= 8) { + boobTarget = 1400; + } else if (V.PC.pregType >= 5) { + boobTarget = 1000; + } else if (V.PC.pregType >= 2) { + boobTarget = 800; + } else { + boobTarget = 600; + } + } else { + if (V.PC.pregType >= 8) { + boobTarget = 1000; + } else if (V.PC.pregType >= 5) { + boobTarget = 8000; + } else if (V.PC.pregType >= 2) { + boobTarget = 600; + } else { + boobTarget = 400; + } + } + /* boobTarget *= gigantomastiaMod;*/ + if (V.PC.geneMods.NCS === 0) { + /* + if (V.PC.pregType >= 30) { + if (V.PC.weight <= 65) { + r.push(`${He} has <span class="lime">gained weight</span> in order to better sustain ${himself} and ${his} children.`); + V.PC.weight += 1; + } + if (random(1,100) > 60) { + if ((V.PC.boobs - V.PC.boobsImplant) < boobTarget) { + r.push(`${His} breasts <span class="lime">greatly swell</span> to meet the upcoming demand.`); + V.PC.boobs += 100; + if (V.PC.boobShape !== "saggy" && V.PC.preg > V.PC.pregData.normalBirth/1.25 && (V.PC.breastMesh !== 1) && (V.PC.drugs !== "sag-B-gone")) { + r.push(`${His} immensely engorged <span class="orange">breasts become saggy</span> in the last stages of ${his} pregnancy as ${his} body undergoes changes in anticipation of the forthcoming birth.`); + V.PC.boobShape = "saggy"; + } + } + if (V.PC.geneticQuirks.androgyny !== 2) { + if (V.PC.hips < 2) { + r.push(`${His} hips <span class="lime">widen</span> for ${his} upcoming birth.`); + V.PC.hips += 1; + } + if (V.PC.butt < 14) { + r.push(`${His} butt <span class="lime">swells with added fat</span> from ${his} changing body.`); + V.PC.butt += 1; + } + } + } + } else if ((V.PC.pregType >= 10)) { + if (random(1,100) > 80 && ((V.PC.boobs - V.PC.boobsImplant) < boobTarget)) { + V.PC.boobs += 50; + if (V.PC.boobShape !== "saggy" && (V.PC.breastMesh !== 1) && (V.PC.drugs !== "sag-B-gone")) { + if (V.PC.preg > random(V.PC.pregData.normalBirth/1.25, V.PC.pregData.normalBirth*2.05)) { + r.push(`${His} swollen <span class="orange">breasts become saggy</span> in the last stages of ${his} pregnancy as ${his} body undergoes changes in anticipation of the forthcoming birth.`); + V.PC.boobShape = "saggy"; + } + } + } + } + */ + if ((V.PC.boobs - V.PC.boobsImplant) < boobTarget) { + if (V.PC.boobs >= 1400) { + if (random(1, 100) > 90) { + r.push(`Unsurprisingly, your cow tits <span class="lime">have swollen even larger</span> with your pregnancy.`); + V.PC.boobs += 25; + } + } else if (V.PC.boobs >= 1200) { + if (random(1, 100) > 90) { + r.push(`Your already huge breasts have <span class="lime">grown even heavier</span> with your pregnancy.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 1400) { + r.push(`Your desk is steadily starting to disappear; <span class="lime">H-cups will do that.</span>`); + } + } + } else if (V.PC.boobs >= 1000) { + if (random(1, 100) > 75) { + r.push(`Your already large breasts have <span class="lime">grown even larger</span> with your pregnancy.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 1200) { + r.push(`Nothing fits comfortably now; your tailor says <span class="lime">it's your G-cup knockers.</span> Your back agrees.`); + } + } + } else if (V.PC.boobs >= 800) { + if (random(1, 100) > 75) { + r.push(`Your breasts have <span class="lime">grown a bit larger</span> to feed your coming ${(V.PC.pregType === 1) ? `child`:`children`}.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 1000) { + r.push(`You popped your bra when you put it on; <span class="lime">time to order some F-cups.</span>`); + } + } + } else if (V.PC.boobs >= 650) { + if (random(1, 100) > 80) { + r.push(`Your breasts have <span class="lime">grown a bit larger</span> to feed your coming ${(V.PC.pregType === 1) ? `child`:`children`}.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 800) { + r.push(`Their prominence, and a quick measuring, reveals <span class="lime">you now sport DDs.</span>`); + } + } + } else if (V.PC.boobs >= 500) { + if (random(1, 100) > 80) { + r.push(`Your breasts have <span class="lime">grown a bit larger</span> to feed your coming ${(V.PC.pregType === 1) ? `child`:`children`}.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 650) { + r.push(`They're big, sensitive, <span class="lime">and now a D-cup.</span>`); + } + } + } else if (V.PC.boobs >= 400) { + if (random(1, 100) > 80) { + r.push(`Your breasts have <span class="lime">gotten heavier</span> alongside your pregnancy.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 500) { + r.push(`They spill dramatically out of your bra now, which means <span class="lime">you've graduated to a C-cup.</span>`); + } + } + } else if (V.PC.boobs >= 300) { + if (random(1, 100) > 75) { + r.push(`Your breasts have <span class="lime">swollen</span> alongside your pregnancy.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 400) { + r.push(`A quick measuring after your top started to feel too constricting reveals <span class="lime">you are now a B-cup!</span>`); + } + } + } else { + if (random(1, 100) > 75) { + r.push(`Your chest <span class="lime">has filled out slightly</span> with your pregnancy.`); + V.PC.boobs += 25; + if (V.PC.boobs >= 300) { + r.push(`They've gotten so big that <span class="lime">you can now fill an A-cup bra.</span>`); + } + } + } + if (V.PC.boobShape !== "saggy" && V.PC.preg > random(V.PC.pregData.normalBirth / 1.25, V.PC.pregData.normalBirth * 2.5) && (V.PC.breastMesh !== 1) && (V.PC.drugs !== "sag-B-gone")) { + r.push(`Your <span class="orange">breasts become saggy</span> in the last stages of pregnancy as your body undergoes changes in anticipation of the forthcoming birth.`); + V.PC.boobShape = "saggy"; + } + } + /* + if (V.PC.preg > V.PC.pregData.normalBirth/1.25 && V.PC.physicalAge >= 18 && V.PC.hips === 1 && V.PC.hipsImplant === 0 && random(1,100) > 90) { + r.push(`${His} hips <span class="lime">widen</span> to better support ${his} gravidity.`); + V.PC.hips += 1; + } else if (V.PC.preg > V.PC.pregData.normalBirth/1.42 && V.PC.physicalAge >= 18 && V.PC.hips === 0 && V.PC.hipsImplant === 0 && random(1,100) > 70) { + r.push(`${His} hips <span class="lime">widen</span> to better support ${his} gravidity.`); + V.PC.hips += 1; + } + */ + } + } + /* --------------- main labor triggers: -------- */ + if (V.PC.preg > V.PC.pregData.normalBirth / 8) { + if (WombBirthReady(V.PC, V.PC.pregData.normalBirth * 1.075) > 0) { // check for really ready fetuses - 43 weeks - max, overdue + V.PC.labor = 1; + } else if (WombBirthReady(V.PC, V.PC.pregData.normalBirth) > 0 && (random(1, 100) > 50)) { // check for really ready fetuses - 40 weeks - normal*/ + V.PC.labor = 1; + } else if (WombBirthReady(V.PC, V.PC.pregData.normalBirth / 1.1111) > 0 && (random(1, 100) > 90)) { // check for really ready fetuses - 36 weeks minimum */ + V.PC.labor = 1; + } + if (V.PC.labor === 1) { + if (V.PC.birthsTotal > 0) { + r.push(App.UI.DOM.makeElement("div", `<span class="red">A dull cramp runs down your middle.</span> You'll be giving birth soon.`)); + } else { + r.push(App.UI.DOM.makeElement("div", `You begin to experience <span class="red">odd cramps</span> in your lower body. Contractions, more than likely.`)); + } + } + /* + if (V.dangerousPregnancy === 1 && V.PC.labor !== 1) { + if (V.PC.pregAdaptation < 500) { + miscarriageChance = -10; + miscarriageChance += ((V.PC.bellyPreg / 1000) - V.PC.pregAdaptation); + r.push(` // this could use to not be linear`); + if (V.PC.inflation > 0) { + miscarriageChance += 10; + } + miscarriageChance -= (V.PC.curatives === 1 ? 100 : 0); + if (V.PC.health.health < -20) { + miscarriageChance -= (V.PC.health.health); + } else if (V.PC.health.health > 80) { + miscarriageChance -= (V.PC.health.health / 10); + } + if (V.PC.weight < -50) { + miscarriageChance -= (V.PC.weight); + } + if (V.PC.bellyAccessory === "a support band") { + miscarriageChance -= 30; + } + miscarriageChance = Math.round(miscarriageChance); + if (miscarriageChance > random(0, 100)) { + chance = random(1, 100); + if (V.PC.preg >= V.PC.pregData.normalBirth / 1.33) { + V.PC.labor = 1, V.birthee = 1; + miscarriage = 1; + } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.48) { + V.PC.labor = 1, V.PC.prematureBirth = 1; + miscarriage = 1; + } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.6 && chance > 10) { + V.PC.labor = 1, V.PC.prematureBirth = 1; + miscarriage = 1; + } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.73 && chance > 40) { + V.PC.labor = 1, V.PC.prematureBirth = 1; + miscarriage = 1; + } else if (V.PC.preg > V.PC.pregData.normalBirth / 1.81 && chance > 75) { + V.PC.labor = 1, V.PC.prematureBirth = 1; + miscarriage = 1; + } else { + r.push(`${His} overwhelmed body has <span class="orange">forced ${him} to miscarry,</span> possibly saving ${his} life.`); + V.PC.preg = 0; + if (V.PC.sexualFlaw === "breeder") { + r.push(`${He} is <span class="mediumorchid">filled with violent, all-consuming hatred</span> at ${himself} for failing to carry to term and you for allowing this to happen.`); + if (V.PC.pregType > 4) { + r.push(`The loss of so many children at once <span class="red">shatters the distraught breeder's mind.</span>`); + V.PC.fetish = "mindbroken", V.PC.behavioralQuirk = "none", V.PC.behavioralFlaw = "none", V.PC.sexualQuirk = "none", V.PC.sexualFlaw = "none", V.PC.devotion = 0, V.PC.trust = 0; + } else { + r.push(`${He} cares little for what punishment awaits ${his} actions.`); + V.PC.devotion -= 25 * V.PC.pregType; + } + } else if (V.PC.devotion < -50) { + r.push(`${He} is <span class="mediumorchid">filled with violent, consuming hatred</span> and <span class="gold">fear.</span> Even though ${he} knew ${his} bab`); + if (V.PC.pregType > 1) { + r.push(`ies were`); + } else { + r.push(`y was`); + } + r.push(` likely destined for a slave orphanage, it seems ${he} cared for `); + if (V.PC.pregType > 1) { + r.push(`them`); + } else { + r.push(`it`); + } + r.push(` and blames you for the loss.`); + V.PC.devotion -= 25, V.PC.trust -= 25; + } else if (V.PC.devotion < -20) { + r.push(`${He} is <span class="mediumorchid">afflicted by desperate, inconsolable grief</span> and <span class="gold">horror.</span> Even though ${he} knew ${his} bab`); + if (V.PC.pregType > 1) { + r.push(`ies were`); + } else { + r.push(`y was`); + } + r.push(` likely destined for a slave orphanage, it seems ${he} cared for `); + if (V.PC.pregType > 1) { + r.push(`them`); + } else { + r.push(`it`); + } + r.push(`.`); + V.PC.devotion -= 10, V.PC.trust -= 20; + } else if (V.PC.fetish === "pregnancy") { + r.push(`${He} is <span class="mediumorchid">filled with deep regret</span> and <span class="gold">fear.</span>`); + if (V.PC.fetishKnown === 1) { + r.push(`To a pregnancy fetishist, ending it like this hurts far worse than birth ever would.`); + } else { + r.push(`It appears ${he} was more attached to ${his} baby bump than ${he} let on and is hurting even more for it.`); + } + fetishModifier = V.PC.fetishStrength / 2; + V.PC.devotion -= 1 * fetishModifier, V.PC.trust -= 1 * fetishModifier; + } else if (V.PC.devotion <= 20) { + r.push(`${He} is <span class="mediumorchid">consumed by enduring sorrow</span> and <span class="gold">horror.</span> Even though ${he} knew ${his} bab`); + if (V.PC.pregType > 1) { + r.push(`ies were`); + } else { + r.push(`y was`); + } + r.push(` likely destined for a slave orphanage, it seems ${he} cared for `); + if (V.PC.pregType > 1) { + r.push(`them`); + } else { + r.push(`it`); + } + r.push(`.`); + V.PC.devotion -= 5, V.PC.trust -= 5; + } else if (V.PC.devotion <= 50) { + r.push(`${He} is dully obedient. ${He} has been broken to slave life so thoroughly that even this is neither surprising nor affecting.`); + } else { + r.push(`${He} is <span class="mediumorchid">disappointed by this development</span> and <span class="gold">afraid</span> of your reaction. By failing to carry to term, ${he} has failed your will.`); + V.PC.devotion -= 10, V.PC.trust -= 10; + } + TerminatePregnancy(V.PC); + actX(V.PC, "abortions"); + if (V.PC.abortionTat > -1) { + V.PC.abortionTat++; + r.push(`The temporary tattoo of a child has been replaced with ${his} `); + V.ordinalSuffix(V.PC.abortionTat) + r.push(` crossed out infant.`); + cashX(forceNeg(V.modCost), "slaveMod", V.PC); + } + miscarriage = 1; + } + } + } + if (V.seeExtreme === 1) { + if (miscarriage !== 1 && V.PC.bellyPreg >= 100000 && V.PC.geneMods.rapidCellGrowth !== 1) { + r.push(` // If ${he} can't relieve the pressure that way, will ${he} hold?`); + if (V.PC.bellyPreg >= 500000 || V.PC.wombImplant !== "restraint") { + if ((V.PC.belly > (V.PC.pregAdaptation * 3200)) || V.PC.bellyPreg >= 500000) { + burstChance = -80; + burstChance += ((V.PC.belly / 1000) - V.PC.pregAdaptation); + r.push(` // this could use to not be linear`); + if (V.PC.health.health < -20) { + burstChance -= (V.PC.health.health); + } else if (V.PC.health.health > 80) { + burstChance -= (V.PC.health.health / 10); + } + if (V.PC.weight < 0) { + burstChance -= V.PC.weight; + } + burstChance -= V.PC.bellySag; + burstChance -= V.PC.muscles; + if (V.PC.bellyAccessory === "a support band") { + burstChance -= 10; + } + if (V.PC.pregControl === "slow gestation") { + burstChance -= 20; + } + if (V.PC.assignment === "get treatment in the clinic") { + if (S.Nurse) { + burstChance -= 100; + } else { + burstChance -= 30; + } + } else if (V.PC.assignment === "work in the dairy" && V.dairyPregSetting === 3) { + burstChance -= 250; + } + if (V.PC.pregControl === "speed up") { + if (burstChance > 0) { + burstChance *= 4; + } + } + burstChance = Math.round(burstChance); + if (burstChance > random(0, 100)) { + V.PC.burst = 1; + } else { + r.push(`Constant <span class="red">`); + if (V.PC.geneticQuirks.uterineHypersensitivity === 2) { + r.push(`painful orgasms`); + } else { + r.push(`sharp pains`); + } + r.push(`</span> from ${his} womb strongly suggest <span class="red">${his} body is beginning to break.</span>`); + } + } + } + } + } + } + */ + } + } + App.Events.addParagraph(el, r); + return el; +}; diff --git a/src/endWeek/economics/reputation.js b/src/endWeek/economics/reputation.js new file mode 100644 index 0000000000000000000000000000000000000000..700859646e8394b4053a1de1cfea87e5d66cecb4 --- /dev/null +++ b/src/endWeek/economics/reputation.js @@ -0,0 +1,996 @@ +/** + * @returns {HTMLElement} + */ +App.EndWeek.reputation = function() { + const el = document.createElement("p"); + let r = []; + let _repLoss; + + if (V.useTabs === 0) { + App.UI.DOM.appendNewElement("h2", el, `Reputation`); + } + r.push(`On formal occasions, you are announced as ${PCTitle()}.`); + if (V.arcologies[0].FSChattelReligionist !== "unset") { + if (V.arcologies[0].FSChattelReligionistCreed === 1) { + r.push(`${V.arcologies[0].name} keeps the creed of the ${V.nicaea.name}. The faithful`); + if (V.nicaea.achievement === "slaves") { + if (V.slaves.length > 50) { + r.push(`<span class="green">strongly approve</span> of the large`); + FutureSocieties.Change("ChattelReligionist", 5); + } else if (V.slaves.length > 20) { + r.push(`<span class="green">approve</span> of the good`); + FutureSocieties.Change("ChattelReligionist", 2); + } else { + r.push(`are not impressed by the`); + } + r.push(`number of people you're giving the honor of sexual servitude.`); + } else if (V.nicaea.achievement === "devotion") { + if (V.averageDevotion > 80) { + r.push(`<span class="green">strongly approve</span> of the worshipfulness`); + FutureSocieties.Change("ChattelReligionist", 5); + } else if (V.averageDevotion > 50) { + r.push(`<span class="green">approve</span> of the devotion`); + FutureSocieties.Change("ChattelReligionist", 2); + } else { + r.push(`are not impressed by the devotion`); + } + r.push(`of your slaves.`); + } else { + if (V.averageTrust > 50) { + r.push(`<span class="green">strongly approve</span> of the great trust your slaves place in you.`); + FutureSocieties.Change("ChattelReligionist", 5); + } else if (V.averageTrust > 20) { + r.push(`<span class="green">approve</span> of the trust your slaves place in you.`); + FutureSocieties.Change("ChattelReligionist", 2); + } else { + r.push(`are not impressed by the fear many of your slaves feel towards you.`); + } + } + } + } + + let _repDecay = 0.05; + let _enduringRep = V.enduringRep; + if (V.arcologies[0].FSChattelReligionistLaw === 1) { + _enduringRep = Math.min(_enduringRep + 2000, 12000); + } + if (V.arcologies[0].FSRestartDecoration === 100) { + _enduringRep = Math.min(_enduringRep + 2000, 13000); + /* that 13000 is not a typo, it allows for some stacking of FSRestart and FSChattel */ + } + if (V.rep > _enduringRep) { + if (V.arcologies[0].FSMaturityPreferentialistLaw === 1) { + if (V.PC.actualAge >= 65) { + r.push(`Since you're getting on in years and have an impressive list of accomplishments, and ${V.arcologies[0].name}'s society respects age, your reputation degrades quite slowly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay - 0.0125)); + } else if (V.PC.actualAge >= 50) { + r.push(`Since you're well into middle age and have an impressive list of accomplishments, and ${V.arcologies[0].name}'s society respects age, your reputation degrades quite slowly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay - 0.0125)); + } else if (V.PC.actualAge < 35) { + r.push(`Since you're unusually young for an arcology owner, and ${V.arcologies[0].name}'s society respects age, your reputation degrades quite quickly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay + 0.0125)); + } else { + r.push(`Since you're only entering middle age, and ${V.arcologies[0].name}'s society respects age, your reputation degrades fairly quickly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay)); + } + } else if (V.arcologies[0].FSYouthPreferentialistLaw === 1) { + if (V.PC.actualAge >= 65) { + r.push(`Since you're getting on in years and have an impressive list of accomplishments, but ${V.arcologies[0].name}'s society is coming to prefer youth to experience, so your reputation degrades fairly quickly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay + 0.0125)); + } else if (V.PC.actualAge >= 50) { + r.push(`You're well into middle age and have an impressive list of accomplishments, but ${V.arcologies[0].name}'s society is coming to prefer youth to experience, so your reputation degrades fairly quickly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay + 0.0125)); + } else if (V.PC.actualAge < 35) { + r.push(`You're unusually young for an arcology owner, but ${V.arcologies[0].name}'s society doesn't mind.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay)); + } else { + r.push(`Since you're entering middle age, and ${V.arcologies[0].name}'s society respects youth, your reputation degrades fairly quickly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay + 0.0125)); + } + } else { + if (V.PC.actualAge >= 65) { + r.push(`Since you're getting on in years and have an impressive list of accomplishments, and ${V.arcologies[0].name}'s society respects age, your reputation degrades quite slowly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay - 0.0125)); + } else if (V.PC.actualAge >= 50) { + r.push(`Since you're well into middle age and have an impressive list of accomplishments, your reputation degrades fairly slowly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay - 0.0125)); + } else if (V.PC.actualAge < 35) { + r.push(`Since you're unusually young for an arcology owner, your reputation degrades fairly quickly.`); + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay + 0.0125)); + } else { + _repLoss = Math.trunc((V.rep - _enduringRep) * (_repDecay)); + } + } + if (V.arcologies[0].FSChattelReligionistLaw === 1) { + if (_repLoss > 100) { + _repLoss -= 100; + V.PC.degeneracy = 0; + } else { + _repLoss = 0; + V.PC.degeneracy = 0; + } + r.push(`Since you are the Prophet, your reputation degrades less.`); + } + if (V.arcologies[0].FSRestartDecoration === 100) { + if (_repLoss > 100) { + _repLoss -= 100; + V.PC.degeneracy = 0; + } else { + _repLoss = 100; + V.PC.degeneracy = 0; + } + r.push(`Since you are an established member of the Societal Elite, your public reputation degrades less.`); + } + if (_enduringRep > 8000) { + r.push(`However, you have been a figure of renown for so long that much of your reputation has become permanent.`); + } else if (_enduringRep > 5000) { + r.push(`However, you have been a figure of repute for enough time that part of your reputation has become permanent.`); + } else if (_enduringRep > 2000) { + r.push(`However, you have been a figure of regard for long enough that some of your reputation has become permanent.`); + } + if (_repLoss > 500 * (1 - (5 - V.baseDifficulty) / 10)) { + _repLoss = 500 * (1 - (5 - V.baseDifficulty) / 10); + } else if (_repLoss < 0) { + _repLoss = 0; + } + V.enduringRep += Math.trunc(1 + Math.pow((10000 - V.enduringRep) / 5770, 2) * _repLoss * 0.1); + } else { + if (V.arcologies[0].FSChattelReligionistLaw === 1 || V.arcologies[0].FSRestartDecoration === 100) { + V.PC.degeneracy = 0; + } + _repLoss = 0; + if (_enduringRep > 8000) { + r.push(`You have been a figure of renown for so long that your reputation does not decay past its present level.`); + } else if (_enduringRep > 5000) { + r.push(`You have been a figure of repute for enough time that your reputation does not decay past its present level.`); + } else if (_enduringRep > 2000) { + r.push(`You have been a figure of regard for long enough that your reputation does not decay past its present level.`); + } + } + + /* play games with overflow. Gains are calculated (and then sadly rounded) on previous pages but losses are calculated here, after the overflow happened. Let's borrow from the past.*/ + if (V.lastWeeksRepExpenses.overflow < 0) { + V.rep += Math.abs(V.lastWeeksRepExpenses.overflow); + V.lastWeeksRepExpenses.overflow = 0; + } + repX(forceNeg(_repLoss), "multiplier"); + + if (V.weatherAwareness === 0 && V.weatherCladding === 2) { + r.push(`The public <span class="green">is awestruck</span> of the beautiful weather hardening you have applied to the arcology's exterior, though they do not understand why you would waste so much money first ruining your arcology's appearance before doing this.`); + repX(10, "architecture"); + } else if (V.weatherAwareness === 0 && V.weatherCladding === 1) { + r.push(`The public <span class="red">disapproves</span> of the ugly weather hardening you have applied to the arcology's exterior, not understanding what you're worried about.`); + repX(-100, "architecture"); + } + + if (V.arcologies[0].FSRestartDecoration === 100) { + r.push(`As a member of the Societal Elite, your appearance has no bearing on your reputation.`); + } else { + if (V.PC.dick === 0 && V.PC.boobs >= 300 && V.PC.title === 0) { + if (V.rep > 18000) { + r.push(`Your reputation is so well-established that society has accepted your notoriously feminine appearance despite how unusual it is for a prominent slaveowner to look like you do.`); + if (V.arcologies[0].FSGenderRadicalist > 30) { + r.push(`Indeed, society sees you as entirely male, since you are powerful, and <span class="green">strongly approves</span> of your nonconformity; this advances the redefinition of gender around power.`); + FutureSocieties.Change("GenderRadicalist", 5); + } else if (V.arcologies[0].FSGenderFundamentalist > 30) { + r.push(`Indeed, society has been reconciled to female leadership, preferring to see you as a mother figure.`); + } + } else if (V.arcologies[0].FSGenderRadicalist > 40) { + r.push(`Society accepts you as an arcology owner, since it has become open-minded about power and gender.`); + if (V.arcologies[0].FSGenderRadicalist > 50) { + r.push(`Indeed, society sees you as fundamentally male, since you are powerful, and <span class="green">strongly approves</span> of your audacity; this advances the redefinition of gender around power.`); + FutureSocieties.Change("GenderRadicalist", 5); + } + } else { + r.push(`Most prominent slaveowners are male, and your obviously feminine appearance makes it <span class="red">harder for you to maintain your reputation.</span>`); + repX(forceNeg(Math.min((V.rep * 0.05), 500)), "PCappearance"); + if (V.arcologies[0].FSGenderFundamentalist > 10) { + r.push(`Society <span class="red">strongly resents</span> your being an arcology owner; this damages the idea that women should not be in positions of responsibility.`); + FutureSocieties.Change("GenderFundamentalist", -5); + } + } + } else if ((V.PC.boobs >= 300) || V.PC.title === 0) { + if (V.rep > 15000) { + r.push(`Your reputation is so strong that society has accepted your feminine appearance despite how unusual it is for a prominent slaveowner to look like you do.`); + if (V.arcologies[0].FSGenderRadicalist > 30) { + r.push(`Indeed, society sees you as entirely male, since you are powerful, and <span class="green">strongly approves</span> of your nonconformity; this advances the redefinition of gender around power.`); + FutureSocieties.Change("GenderRadicalist", 5); + } else if (V.arcologies[0].FSGenderFundamentalist > 30) { + r.push(`Indeed, society has been reconciled to your feminine appearance, seeing you as a person apart.`); + } + } else if (V.arcologies[0].FSGenderRadicalist > 20) { + r.push(`Society accepts you as an arcology owner, since it has become open-minded anyone who has a cock and fucks.`); + if (V.arcologies[0].FSGenderRadicalist > 30) { + r.push(`Indeed, society sees you as dominant, since you fuck bitches, and <span class="green">strongly approves</span> of your nonconformity; this advances the redefinition of gender around power.`); + FutureSocieties.Change("GenderRadicalist", 5); + } + } else { + r.push(`Most prominent slaveowners are very masculine, and your feminine appearance makes it <span class="red">harder for you to maintain your reputation.</span>`); + repX(forceNeg(Math.min((V.rep * 0.025), 250)), "PCappearance"); + if (V.arcologies[0].FSGenderFundamentalist > 30) { + r.push(`Society <span class="red">strongly resents</span> your being an arcology owner; this damages the idea that feminine people should not be in positions of responsibility.`); + FutureSocieties.Change("GenderFundamentalist", -5); + } + } + } else if ((V.PC.dick === 0) || (V.PC.vagina !== -1)) { + if (V.rep > 15000) { + r.push(`Your reputation is so strong that society has accepted your unorthodox arrangement downstairs, for an arcology owner.`); + if (V.arcologies[0].FSGenderRadicalist > 30) { + r.push(`Indeed, society sees you as entirely male, since you are powerful, and <span class="green">strongly approves</span> of your nonconformity; this advances the redefinition of gender around power.`); + FutureSocieties.Change("GenderRadicalist", 5); + } else if (V.arcologies[0].FSGenderFundamentalist > 30) { + r.push(`Indeed, society has been reconciled to your strangeness, seeing you as a person apart.`); + } + } else if (V.arcologies[0].FSGenderRadicalist > 20) { + r.push(`Society accepts you as an arcology owner, since it has become open-minded about the exact genital layout of powerful people.`); + if (V.arcologies[0].FSGenderRadicalist > 30) { + r.push(`Indeed, society sees you as dominant, since you are powerful, and <span class="green">strongly approves</span> of your nonconformity; this advances the redefinition of gender around power.`); + FutureSocieties.Change("GenderRadicalist", 5); + } + } else { + r.push(`Most prominent slaveowners are very masculine, and though your unorthodox arrangement downstairs isn't obvious when you're clothed, the rumors are unavoidable and it's <span class="red">harder for you to maintain your reputation.</span>`); + repX(forceNeg(Math.min((V.rep * 0.025), 250)), "PCappearance"); + if (V.arcologies[0].FSGenderFundamentalist > 30) { + r.push(`Society <span class="red">strongly resents</span> your being an arcology owner; this damages the idea that people who are not men should not be in positions of responsibility.`); + FutureSocieties.Change("GenderFundamentalist", -5); + } + } + } + } + + /* height block here */ + + if (V.arcologies[0].FSChattelReligionistLaw === 1 || V.arcologies[0].FSRestartDecoration === 100) { + /* already handled above */ + } else if (V.arcologies[0].FSIntellectualDependency !== "unset") { + if (V.PC.intelligence + V.PC.intelligenceImplant < -10) { + if (V.rep > 18000) { + r.push(`You've somehow built such a reputation for yourself that your lack of a brain is no longer a societal concern.`); + } else { + repX(forceNeg(Math.min((V.rep * 0.025), 100)), "PCappearance"); + r.push(`Society <span class="red">is uncomfortable</span> with just how slow you are. While they may find your mannerisms cute, it is not befitting of a leader.`); + } + } + } else if (V.arcologies[0].FSSlaveProfessionalism !== "unset") { + if (V.PC.intelligence + V.PC.intelligenceImplant < 100) { + if (V.rep > 18000) { + r.push(`You've built such a reputation for yourself that you not being a genius is no longer a societal concern.`); + } else { + repX(forceNeg(Math.min((V.rep * 0.05), 750)), "PCappearance"); + r.push(`Society <span class="red">strongly despises</span> being led by someone so easily outsmarted by even the slave population.`); + FutureSocieties.Change("SlaveProfessionalism", -10); + } + } + } else if (V.PC.intelligence + V.PC.intelligenceImplant <= 10) { + if (V.rep > 18000) { + r.push(`You've managed to build such a reputation for yourself that your lack of intelligence is no longer a societal concern.`); + } else { + repX(forceNeg(Math.min((V.rep * 0.05), 750)), "PCappearance"); + r.push(`Society <span class="red">is uncomfortable</span> being led by someone not smart. Your lack of intelligence brings your every action under scrutiny.`); + } + } else if (V.PC.intelligence + V.PC.intelligenceImplant <= 50) { + if (V.rep > 12000) { + r.push(`You've built such a reputation for yourself that your lack of intelligence is no longer a societal concern.`); + } else { + repX(forceNeg(Math.min((V.rep * 0.05), 500)), "PCappearance"); + r.push(`Society <span class="red">is uncomfortable</span> being led by someone not very smart. Your lack of intelligence brings your every action under scrutiny.`); + } + } + + if (V.policies.sexualOpenness === 1) { + if (V.arcologies[0].FSChattelReligionistLaw === 1 || V.arcologies[0].FSRestartDecoration === 100) { + /* already handled above */ + } else { + if (V.arcologies[0].FSGenderRadicalist !== "unset") { + if (V.rep > 18000) { + r.push(`You are so well regarded that society has acquiesced that getting penetrated is not a sure sign of femininity.`); + } else { + r.push(`Society views getting fucked as sign of femininity and is <span class="red">strongly against your sexual preferences.</span>`); + FutureSocieties.Change("GenderRadicalist", -1); + repX(-1000, "PCactions"); + } + } else if (V.arcologies[0].FSGenderFundamentalist !== "unset" && V.PC.vagina !== -1 && V.PC.title === 0) { + if (V.rep > 10000) { + r.push(`Society has grown accustomed to your efforts enough to not care that you enjoy slave dick. In fact, it even <span class="green">strengthens</span> traditional gender roles, even though you insist on breaking them.`); + FutureSocieties.Change("GenderFundamentalist", 1); + } else { + r.push(`Society wonders if you would be happier in a whore house getting fucked all day instead of trying to lead an arcology. Your efforts <span class="red">strongly support</span> the idea that women should not be in positions of responsibility.`); + FutureSocieties.Change("GenderFundamentalist", -3); + repX(-1000, "PCactions"); + } + } else { + if (V.rep > 15000) { + r.push(`You are so well liked that society has accepted that you enjoy taking everything a slave has to offer.`); + } else { + r.push(`Society finds your penchant for taking slave dick <span class="red">very distasteful</span> for a slaveowner.`); + repX(-500, "PCactions"); + } + } + } + } + + if (V.secExpEnabled > 0) { + if (V.SecExp.smilingMan.progress === 20) { + r.push(`The grim statue of the Smiling Man outside your arcology <span class="green">reminds the world of who managed to eliminate such a threat.</span>`); + repX(100, "architecture"); + } + + if (V.SecExp.edicts.weaponsLaw === 3) { + r.push(`The absence of any kind of restriction on weaponry within your arcology is <span class="green">welcomed by your citizens</span> as sign of your respect for the ideals the Free Cities stand for.`); + repX(20, "edicts"); + } + } + + if (V.SF.Toggle && V.SF.Active >= 1 && V.SF.UC.Assign > 0) { + const sfArray = []; + sfArray.push(`Assigning a`); + if (V.SF.UC.Assign === 1) { + sfArray.push(`small`); + } else { + sfArray.push(`large`); + } + sfArray.push(`portion of ${V.SF.Lower} to <span class="green">undercover work, slightly boosts your reputation.</span>`); + App.Events.addNode(el, sfArray, "div"); + let _value; + if (V.SF.UC.Assign === 1) { + _value = V.SF.ArmySize * 0.05; + } else { + _value = V.SF.ArmySize * 0.25; + } + repX(_value, "specialForces"); + } else if (V.SF.FS.BadOutcome === "ISOLATION") { + r.push(App.UI.DOM.makeElement("div", `Your citizens are <span class="red">very displeased</span> that you are hosting a legion of heavily armed squatters in your basement.`)); + repX(forceNeg(V.SF.ArmySize + App.SF.upgrades.total()), "specialForces"); + } + + if (V.arcologies[0].FSSupremacist !== "unset") { + if (V.PC.race === V.arcologies[0].FSSupremacistRace) { + r.push(`Since you are a member of the ${V.PC.race} race, society <span class="green">strongly approves</span> of your ownership of the arcology.`); + FutureSocieties.Change("Supremacist", 5); + } + } else if (V.arcologies[0].FSSubjugationist !== "unset") { + if (V.PC.race === V.arcologies[0].FSSubjugationistRace) { + if (V.rep > 15000) { + r.push(`Your reputation is so strong that society has accepted your ${V.PC.race}ness despite you being an inferior race.`); + } else { + r.push(`Society <span class="red">loathes;</span> being lead by an inferior ${V.PC.race}, believing that any other race would make a far better leader than you.`); + repX(forceNeg(200 * (V.arcologies[0].FSSubjugationist / V.FSLockinLevel)), "PCappearance"); + } + } + } + + if (V.arcologies[0].FSAssetExpansionist !== "unset") { + if (V.PC.boobs >= 1400) { + r.push(`Society loves enormous breasts and you are no exception; your`); + if (V.PC.boobsImplant > 0) { + r.push(`chest balloons`); + } else { + r.push(`cow tits`); + } + r.push(`<span class="green">improve</span> your public image.`); + repX(10, "PCappearance"); + } + if (V.PC.butt >= 5) { + r.push(`Society loves big butts and you are no exception; your`); + if (V.PC.buttImplant > 0) { + r.push(`inflated ass`); + } else { + r.push(`fat ass`); + } + r.push(`<span class="green">improves</span> your public image.`); + repX(10, "PCappearance"); + } + if (V.PC.balls >= 9) { + r.push(`Society loves big things and the bulge in your crotch is no exception; your swollen balls <span class="green">improve</span> your public image.`); + repX((5 * V.PC.ballsImplant), "PCappearance"); + } + } else if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") { + if (V.PC.boobs >= 1000) { + r.push(`Society finds big breasts unsightly and you are no exception; your`); + if (V.PC.boobsImplant > 0) { + r.push(`chest balloons`); + } else { + r.push(`fat tits`); + } + r.push(`<span class="red">harm</span> your public image.`); + repX(forceNeg((V.PC.boobs / 100) * 3), "PCappearance"); + } + if (V.PC.butt >= 5) { + r.push(`Society finds big butts unsightly and you are no exception; your`); + if (V.PC.buttImplant > 0) { + r.push(`inflated ass`); + } else { + r.push(`fat ass`); + } + r.push(`<span class="red">harms</span> your public image.`); + repX(forceNeg(10 * V.PC.butt), "PCappearance"); + } + } + + if (V.arcologies[0].FSTransformationFetishist !== "unset") { + if (V.PC.boobsImplant > 0) { + r.push(`Society loves fake breasts and yours are no exception; your breast implants <span class="green">improve</span> your public image.`); + repX((V.PC.boobsImplant / 5), "PCappearance"); + } + if (V.PC.buttImplant > 0) { + r.push(`Society loves fake butts and yours are no exception; your ass implants <span class="green">improve</span> your public image.`); + repX((7 * V.PC.buttImplant), "PCappearance"); + } + if (V.PC.ballsImplant > 0) { + r.push(`Society loves everything augmented and the bulge in your crotch is no exception; your swollen balls <span class="green">improve</span> your public image.`); + repX((5 * (V.PC.ballsImplant)), "PCappearance"); + } + if (V.arcologies[0].FSRepopulationFocus !== "unset") { + if (V.PC.boobs >= 1000 && V.PC.boobsImplant === 0) { + r.push(`Society approves of anything that helps the repopulation efforts. Your large breasts promise plentiful milk and <span class="green">improve</span> your public image.`); + repX((V.PC.boobs / 50), "PCappearance"); + } + if (V.PC.balls >= 5) { + r.push(`Society loves anything that helps the repopulation efforts. Your huge fertile balls indicate that you're a successful breeder and <span class="green">strongly improves</span> your public image.`); + repX((15 * V.PC.balls), "PCappearance"); + } + } + } else if (V.arcologies[0].FSBodyPurist !== "unset") { + if (V.PC.boobsImplant !== 0) { + r.push(`Society finds fake breasts repulsive and yours are no exception; your balloon-like breasts <span class="red">harm</span> your public image.`); + repX(forceNeg(V.PC.boobsImplant / 10), "PCappearance"); + } + if (V.PC.buttImplant > 0) { + r.push(`Society finds fake butts unsightly and yours is no exception; your inflated ass <span class="red">harms</span> your public image.`); + repX(forceNeg(10 * V.PC.buttImplant), "PCappearance"); + } + if (V.PC.ballsImplant > 0) { + r.push(`Society finds everything unnatural disgusting and the grotesque bulge in your crotch is no exception; your gel filled balls <span class="red">harm</span> your public image.`); + repX(forceNeg(10 * V.PC.ballsImplant), "PCappearance"); + } + if (V.arcologies[0].FSRepopulationFocus !== "unset" && V.PC.boobs >= 1000 && V.PC.boobsImplant === 0) { + r.push(`Society approves of anything that helps the repopulation efforts. Your large breasts promise plentiful milk and <span class="green">improve</span> your public image.`); + repX((V.PC.boobs / 50), "PCappearance"); + } + } else if ((V.arcologies[0].FSRepopulationFocus !== "unset")) { + if (V.PC.boobs >= 1000 && V.PC.boobsImplant === 0) { + r.push(`Society approves of anything that helps the repopulation efforts. Your large breasts promise plentiful milk and <span class="green">improve</span> your public image.`); + repX((V.PC.boobs / 50), "PCappearance"); + } + if (V.PC.balls >= 5) { + r.push(`Society loves anything that helps the repopulation efforts. Your huge fertile balls indicate that you're a successful breeder and <span class="green">strongly improves</span> your public image.`); + repX((5 * (V.PC.balls)), "PCappearance"); + } + } + + if ( + (V.PC.belly >= 1500) || + (V.PC.career === "escort" && V.PC.belly >= 500 && V.PC.preg > 0) + ) { + if (V.arcologies[0].FSRestart !== "unset") { + if (V.arcologies[0].FSRestartDecoration === 100) { + if (V.PC.pregSource !== -1 && V.PC.pregSource !== -6) { + r.push(`Most prominent female owners avoid being penetrated on`); + if (V.policies.sexualOpenness === 1) { + r.push(`principle, though you choose the opposite; your fecund figure suggests a slave knocked you up, a huge`); + } else { + r.push(`principle; your fecund figure exposes not only your willingness to be penetrated, but your`); + } + r.push(`breach of eugenics. Your citizens are <span class="red">livid</span> over your actions and are calling for your removal.`); + repX(-500, "PCactions"); + if (V.eugenicsFullControl !== 1) { + V.failedElite += 100; + } + } else { + r.push(`Since it is public knowledge that you are carrying a child in the name of eugenics, society views you as a bearer of the future and <span class="green">celebrates</span> your contributions to society.`); + repX(200, "PCappearance"); + V.failedElite -= 10; + } + } else { + if (V.PC.pregSource !== -1 && V.PC.pregSource !== -6) { + r.push(`Most prominent female owners avoid being penetrated on`); + if (V.policies.sexualOpenness === 1) { + r.push(`principle, though you choose the opposite; your fecund figure suggests a slave knocked you up, a huge`); + } else { + r.push(`principle; your fecund figure exposes not only your willingness to be penetrated, but your`); + } + r.push(`breach of the eugenics you are pushing for. Your citizens are <span class="red">disgusted</span> by both your body and your lack of commitment.`); + repX(-500, "PCactions"); + if (V.eugenicsFullControl !== 1) { + V.failedElite += 50; + } + } else { + r.push(`Since it is public knowledge that you are carrying a child in the name of eugenics, society views you as a bearer of modernity and <span class="green">commends</span> your contributions to society.`); + repX(200, "PCappearance"); + V.failedElite -= 5; + } + } + } else if (V.arcologies[0].FSRepopulationFocus >= 60) { + r.push(`Most prominent female owners avoid being penetrated on principle, but your arcology values motherhood so much that it is more <span class="green">pleased</span> with your dedication than it is disappointed in your`); + if (V.policies.sexualOpenness === 1) { + r.push(`suspected slave baby.`); + } else { + r.push(`penetration.`); + } + repX(10, "PCappearance"); + } else { + r.push(`Most prominent female owners avoid being penetrated on`); + if (V.policies.sexualOpenness === 1) { + r.push(`principle, though you choose the opposite; your fecund figure suggests a slave knocked you up,`); + } else { + r.push(`principle; your fecund figure exposes your willingness to be penetrated,`); + } + r.push(`making it <span class="red">harder for you to maintain your reputation.</span>`); + repX(-200, "PCactions"); + } + } + + if (V.PC.career === "escort" && V.rep < 16000) { + r.push(`Society <span class="red">frowns</span> over being run by an ex-whore. The presence of porn of you on the net doesn't aid your reputation either.`); + repX(forceNeg(Math.min((V.rep * 0.05), 500)), "PCactions"); + } else if (V.PC.career === "escort") { + r.push(`Your reputation is so strong that society has accepted your previous endeavors despite how unusual it is for a prominent slaveowner to have once nearly been a slave.`); + } + if (V.PC.career === "servant" && V.rep < 12000) { + r.push(`Society <span class="red">frowns</span> over being run by an ex-`); + if (V.PC.title === 1) { + r.push(`butler,`); + } else { + r.push(`maid,`); + } + r.push(`despite how prominent their previous owner was.`); + repX(forceNeg(Math.min((V.rep * 0.05), 500)), "PCactions"); + } else if (V.PC.career === "servant") { + r.push(`Your reputation is so strong that society has accepted your previous vocation despite how unusual it is for a prominent slaveowner to have once been nothing more than a lowly servant.`); + } + if (V.PC.career === "gang" && V.rep < 15000) { + r.push(`Society <span class="red">frowns</span> over being run by an ex-gang leader, no matter how strong they might have been.`); + repX(forceNeg(Math.min((V.rep * 0.05), 500)), "PCactions"); + } else if (V.PC.career === "BlackHat" && V.rep < 15000) { + r.push(`Society <span class="red">dislikes</span> being run by someone so capable of dredging up secrets, especially when they used to do it for the highest bidder.`); + repX(forceNeg(Math.min((V.rep * 0.05), 500)), "PCactions"); + } else if (V.PC.career === "gang" || V.PC.career === "BlackHat") { + r.push(`Your reputation is strong enough that society has come to accept your background as part of your image.`); + } + + if (V.PCSlutContacts === 2) { + r.push(`You are actively starring in pornographic videos. While they are rather exclusive, <span class="red">some still leak out to the public,</span> harming your image.`); + repX(-50, "PCactions"); + if (canGetPregnant(V.PC)) { + r.push(`That's not all that leaks out of you, considering all your shoots are rubber free.`); + r.push(knockMeUp(V.PC, 20, 0, -5, true)); + } + } + + if (V.arcologies[0].FSRomanRevivalist !== "unset") { + if (V.mercenaries > 0) { + r.push(`Society <span class="green">approves</span> of how you are providing for the defense of the state, as should all citizens of the new Rome.`); + FutureSocieties.Change("RomanRevivalist", V.mercenaries); + } + if (V.slaves.length > 20 && V.cash > 50000) { + r.push(`Society <span class="green">strongly approves</span> of your wealth and prosperity, fit goals for the`); + if (V.PC.customTitle) { + r.push(`${V.PC.customTitle}`); + } else if (V.PC.title === 1) { + r.push(`new Roman man.`); + } else { + r.push(`rising Roman lady.`); + } + FutureSocieties.Change("RomanRevivalist", 5); + } + if (V.language !== "Latin") { + r.push(`Continuing to use ${V.language} as the lingua franca of ${V.arcologies[0].name} rather than the storied Latin <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); + FutureSocieties.Change("RomanRevivalist", -2); + } + } else if (V.arcologies[0].FSAztecRevivalist !== "unset") { + if (V.PC.visualAge >= 35) { + r.push(`Society <span class="green">approves</span> of your advancing age, which advances the ancient Aztec ideal of an experienced leader of the people.`); + FutureSocieties.Change("AztecRevivalist", 1); + } + if (V.HeadGirlID === 0) { + r.push(`Society <span class="red">disapproves</span> of you not having a Head Girl as an advisor and assistant.`); + FutureSocieties.Change("AztecRevivalist", -2); + } else { + r.push(`Society <span class="green">approves</span> of your reliance on a Head Girl as an advisor and assistant.`); + FutureSocieties.Change("AztecRevivalist", 2); + } + if (V.PC.skill.warfare < 0) { + r.push(`Society <span class="red">greatly disapproves</span> of your feebleness in the arts of war.`); + FutureSocieties.Change("AztecRevivalist", -4); + } else if (V.PC.skill.warfare < 50) { + r.push(`Society <span class="red">disapproves</span> of you not being properly trained in the arts of war.`); + FutureSocieties.Change("AztecRevivalist", -2); + } else { + r.push(`Society <span class="green">approves</span> of having a leader that is trained in the arts of war.`); + FutureSocieties.Change("AztecRevivalist", 2); + } + if (V.language !== "Nahuatl") { + r.push(`Continuing to use ${V.language} as the lingua franca of ${V.arcologies[0].name} rather than the revived Nahuatl <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); + FutureSocieties.Change("AztecRevivalist", -3); + } + } else if (V.arcologies[0].FSNeoImperialist !== "unset") { + if (V.mercenaries > 0) { + r.push(`Society <span class="green">approves</span> of your strong militarism and elite mercenaries, as your tradition of Imperial conquest glorifies military success above all else.`); + FutureSocieties.Change("NeoImperialist", V.mercenaries); + } + if (V.slaves.length > 20 && V.cash > 50000) { + r.push(`Society <span class="green">strongly approves</span> of your great wealth and prosperity, as is only fitting for an`); + if (V.PC.customTitle) { + r.push(`${V.PC.customTitle}`); + } else if (V.PC.title === 1) { + r.push(`proper Imperial noble.`); + } else { + r.push(`graceful Imperial noble.`); + } + FutureSocieties.Change("NeoImperialist", 5); + } + if (V.cash < 1000) { + r.push(`Society <span class="red">disapproves</span> of your poverty; it is viewed as completely unbefitting for an Imperial ruler to have so little cash on hand, and indicative of weakness in your rule.`); + FutureSocieties.Change("NeoImperialist", -2); + } + if (V.PC.skill.warfare < 0) { + r.push(`Society <span class="red">greatly disapproves</span> of your weakness in combat. The core duty of any Imperial noble is to fight, and your failure to understand the art of war is an unacceptable weakness.`); + FutureSocieties.Change("NeoImperialist", -4); + } else if (V.PC.skill.warfare < 50) { + r.push(`Society <span class="red">disapproves</span> of you lacking training in the art of warfare, as fighting is a core duty of any Imperial noble.`); + FutureSocieties.Change("NeoImperialist", -2); + } else { + r.push(`Society <span class="green">approves</span> of having a leader who is a capable warrior. Your strength in battle is seen proof of your indisputable right to rule.`); + FutureSocieties.Change("NeoImperialist", 2); + } + } else if (V.arcologies[0].FSEgyptianRevivalist !== "unset") { + const _racialVarieties = new Set(V.slaves.map((s) => s.race)); + if (_racialVarieties.size > 4) { + r.push(`Society <span class="green">strongly approves</span> of how you own a cornucopia of different races, which advances the ancient Egyptian ideal of cosmopolitan sex slavery.`); + FutureSocieties.Change("EgyptianRevivalist", 5); + } + if (V.language !== "Ancient Egyptian") { + r.push(`Continuing to use ${V.language} as the lingua franca of V.arcologies[0].name rather than revived Ancient Egyptian <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); + FutureSocieties.Change("EgyptianRevivalist", -2); + } + } else if (V.arcologies[0].FSEdoRevivalist !== "unset") { + const _threshold = Math.trunc(V.rep / 2000); + if (V.publicServants <= _threshold) { + r.push(`Society <span class="red">disapproves</span> of your failure to provide for cultural development by offering public servants or club slaves in a number that befits your reputation.`); + FutureSocieties.Change("EdoRevivalist", -2); + } else { + r.push(`Society <span class="green">approves</span> of your provision for cultural development by offering public servants and club slaves in a number that befits your reputation.`); + FutureSocieties.Change("EdoRevivalist", 2); + } + if (V.language !== "Japanese") { + r.push(`Continuing to use ${V.language} as the lingua franca of ${V.arcologies[0].name} rather than pure Japanese <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); + FutureSocieties.Change("EdoRevivalist", -2); + } + } else if (V.arcologies[0].FSArabianRevivalist !== "unset") { + if (V.fuckSlaves < V.rep / 3500) { + r.push(`Society <span class="red">disapproves</span> of the small size of your harem, feeling that you do not have enough fucktoys or slaves in your master suite for your reputation.`); + FutureSocieties.Change("ArabianRevivalist", -2); + } else { + r.push(`Society <span class="green">approves</span> of the size of your harem, feeling that you have a good number of fucktoys and slaves in your master suite for your reputation.`); + FutureSocieties.Change("ArabianRevivalist", 2); + } + if (V.language !== "Arabic") { + r.push(`Continuing to use ${V.language} as the lingua franca of ${V.arcologies[0].name} rather than the Arabic in which the word of God was passed to Muhammad <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); + FutureSocieties.Change("ArabianRevivalist", -2); + } + } else if (V.arcologies[0].FSChineseRevivalist !== "unset") { + if (V.HeadGirlID === 0) { + r.push(`Society <span class="red">disapproves</span> of your failure to rely on a Head Girl, as proper imperial administration requires,`); + FutureSocieties.Change("ChineseRevivalist", -2); + } else { + r.push(`Society <span class="green">approves</span> of your reliance on a Head Girl, as proper imperial administration requires,`); + FutureSocieties.Change("ChineseRevivalist", 2); + } + if (V.RecruiterID === 0) { + r.push(`<span class="red">disapproves</span> of your failure to maintain a Recruiter to expand the Middle Kingdom,`); + FutureSocieties.Change("ChineseRevivalist", -2); + } else { + r.push(`<span class="green">approves</span> of your maintaining a Recruiter to expand the Middle Kingdom,`); + FutureSocieties.Change("ChineseRevivalist", 2); + } + if (V.BodyguardID === 0) { + r.push(`and <span class="red">disapproves</span> of your failure to keep a Bodyguard as befits a proper imperial palace.`); + FutureSocieties.Change("ChineseRevivalist", -2); + } else { + r.push(`and <span class="green">approves</span> of your keeping a Bodyguard, as befits a proper imperial palace.`); + FutureSocieties.Change("ChineseRevivalist", 2); + } + if (V.language !== "Chinese") { + r.push(`Continuing to use ${V.language} as the lingua franca of ${V.arcologies[0].name} rather than the Chinese of the Middle Kingdom <span class="red">disappoints</span> society and causes doubt about your revivalist project.`); + FutureSocieties.Change("ChineseRevivalist", -2); + } + } + + let _noEugenics; + let _yesEugenics; + if (V.arcologies[0].FSRepopulationFocus !== "unset") { + if (policies.countEugenicsSMRs() > 0) { + r.push(`Society <span class="red">disapproves</span> of your policies sterilizing potential mothers. Your insistence on eugenics hinders adoption of your new society.`); + _noEugenics = -1 * policies.countEugenicsSMRs(); + FutureSocieties.Change("RepopulationFocus", _noEugenics); + } + } else if (V.arcologies[0].FSPaternalist !== "unset") { + if (policies.countEugenicsSMRs() > 0) { + r.push(`Society <span class="red">disapproves</span> of your policies forcefully sterilizing slaves, especially when they snuff out the life growing within them.`); + _noEugenics = -1 * policies.countEugenicsSMRs(); + FutureSocieties.Change("Paternalist", _noEugenics); + } + } else if ((V.arcologies[0].FSRestart !== "unset") && V.arcologies[0].FSPaternalist === "unset") { + if (policies.countEugenicsSMRs() > 0 && V.arcologies[0].FSRestartSMR !== 1) { + r.push(`Society <span class="green"> approves</span> of your slave eugenics policies, easing them into more thorough eugenics.`); + _yesEugenics = policies.countEugenicsSMRs(); + FutureSocieties.Change("Eugenics", _yesEugenics); + V.failedElite -= (1 * policies.countEugenicsSMRs()); + } else if (V.arcologies[0].FSRestartSMR === 1) { + V.failedElite -= (2 * policies.countEugenicsSMRs()); + } + } + + if (V.arcologies[0].FSRepopulationFocus !== "unset" && V.birthsTotal > 0) { + r.push(`The number of children you've brought into the world <span class="green">pleases</span> your citizens.`); + if (V.birthsTotal < 1000) { + repX(V.birthsTotal, "PCactions"); + } else { + repX(1000, "PCactions"); + } + } + + if (V.shelterAbuse > 5) { + if (V.arcologies[0].FSPaternalist !== "unset") { + r.push(`You are on the Slave Shelter's public list of abusive slaveowners. Society <span class="red">disapproves</span> of your falling foul of such a well regarded charity.`); + FutureSocieties.Change("Paternalist", -2); + } else if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`You are on the Slave Shelter's public list of abusive slaveowners. Your citizens find this hilarious, and <span class="green">approve</span> of your taking advantage of a pack of idiots.`); + FutureSocieties.Change("Degradationist", 2); + } + } + + if (V.TCR.schoolPresent === 1) { + if (V.arcologies[0].FSRestart !== "unset") { + r.push(`Your Eugenics focused society <span class="red">disagrees</span> with the local branch of The Cattle Ranch's views on slave breeding. Until society sees them as nothing more than mindless cattle and not human, they are in conflict with current reproduction standards.`); + FutureSocieties.Change("Eugenics", -1); + } else if (V.arcologies[0].FSPaternalist !== "unset") { + r.push(`While they can't stop what happens to slaves outside of your arcology, they can <span class="red">disapprove and protest</span> you allowing a branch of the mentally and physically abusive Cattle Ranch to be established in your arcology.`); + FutureSocieties.Change("Paternalist", -2); + } + } + + if (V.policies.cash4Babies === 1) { + if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`Society <span class="green">approves</span> of your poor treatment of slave infants.`); + repX(5 * V.FSSingleSlaveRep * (V.arcologies[0].FSDegradationist / V.FSLockinLevel), "babyTransfer"); + } else if (V.arcologies[0].FSRestart !== "unset") { + if (V.eugenicsFullControl !== 1) { + r.push(`The Societal Elite <span class="red">strongly disapproves</span> of your creating an economic incentive for the lower classes to breed and sell infants, holding back acceptance of your new society.`); + V.failedElite += 5; + } else { + r.push(`Society <span class="red">strongly disapproves</span> of your creating an economic incentive for the lower classes to breed and sell infants, holding back acceptance of your new society.`); + } + V.arcologies[0].FSRestart -= V.FSSingleSlaveRep; + repX(forceNeg((5 * V.FSSingleSlaveRep * (V.arcologies[0].FSRestart / V.FSLockinLevel)) + (V.rep / 40)), "babyTransfer"); + } else if (V.arcologies[0].FSPaternalist !== "unset") { + r.push(`Society <span class="red">greatly despises</span> your poor treatment of slave infants.`); + repX(forceNeg((25 * V.FSSingleSlaveRep * (V.arcologies[0].FSPaternalist / V.FSLockinLevel)) + (V.rep / 20)), "babyTransfer"); + } else if (V.arcologies[0].FSRepopulationFocus !== "unset") { + r.push(`Society <span class="red">disapproves</span> of your poor treatment of your future population, holding back acceptance of your new society.`); + V.arcologies[0].FSRepopulationFocus -= V.FSSingleSlaveRep; + repX(forceNeg((5 * V.FSSingleSlaveRep * (V.arcologies[0].FSRepopulationFocus / V.FSLockinLevel)) + (V.rep / 20)), "babyTransfer"); + } else { + r.push(`Your citizens <span class="red">disapprove</span> of your poor treatment of slave children.`); + repX(forceNeg(V.rep / 20), "babyTransfer"); + } + } + + if (V.policies.mixedMarriage === 1) { + r.push(`Your citizens`); + if (V.arcologies[0].FSPaternalist >= 80) { + r.push(`are so paternalistic that they <span class="green">approve</span> of`); + FutureSocieties.Change("Paternalist", 2); + } else if (V.arcologies[0].FSPaternalist >= 40) { + r.push(`are paternalistic enough to tolerate`); + } else { + r.push(`<span class="red">disapprove</span> of`); + repX(-50, "PCactions"); + } + r.push(`your support for marriage between citizens and slaves.`); + } + + let _care; + if (V.citizenOrphanageTotal > 0) { + if (V.arcologies[0].FSPaternalist !== "unset") { + r.push(`The public <span class="green">approves</span> of the way you're providing for ${V.citizenOrphanageTotal} of your slaves' children to be raised as citizens.`); + FutureSocieties.Change("Paternalist", V.citizenOrphanageTotal); + if (V.privateOrphanageTotal > 0) { + r.push(`Raising ${num(V.privateOrphanageTotal)} of your slaves' children privately is considered even more <span class="green">impressive.</span>`); + _care = V.privateOrphanageTotal * 2; + FutureSocieties.Change("Paternalist", _care); + } + } else if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`The public <span class="red">disapproves</span> of the way you're providing for ${V.citizenOrphanageTotal} of your slaves' children to be raised as citizens.`); + _care = -V.citizenOrphanageTotal; + FutureSocieties.Change("Degradationist", _care); + if (V.privateOrphanageTotal > 0) { + r.push(`Fortunately your raising slaves' children privately is not publicly known.`); + } + } + } else if (V.privateOrphanageTotal > 0) { + if (V.arcologies[0].FSPaternalist !== "unset") { + r.push(`Raising ${num(V.privateOrphanageTotal)} of your slaves' children privately is considered extremely <span class="green">impressive.</span>`); + _care = V.privateOrphanageTotal * 2; + FutureSocieties.Change("Paternalist", _care); + } else if (V.arcologies[0].FSDegradationist !== "unset") { + r.push(`Fortunately your raising slaves' children privately is not publicly known.`); + } + } + if (V.breederOrphanageTotal > 0 && V.arcologies[0].FSRepopulationFocus !== "unset") { + r.push(`The public <span class="green">approves</span> of the way you've dedicated ${num(V.breederOrphanageTotal)} of your slaves' children to be raised into future breeders.`); + const _futureBreeders = Math.round(((V.breederOrphanageTotal / 100) + 1)); + FutureSocieties.Change("RepopulationFocus", _futureBreeders); + } + + if (V.arcologies[0].FSNull !== "unset") { + r.push(`Your cultural openness <span class="green">helps your reputation,</span> since few citizens have disputes with your permissive approach.`); + repX(50 * V.FSSingleSlaveRep * (V.arcologies[0].FSNull / V.FSLockinLevel), "policies"); + } + + if (V.arcologies[0].FSRestartLaw === 1) { + r.push(`Your laws requiring the non-elite to pay additional taxes or be sterilized <span class="red">agitates</span> some of your citizens, but they don't matter. Only your <span class="green">pleased</span> elite do.`); + repX(-100, "policies"); + V.failedElite -= 1; + } + + if (V.arcologies[0].FSHedonisticDecadenceLaw === 1) { + r.push(`The burgeoning prosperity brought on by new business through your policies <span class="green">builds your reputation,</span> since nearly every citizen has something available to satisfy their cravings.`); + repX(100, "policies"); + } + + if (V.arcologies[0].FSIntellectualDependencyLaw === 1) { + r.push(`The protections you have in place to protect invalids <span class="green">adds to your reputation,</span> since every citizen will eventually find themselves benefitting from it.`); + repX(100, "policies"); + } + + if (V.policies.SMR.frigiditySMR === 1) { + r.push(`Your market regulations regarding slave sex drives <span class="red">outrages</span> your citizens seeking sex slaves, since only slaves disinterested in sex are available.`); + repX(-250, "policies"); + } + + if (V.PC.degeneracy > 0) { + if (V.PC.degeneracy > 100) { + r.push(`There are <span class="red">severe and devastating rumors</span> about you spreading across the arcology.`); + repX(forceNeg(100 * V.PC.degeneracy), "PCactions"); + V.enduringRep = 0; + } else if (V.PC.degeneracy > 75) { + r.push(`There are <span class="red">severe rumors</span> about you spreading across the arcology.`); + repX(forceNeg(20 * V.PC.degeneracy), "PCactions"); + } else if (V.PC.degeneracy > 50) { + r.push(`There are <span class="red">bad rumors</span> about you spreading across the arcology.`); + repX(forceNeg(10 * V.PC.degeneracy), "PCactions"); + } else if (V.PC.degeneracy > 25) { + r.push(`There are <span class="red">rumors</span> about you spreading across the arcology.`); + repX(forceNeg(5 * V.PC.degeneracy), "PCactions"); + } else if (V.PC.degeneracy > 10) { + r.push(`There are <span class="red">minor rumors</span> about you spreading across the arcology.`); + repX(forceNeg(2 * V.PC.degeneracy), "PCactions"); + } else { + r.push(`The occasional rumor about you can be heard throughout the arcology.`); + repX(forceNeg(1 * V.PC.degeneracy), "PCactions"); + } + } + + if (V.FCNNstation === 1) { + r.push(`Playing host to the Free Cities News Network brings <span class="green">approval</span> from those who still consider freedom of the press a virtue.`); + repX(500, "policies"); + } + + if (V.secExpEnabled > 0 && V.SecExp.buildings.propHub && V.SecExp.buildings.propHub.upgrades.fakeNews > 0) { + r.push(`The authenticity department produces and distributes copious amounts of plausible enough news and reports, <span class="green">increasing your reputation.</span>`); + repX(10 * V.SecExp.buildings.propHub.upgrades.fakeNews, "policies"); + } + + App.Events.addParagraph(el, r); + r = []; + const _repGain = hashSum(V.lastWeeksRepIncome); + _repLoss = hashSum(V.lastWeeksRepExpenses); + if (_repGain > _repLoss) { + r.push(App.UI.DOM.makeElement("span", `Your reputation increased this week.`, "green")); + } else if (_repGain < _repLoss) { + r.push(App.UI.DOM.makeElement("span", `Your reputation decreased this week.`, "red")); + } + + + if (isNaN(V.rep)) { + r.push(App.UI.DOM.makeElement("p", `Error: rep is outside accepted range, please report this issue`, "red")); + } + + if (V.rep > 20000) { + r.push(`Your reputation is capped.`); + } else if (V.rep-V.enduringRep > 7500) { + r.push(`Your base rate of reputation decay is very high.`); + } else if (V.rep-V.enduringRep > 5000) { + r.push(`Your base rate of reputation decay is high.`); + } else if (V.rep-V.enduringRep > 2500) { + r.push(`Your base rate of reputation decay is moderate.`); + } else if (V.rep-V.enduringRep > 0) { + r.push(`Your base rate of reputation decay is low.`); + } + if (V.enduringRep >= 10000) { + r.push(`Your legend is perfected, reducing reputation decay to its lowest possible level.`); + V.enduringRep = 10000; + } + + if (V.policies.alwaysSubsidizeRep === 1) { + if (V.rep <= 19900) { + repX(100, "policies"); + r.push(`Reputation subsidized as planned.`); + if (V.PC.degeneracy > 1) { + V.PC.degeneracy -= 1; + } + } else if (V.PC.degeneracy > 1) { + V.PC.degeneracy -= 1; + r.push(`Rumors quelled as planned.`); + } else { + cashX(1000, "policies"); + r.push(`Reputation subsidy reclaimed this week since your reputation is capped.`); + } + } + + if (V.failedElite > 1) { + V.failedElite -= 1; + } + if (V.PC.degeneracy > 1) { + V.PC.degeneracy -= 1; + } + + if (V.arcologies[0].FSRestartDecoration === 100) { + if (V.eugenicsFullControl !== 1) { + if (V.failedElite > 300) { + r.push(`The Societal Elite <span class="red">are plotting your demise.</span>`); + } else if (V.failedElite > 250) { + r.push(`The Societal Elite <span class="red">are openly discussing about your failures.</span> It would be in your best interests to appease them.`); + } else if (V.failedElite > 200) { + r.push(`The Societal Elite <span class="red">are avoiding you.</span> Getting back on their good side is a good idea, lest you want to disappear.`); + } else if (V.failedElite > 150) { + r.push(`The Societal Elite <span class="red">stop their conversations around you.</span> You may want to consider your actions more.`); + } else if (V.failedElite > 100) { + r.push(`The Societal Elite <span class="red">seem to dislike you.</span>`); + } else if (V.failedElite > 50) { + r.push(`The Societal Elite <span class="red">mutter about you.</span>`); + } else if (V.failedElite > 0) { + r.push(`The Societal Elite <span class="red">question some of your actions.</span>`); + } else { + r.push(`The Societal Elite hold you in high regards.`); + } + } else { + r.push(`The Societal Elite can think what they want, they know better than to try and cross you again.`); + } + } else if (V.arcologies[0].FSRestart !== "unset") { + if (V.eugenicsFullControl !== 1) { + if (V.failedElite > 300) { + r.push(`The Societal Elite <span class="red">have departed from your arcology in disgust.</span>`); + FutureSocieties.remove("FSRestart"); + repX(forceNeg(10000), "event"); + V.eliteFail = random(30, 100); + V.eliteFailTimer = 15; + if (V.eliteFail > V.topClass - 20) { + V.eliteFail = V.topClass - 20; + } + if (V.arcologies[0].prosperity > 50) { + V.arcologies[0].prosperity -= random(20, 40); + } + } else if (V.failedElite > 250) { + r.push(`The Societal Elite <span class="red">are openly discussing leaving.</span> It would be in your best interests to appease them.`); + } else if (V.failedElite > 200) { + r.push(`The Societal Elite <span class="red">are avoiding you.</span> Getting back on their good side is a good idea, lest you want to disappear.`); + } else if (V.failedElite > 150) { + r.push(`The Societal Elite <span class="red">stop their conversations around you.</span> You may want to consider your actions more.`); + } else if (V.failedElite > 100) { + r.push(`The Societal Elite <span class="red">seem to dislike you.</span>`); + } else if (V.failedElite > 50) { + r.push(`The Societal Elite <span class="red">mutter about you.</span>`); + } else if (V.failedElite > 0) { + r.push(`The Societal Elite <span class="red">question some of your actions.</span>`); + } else { + r.push(`The Societal Elite hold you in warm regards.`); + } + } else { + r.push(`The Societal Elite can think what they want, they know better than to try and cross you again.`); + } + } + App.Events.addParagraph(el, r); + return el; +}; diff --git a/src/endWeek/endWeek.js b/src/endWeek/endWeek.js index 0c9b1e88b201aacb086546e1465be6395523adf2..d266db86c95b08f89345541b6887b72da0bedaea 100644 --- a/src/endWeek/endWeek.js +++ b/src/endWeek/endWeek.js @@ -32,7 +32,7 @@ globalThis.endWeek = (function() { function resetSlaveMarkets() { V.gingering = 0; V.market = null; - for (const school of App.Data.misc.schools) { + for (const school of App.Data.misc.schools.keys()) { V[school].schoolSale = 0; } } diff --git a/src/endWeek/facilityLeaderSex.js b/src/endWeek/facilityLeaderSex.js index 5e92d89f8e55d6a80c59e05dcfe1d72122244398..bc82fd9e9d2e8a3fa0a51d907594bc587745b69c 100644 --- a/src/endWeek/facilityLeaderSex.js +++ b/src/endWeek/facilityLeaderSex.js @@ -44,7 +44,7 @@ App.EndWeek.getFLSex = function(facility) { /** @param {App.Entity.SlaveState} emp */ function flWillFuck(emp) { - const horny = (s) => s.devotion >= -50 /* not unhappy */ && s.energy > 20 /* not frigid */; + const horny = (s) => s.devotion >= -50 /* not unhappy */ && s.energy > 20/* not frigid */; if (fl.assignment === Job.WARDEN && fl.fetish === "mindbroken") { return true; // mindbroken warden ignores rules, rapes everyone } diff --git a/src/endWeek/healthFunctions.js b/src/endWeek/healthFunctions.js index 4d21a1d18e5e78cc1368e074f5df57cb0330d388..987282793953e8edc998ad73efd733674ac78d0a 100644 --- a/src/endWeek/healthFunctions.js +++ b/src/endWeek/healthFunctions.js @@ -242,7 +242,7 @@ globalThis.nurseEffectiveness = function(slave) { /** * Run at the end of the week to take care of health changes - * @param {App.Entity.SlaveState} slave + * @param {App.Entity.SlaveState | App.Entity.PlayerState} slave * @returns {void} */ globalThis.endWeekHealthDamage = function(slave) { diff --git a/src/endWeek/masterSuiteReport.js b/src/endWeek/masterSuiteReport.js index 874a3b72c2ba964fefa8c39144065d04e4d750a7..e038db401dc6a3150eeec16cd35ced52f24c1e04 100644 --- a/src/endWeek/masterSuiteReport.js +++ b/src/endWeek/masterSuiteReport.js @@ -332,8 +332,6 @@ App.EndWeek.masterSuiteReport = function() { $(smallFrag).append(r.join(' ')); - V.i = V.slaveIndices[slave.ID]; - App.Utils.setLocalPronouns(slave); // need this for the includes if (V.verboseDescriptions === 1) { const msContent = App.UI.DOM.appendNewElement("div", smallFrag, '', "indent"); $(msContent).append(`${He} ${App.SlaveAssignment.pleaseYou(slave)}`); diff --git a/src/endWeek/reports/childrenReport.js b/src/endWeek/reports/childrenReport.js index 0177a68e6eaf4738c8ce14109ee3db868f5f57c5..bd71be20d14f986c97948fa688ae644d56c6aa98 100644 --- a/src/endWeek/reports/childrenReport.js +++ b/src/endWeek/reports/childrenReport.js @@ -70,7 +70,7 @@ App.Facilities.Nursery.childrenReport = function childrenReport() { function matronEducationEffects(child) { // TODO: expand this - const { he, him, his } = getPronouns(Matron); + const {he, him, his} = getPronouns(Matron); const theChildren = CL > 1 ? `the children` : `${child.slaveName}`; @@ -108,7 +108,7 @@ App.Facilities.Nursery.childrenReport = function childrenReport() { // MARK: Nanny Effects function nannyFetishEffects(child, slave) { - const { he } = getPronouns(child); + const {he} = getPronouns(child); const chance = jsRandom(1, 100); if (chance > 85) { @@ -227,7 +227,7 @@ App.Facilities.Nursery.childrenReport = function childrenReport() { if (V.nurseryMuscles) { const firstNanny = NL > 0 ? nannies[0] : null; const caretaker = Matron ? Matron.slaveName : NL > 1 ? `A nanny` : firstNanny.slaveName; - const { His, He, he } = getPronouns(child); + const {His, He, he} = getPronouns(child); const muscleSpan = App.UI.DOM.makeElement("div", 'rapid muscle development.', "improvement"); @@ -278,6 +278,7 @@ App.Facilities.Nursery.childrenReport = function childrenReport() { // MARK: Miscellaneous Functions function childFriendshipRivalries(child) { + const el = new DocumentFragment(); const cribsCopy = Array.from(V.cribs); cribsCopy.splice(V.cribs.findIndex(c => c.ID === child.ID)); @@ -291,7 +292,7 @@ App.Facilities.Nursery.childrenReport = function childrenReport() { const div = document.createElement("div"); - const { his } = getPronouns(target); + const {his} = getPronouns(target); const chance = jsRandom(1, 100); let friend = 0; @@ -391,8 +392,9 @@ App.Facilities.Nursery.childrenReport = function childrenReport() { } } - return div; + el.append(div); } + return el; function sameFetish(child, target) { switch (child.fetish) { diff --git a/src/endWeek/reports/nurseryReport.js b/src/endWeek/reports/nurseryReport.js index bb5ea5e61348a469bdf4f6b049a2f2fa636f3535..13d315fe65c1d9ec2e980f3b7ec9c2e782fc4410 100644 --- a/src/endWeek/reports/nurseryReport.js +++ b/src/endWeek/reports/nurseryReport.js @@ -138,9 +138,6 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() { /** @type {App.Entity.SlaveState} */ const slave = S.Matron; - V.i = V.slaveIndices[slave.ID]; - App.Utils.setLocalPronouns(slave); // needed for "include"s - if (V.showEWD !== 0) { const matronEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); @@ -158,8 +155,6 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() { // FIXME: check these numbers over to make sure they make sense for (const slave of slaves) { - V.i = V.slaveIndices[slave.ID]; - slave.devotion += devBonus; if (slave.devotion <= 20 && slave.trust >= -20) { @@ -202,8 +197,6 @@ App.Facilities.Nursery.nurseryReport = function nurseryReport() { break; } - App.Utils.setLocalPronouns(slave); // needed for "include"s - if (V.showEWD) { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); diff --git a/src/endWeek/reportsTW/brothelReport.tw b/src/endWeek/reportsTW/brothelReport.tw new file mode 100644 index 0000000000000000000000000000000000000000..933e96f16f578fec98c6942a03cf9cd7f0223036 --- /dev/null +++ b/src/endWeek/reportsTW/brothelReport.tw @@ -0,0 +1,3 @@ +:: Brothel Report [nobr] + +<<includeDOM brothelReport()>> diff --git a/src/npc/children/childrenReport.tw b/src/endWeek/reportsTW/childrenReport.tw similarity index 100% rename from src/npc/children/childrenReport.tw rename to src/endWeek/reportsTW/childrenReport.tw diff --git a/src/uncategorized/clinicReport.tw b/src/endWeek/reportsTW/clinicReport.tw similarity index 100% rename from src/uncategorized/clinicReport.tw rename to src/endWeek/reportsTW/clinicReport.tw diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/endWeek/reportsTW/farmyardReport.tw similarity index 100% rename from src/facilities/farmyard/farmyardReport.tw rename to src/endWeek/reportsTW/farmyardReport.tw diff --git a/src/uncategorized/masterSuiteReport.tw b/src/endWeek/reportsTW/masterSuiteReport.tw similarity index 100% rename from src/uncategorized/masterSuiteReport.tw rename to src/endWeek/reportsTW/masterSuiteReport.tw diff --git a/src/facilities/nursery/nurseryReport.tw b/src/endWeek/reportsTW/nurseryReport.tw similarity index 100% rename from src/facilities/nursery/nurseryReport.tw rename to src/endWeek/reportsTW/nurseryReport.tw diff --git a/src/uncategorized/schoolroomReport.tw b/src/endWeek/reportsTW/schoolroomReport.tw similarity index 100% rename from src/uncategorized/schoolroomReport.tw rename to src/endWeek/reportsTW/schoolroomReport.tw diff --git a/src/uncategorized/servantsQuartersReport.tw b/src/endWeek/reportsTW/servantsQuartersReport.tw similarity index 100% rename from src/uncategorized/servantsQuartersReport.tw rename to src/endWeek/reportsTW/servantsQuartersReport.tw diff --git a/src/uncategorized/slaveAssignmentsReport.tw b/src/endWeek/reportsTW/slaveAssignmentsReport.tw similarity index 100% rename from src/uncategorized/slaveAssignmentsReport.tw rename to src/endWeek/reportsTW/slaveAssignmentsReport.tw diff --git a/src/endWeek/saBeYourHeadGirl.js b/src/endWeek/saBeYourHeadGirl.js index 46c674721f230d797a8e412737c42615ff17686f..752a166b71265bfa8a570c4ddde56656beaf0b5d 100644 --- a/src/endWeek/saBeYourHeadGirl.js +++ b/src/endWeek/saBeYourHeadGirl.js @@ -240,8 +240,7 @@ App.SlaveAssignment.beYourHeadGirl = (function() { if (slave.rules.lactation === "induce") { r.push(`${He} works mammary stimulation into ${his} slave training regimen in an effort to bring in ${his} milk for you.`); - slave.induceLactation += 3; - r.push(`${induceLactation(slave)}`); + r.push(induceLactation(slave, 3)); if (slave.lactation === 1) { slave.rules.lactation = "maintain"; } diff --git a/src/endWeek/saDiet.js b/src/endWeek/saDiet.js index 7b623a625a621e26b11f75384148d87241bb145c..0b176106b4b98e1bfd9cf4b4f1b19699ebf6792e 100644 --- a/src/endWeek/saDiet.js +++ b/src/endWeek/saDiet.js @@ -1507,7 +1507,7 @@ App.SlaveAssignment.diet = (function() { r.push(`${He} <span class="devotion inc">enjoys</span> the perversity of having large amounts of ejaculate in ${his} diet.`); slave.devotion += 1; } else { // high energy obscures cumlust - r.push(`${He} <span class="devotion inc">seems to enjoy</span> consuming large amounts of ejaculate with each meal. ${He} indeniably <span class="fetish gain">has a taste for cum.</span>`); + r.push(`${He} <span class="devotion inc">seems to enjoy</span> consuming large amounts of ejaculate with each meal. ${He} undeniably <span class="fetish gain">has a taste for cum.</span>`); slave.devotion += 1; slave.fetishKnown = 1; } diff --git a/src/endWeek/saDrugs.js b/src/endWeek/saDrugs.js index 794e1fdb090c75197ccd886001090fb484304102..8fe4927f1f8c826c1b895df2a7a1ec6ffe67267f 100644 --- a/src/endWeek/saDrugs.js +++ b/src/endWeek/saDrugs.js @@ -1672,22 +1672,10 @@ App.SlaveAssignment.drugs = (function() { healthDamage(slave, 20); induce(slave); V.birthee = 1; - r += ` ${He} has been ready to give birth for some time now. Suppressing birth for so long <span class="red">greatly affects ${his} health.</span> ${He} may <span class="red">have trouble</span> giving birth to ${his} oversized child`; - if (slave.pregType > 1) { - r += `ren`; - } - r += `. ${He} seems to be in distress, ${his} body is <span class="red">forcing ${his} child`; - if (slave.pregType > 1) { - r += `ren`; - } - r += ` out!</span>`; + r += ` ${He} has been ready to give birth for some time now. Suppressing birth for so long <span class="red">greatly affects ${his} health.</span> ${He} may <span class="red">have trouble</span> giving birth to ${his} oversized ${(slave.pregType === 1) ? `child`:`children`}. ${He} seems to be in distress, ${his} body is <span class="red">forcing ${his} ${(slave.pregType === 1) ? `child`:`children`} out!</span>`; } else if (WombBirthReady(slave, slave.pregData.normalBirth * 1.25) > 0) { healthDamage(slave, 20); - r += ` ${He} has been ready to give birth for some time now. Suppressing birth for so long <span class="red">greatly affects ${his} health.</span> ${He} may <span class="red">have trouble</span> giving birth to ${his} oversized child`; - if (slave.pregType > 1) { - r += `ren`; - } - r += `. `; + r += ` ${He} has been ready to give birth for some time now. Suppressing birth for so long <span class="red">greatly affects ${his} health.</span> ${He} may <span class="red">have trouble</span> giving birth to ${his} oversized ${(slave.pregType === 1) ? `child` : `children`}. `; } else if (WombBirthReady(slave, slave.pregData.normalBirth) > 0) { healthDamage(slave, 10); r += ` Labor suppressing agents <span class="red">negatively affect ${his} health.</span> `; diff --git a/src/endWeek/saGetMilked.js b/src/endWeek/saGetMilked.js index 193928163bc76734c5f8b5f02d69b78fa07dcca5..49fe61b36850fbc1085742fd749597795ce665d8 100644 --- a/src/endWeek/saGetMilked.js +++ b/src/endWeek/saGetMilked.js @@ -107,7 +107,7 @@ App.SlaveAssignment.getMilked = (function() { } /** - * @param {object} incomeStats getSlaveStatistcData return value - FIXME should be a named type + * @param {object} incomeStats getSlaveStatisticData return value - FIXME should be a named type */ function recordFacilityStatistics(incomeStats) { incomeStats.milk = r.milk; @@ -679,13 +679,13 @@ App.SlaveAssignment.getMilked = (function() { if (slave.health.tired > 90) { r.text += ` exhaustion`; } else if (slave.health.tired > 60) { - r.text += ` fatique`; + r.text += ` fatigue`; } r.text += `.</span>`; } if (slave.assignment === Job.DAIRY) { if (V.dairyRestraintsSetting > 1) { - r.text += ` The milking machine is merciless in its extraction of fluids from ${him}, but ${his} body is supplied with chimical stimulants to keep fatigue from setting in.`; + r.text += ` The milking machine is merciless in its extraction of fluids from ${him}, but ${his} body is supplied with chemical stimulants to keep fatigue from setting in.`; } else if (V.dairyRestraintsSetting > 0) { if (slaveResting(slave)) { r.text += ` Resting doesn't stop ${him} from being thoroughly milked, but it does free ${him} from some of the associated chores, allowing ${him} time <span class="green">to snooze</span> in ${his} harness post harvesting.`; @@ -704,7 +704,7 @@ App.SlaveAssignment.getMilked = (function() { if (V.dairyFeedersSetting + V.dairyStimulatorsSetting + V.dairyPregSetting > 0) { r.text += `<span class="red">moreso given the dairy's settings,</span> `; } - r.text += `but it is mostly managable.`; + r.text += `but it is mostly manageable.`; } else { r.text += ` Spending so much time strapped to a machine and being forcibly drained is not only <span class="red">exhausting, `; if (V.dairyFeedersSetting + V.dairyStimulatorsSetting + V.dairyPregSetting > 0) { diff --git a/src/endWeek/saLongTermPhysicalEffects.js b/src/endWeek/saLongTermPhysicalEffects.js index 8d790009592243cfe31a79026f3d01b0e071f54b..619d5fd8c0f7aca3126ccb3dafa224eaad7e827d 100644 --- a/src/endWeek/saLongTermPhysicalEffects.js +++ b/src/endWeek/saLongTermPhysicalEffects.js @@ -689,14 +689,14 @@ App.SlaveAssignment.longTermPhysicalEffects = (function() { if (V.geneticMappingUpgrade >= 1) { r.push(`${His} progeria takes its toll, <span class="change negative">cruelly rushing ${him} to an early grave.</span>`); } else { - r.push(`Worringly, ${he} <span class="change negative">seems even older</span> this week than the last.`); + r.push(`Worryingly, ${he} <span class="change negative">seems even older</span> this week than the last.`); } } else { r.push(`Oddly enough, ${he} <span class="change negative">seems a little older</span> this week than the last.`); } slave.physicalAge++; slave.visualAge++; - slave.ovaryAge += 5; // Since we are using .physicalAge, we need to manipulate things to prevent the posibility of pregnancy. + slave.ovaryAge += 5; // Since we are using .physicalAge, we need to manipulate things to prevent the possibility of pregnancy. } } } diff --git a/src/endWeek/saPleaseYou.js b/src/endWeek/saPleaseYou.js index bc907c81e61a4f3ed537c1175a7c59c76c83d02d..9d6d59b55af92d00b7d9628ae387db9ebb7d23ba 100644 --- a/src/endWeek/saPleaseYou.js +++ b/src/endWeek/saPleaseYou.js @@ -882,8 +882,7 @@ App.SlaveAssignment.pleaseYou = (function() { slave.boobsMilk = 0; } } else { - slave.induceLactation += 2; - r.push(`${induceLactation(slave)}`); + r.push(induceLactation(slave, 2)); } slave.counter.mammary += mammaryUse; V.mammaryTotal += mammaryUse; diff --git a/src/endWeek/saPregnancy.js b/src/endWeek/saPregnancy.js index 721f0cdee32fbf4e4e5322523e7f4d8df53e06a2..e2c6a82a14a7f902e1b193901fb2fcf3c044c3da 100644 --- a/src/endWeek/saPregnancy.js +++ b/src/endWeek/saPregnancy.js @@ -295,13 +295,13 @@ App.SlaveAssignment.pregnancy = (function() { */ function pregnancyMentalEffects(slave) { const child = (slave.pregType > 1 ? "children" : "child"); - const childis = (slave.pregType > 1 ? "children are" : "child is"); + const childIs = (slave.pregType > 1 ? "children are" : "child is"); if (slave.career === "a dairy cow" && slave.devotion <= 50) { r.push(`${He} <span class="devotion inc">feels right</span> to be growing heavy with child. To ${him}, a growing baby means better milk.`); slave.devotion += 1; } else if (slave.devotion <= 20 && slave.pregSource === -1) { - r.push(`${He} is filled with a feeling of <span class="devotion dec">revulsion</span> that your ${childis} growing within ${his} body.`); + r.push(`${He} is filled with a feeling of <span class="devotion dec">revulsion</span> that your ${childIs} growing within ${his} body.`); slave.devotion -= 1; if (slave.relationship === -3) { r.push(`This is compounded by the fact that you <span class="trust dec">forced ${him} to marry you</span> and <span class="devotion dec">raped ${him} pregnant.</span>`); @@ -309,7 +309,7 @@ App.SlaveAssignment.pregnancy = (function() { slave.trust -= -5; } } else if (slave.devotion > 50 && slave.pregSource === -1) { - r.push(`${He} <span class="devotion inc">loves</span> that your ${childis} growing within ${him}.`); + r.push(`${He} <span class="devotion inc">loves</span> that your ${childIs} growing within ${him}.`); slave.devotion += 1; if (slave.relationship === -3) { r.push(`This is compounded by the fact that ${he} is your <span class="devotion inc">devoted ${wife}</span> and <span class="trust inc">feels it is ${his} duty</span> to bear your children.`); @@ -512,7 +512,7 @@ App.SlaveAssignment.pregnancy = (function() { } r.push(`but not enough to deter ${him} from ${his} work.`); } else if (slave.pregControl === "labor suppressors") { - r.push(`${His} ${childis} oddly calm; it is unlikely ${he} will give birth soon, despite being overdue.`); + r.push(`${His} ${childIs} oddly calm; it is unlikely ${he} will give birth soon, despite being overdue.`); } else if (slave.broodmother === 0) { if (slave.preg > slave.pregData.normalBirth + 1) { r.push(`${He} is constantly beset by ${his} squirming`); diff --git a/src/endWeek/saRules.js b/src/endWeek/saRules.js new file mode 100644 index 0000000000000000000000000000000000000000..da97998755f8fbe9b62d088fbda8af5be1dfb509 --- /dev/null +++ b/src/endWeek/saRules.js @@ -0,0 +1,2773 @@ +/** + * + * @param {App.Entity.SlaveState} slave + * @returns {Node} + */ +App.SlaveAssignment.rules = function(slave) { + const el = new DocumentFragment(); + const L = App.Utils.countFacilityWorkers(); + const release = slave.rules.release; + let r = []; + + if (slave.fuckdoll === 0) { + const { + He, His, + he, his, him, himself, girl, wife + } = getPronouns(slave); + let wife2; + let milkResult; + let wardenFunTimes; + r.push(`${He}`); + if (slave.fetish === "mindbroken") { + r.push(`is mentally broken so none of the rules have any impact.`); + } else { + switch (slave.assignment) { + case "be confined in the arcade": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off, not that ${he} gets a choice.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off, not that ${he} gets a choice.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off at work despite ${his} reluctance, <span class="hotpink">habituating ${him} to being a fuckhole.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + } else if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(`wasn't a popular enough hole to sate ${his} arousal, leaving ${him} <span class="gold">uncomfortably horny</span> despite ${his} conditions.`); + slave.trust -= 3; + } + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${his} body gets used. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + break; + case "be the Madam": + slave.need -= (App.Entity.facilities.brothel.employeesIDs().size * 10); + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in ${V.brothelName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing ${him} in charge of it. It also helps to offset the tiring nature of ${his} position.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict ${his} non-essential activities.`); + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} manages clients, analyzing ${his} tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} spends that time massaging ${his} breasts and working ${his} nipples.`); + r.push(induceLactation(slave, 2)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} takes the time to thoroughly milk ${his} breasts to keep ${his} lactation strong for you.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "work in the brothel": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off, not that ${his} clients care.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off, not that ${his} clients care.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off at work despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + } else if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + switch (V.brothelDecoration) { + case "Degradationist": + case "standard": + r.push(`The spare living conditions of ${V.brothelName} <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + slave.devotion += 1; + break; + case "Chattel Religionist": + r.push(`The open, yet comfortable, conditions of ${V.brothelName} <span class="hotpink">get ${him} used</span> to the routine of slavery.`); + slave.devotion += 1; + break; + default: + r.push(`${He} gets a little room all to ${himself}, allowing ${him} to feel self-reliant; or it would, if it didn't reek of sex and shame after all the customers ${he} serviced in it.`); + } + } else { + switch (V.brothelDecoration) { + case "Degradationist": + case "standard": + if (slave.trust > 40) { + r.push(`The spare living conditions of ${V.brothelName} <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The spare living conditions of ${V.brothelName} <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } else { + r.push(`${He}'s used to spare living conditions, so ${he}'s not bothered by ${V.brothelName}'s.`); + } + break; + case "Chattel Religionist": + r.push(`The open, yet comfortable, conditions of ${V.brothelName}'s slave quarters are quite refreshing after a day of public sex, even if ${he} has to share it with all the other whores.`); + break; + default: + r.push(`${He} likes ${his} little room in ${V.brothelName}, even if`); + if (canSmell(slave)) { + r.push(`it smells of sex`); + } else { + r.push(`it's filled with the heat of sex`); + } + r.push(`after fucking in it all day.`); + } + } + if (slave.rules.living === "luxurious") { + r.push(`They provide <span class="green">satisfying rest</span> every time ${he} drifts off to sleep.`); + } else if (slave.rules.living === "spare") { + if (slave.devotion > 20 && slave.trust <= 10) { + r.push(`They don't provide much rest, however.`); + } else { + r.push(`They provide meager rest, if anything.`); + } + } else { + r.push(`They provide`); + if (slave.devotion > 20) { + r.push(`<span class="green">adequate rest</span> for a ${girl} that knows how to manage ${his} time.`); + } else { + r.push(`<span class="green">adequate rest,</span> but not enough for a slave lacking time management.`); + } + } + + if (slave.rules.rest === "mandatory") { + if (slave.devotion <= 20) { + r.push(`Getting a day off each week <span class="mediumaquamarine">builds feelings of liberty</span> a slave shouldn't have.`); + slave.trust += 3; + } else { + r.push(`${He} appreciates having a weekly day off and takes it as a sign that ${he} has a <span class="mediumaquamarine">caring ${getWrittenTitle(slave)}.</span>`); + slave.trust += 1; + } + } else if (V.slaveUsedRest) { + if (slave.rules.rest === "permissive") { + if (slave.devotion <= 20) { + r.push(`${He}'s permitted to rest whenever ${he} feels even the slightest bit tired; <span class="mediumaquamarine">a privilege not lost on ${him}.</span>`); + slave.trust += 2; + } else { + r.push(`${He} <span class="hotpink">likes</span> that you <span class="mediumaquamarine">care enough</span> to let him rest when he gets tired.`); + slave.devotion += 1; + slave.trust += 1; + } + } else if (slave.rules.rest === "restrictive") { + if (slave.devotion <= -20) { + r.push(`${He}'s permitted to rest when fatigue sets in, but not enough to shake ${his} tiredness; ${he} feels this <span class="gold">deprivation</span> is intentional.`); + slave.trust -= 1; + } else if ((slave.devotion <= 20)) { + r.push(`${He}'s permitted to rest when fatigue sets in, and <span class="hotpink">understands</span> this is less for ${his} wellbeing and more to prevent ${him} from become unproductive.`); + slave.devotion += 1; + } else { + r.push(`${He}'s permitted to rest when fatigue sets in and is <span class="mediumaquamarine">thankful</span> you would allow ${him} the privilege so that ${he} may serve you better.`); + slave.trust += 1; + } + } else if (slave.rules.rest === "cruel") { + if (slave.devotion <= -20) { + r.push(`${He}'s <span class="gold">terrified</span> that the only reason ${he} is given any time to rest at all is just to prolong your torment of ${him}.`); + slave.trust -= 3; + } else if ((slave.devotion <= 20)) { + r.push(`You work ${him} to the bone and only allow ${him} rest when on the verge of collapsing. ${He} <span class="gold">fears</span> this <span class="mediumorchid">cruelty</span> is just the beginning.`); + slave.trust -= 3; + slave.devotion -= 3; + } else { + r.push(`Only being allowed rest when on the verge of collapsing <span class="mediumorchid">shakes ${his} faith</span> in you a little.`); + slave.devotion -= 2; + } + } + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} services customers, analyzing ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Customers are encouraged to work ${his} breasts and nipples in an effort to induce lactation; whoever gets ${him} to start dribbling milk wins a week of drinks on the house.`); + r.push(induceLactation(slave, 4)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (slave.devotion > 20) { + if (slave.fetish === "boobs") { + r.push(`It's unclear if ${he} is using ${his} milky breasts during sex for you or ${himself}; either way, ${his} lactation won't be going anywhere.`); + } else { + r.push(`${He} happily puts ${his} milky breasts to use during sex in order to keep lactating for you.`); + } + } else if (slave.devotion >= -20) { + if (slave.fetish === "boobs") { + r.push(`${He} doesn't need to be ordered to use ${his} milky breasts during sex since ${he} favors them heavily.`); + } else { + r.push(`${He} is required to utilize ${his} milky breasts during sex to keep ${his} lactation strong.`); + } + } else { + r.push(`Customers are encouraged to molest ${his} breasts to keep ${him} lactating.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the DJ": + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in the back of ${V.clubName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing your faith in ${his} abilities. It helps offset the tiring nature of ${his} position and gives ${him} a place to center ${himself} at the end of the day.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict ${his} non-essential activities.`); + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} works the crowd, analyzing ${his} sexual tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment between ${his} sets, ${he} spends that time massaging ${his} breasts and working ${his} nipples.`); + r.push(induceLactation(slave, 2)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`${He} has worked milking ${himself} into ${his} dance routines, both entertaining the crowd and keeping ${his} lactation strong for you.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "serve in the club": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off, not that ${his} spectators care.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off, not that ${his} spectators care.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off at work despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + } else if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + r.push(`${He} shares a room with`); + if (App.Entity.facilities.club.employeesIDs().size > 4) { + r.push(`some of`); + } + r.push(`the other sluts, preventing ${him} from becoming too complacent. It doesn't help that during business hours ${he} has to take citizens in ${his} own bed.`); + } else { + r.push(`${He} likes ${his} personal space in ${V.clubName}, even if`); + if (canSmell(slave)) { + r.push(`it smells of`); + } else { + r.push(`it's filled with the heat from`); + } + r.push(`sex and citizens.`); + } + r.push(`It provides`); + if (slave.devotion > 20) { + r.push(`<span class="green">adequate rest</span> for a slut that knows how to manage ${his} time.`); + } else { + r.push(`<span class="green">adequate rest,</span> but not enough for a slut lacking time management.`); + } + + if (slave.rules.rest === "mandatory") { + if (slave.devotion <= 20) { + r.push(`Getting a day off each week <span class="mediumaquamarine">builds feelings of liberty</span> a slave shouldn't have.`); + slave.trust += 3; + } else { + r.push(`${He} appreciates having a weekly day off and takes it as a sign that ${he} has a <span class="mediumaquamarine">caring ${getWrittenTitle(slave)}.</span>`); + slave.trust += 1; + } + } else if (V.slaveUsedRest) { + if (slave.rules.rest === "permissive") { + if (slave.devotion <= 20) { + r.push(`${He}'s permitted to rest whenever ${he} feels even the slightest bit tired; <span class="mediumaquamarine">a privilege not lost on ${him}.</span>`); + slave.trust += 2; + } else { + r.push(`${He} <span class="hotpink">likes</span> that you <span class="mediumaquamarine">care enough</span> to let him rest when he gets tired.`); + slave.devotion += 1; + slave.trust += 1; + } + } else if (slave.rules.rest === "restrictive") { + if (slave.devotion <= -20) { + r.push(`${He}'s permitted to rest when fatigue sets in, but not enough to shake ${his} tiredness; ${he} feels this <span class="gold">deprivation</span> is intentional.`); + slave.trust -= 1; + } else if ((slave.devotion <= 20)) { + r.push(`${He}'s permitted to rest when fatigue sets in, and <span class="hotpink">understands</span> this is less for ${his} wellbeing and more to prevent ${him} from become unproductive.`); + slave.devotion += 1; + } else { + r.push(`${He}'s permitted to rest when fatigue sets in and is <span class="mediumaquamarine">thankful</span> you would allow ${him} the privilege so that ${he} may serve you better.`); + slave.trust += 1; + } + } else if (slave.rules.rest === "cruel") { + if (slave.devotion <= -20) { + r.push(`${He}'s <span class="gold">terrified</span> that the only reason ${he} is given any time to rest at all is just to prolong your torment of ${him}.`); + slave.trust -= 3; + } else if ((slave.devotion <= 20)) { + r.push(`You work ${him} to the bone and only allow ${him} rest when on the verge of collapsing. ${He} <span class="gold">fears</span> this <span class="mediumorchid">cruelty</span> is just the beginning.`); + slave.trust -= 3; + slave.devotion -= 3; + } else { + r.push(`Only being allowed rest when on the verge of collapsing <span class="mediumorchid">shakes ${his} faith</span> in you a little.`); + slave.devotion -= 2; + } + } + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} services citizens, analyzing ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Citizens are encouraged to work ${his} breasts and nipples in an effort to induce lactation; whoever gets ${him} to start dribbling milk wins a week of drinks on the house.`); + r.push(induceLactation(slave, 4)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (slave.devotion > 20) { + if (slave.fetish === "boobs") { + r.push(`It's unclear if ${his} lactation based routines are for your benefit or ${his} own; either way, ${his} milk production won't be slowing down.`); + } else { + r.push(`${He} happily works ${his} lactation into ${his} routines in order to keep ${his} milk flowing.`); + } + } else if (slave.devotion >= -20) { + if (slave.fetish === "boobs") { + r.push(`${He} doesn't need to be ordered to work ${his} lactation into ${his} routines since ${he} does so already.`); + } else { + r.push(`${He} is required to utilize ${his} lactation while entertaining to keep ${his} lactation strong.`); + } + } else { + r.push(`Citizens are encouraged to molest ${his} breasts to keep ${him} lactating.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the Nurse": + slave.need -= (V.flSex.size * 3); + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in ${V.clinicName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing ${him} in charge of it. Having a place to call ${his} own each night helps keep the stress of ${his} duties from catching up with ${him}.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict ${his} non-essential activities.`); + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} cares for ${his} patients to determine ${his} tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`${He} spends much of ${his} time with a pair of automatic breast pumps attached to ${his} chest. The constant stimulation will have ${him} milky soon enough.`); + r.push(induceLactation(slave, 8)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen"> ${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`It's not unusual to see ${him} tending to ${his} patients with a pair of breast pumps sucking away at ${his} breasts.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "get treatment in the clinic": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else { + let partner = App.EndWeek.getClinicPartner(slave); + switch (partner.type) { + case "player": + r.push(`is well taken care of during ${his} stay in ${V.clinicName}; you make sure your ${wife}'s every sexual need is handled personally.`); + slave.need = 0; + if (canImpreg(slave, V.PC) && ((slave.vagina > 0 && slave.ovaries === 1) || (slave.anus !== 0 && slave.mpreg === 1))) { + r.push(knockMeUp(slave, 10, 0, -1, true)); + if (slave.vagina > 0 && slave.ovaries === 1) { + seX(slave, "vaginal", V.PC, "penetrative", 7); + } else { + seX(slave, "anal", V.PC, "penetrative", 7); + } + if (slave.preg > 0) { + r.push(`It comes as little surprise when routine health checks start to show <span class="lime">${he}'s pregnant!</span>`); + } + } + break; + case "lover": + ({ + wife2 + } = getPronouns(partner.slave).appendSuffix("2")); + slave.need = 0; + r.push(`is well taken care of during ${his} stay in ${V.clinicName}; ${his}`); + if (slave.relationship === 3) { + r.push(`friend with benefits`); + } else if (slave.relationship === 4) { + r.push(`sweetheart`); + } else { + r.push(wife2); + } + r.push(`frequently stops by when ${he} gets the chance to make sure ${his} sexual needs are properly handled.`); + seX(partner.slave, "oral", slave, "penetrative", 14); + break; + case "family": + r.push(`is well-loved by ${his} family; this week, ${his} ${relativeTerm(slave, partner.slave)} <span class="lightgreen">${partner.slave.slaveName}</span> pays special attention to ${him}, making sure ${his} sexual needs are met.`); + slave.need = 0; + seX(partner.slave, "oral", slave, "penetrative", 7); + break; + case "friend": + r.push(`is friends with <span class="lightgreen">${partner.slave.slaveName},</span> who comes to visit ${him} regularly. ${His} sexual frustration from being confined to the clinic shows, and ${partner.slave.slaveName} often winds up helping ${him} get relief.`); + if (partner.slave.rules.relationship === "permissive" && slave.rules.relationship === "permissive") { + r.push(`They have <span class="lightgreen">become lovers.</span>`); + slave.relationship = 3; + partner.slave.relationship = 3; + } else { + r.push(`They know it your rules prevent them from becoming anything more, but they enjoy themselves anyway.`); + } + slave.need = 0; + seX(partner.slave, "oral", slave, "penetrative", 7); + break; + case "nurse": + r.push(`is routinely brought to orgasm by ${S.Nurse.slaveName} as part of ${his} duties.`); + if (canPenetrate(slave) && S.Nurse.boobs >= 500) { + seX(S.Nurse, "mammary", slave, "penetrative", 14); + } else { + actX(S.Nurse, "oral", 14); + /* possible cumflation code here */ + } + slave.need -= 60; + break; + default: + if (release.masturbation === 1) { + if ((slave.devotion <= 20) && (slave.trust >= -20)) { + r.push(`takes solace in ${his} permission to masturbate rather than being forced to seek other means of release, <span class="mediumaquamarine">reducing ${his} fear</span> of you.`); + slave.trust += 2; + slave.need = 0; + } else if ((slave.devotion <= 20)) { + r.push(`enjoys being allowed to masturbate rather than having to seek other means of release, <span class="mediumaquamarine">slightly reducing ${his} fear</span> of you but <span class="mediumorchid">allowing ${him} to remain in control of ${him} sexuality.</span>`); + slave.trust += 1; + slave.devotion -= 1; + slave.need = 0; + } else if ((slave.devotion <= 50)) { + r.push(`accepts having to relieve ${himself} solely through masturbation.`); + slave.need = 0; + } else { + r.push(`is a little disappointed that ${he}'s limited to ${his}`); + if (!hasAnyArms(slave)) { + r.push(`imagination`); + } else { + r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}.`); + } + r.push(`and toys, but <span class="mediumaquamarine">understands you care about ${his} current health.</span>`); + slave.trust += 1; + slave.need = 0; + } + if (slave.devotion > 20) { + r.push(`When ${he} does play with ${himself}, ${he}`); + r.push(App.EndWeek.Rules.masturbationFetishPlay(slave)); + r.push(App.EndWeek.Rules.masturbationDiscoversFetish(slave)); + } + r.push(App.EndWeek.Rules.masturbationDrugEffects(slave)); + } else { + r.push(`eventually gives in to ${his} urges and is <span class="gold">punished</span> for illicit masturbation.`); + slave.trust -= 2; + slave.need -= 10; + } + } + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + switch (V.clinicDecoration) { + case "Eugenics": + case "Gender Fundamentalist": + case "Gender Radicalist": + case "Hedonistic": + case "Maturity Preferentialist": + case "Paternalist": + case "Repopulation Focus": + case "Slimness Enthusiast": + case "Youth Preferentialist": + case "Neo-Imperialist": + r.push(`The luxurious living conditions encourage ${him} to <span class="mediumaquamarine">feel respectable.</span> ${He} can't help but <span class="hotpink">feel you care</span> about ${him} as something more than just an object under such lovely treatment.`); + slave.trust += 3; + slave.devotion += 1; + break; + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Egyptian Revivalist": + case "Roman Revivalist": + r.push(`The living conditions, despite their open nature, are <span class="mediumaquamarine">quite relaxing.</span> ${His} opinion of you <span class="hotpink">can only rise</span> with such lovely treatment.`); + slave.trust += 2; + slave.devotion += 1; + break; + case "Edo Revivalist": + r.push(`The living conditions, despite their spartan nature, are <span class="mediumaquamarine">calming.</span> ${His} opinion of you <span class="hotpink">improves</span> with such a contrast to ${his} usual life.`); + slave.trust += 1; + slave.devotion += 1; + break; + case "standard": + r.push(`The spare living conditions of ${V.clinicName} serve as a constant reminder that <span class="hotpink">you only care about ${his} body</span> and not about ${him}.`); + if (slave.trust > 20) { + r.push(`<span class="gold">${He} fully understands what this means for ${him}.</span>`); + slave.trust -= 1; + } + slave.devotion += 1; + break; + default: + r.push(`The spare living conditions of ${V.clinicName} serve as a constant reminder that <span class="hotpink">${he} is nothing more than an object</span> for your amusement.`); + if (slave.trust > 20) { + r.push(`${He} can only <span class="gold">envision the horrors</span> that await ${him} under your care.`); + slave.trust -= 2; + } + slave.devotion += 1; + } + } else { + switch (V.clinicDecoration) { + case "Eugenics": + case "Gender Fundamentalist": + case "Gender Radicalist": + case "Hedonistic": + case "Maturity Preferentialist": + case "Paternalist": + case "Repopulation Focus": + case "Slimness Enthusiast": + case "Youth Preferentialist": + case "Neo-Imperialist": + r.push(`${He} loves ${his} stay in ${V.clinicName} and almost wishes it didn't have to end.`); + break; + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Egyptian Revivalist": + case "Roman Revivalist": + r.push(`The living conditions, despite their open nature, are <span class="mediumaquamarine">quite relaxing.</span> ${He} savors ${his} stay at ${V.clinicName}.`); + slave.trust += 1; + break; + case "Edo Revivalist": + r.push(`The living conditions, despite their spartan nature, are <span class="mediumaquamarine">calming.</span> ${He} enjoys ${his} stay at ${V.clinicName}.`); + slave.trust += 1; + break; + case "standard": + if (slave.trust > 40) { + r.push(`The spare living conditions of ${V.clinicName} <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The spare living conditions of ${V.clinicName} <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } + break; + default: + if (slave.devotion >= 80) { + r.push(`The spare living conditions of ${V.clinicName} remind ${him} that ${he} is just an object for your amusement, and that is fine with ${him}.`); + } else if ((slave.trust > 40)) { + r.push(`The spare living conditions of ${V.clinicName} <span class="gold">remind ${him} that ${he} is just an object to you.</span>`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The spare living conditions of ${V.clinicName} <span class="gold">keep ${him} aware of ${his} place as your plaything.</span>`); + slave.trust -= 1; + } + } + } + + /* diverges from App.EndWeek.Rules.consentRules(slave) */ + if (V.universalRulesConsent === 0) { + if (slave.devotion <= 20) { + if (slave.trust > -10) { + r.push(`Under the rules, ${he} is free game for other slaves to molest, and lives ${his} life constantly <span class="gold">afraid</span> of the day ${he} is released from ${V.clinicName}.`); + slave.trust -= 2; + } else { + r.push(`Under the rules, ${he} will find ${himself} constantly molested by other slaves once ${he} leaves ${V.clinicName}, but ${he}'s already in such constant terror it that it doesn't cross ${his} mind.`); + } + } else if ((release.slaves === 1)) { + if (slave.energy > 95) { + r.push(`Under the rules, ${he}'s allowed to demand that other slaves get ${him} off, and ${he} <span class="hotpink">eagerly takes the opportunity</span> whenever visiting slaves are present.`); + slave.devotion += 1; + } else if ((slave.fetishKnown === 1) && (slave.fetishStrength > 60)) { + if (slave.fetish === "sadist") { + r.push(`Under the rules, ${he}'s allowed to demand that other slaves get ${him} off, and ${he} <span class="hotpink">eagerly orders</span> visiting slaves to get in bed with ${him}.`); + slave.devotion += 1; + } else if ((slave.fetish === "dom")) { + r.push(`Under the rules, ${he}'s allowed to demand other slaves to have sex with ${him}, and ${he} <span class="hotpink">eagerly orders</span> visiting slaves to serve ${his} every desire.`); + slave.devotion += 1; + } + } + } + } else { + if ((slave.devotion <= 20) && (slave.devotion >= -20)) { + r.push(`Since ${he}'s low in the slave hierarchy, <span class="mediumaquamarine">${he} knows that ${he}'s safe</span> from other slave's abuse while ${he} is recovering.`); + slave.trust += 1; + } + } + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${his} choice of entertainment, analyzing ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`${He} spends ${his} stay with a pair of automatic breast pumps attached to ${his} chest. The constant stimulation will have ${him} milky soon enough.`); + r.push(induceLactation(slave, 10)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (slave.devotion > 20) { + if (slave.fetish === "boobs") { + if (canHold(slave)) { + r.push(`Whenever ${he} is feeling up to it, ${he} enjoys milking ${himself} by hand in lieu of using a breast pump; it's around for those times ${he} can't muster the energy.`); + } else { + r.push(`${He} spends ${his} stay mostly with a pair of automatic breast pumps attached to ${his} chest. They get ${him} so worked up, ${he} has to be asked to take breaks from using them.`); + } + } else { + r.push(`${He} spends ${his} stay with a pair of automatic breast pumps attached to ${his} chest. The periodic suction is both relieving and invigorating.`); + } + } else if (slave.devotion >= -20) { + if (slave.fetish === "boobs") { + r.push(`${He} spends most of ${his} stay with a pair of automatic breast pumps attached to ${his} chest. They get ${him} so worked up, ${his} time with them has to be limited.`); + } else { + r.push(`${He} spends ${his} stay with a pair of automatic breast pumps attached to ${his} chest. It's a little uncomfortable, but ${he} won't dare complain.`); + } + } else { + r.push(`${He} spends ${his} stay with a pair of automatic breast pumps locked to ${his} chest. ${His} lactation will not be allowed to wane so easily.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the Wardeness": + slave.need -= (V.flSex.size * 5); + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + r.push(`gets off at work, so ${he} doesn't feel the need for release that often.`); + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in ${V.cellblockName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing ${him} in charge of it. It also helps to offset the tiring nature of ${his} position.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict ${his} non-essential activities.`); + delete V.slaveUsedRest; + } + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} oversees the prisoners, analyzing ${his} preferences. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} spends that time massaging ${his} breasts and working ${his} nipples.`); + r.push(induceLactation(slave, 3)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`${He} works maintaining ${his} lactation into ${his} duties; when ${he} feels ${his} chest has grown too heavy, the nearest prisoner had better have an appetite or there will be punishment.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be confined in the cellblock": + wardenFunTimes = 0; + if (V.flSex.has(slave.ID)) { + wardenFunTimes = random(0, 5); + slave.need -= (10 * wardenFunTimes); + } + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off, making the rule restricting ${his} sexual outlets superfluous.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off, making the rule restricting ${his} sexual outlets superfluous.`); + slave.need = 0; + } else if (slave.relationship === -3) { + r.push(`You make sure your troublesome ${wife}'s sexual needs are handled, openly, in the middle of V.cellblockName, where everyone can see, hear, and smell your dominance.`); + slave.need = 0; + if (canDoVaginal(slave) && slave.vagina > 0) { + seX(slave, "penetrative", V.PC, "vaginal", 7); + } else if (canDoAnal(slave) && slave.anus > 0) { + seX(slave, "penetrative", V.PC, "anal", 7); + } else { + seX(slave, "penetrative", V.PC, "oral", 7); + } + if (canImpreg(slave, V.PC) && ((slave.vagina > 0 && slave.ovaries === 1) || (slave.anus !== 0 && slave.mpreg === 1))) { + r.push(knockMeUp(slave, 10, 0, -1, true)); + if (slave.preg > 0) { + r.push(`As an added show, you <span class="lime">proudly display ${his} positive pregnancy</span> test for all to see.`); + } + } + } else { + if (wardenFunTimes > 0) { + SimpleSexAct.Slaves(slave, S.Wardeness, wardenFunTimes); + if (wardenFunTimes > 0 && canImpreg(slave, S.Wardeness) && (V.cellblockWardenCumsInside === 1 || S.Wardeness.fetish === "mindbroken")) { + if (canDoVaginal(slave) && slave.vagina > 0 && slave.ovaries === 1) { + r.push(knockMeUp(slave, 10, 0, V.WardenessID, true)); + } else if ((canDoAnal(slave) && slave.anus > 0 && slave.mpreg === 1)) { + r.push(knockMeUp(slave, 10, 1, V.WardenessID, true)); + } + } + } + if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + slave.need -= 20; + } + } else { + if (random(-100, 0) > slave.devotion) { + r.push(`refuses to not touch ${himself} and is <span class="gold">severely punished</span> for illicit masturbation.`); + slave.trust -= 2; + slave.need -= 10; + } else { + r.push(`<span class="gold">fears</span> trying to`); + if (slave.chastityPenis) { + r.push(`touch ${himself}`); + } else if (canAchieveErection(slave)) { + r.push(`jack off`); + } else { + r.push(`touch ${himself}`); + } + r.push(`to get relief when ${he} knows what the consequences are.`); + slave.trust -= 1; + } + } + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + switch (V.cellblockDecoration) { + case "Degradationist": + r.push(`${He} expected spare living conditions. In reality, they are far worse. <span class="gold">Not one moment goes by that ${he} isn't filled with terror.</span>`); + slave.trust -= 3; + break; + case "Paternalist": + r.push(`${He} expected far worse living conditions, and while still resistant, <span class="hotpink">finds ${himself} more willing to obey.</span>`); + slave.devotion += 1; + break; + case "Pastoralist": + r.push(`${He} expected the spare living conditions, but not the dietary supplements. ${He} never anticipated <span class="gold">you'd go this far</span> to force ${him} into shape and is constantly reminded of ${his} changes by just how small ${his} cell feels with a belly full of milk.`); + slave.trust -= 2; + break; + case "Body Purist": + r.push(`${He} expected the spare living conditions, but not the excessive hydration. ${He} never anticipated <span class="gold">you'd go this far</span> to force ${him} into shape and is constantly reminded of ${his} changes by the fullness of ${his} bladder.`); + slave.trust -= 2; + break; + case "Hedonistic": + r.push(`${He} expected the spare living conditions, but not the dietary supplements. ${He} never anticipated <span class="gold">you'd go this far</span> to force ${him} into shape and is constantly reminded of ${his} changes by just how small ${his} cell feels with a belly full of food.`); + slave.trust -= 2; + break; + default: + r.push(`${He} expected the spare living conditions, but no matter how hard ${he} tries to shut out ${his} surroundings, <span class="gold">they still wear down ${his} will.</span>`); + slave.trust -= 1; + } + + if (slave.rules.lactation === "induce") { + r.push(`${He} spends ${his} sentence with a pair of automatic breast pumps locked to ${his} chest. If all goes well, ${he}'ll be both reformed and lactating by ${his} release.`); + r.push(induceLactation(slave, 10)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + r.push(`${He} spends ${his} stay with a pair of automatic breast pumps locked to ${his} chest.`); + if (slave.devotion > 20) { + if (slave.fetish === "boobs") { + r.push(`It's both enjoyable and what you want, so the inconvenience is easily tolerated.`); + } else { + r.push(`It beats swollen breasts, so ${he} can't complain.`); + } + } else if (slave.devotion >= -20) { + if (slave.fetish === "boobs") { + r.push(`It's enjoyable, but showing it will only be met with punishment.`); + } else { + r.push(`It's uncomfortable, but complaints will only be met with punishment.`); + } + } else { + r.push(`${His} lactation will not be allowed to wane so easily.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the Attendant": + slave.need -= (V.flSex.size * 3); + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in the back of ${V.spaName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing the well-being of your slaves in ${his}`); + if (!hasAnyArms(slave)) { + r.push(`figurative`); + } + r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}.`); + slave.devotion += 1; + slave.trust += 1; + r.push(`${He} finds plenty of time to relax between ${his} duties, or during them, should ${his} company be requested.`); + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} massages and relieves slaves, analyzing ${his} tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} spends that time massaging ${his} breasts and working ${his} nipples.`); + r.push(induceLactation(slave, 4)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} takes the time to thoroughly milk ${his} breasts to keep ${his} lactation strong for you.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "rest in the spa": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off.`); + slave.need = 0; + } else if (V.flSex.has(slave.ID)) { + r.push(`is routinely relieved of any built up tension by ${S.Attendant.slaveName} and ${his}`); + if (canPenetrate(slave) && S.Attendant.boobs >= 500) { + r.push(`luscious breasts.`); + actX(S.Attendant, "mammary", 14); + } else { + if (S.Attendant.lips > 40) { + r.push(`luscious lips.`); + } else if (S.Attendant.skill.oral > 30) { + r.push(`skilled tongue.`); + } else { + r.push(`willing mouth.`); + } + actX(S.Attendant, "oral", 14); + /* possible cumflation code here */ + } + slave.need -= 60; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + switch (V.spaDecoration) { + case "Chinese Revivalist": + r.push(`The steam of the bathhouse lingers even in ${his} personal room and <span class="hotpink">dulls ${his} will.</span>`); + slave.devotion += 1; + break; + case "Chattel Religionist": + r.push(`${He} gets a space of ${his} own in the communal slave quarters, but the constant sexual presence of the other slaves <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + slave.devotion += 1; + break; + case "Degradationist": + r.push(`${He} gets a little room all to ${himself}, allowing ${him} to feel self-reliant; or it would, if it didn't have numerous cameras watching ${his} every move. The conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + break; + case "Asset Expansionist": + case "Transformation Fetishist": + case "Pastoralist": + r.push(`${He} gets a little room all to ${himself}, allowing ${him} to feel self-reliant; or it would, if it weren't filled with constant reminders of ${his} changing body. The conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + break; + default: + r.push(`${He} gets a comfortable little room all to ${himself}, allowing ${him} to let down ${his} guard and <span class="mediumaquamarine">feel self-reliant.</span>`); + slave.trust += 1; + } + } else { + switch (V.spaDecoration) { + case "Chinese Revivalist": + r.push(`The steam of the bathhouse lingers even in ${his} personal room and <span class="hotpink">renders ${him} even more submissive.</span>`); + slave.devotion += 1; + break; + case "Chattel Religionist": + r.push(`${He} likes ${his} personal space in ${V.spaName}, even if`); + if (canSmell(slave)) { + r.push(`it smells of`); + } else { + r.push(`it's filled with the heat from`); + } + r.push(`sex and steam.`); + break; + case "Degradationist": + if (slave.trust > 40) { + r.push(`The invasive living conditions of ${V.spaName} <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The invasive living conditions of ${V.spaName} <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } + break; + case "Asset Expansionist": + case "Transformation Fetishist": + case "Pastoralist": + r.push(`${He} likes ${his} little room in ${V.spaName},`); + if (slave.boobs < 10000) { + r.push(`even if ${his} boobs are too small to make the most of it.`); + } else { + r.push(`even more so, since it accommodates ${his} expansive bust.`); + } + break; + default: + r.push(`${He} loves ${his} little room in ${V.spaName}. It's the perfect end to a day of relaxation.`); + slave.trust += 1; + } + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} mingles with other soaking slaves, analyzing ${his} sexual tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (V.AttendantID !== 0) { + /* Attendant milks natural lactation in order to relieve physical stress — spaReport */ + if (slave.rules.lactation === "induce") { + if (canHold(slave) && slave.devotion >= -20) { + r.push(`${He} massages ${his} breasts while relaxing in an effort to bring in ${his} lactation.`); + } else { + r.push(`${He} tries to relax as best ${he} can with a pair of automatic breast pumps attached to ${his} chest in an attempt to induce lactation.`); + } + r.push(induceLactation(slave, 4)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (canHold(slave) && (slave.devotion >= -20 || slave.fetish === "boobs")) { + r.push(`${He} massages ${his} breasts while relaxing to take the edge off and keep the milk flowing.`); + } else { + r.push(`${He} tries to relax as best ${he} can with a pair of automatic breast pumps stuck to ${his} chest, keeping ${his} milk flowing.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the Matron": + slave.need -= (V.flSex.size * 3); + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (release.masturbation === 0) { + r.push(`gets off while relieving ${his} charges, so being forbidden from masturbation doesn't really bother ${him}.`); + } else { + r.push(`gets off while relieving ${his} charges, so ${he} doesn't feel the need for release that often.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in the back of ${V.nurseryName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing the responsibility of raising V.arcologies[0].name's children in ${his}`); + if (!hasAnyArms(slave)) { + r.push(`figurative`); + } + r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}.`); + slave.devotion += 1; + slave.trust += 1; + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} massages and relieves slaves, analyzing ${his} tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} spends that time massaging ${his} breasts and working ${his} nipples.`); + r.push(induceLactation(slave, 4)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} takes the time to thoroughly milk ${his} breasts to keep ${his} lactation strong for you.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "work as a nanny": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off.`); + slave.need = 0; + } else if (V.flSex.has(slave.ID)) { + r.push(`is routinely relieved of any built up tension by ${S.Matron.slaveName} and ${his}`); + if (canPenetrate(slave) && S.Matron.boobs >= 500) { + r.push(`luscious breasts.`); + actX(S.Matron, "mammary", 14); + } else { + if (S.Matron.lips > 40) { + r.push(`luscious lips.`); + } else if (S.Matron.skill.oral > 30) { + r.push(`skilled tongue.`); + } else { + r.push(`willing mouth.`); + } + actX(S.Matron, "oral", 14); + /* possible cumflation code here */ + } + slave.need -= 60; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + switch (V.nurseryDecoration) { + case "Chinese Revivalist": + r.push(`The Oriental artwork in ${his} personal room reminds ${him} of where ${he} is and <span class="hotpink">dulls ${his} will.</span>`); + slave.devotion += 1; + break; + case "Chattel Religionist": + r.push(`${He} gets a space of ${his} own in the communal slave quarters, but the constant sexual presence of the other slaves <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + slave.devotion += 1; + break; + case "Degradationist": + r.push(`${He} gets a little room all to ${himself}, allowing ${him} to feel self-reliant; or it would, if it didn't have numerous cameras watching ${his} every move. The conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + break; + case "Asset Expansionist": + case "Transformation Fetishist": + case "Pastoralist": + r.push(`${He} gets a little room all to ${himself}, allowing ${him} to feel self-reliant; or it would, if it weren't filled with constant reminders of ${his} changing body. The conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + break; + default: + r.push(`${He} gets a comfortable little room all to ${himself}, allowing ${him} to let down ${his} guard and <span class="mediumaquamarine">feel self-reliant.</span>`); + slave.trust += 1; + } + } else { + switch (V.nurseryDecoration) { + case "Chinese Revivalist": + r.push(`The Oriental artwork in ${his} personal room reminds ${him} of ${his} position and <span class="hotpink">renders ${him} even more submissive.</span>`); + slave.devotion += 1; + break; + case "Chattel Religionist": + r.push(`${He} likes ${his} personal space in ${V.nurseryName}, even if it constantly reminds ${him} that ${he} is naught but a servant to the Prophet.`); + break; + case "Degradationist": + if (slave.trust > 40) { + r.push(`The invasive living conditions of ${V.nurseryName} <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The invasive living conditions of ${V.nurseryName} <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } + break; + case "Asset Expansionist": + case "Transformation Fetishist": + case "Pastoralist": + r.push(`${He} likes ${his} little room in ${V.nurseryName},`); + if (slave.boobs < 10000) { + r.push(`even if ${his} boobs are too small to make the most of it.`); + } else { + r.push(`even more so, since it accommodates ${his} expansive bust.`); + } + break; + default: + r.push(`${He} loves ${his} little room in ${V.nurseryName}. It's the perfect end to a busy day of taking care of children.`); + slave.trust += 1; + } + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} mingles with other busily working slaves, analyzing ${his} sexual tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + /* update me, things like wet nursing and the like are important here */ + if (slave.rules.lactation === "induce") { + r.push(`${He} spends ${his} stay with a pair of automatic breast pumps attached to ${his} chest. The constant stimulation will have ${him} milky soon enough.`); + r.push(induceLactation(slave, 10)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (slave.devotion > 20) { + r.push(`Milk is always needed in a nursery and ${his} is no exception. ${He} is thoroughly drained each and every day, be it by breast pump or nursing infant.`); + } else if (slave.devotion >= -20) { + r.push(`Milk is always needed in a nursery and ${his} is no exception. ${He} is thoroughly drained each and every day.`); + } else { + r.push(`${He} spends ${his} stay with a pair of automatic breast pumps locked to ${his} chest. ${His} is a valuable commodity and needs to be maintained.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the Schoolteacher": + slave.need -= (V.flSex.size * 10); + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (release.masturbation === 0) { + r.push(`gets off with ${his} students, so being forbidden from masturbation doesn't really bother ${him}.`); + } else { + r.push(`gets off with ${his} students, so ${he} doesn't feel the need for release that often.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in the back of ${V.schoolroomName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing the future education of your slaves in ${his}`); + if (!hasAnyArms(slave)) { + r.push(`figurative`); + } + r.push(`${(hasBothArms(slave)) ? `hands` : `hand`}. It also helps to offset the tiring nature of ${his} position.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict ${his} non-essential activities.`); + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} teaches students, analyzing ${his} preferences. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`${His} lectures frequently include demonstrations on the proper way to induce lactation.`); + r.push(induceLactation(slave, 5)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`${He} makes sure to give a special lecture whenever ${his} breasts start to feel full on the proper methods to milk a ${girl}.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "learn in the schoolroom": + if (V.flSex.has(slave.ID)) { + slave.need -= 30; + seX(slave, "oral", S.Schoolteacher, "oral", 7); + if (canPenetrate(S.Schoolteacher) && slave.boobs > 500) { + seX(slave, "mammary", S.Schoolteacher, "penetrative", 7); + } + if (canDoVaginal(slave)) { + if (slave.vagina !== 0) { + seX(S.Schoolteacher, "penetrative", slave, "vaginal", 7); + if (canImpreg(slave, S.Schoolteacher) && (slave.breedingMark === 0 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) { + r.push(knockMeUp(slave, 5, 0, S.Schoolteacher.ID, true)); + } + } + slave.need -= 10; + } + if (canDoAnal(slave)) { + if (slave.anus !== 0) { + seX(S.Schoolteacher, "penetrative", slave, "anal", 7); + if (canImpreg(slave, S.Schoolteacher) && (slave.breedingMark === 0 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) { + r.push(knockMeUp(slave, 5, 1, S.Schoolteacher.ID, true)); + } + } + slave.need -= 10; + } + if (canPenetrate(slave)) { + if (S.Schoolteacher.vagina !== 0) { + seX(S.Schoolteacher, "vaginal", slave, "penetrative", 7); + } else if (S.Schoolteacher.anus !== 0) { + seX(S.Schoolteacher, "anal", slave, "penetrative", 7); + } + if (canImpreg(S.Schoolteacher, slave) && (S.Schoolteacher.breedingMark === 0 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset")) { + if (S.Schoolteacher.vagina !== 0 && S.Schoolteacher.ovaries === 1) { + r.push(knockMeUp(S.Schoolteacher, 5, 0, slave.ID, true)); + } else if (S.Schoolteacher.anus !== 0 && S.Schoolteacher.mpreg === 1) { + r.push(knockMeUp(S.Schoolteacher, 5, 1, slave.ID, true)); + } + } + slave.need -= 10; + } + } + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off, making the rule restricting ${his} sexual outlets superfluous.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off, making the rule restricting ${his} sexual outlets superfluous.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off during class despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + } else if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off during class as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off during class, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off during class, so ${he} doesn't feel the need to masturbate frequently.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + r.push(`The reasonable living conditions allow ${him} to <span class="mediumaquamarine">feel self-reliant.</span>`); + slave.trust += 1; + } else { + r.push(`${He} likes ${his} personal space in the dormitory even if the other students sometimes bother ${him}.`); + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} studies, analyzing what topics ${he} tends to keep returning to. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`${He} is taught and tested on how to properly induce lactation.`); + r.push(induceLactation(slave, 2)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + r.push(`${He} is taught and tested on how to properly manage lactation.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the Stewardess": + slave.need -= L.servantsQuarters * 10; + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (release.masturbation === 0) { + r.push(`gets off while performing ${his} duties, so being forbidden from masturbation doesn't really bother ${him}.`); + slave.need -= 20; + } else { + r.push(`gets off while performing ${his} duties, so ${he} doesn't feel the need for release that often.`); + slave.need -= 20; + } + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room off of ${V.servantsQuartersName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing ${him} in charge of it. It also helps to offset the tiring nature of ${his} position.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict ${his} non-essential activities.`); + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} manages the servants, analyzing ${his} preferences. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} spends that time massaging ${his} breasts and working ${his} nipples.`); + r.push(induceLactation(slave, 2)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen"> ${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} takes the time to thoroughly milk ${his} breasts to keep ${his} lactation strong for you.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "work as a servant": + slave.need -= V.slaves.length * 5; + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off at work despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + } else if (App.Utils.hasNonassignmentSex(slave)) { + r.push(`gets off at work as well as during ${his} rest time.`); + } else if (release.masturbation === 0) { + r.push(`gets off at work, so being unable to touch ${himself} doesn't bother ${him}.`); + } else { + r.push(`gets off at work, so being unable to sate ${his} urges doesn't affect ${him} seriously.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + switch (V.servantsQuartersDecoration) { + case "Degradationist": + r.push(`The abysmal living conditions <span class="hotpink">force ${him} to get used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of how meaningless ${he} is.</span>`); + slave.trust -= 3; + } else { + r.push(`slavery and <span class="gold">reminds ${him} that ${his} life is meaningless.</span>`); + slave.trust -= 1; + } + break; + case "Subjugationist": + case "Supremacist": + r.push(`The spare living conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + r.push(`Every time ${he} has to watch another slave get beaten <span class="gold">solidifies ${his} fears.</span>`); + slave.trust -= 1; + break; + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Edo Revivalist": + case "Roman Revivalist": + r.push(`The spare living conditions <span class="hotpink">get ${him} used</span> to the routine of slavery.`); + break; + case "Arabian Revivalist": + case "Egyptian Revivalist": + case "Neo-Imperialist": + r.push(`The spare living conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery, but the small luxuries <span class="mediumaquamarine">afford ${him} some dignity.</span>`); + slave.trust += 1; + } else { + r.push(`slavery.`); + } + break; + default: + r.push(`The reasonable living conditions allow ${him} to <span class="mediumaquamarine">feel some dignity</span> after <span class="hotpink">cleaning up sexual fluids and servicing slaves all day.</span>`); + slave.trust += 1; + } + slave.devotion += 1; + } else { + switch (V.servantsQuartersDecoration) { + case "Degradationist": + if (slave.trust > 40) { + r.push(`The abysmal living conditions of ${V.servantsQuartersName} <span class="gold">remind ${him} that ${his} life is absolutely meaningless to you.</span>`); + slave.trust -= 3; + } else if ((slave.trust > 10)) { + r.push(`The abysmal living conditions of ${V.servantsQuartersName} <span class="gold">remind ${him} that ${he} is worthless as a person to you.</span>`); + slave.trust -= 2; + } + break; + case "Subjugationist": + case "Supremacist": + if (slave.trust > 40) { + r.push(`The spare living conditions of ${V.servantsQuartersName} <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The spare living conditions of ${V.servantsQuartersName} <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } + break; + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Edo Revivalist": + case "Roman Revivalist": + r.push(`The living conditions of ${V.servantsQuartersName} might be spare, but they are no means uncomfortable.`); + break; + case "Arabian Revivalist": + case "Egyptian Revivalist": + case "Neo-Imperialist": + r.push(`The living conditions of ${V.servantsQuartersName} might be spare, but ${he} loves the little luxuries that come with them.`); + break; + default: + r.push(`${He} likes ${his} personal space in ${V.servantsQuartersName}'s dormitory.`); + } + } + if (slave.rules.living === "luxurious") { + r.push(`They provide <span class="green">satisfying rest</span> every time ${he} drifts off to sleep.`); + } else if (slave.rules.living === "spare") { + if (slave.devotion > 20 && slave.trust <= 10) { + r.push(`They don't provide much rest, however.`); + } else { + r.push(`They provide meager rest, if anything.`); + } + } else { + r.push(`They provide`); + if (slave.devotion > 20) { + r.push(`<span class="green">adequate rest</span> for a ${girl} that knows how to manage ${his} time.`); + } else { + r.push(`<span class="green">adequate rest,</span> but not enough for a slave lacking time management.`); + } + } + + if (slave.rules.rest === "mandatory") { + if (slave.devotion <= 20) { + r.push(`Getting a day off each week <span class="mediumaquamarine">builds feelings of liberty</span> a slave shouldn't have.`); + slave.trust += 3; + } else { + r.push(`${He} appreciates having a weekly day off and takes it as a sign that ${he} has a <span class="mediumaquamarine">caring ${getWrittenTitle(slave)}.</span>`); + slave.trust += 1; + } + } else if (V.slaveUsedRest) { + if (slave.rules.rest === "permissive") { + if (slave.devotion <= 20) { + r.push(`${He}'s permitted to rest whenever ${he} feels even the slightest bit tired; <span class="mediumaquamarine">a privilege not lost on ${him}.</span>`); + slave.trust += 2; + } else { + r.push(`${He} <span class="hotpink">likes</span> that you <span class="mediumaquamarine">care enough</span> to let him rest when he gets tired.`); + slave.devotion += 1; + slave.trust += 1; + } + } else if (slave.rules.rest === "restrictive") { + if (slave.devotion <= -20) { + r.push(`${He}'s permitted to rest when fatigue sets in, but not enough to shake ${his} tiredness; ${he} feels this <span class="gold">deprivation</span> is intentional.`); + slave.trust -= 1; + } else if ((slave.devotion <= 20)) { + r.push(`${He}'s permitted to rest when fatigue sets in, and <span class="hotpink">understands</span> this is less for ${his} wellbeing and more to prevent ${him} from become unproductive.`); + slave.devotion += 1; + } else { + r.push(`${He}'s permitted to rest when fatigue sets in and is <span class="mediumaquamarine">thankful</span> you would allow ${him} the privilege so that ${he} may serve you better.`); + slave.trust += 1; + } + } else if (slave.rules.rest === "cruel") { + if (slave.devotion <= -20) { + r.push(`${He}'s <span class="gold">terrified</span> that the only reason ${he} is given any time to rest at all is just to prolong your torment of ${him}.`); + slave.trust -= 3; + } else if ((slave.devotion <= 20)) { + r.push(`You work ${him} to the bone and only allow ${him} rest when on the verge of collapsing. ${He} <span class="gold">fears</span> this <span class="mediumorchid">cruelty</span> is just the beginning.`); + slave.trust -= 3; + slave.devotion -= 3; + } else { + r.push(`Only being allowed rest when on the verge of collapsing <span class="mediumorchid">shakes ${his} faith</span> in you a little.`); + slave.devotion -= 2; + } + } + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} sees to your other slaves, analyzing ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`${He} carries out ${his} daily tasks with a pair of automatic breast pumps attached to ${his} chest to help bring in ${his} lactation.`); + r.push(induceLactation(slave, 6)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain" && V.servantMilkers !== 1) { + r.push(`${He} utilizes ${his} lactation during ${his} daily tasks when needed, and if it should not be needed, spends the evenings with a pair of automatic breast pumps.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be the Milkmaid": + slave.need -= L.dairy * 5; + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (release.masturbation === 0) { + r.push(`gets off while performing ${his} duties, so being forbidden from masturbation doesn't really bother ${him}.`); + } else { + r.push(`gets off while performing ${his} duties, so ${he} doesn't feel the need for release that often.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in ${V.dairyName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing ${him} in charge of it. It also helps to offset the tiring nature of ${his} position.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict ${his} non-essential activities.`); + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} cares for the cattle, analyzing ${his} preferences. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} spends that time hooked up to a milker to hasten ${his} milk production.`); + r.push(induceLactation(slave, 10)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen"> ${cashFormat(milkResult.milkSale)}.</span>`); + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "work in the dairy": + if (V.dairyRestraintsSetting > 1) { + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off, not that ${he} gets the choice.`); + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off, not that ${he} gets a choice.`); + } else { + r.push(`gets off regardless of ${his} thoughts on the matter.`); + } + slave.need = 0; + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} arousal in regards to the visual stimulation. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + } else { + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off from being milked despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + slave.need -= 20; + } else if ((release.masturbation === 0)) { + r.push(`gets off from being milked, so being forbidden to masturbate doesn't affect ${him} seriously.`); + slave.need -= 20; + } else { + r.push(`gets off from being milked, so ${he} doesn't feel the need to masturbate frequently.`); + slave.need -= 20; + } + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + let adequateConditions; + if (slave.devotion <= 20) { + switch (V.dairyDecoration) { + case "Degradationist": + r.push(`The abysmal living conditions <span class="hotpink">force ${him} to get used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware that ${his} fluids are more valuable than ${his} life.</span>`); + slave.trust -= 3; + } else { + r.push(`slavery and <span class="gold">reminds ${him} that ${he} is nothing more than a cow.</span>`); + slave.trust -= 1; + } + slave.devotion += 1; + break; + case "Subjugationist": + case "Supremacist": + r.push(`The spare living conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + slave.devotion += 1; + break; + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Edo Revivalist": + case "Egyptian Revivalist": + case "Roman Revivalist": + case "Neo-Imperialist": + r.push(`The spare living conditions and daily tasks <span class="hotpink">get ${him} used</span> to the routine of slavery.`); + slave.devotion += 1; + break; + default: + r.push(`The reasonable living conditions allow ${him} to relax after the days work, or would if ${his}`); + if (slave.lactation) { + r.push(`breasts`); + if (slave.balls) { + r.push(`and`); + } + } + if (slave.balls) { + r.push(`balls`); + } + r.push(`didn't ache so much, constantly reminding ${him} of ${his} role as a cow.`); + if (slave.pregKnown && V.dairyPregSetting >= 1 && slave.bellyPreg >= 1500) { + r.push(`Getting comfortable`); + let belly; + if (slave.bellyPreg >= 750000) { + belly = bellyAdjective(slave); + r.push(`with a strained, ${belly} stomach ready to burst with contracted calves`); + } else if (slave.bellyPreg >= 600000) { + belly = bellyAdjective(slave); + r.push(`with a constantly quivering ${belly} stomach filled to the brim with contracted calves`); + } else if (slave.bellyPreg >= 450000) { + belly = bellyAdjective(slave); + r.push(`with a ${belly} stomach overstuffed with contracted calves`); + } else if (slave.bellyPreg >= 150000) { + r.push(`with the massive bulge of ${his} contract pregnancy`); + } else if (slave.bellyPreg >= 120000) { + r.push(`while so enormously pregnant with calves`); + } else if (slave.bellyPreg >= 10000) { + r.push(`while so heavily pregnant with`); + if (slave.pregType > 1) { + r.push(`contracted children`); + } else { + r.push(`a contracted child`); + } + } else if (slave.bellyPreg >= 5000) { + r.push(`with ${his} contract pregnancy`); + } else { + r.push(`with the slight bulge of pregnancy`); + } + r.push(`also weighs heavily on ${his}`); + if (slave.bellyPreg >= 120000) { + r.push(`mind, though ${he} often gets lost in the sensation of being so full of life.`); + } else { + r.push(`mind.`); + } + } + } + } else { + switch (V.dairyDecoration) { + case "Degradationist": + if (slave.trust > 40) { + r.push(`The abysmal living conditions of ${V.dairyName} <span class="gold">remind ${him} that ${his} fluids are more valuable to you than ${his} life.</span>`); + slave.trust -= 3; + } else if ((slave.trust > 10)) { + r.push(`The abysmal living conditions of ${V.dairyName} <span class="gold">remind ${him} that ${he} is worthless as a person to you</span> and forces ${him} to accept ${he} is nothing more than a lowly cow.`); + slave.trust -= 2; + } + break; + case "Subjugationist": + case "Supremacist": + if (slave.trust > 40) { + r.push(`The spare living conditions of ${V.dairyName} <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The spare living conditions of ${V.dairyName} <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } + break; + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Edo Revivalist": + case "Egyptian Revivalist": + case "Roman Revivalist": + r.push(`The living conditions of ${V.dairyName} might be spare, but they are by no means meant to be uncomfortable.`); + adequateConditions = 1; + break; + default: + r.push(`${He} likes ${his} personal space in ${V.dairyName}'s dormitory, even if it's just a stall.`); + } + } + if (slave.rules.living === "luxurious") { + r.push(`It provides a <span class="green">satisfying rest</span> every time ${he} drifts off to sleep.`); + } else if (slave.rules.living === "spare") { + if (slave.devotion > 20) { + if (adequateConditions) { + r.push(`They are <span class="green">quite relaxing</span>`); + } else { + r.push(`They suffice`); + } + r.push(`for cows that know their place.`); + } else { + if (adequateConditions) { + r.push(`They could even be considered relaxing if properly appreciated.`); + } else { + r.push(`They are just barely sufficient, but only if properly made use of.`); + } + } + } else { + r.push(`It provides`); + if (slave.devotion > 20) { + r.push(`<span class="green">more than enough rest</span> for a happy cow looking to unwind.`); + } else { + r.push(`<span class="green">adequate rest,</span> but only to cows capable of appreciating what they've got.`); + } + } + + if (slave.rules.rest === "mandatory") { + if (slave.devotion <= 20) { + r.push(`Getting a day off each week <span class="mediumaquamarine">builds feelings of liberty</span> a slave shouldn't have.`); + slave.trust += 3; + } else { + r.push(`${He} appreciates having a weekly day off and takes it as a sign that ${he} has a <span class="mediumaquamarine">caring ${getWrittenTitle(slave)}.</span>`); + slave.trust += 1; + } + } else if (V.slaveUsedRest) { + if (slave.rules.rest === "permissive") { + if (slave.devotion <= 20) { + r.push(`${He}'s permitted to rest whenever ${he} feels even the slightest bit tired; <span class="mediumaquamarine">a privilege not lost on ${him}.</span>`); + slave.trust += 2; + } else { + r.push(`${He} <span class="hotpink">likes</span> that you <span class="mediumaquamarine">care enough</span> to let him rest when he gets tired.`); + slave.devotion += 1; + slave.trust += 1; + } + } else if (slave.rules.rest === "restrictive") { + if (slave.devotion <= -20) { + r.push(`${He}'s permitted to rest when fatigue sets in, but not enough to shake ${his} tiredness; ${he} feels this <span class="gold">deprivation</span> is intentional.`); + slave.trust -= 1; + } else if ((slave.devotion <= 20)) { + r.push(`${He}'s permitted to rest when fatigue sets in, and <span class="hotpink">understands</span> this is less for ${his} wellbeing and more to prevent ${him} from become unproductive.`); + slave.devotion += 1; + } else { + r.push(`${He}'s permitted to rest when fatigue sets in and is <span class="mediumaquamarine">thankful</span> you would allow ${him} the privilege so that ${he} may serve you better.`); + slave.trust += 1; + } + } else if (slave.rules.rest === "cruel") { + if (slave.devotion <= -20) { + r.push(`${He}'s <span class="gold">terrified</span> that the only reason ${he} is given any time to rest at all is just to prolong your torment of ${him}.`); + slave.trust -= 3; + } else if ((slave.devotion <= 20)) { + r.push(`You work ${him} to the bone and only allow ${him} rest when on the verge of collapsing. ${He} <span class="gold">fears</span> this <span class="mediumorchid">cruelty</span> is just the beginning.`); + slave.trust -= 3; + slave.devotion -= 3; + } else { + r.push(`Only being allowed rest when on the verge of collapsing <span class="mediumorchid">shakes ${his} faith</span> in you a little.`); + slave.devotion -= 2; + } + } + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} gets milked, attempting to gauge ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + } + break; + case "be the Farmer": + slave.need -= L.farmyard * 5; + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (release.masturbation === 0) { + r.push(`gets off while performing ${his} duties, so being forbidden from masturbation doesn't really bother ${him}.`); + slave.need -= 20; + } else { + r.push(`gets off while performing ${his} duties, so ${he} doesn't feel the need for release that often.`); + slave.need -= 20; + } + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} private room in ${V.farmyardName} and <span class="mediumaquamarine">trusts</span> you a bit more for placing ${him} in charge of it.`); + slave.devotion += 1; + slave.trust += 1; + + if (V.slaveUsedRest) { + r.push(`${He} is permitted to take short breaks throughout the week to help manage ${his} building exhaustion, though it does restrict impact ${his} effectiveness.`); + delete V.slaveUsedRest; + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} cares for the cattle, analyzing ${his} preferences. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} spends that time massaging ${his} breasts and working ${his} nipples.`); + r.push(induceLactation(slave, 2)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (V.servantMilkers === 1) { + milkResult = App.SlaveAssignment.getMilked(slave, 0.25); + r.push(`${His} duties keep ${him} busy, but ${he}`); + if (slave.fetish === "boobs") { + r.push(`eagerly`); + } + r.push(`uses the penthouse milkers whenever ${he} can, giving ${milkResult.milk} liters of milk over the week, which is sold for <span class="yellowgreen">${cashFormat(milkResult.milkSale)}.</span>`); + } else { + r.push(`Whenever ${he} finds a free moment from ${his} duties, ${he} takes the time to thoroughly milk ${his} breasts to keep ${his} lactation strong for you.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "work as a farmhand": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off from working as a farmhand despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + slave.need -= 20; + } else if ((release.masturbation === 0)) { + r.push(`gets off from working as a farmhand, so being forbidden to masturbate doesn't affect ${him} seriously.`); + slave.need -= 20; + } else { + r.push(`gets off from working as a farmhand, so ${he} doesn't feel the need to masturbate frequently.`); + slave.need -= 20; + } + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + switch (V.farmyardDecoration) { + case "Degradationist": + r.push(`The abysmal living conditions <span class="hotpink">force ${him} to get used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware that ${his} work in the fields is more valuable than ${his} life.</span>`); + slave.trust -= 3; + } else { + r.push(`slavery and <span class="gold">reminds ${him} that ${he} is nothing more than a farming tool.</span>`); + slave.trust -= 1; + } + slave.devotion += 1; + break; + case "Subjugationist": + case "Supremacist": + r.push(`The spare living conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + slave.devotion += 1; + break; + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Edo Revivalist": + case "Egyptian Revivalist": + case "Neo-Imperialist": + r.push(`The spare living conditions and daily tasks <span class="hotpink">get ${him} used</span> to the routine of slavery.`); + slave.devotion += 1; + break; + case "Roman Revivalist": + r.push(`${He} is <span class="hotpink">pleased</span> with ${his} cushy living arrangements, and <span class="mediumaquamarine">trusts you more</span> for it.`); + slave.devotion += 2; + slave.trust += 2; + break; + default: + r.push(`The reasonable living conditions allow ${him} to relax after the days work.`); + if (slave.pregKnown && V.farmyardPregSetting >= 1 && slave.bellyPreg >= 1500) { + r.push(`Getting comfortable`); + let belly; + if (slave.bellyPreg >= 750000) { + belly = bellyAdjective(slave); + r.push(`with a strained, ${belly} stomach ready to burst`); + } else if (slave.bellyPreg >= 600000) { + belly = bellyAdjective(slave); + r.push(`with a constantly quivering ${belly} stomach filled to the brim`); + } else if (slave.bellyPreg >= 450000) { + belly = bellyAdjective(slave); + r.push(`with a ${belly} stomach overstuffed`); + } else if (slave.bellyPreg >= 150000) { + r.push(`with the massive bulge of ${his} pregnancy`); + } else if (slave.bellyPreg >= 120000) { + r.push(`while so enormously pregnant`); + } else if (slave.bellyPreg >= 10000) { + r.push(`while so heavily pregnant with`); + if (slave.pregType > 1) { + r.push(`children`); + } else { + r.push(`a child`); + } + } else if (slave.bellyPreg >= 5000) { + r.push(`with ${his} pregnancy`); + } else { + r.push(`with the slight bulge of pregnancy`); + } + r.push(`also weighs heavily on ${his}`); + if (slave.bellyPreg >= 120000) { + r.push(`mind, though ${he} often gets lost in the sensation of being so full of life.`); + } else { + r.push(`mind.`); + } + } + } + } else { + switch (V.farmyardDecoration) { + case "Degradationist": + if (slave.trust > 40) { + r.push(`The abysmal living conditions of ${V.farmyardName} <span class="gold">remind ${him} that ${his} work in the fields is more valuable to you than ${his} life.</span>`); + slave.trust -= 3; + } else if ((slave.trust > 10)) { + r.push(`The abysmal living conditions of ${V.farmyardName} <span class="gold">remind ${him} that ${he} is worthless as a person to you</span> and forces ${him} to accept ${he} is nothing more than a lowly farmhand.`); + slave.trust -= 2; + } + break; + case "Subjugationist": + case "Supremacist": + if (slave.trust > 40) { + r.push(`The spare living conditions of ${V.farmyardName} <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The spare living conditions of ${V.farmyardName} <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } + break; + case "Arabian Revivalist": + case "Aztec Revivalist": + case "Chattel Religionist": + case "Chinese Revivalist": + case "Edo Revivalist": + case "Egyptian Revivalist": + case "Neo-Imperialist": + r.push(`The living conditions of ${V.farmyardName} might be spare, but they are by no means meant to be uncomfortable.`); + break; + case "Roman Revivalist": + r.push(`${He} is <span class="hotpink">very happy</span> about ${his} cushy living arrangements, and <span class="mediumaquamarine">trusts you all the more</span> for it.`); + slave.devotion += 2; + slave.trust += 2; + break; + default: + r.push(`${He} likes ${his} personal space in ${V.farmyardName}'s dormitory, even if it's just a small room.`); + } + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} works with the crops and animals, attempting to gauge ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`${He} carries out ${his} daily tasks with a pair of automatic breast pumps attached to ${his} chest to help bring in ${his} lactation.`); + r.push(induceLactation(slave, 6)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + r.push(`${He} carries out ${his} daily tasks with a pair of automatic breast pumps attached to ${his} chest to keep ${him} productive and drained.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "be your Concubine": + if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off allowing ${him} to focus on getting you off.`); + slave.need = 0; + } else { + r.push(`gets more of your attention each day than any other slave, leaving ${him} thoroughly satisfied.`); + slave.need = 0; + } + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} amuses ${himself}, analyzing ${his} tastes. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`${He} spends ${his} time away from you fervently working to induce lactation, eager to enjoy it with you.`); + r.push(induceLactation(slave, 9)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + r.push(`${He} doesn't need to do anything to maintain ${his} lactation as you personally see to it each night.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "serve in the master suite": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off.`); + slave.need = 0; + } else if (V.masterSuiteUpgradeLuxury === 2 && L.masterSuite > 3) { + r.push(`never goes unsatisfied with all the action in the fuckpit.`); + slave.need -= 80; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off regularly despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + slave.need -= 20; + } else if ((release.masturbation === 0)) { + r.push(`gets off regularly, so being forbidden to masturbate doesn't affect ${him} seriously.`); + slave.need -= 20; + } else { + r.push(`gets off regularly, so ${he} doesn't feel the need to seek relief.`); + slave.need -= 20; + } + } else { + if (slave.devotion <= 20) { + r.push(`sometimes needs a little extra attention from you, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing to your touch, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + slave.need -= 40; + } else { + r.push(`sometimes needs a little extra sexual attention, not that you mind giving it to ${him}.`); + slave.need -= 40; + } + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} gets off, analyzing ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + r.push(`When you have the free time, you message ${his} breasts and work ${his} nipples in an effort to bring in ${his} lactation.`); + r.push(induceLactation(slave, 2)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (slave.devotion > 20) { + if (slave.fetish === "boobs") { + r.push(`${He} puts ${his} breasts to work when you humor ${his} tastes, easily keeping ${his} lactation from diminishing.`); + } else { + r.push(`You find ways to put ${his} milk to good use, and when you can't, see to it yourself that ${he} is kept drained and comfortable.`); + } + } else if (slave.devotion >= -20) { + if (slave.fetish === "boobs") { + r.push(`${He} responds positively to breast play in bed, assuring ${his} milk production isn't going anywhere.`); + } else { + r.push(`You focus on ${his} breasts during foreplay to make sure ${he} keeps producing milk for you.`); + } + } else { + r.push(`You make sure to see to it that ${he} keeps on lactating.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + case "live with your Head Girl": + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off, not that ${S.HeadGirl.slaveName} cares.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off, though it doesn't stop ${S.HeadGirl.slaveName}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off with ${S.HeadGirl.slaveName} despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + slave.need -= 20; + } else if ((release.masturbation === 0)) { + r.push(`gets off with ${S.HeadGirl.slaveName}, so being forbidden to masturbate doesn't affect ${him} seriously.`); + slave.need -= 20; + } else { + r.push(`gets off with ${S.HeadGirl.slaveName}, so ${he} doesn't feel the need for release that often.`); + slave.need -= 20; + } + } else { + r.push(`either gets off with ${S.HeadGirl.slaveName} or gets to put up with sexual frustration.`); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.devotion <= 20) { + r.push(`${He} shares a room, and sometimes bed, with ${S.HeadGirl.slaveName}. Your Head Girl keeps it from going to ${his} head, however.`); + } else { + r.push(`${He} loves sharing a room, and sometimes bed, with ${S.HeadGirl.slaveName}.`); + } + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} spends time with your Head Girl, analyzing ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + if (S.HeadGirl.fetish === "boobs") { + r.push(`Your Head Girl enjoys playing with ${his} tits, making it an inevitability that ${he}'ll begin lactating.`); + } else { + r.push(`${He} carries out ${his} daily tasks with a pair of automatic breast pumps attached to ${his} chest to help bring in ${his} lactation.`); + } + r.push(induceLactation(slave, 4)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain") { + if (S.HeadGirl.fetish === "boobs") { + r.push(`Your Head Girl enjoys playing with ${his} tits, thoroughly draining ${him} of milk and encouraging ${his} continued lactation.`); + } else { + r.push(`${He} utilizes ${his} lactation as your Head Girl demands, and if it should not be needed, spends the evenings with a pair of automatic breast pumps.`); + } + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + break; + default: + if (slave.devotion < -50) { + r.push(`is so unhappy that ${he} has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.energy <= 20) { + r.push(`is frigid and has little interest in getting off${(App.Utils.releaseRestricted(slave)) ? `, making the rule restricting ${his} sexual outlets superfluous` : ``}.`); + slave.need = 0; + } else if (slave.need < slave.needCap * 0.5) { + if (slave.devotion <= 20) { + r.push(`gets off at work despite ${his} reluctance, <span class="hotpink">habituating ${him} to sexual slavery.</span>`); + slave.devotion += 1; + if ((slave.trust >= -20) && (slave.devotion <= 20)) { + r.push(`${He} hates ${himself} for climaxing, and knows the mild aphrodisiacs in the food are forcing ${his} arousal, <span class="gold">frightening ${him}.</span>`); + slave.trust -= 1; + } + } else if ((release.masturbation === 0)) { + r.push(`gets off at work, so being forbidden to masturbate doesn't affect ${him} seriously.`); + } else { + r.push(`gets off at work, so ${he} doesn't feel the need to masturbate frequently.`); + } + slave.need -= 20; + } else { + r.push(App.SlaveAssignment.nonAssignmentRelease(slave)); + } + + r.push(App.EndWeek.Rules.speechRules(slave)); + + if (slave.assignment !== "be your Head Girl" && slave.assignment !== "guard you") { + if (V.roomsPopulation > V.rooms) { + if (slave.rules.living === "luxurious") { + r.push(`There are <span class="yellow">too many slaves for the penthouse's individual rooms,</span> so ${he} moves out into the dormitory.`); + slave.rules.living = "normal"; + penthouseCensus(); + } + } + } + + if (slave.devotion <= 20) { + if (slave.rules.living === "spare") { + r.push(`The spare living conditions <span class="hotpink">get ${him} used</span> to the routine of`); + if (slave.trust > 20) { + r.push(`slavery and <span class="gold">keep ${him} aware of ${his} lowly place.</span>`); + slave.trust -= 1; + } else { + r.push(`slavery.`); + } + slave.devotion += 1; + } else if ((slave.rules.living === "normal")) { + r.push(`The reasonable living conditions allow ${him} to <span class="mediumaquamarine">feel self-reliant.</span>`); + slave.trust += 1; + } else { + r.push(`The luxurious living conditions encourage ${him} to <span class="mediumaquamarine">feel respectable.</span>`); + slave.trust += 2; + } + } else { + if ((slave.ID === V.HeadGirlID) && (V.HGSuite === 1)) { + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} suite and <span class="mediumaquamarine">trusts</span> you a bit more for providing it.`); + slave.devotion += 1; + slave.trust += 1; + } else if ((slave.ID === V.BodyguardID) && (V.dojo <= 1)) { + r.push(`${He} rarely leaves your company enough to make use of ${his} living area.`); + } else if ((slave.rules.living === "luxurious")) { + r.push(`${He} is <span class="hotpink">very happy</span> with ${his} little room and <span class="mediumaquamarine">trusts</span> you a bit more for providing it.`); + slave.devotion += 1; + slave.trust += 1; + } else if ((slave.rules.living === "normal")) { + r.push(`${He} likes ${his} personal space in the dormitory.`); + } else if ((slave.trust > 40)) { + r.push(`The spare living conditions <span class="gold">remind ${him} not to get too comfortable</span> with ${his} life.`); + slave.trust -= 2; + } else if ((slave.trust > 10)) { + r.push(`The spare living conditions <span class="gold">keep ${him} aware of ${his} place.</span>`); + slave.trust -= 1; + } else { + r.push(`${He}'s used to having only the bare minimum in terms of living conditions, so ${he}'s not bothered by them.`); + } + } + if (["be a servant", "get milked", "please you", "serve the public", "whore", "work as a farmhand", "work a glory hole"].includes(slave.assignment)) { + if (slave.rules.living === "luxurious") { + if (slave.devotion <= 20) { + r.push(`They provide`); + } else { + r.push(`It provides a`); + } + r.push(`<span class="green">satisfying rest</span> every time ${he} drifts off to sleep.`); + } else if (slave.rules.living === "spare") { + if (slave.devotion > 20 && slave.trust <= 10) { + r.push(`They don't provide much rest, however.`); + } else { + r.push(`They provide meager rest, if anything, however.`); + } + } else { + if (slave.devotion <= 20) { + r.push(`They provide`); + } else { + r.push(`It provides`); + } + if (slave.devotion > 20) { + r.push(`<span class="green">adequate rest</span> for a ${girl} that knows how to manage ${his} time.`); + } else { + r.push(`<span class="green">adequate rest,</span> but not enough for a slave lacking time management.`); + } + } + } + + if (slave.rules.living !== "luxurious") { + if (V.dormitoryPopulation > V.dormitory) { + const dormPop = V.dormitoryPopulation - V.dormitory; + r.push(`The slave dormitory is`); + if (dormPop <= 5) { + r.push(`<span class="yellow">somewhat overcrowded.</span> The mild inconvenience`); + if (slave.trust > 20) { + r.push(`<span class="gold">reduces ${his} trust</span> in you a little.`); + slave.trust -= 2; + } else { + r.push(`<span class="mediumorchid">lowers you</span> a little in ${his} opinion.`); + slave.devotion -= 2; + } + } else if (dormPop <= 10) { + r.push(`<span class="yellow">badly overcrowded.</span> The constant difficulties`); + if (slave.trust > 20) { + r.push(`<span class="gold">reduces ${his} trust</span> in you`); + slave.trust -= 3; + } else { + r.push(`<span class="mediumorchid">lowers you</span> in ${his} opinion`); + slave.devotion -= 3; + } + r.push(`and is <span class="red">not good for ${him},</span> since it's difficult to rest there.`); + healthDamage(slave, 2); + } else { + r.push(`<span class="yellow">extremely overcrowded.</span> The unpleasant situation`); + if (slave.trust > 20) { + r.push(`seriously <span class="gold">reduces ${his} trust</span> in you`); + slave.trust -= 5; + } else { + r.push(`seriously <span class="mediumorchid">lowers you</span> in ${his} opinion`); + slave.devotion -= 5; + } + r.push(`and is <span class="red">bad for ${his} health.</span>`); + healthDamage(slave, 4); + } + } + } + + if (["be a servant", "get milked", "please you", "serve the public", "whore", "work a glory hole"].includes(slave.assignment)) { + if (slave.rules.rest === "mandatory") { + if (slave.devotion <= 20) { + r.push(`Getting a day off each week <span class="mediumaquamarine">builds feelings of liberty</span> a slave shouldn't have.`); + slave.trust += 3; + } else { + r.push(`${He} appreciates having a weekly day off and takes it as a sign that ${he} has a <span class="mediumaquamarine">caring ${getWrittenTitle(slave)}.</span>`); + slave.trust += 1; + } + } else if (V.slaveUsedRest) { + if (slave.rules.rest === "permissive") { + if (slave.devotion <= 20) { + r.push(`${He}'s permitted to rest whenever ${he} feels even the slightest bit tired; <span class="mediumaquamarine">a privilege not lost on ${him}.</span>`); + slave.trust += 2; + } else { + r.push(`${He} <span class="hotpink">likes</span> that you <span class="mediumaquamarine">care enough</span> to let him rest when he gets tired.`); + slave.devotion += 1; + slave.trust += 1; + } + } else if (slave.rules.rest === "restrictive") { + if (slave.devotion <= -20) { + r.push(`${He}'s permitted to rest when fatigue sets in, but not enough to shake ${his} tiredness; ${he} feels this <span class="gold">deprivation</span> is intentional.`); + slave.trust -= 1; + } else if ((slave.devotion <= 20)) { + r.push(`${He}'s permitted to rest when fatigue sets in, and <span class="hotpink">understands</span> this is less for ${his} wellbeing and more to prevent ${him} from become unproductive.`); + slave.devotion += 1; + } else { + r.push(`${He}'s permitted to rest when fatigue sets in and is <span class="mediumaquamarine">thankful</span> you would allow ${him} the privilege so that ${he} may serve you better.`); + slave.trust += 1; + } + } else if (slave.rules.rest === "cruel") { + if (slave.devotion <= -20) { + r.push(`${He}'s <span class="gold">terrified</span> that the only reason ${he} is given any time to rest at all is just to prolong your torment of ${him}.`); + slave.trust -= 3; + } else if ((slave.devotion <= 20)) { + r.push(`You work ${him} to the bone and only allow ${him} rest when on the verge of collapsing. ${He} <span class="gold">fears</span> this <span class="mediumorchid">cruelty</span> is just the beginning.`); + slave.trust -= 3; + slave.devotion -= 3; + } else { + r.push(`Only being allowed rest when on the verge of collapsing <span class="mediumorchid">shakes ${his} faith</span> in you a little.`); + slave.devotion -= 2; + } + } + delete V.slaveUsedRest; + } + } + + r.push(App.EndWeek.Rules.consentRules(slave)); + + if (slave.attrKnown === 0) { + if ((V.week - slave.weekAcquired > 4) && slave.energy > 20) { + slave.attrKnown = 1; + r.push(`${capFirstChar(V.assistant.name)} has been monitoring ${him} as ${he} gets off, analyzing ${his} sexuality. It seems ${he} is`); + r.push(App.EndWeek.Rules.attractionDiscovery(slave)); + } + } + + if (slave.rules.lactation === "induce") { + if (canHold(slave)) { + r.push(`${He} is required to vigorously massage ${his} breasts and nipples in an effort to induce lactation.`); + } else { + r.push(`${He} spends ${his} nights with a pair of automatic breast pumps attached to ${his} chest in order to bring in ${his} lactation.`); + } + r.push(induceLactation(slave, 4)); + if (slave.lactation === 1) { + slave.rules.lactation = "maintain"; + } + } else if (slave.rules.lactation === "maintain" && (V.servantMilkers !== 1 || !setup.servantMilkersJobs.includes(slave.assignment))) { + r.push(`${He} utilizes ${his} lactation during ${his} daily tasks as needed, and when ${he} isn't drained well enough, spends the evenings with a pair of automatic breast pumps.`); + slave.lactationDuration = 2; + slave.boobs -= slave.boobsMilk; + slave.boobsMilk = 0; + } + + r.push(App.SlaveAssignment.rewardAndPunishment(slave)); + if (V.subSlaves > 0 && release.slaves === 1 && slave.assignment !== "serve your other slaves") { + slave.need -= (20 * V.subSlaves); + /* make those serve your other slaves do some work for once */ + } + } + } + } + App.Events.addNode(el, r); + return el; +}; diff --git a/src/endWeek/saRulesFunctions.js b/src/endWeek/saRulesFunctions.js index c953aef7a0f638d5dc992f40cfb235b71900efa3..4d890dd0c007ae5b958ac0186f475297e1224cb2 100644 --- a/src/endWeek/saRulesFunctions.js +++ b/src/endWeek/saRulesFunctions.js @@ -377,7 +377,7 @@ App.EndWeek.Rules.playerDrugEffects = function(slave) { if (slave.drugs === "super fertility drugs" && canImpreg(slave, V.PC)) { if (slave.devotion > 20 || slave.trust < -20) { el.append(`${His} reproductive system is in overdrive leading ${him} to come to you for insemination several times a day; ${he} `); - App.UI.DOM.appendNewElement("span", el, `desperately hopes`, "mediumaquamarine"); + App.UI.DOM.appendNewElement("span", el, `desperately hopes `, "mediumaquamarine"); el.append(`for the day your seed takes root in ${his} womb. `); slave.trust += 1; } diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js index e077ce28252bea5fa53ba00a7819cea7716c6d89..261705930f3d4eba2e857d065b91fc87a3441e22 100644 --- a/src/endWeek/saServeThePublic.js +++ b/src/endWeek/saServeThePublic.js @@ -842,7 +842,7 @@ App.SlaveAssignment.serveThePublic = (function() { } } else { if (V.policies.gumjobFetishism === 1) { - r += ` Most of the public is dissapointed that ${his} teeth don't come out.`; + r += ` Most of the public is disappointed that ${his} teeth don't come out.`; } } diff --git a/src/endWeek/saServeYourOtherSlaves.js b/src/endWeek/saServeYourOtherSlaves.js index 8f90c164438bbe31087ef95ff0cbc4d866e089fb..10cd5d2480c6f0c64fc859e09bd12535a1cc3fda 100644 --- a/src/endWeek/saServeYourOtherSlaves.js +++ b/src/endWeek/saServeYourOtherSlaves.js @@ -1443,8 +1443,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { slave.fetishKnown = 1; } subSlaveLikedFetish = 1; - slave.induceLactation += 2; - r.push(`${induceLactation(slave)}`); + r.push(induceLactation(slave, 2)); } break; } @@ -1626,8 +1625,7 @@ App.SlaveAssignment.serveYourOtherSlaves = (function() { slave.fetishKnown = 1; } slave.need = 0; - slave.induceLactation += 2; - r.push(`${induceLactation(slave)}`); + r.push(induceLactation(slave, 2)); } break; } diff --git a/src/endWeek/saSmartPiercingEffects.js b/src/endWeek/saSmartPiercingEffects.js index 868112969780eed2ad55e45dea7f0eb34b31e64b..f7b70c7c900030e36e2ebca11cb21e295c1369cb 100644 --- a/src/endWeek/saSmartPiercingEffects.js +++ b/src/endWeek/saSmartPiercingEffects.js @@ -218,7 +218,7 @@ App.SlaveAssignment.SmartPiercing.vanilla = class extends App.SlaveAssignment.Sm } trigger(magnitude, plural) { - // Vanilla does NOT increase the strength of the "none" fetish, but otherwise behaves like any other fetishe setting + // Vanilla does NOT increase the strength of the "none" fetish, but otherwise behaves like any other fetish setting if (this.slave.fetish !== "none") { return super.trigger(magnitude, plural); } diff --git a/src/endWeek/saSocialEffects.js b/src/endWeek/saSocialEffects.js index be6fe7157b72bb5776207dc3890b312dadbcc780..443086463102615886df3ea4f254d2531ea9ee24 100644 --- a/src/endWeek/saSocialEffects.js +++ b/src/endWeek/saSocialEffects.js @@ -291,7 +291,7 @@ App.SlaveAssignment.saSocialEffects = function(slave) { } r.push(`child${slave.pregType > 1 ? 'ren are' : ' is'} growing within ${him}. The mark covering ${his} lower belly, coupled with ${his} gravidity and blessing, <span class="green">enamors</span> your populace.`); V.failedElite -= (5 + slave.pregType); - t.push(new SocialEffect("Eugenics", 3, "Breeder arrying elite baby", r.join(' '))); + t.push(new SocialEffect("Eugenics", 3, "Breeder carrying elite baby", r.join(' '))); if (slave.abortionTat > 0) { r = []; r.push(`The `); diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js index c5082940c629873ba159354f85039f9ac7c88d57..67f32fa4e960a8a0bf19419d577ab89ab7ed6e31 100644 --- a/src/endWeek/saWhore.js +++ b/src/endWeek/saWhore.js @@ -903,19 +903,19 @@ App.SlaveAssignment.whore = (function() { } } else if (slave.teeth === "pointy") { if (V.policies.gumjobFetishism === 1) { - r += ` Most customers are quite dissapointed with ${his} tooth-filled mouth, but there are a handful still interested in ${his} unusual dentistry.`; + r += ` Most customers are quite disappointed with ${his} tooth-filled mouth, but there are a handful still interested in ${his} unusual dentistry.`; } else { r += ` The extra attention ${he} receives due to ${his} sharp teeth is balanced by the customers who are scared off by them.`; } } else if (slave.teeth === "fangs") { if (V.policies.gumjobFetishism === 1) { - r += ` Most customers are quite dissapointed with ${his} tooth-filled mouth, but there are a handful still interested in ${his} unusual dentistry.`; + r += ` Most customers are quite disappointed with ${his} tooth-filled mouth, but there are a handful still interested in ${his} unusual dentistry.`; } else { r += ` The extra attention ${he} receives due to ${his} fangs is balanced by the customers who are scared off by them.`; } } else { if (V.policies.gumjobFetishism === 1) { - r += ` Most customers are quite dissapointed that ${his} teeth don't come out.`; + r += ` Most customers are quite disappointed that ${his} teeth don't come out.`; } } diff --git a/src/endWeek/schoolroomReport.js b/src/endWeek/schoolroomReport.js index 1695ad789538cfb858e9c01bab8f279a4dcbadf4..9e675864fcd23d341a6c07bfe82b079bf6ec48ef 100644 --- a/src/endWeek/schoolroomReport.js +++ b/src/endWeek/schoolroomReport.js @@ -146,8 +146,6 @@ App.EndWeek.schoolroomReport = function() { if (S.Schoolteacher) { const slave = S.Schoolteacher; - V.i = V.slaveIndices[slave.ID]; - App.Utils.setLocalPronouns(slave); // need this for the includes /* apply following SA passages to facility leader */ if (V.showEWD !== 0) { const schoolteacherEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); @@ -164,7 +162,6 @@ App.EndWeek.schoolroomReport = function() { let restedSlaves = 0; for (const slave of slaves) { - V.i = V.slaveIndices[slave.ID]; slave.devotion += devBonus; if (slave.health.condition < -80) { improveCondition(slave, 20); @@ -224,7 +221,6 @@ App.EndWeek.schoolroomReport = function() { continue; } - App.Utils.setLocalPronouns(slave); // need this for the includes if (V.showEWD !== 0) { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); diff --git a/src/endWeek/servantsQuartersReport.js b/src/endWeek/servantsQuartersReport.js index 9a4e71070c732e21418410da3f476d2734525dda..75a67b0b63ebbe5938e3eb7b0f912a9201302f96 100644 --- a/src/endWeek/servantsQuartersReport.js +++ b/src/endWeek/servantsQuartersReport.js @@ -206,8 +206,6 @@ App.EndWeek.servantsQuartersReport = function() { if (S.Stewardess) { /** @type {App.Entity.SlaveState} */ const slave = S.Stewardess; - V.i = V.slaveIndices[slave.ID]; - App.Utils.setLocalPronouns(slave); // need this for the includes /* apply following SA passages to facility leader */ if (V.showEWD !== 0) { const stewardessEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); @@ -226,7 +224,6 @@ App.EndWeek.servantsQuartersReport = function() { let SQMilkSale = 0; for (const slave of slaves) { - V.i = V.slaveIndices[slave.ID]; slave.devotion += devBonus; if (slave.devotion <= 20 && slave.trust >= -20) { slave.devotion -= 5; @@ -284,7 +281,6 @@ App.EndWeek.servantsQuartersReport = function() { slave.rules.living = "normal"; } - App.Utils.setLocalPronouns(slave); // need this for the includes if (V.showEWD !== 0) { const {He} = getPronouns(slave); const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index 9f0ef46ffdabeb3949e3850882330aa7996f2108..48a33a764a154481f40ecda0ed9624b5b90395c4 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -129,20 +129,20 @@ App.EndWeek.slaveAssignmentReport = function() { slave.need = slave.energy / 5; } if (slave.balls > 0 && slave.pubertyXY === 1 && slave.physicalAge <= (slave.pubertyAgeXY + 1) && (slave.physicalAge > slave.pubertyAgeXY) && slave.physicalAge < 18) { - slave.need = (slave.need * 1.25); + slave.need *= 1.25; } if ((slave.ovaries === 1 || slave.mpreg === 1) && slave.pubertyXX === 1 && slave.physicalAge <= (slave.pubertyAgeXX + 1) && (slave.physicalAge > slave.pubertyAgeXX) && slave.physicalAge < 18) { - slave.need = (slave.need * 1.25); + slave.need *= 1.25; } if (slave.diet === "fertility") { slave.need += 10; } if (slave.aphrodisiacs === -1) { - slave.need = (slave.need * 0.5); + slave.need *= 0.5; } else if (slave.aphrodisiacs === 1) { - slave.need = (slave.need * 1.5); + slave.need *= 1.5; } else if (slave.aphrodisiacs === 2) { - slave.need = (slave.need * 2); + slave.need *= 2; } poorHealthNeedReduction(slave); slave.need = Math.round(slave.need); @@ -295,7 +295,7 @@ App.EndWeek.slaveAssignmentReport = function() { * @param array _facListArr * Multidimensional temporary array * 0: The SC passage name or DOM function for the facility's report - * 1: A facility object, or the title of the report if there is no facility obejct + * 1: A facility object, or the title of the report if there is no facility object * 2: If there is no facility object, a truthy value indicating whether the facility exists * 3: If there is no facility object, the maximum capacity of the facility * diff --git a/src/endWeek/standardSlaveReport.js b/src/endWeek/standardSlaveReport.js index d8181b37cd5e3d49b1490f7af86cd642924fc632..5ed4a6d9b43f2f8129093671ce28c516ed8e1fe3 100644 --- a/src/endWeek/standardSlaveReport.js +++ b/src/endWeek/standardSlaveReport.js @@ -9,7 +9,7 @@ App.SlaveAssignment.standardSlaveReport = function(slave, silent=false) { tired(slave); - const rules = App.UI.DOM.renderPassage("SA rules"); + const rules = App.SlaveAssignment.rules(slave); const diet = App.SlaveAssignment.diet(slave); const ltEffects = App.SlaveAssignment.longTermEffects(slave); const drugs = App.SlaveAssignment.drugs(slave); diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js index f02e608b69319ecdfb9ac1ae67b680863d193b4b..be6a758b972e75cfc055233716fe0bc919cc2657 100644 --- a/src/events/randomEvent.js +++ b/src/events/randomEvent.js @@ -62,6 +62,7 @@ App.Events.getNonindividualEvents = function() { new App.Events.REDevotees(), new App.Events.RERelativeRecruiter(), new App.Events.REStaffedMorning(), + new App.Events.REFullBed(), ]; }; diff --git a/src/events/reFullBed.js b/src/events/reFullBed.js new file mode 100644 index 0000000000000000000000000000000000000000..05f3bbcf828be7e1c88f9e3f615f1aebc18c7bd6 --- /dev/null +++ b/src/events/reFullBed.js @@ -0,0 +1,335 @@ +App.Events.REFullBed = class REFullBed extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.fuckSlaves >= 2, + ]; + } + + actorPrerequisites() { + const req = [ + s => s.devotion > 50, + s => s.fuckdoll === 0, + s => ["please you", "serve in the master suite", "be your Concubine"].includes(s.assignment), + s => s.rules.release.master === 1, + canMove, + ]; + + return [ + req, + req, + ]; + } + + execute(node) { + let bedSlaves = this.actors.map(getSlave); + + const { + He, he, his, him, girl + } = getPronouns(bedSlaves[0]); + + const { + He2, he2, his2, him2 + } = getPronouns(bedSlaves[1]).appendSuffix('2'); + + let virgin0 = (bedSlaves[0].mpreg === 1 && bedSlaves[0].anus === 0) || (bedSlaves[0].mpreg === 0 && bedSlaves[0].vagina === 0); + let virgin1 = (bedSlaves[1].mpreg === 1 && bedSlaves[1].anus === 0) || (bedSlaves[1].mpreg === 0 && bedSlaves[1].vagina === 0); + + V.nextLink = "RIE Eligibility Check"; + + App.Events.drawEventArt(node, bedSlaves.slice(0, 2), "no clothing"); + + let t = [ + `You have the luxury of being attended to by a coterie of devoted sex slaves. Tonight, ${bedSlaves[0].slaveName} and ${contextualIntro(bedSlaves[0], bedSlaves[1])} are with you when it's time for bed, so they strip naked and climb under the sheets with you, one on either side. They snuggle in under both of your arms so that each can rest their head on your shoulder,` + ]; + if (hasAnyArms(bedSlaves[0]) && hasAnyArms(bedSlaves[1])) { + if (V.PC.boobs > 1000) { + t.push(`a hand under your breast,`); + } else if (V.PC.boobs > 500) { + t.push(`a hand beneath your breast,`); + } else { + t.push(`a hand on your chest,`); + } + } + if (bedSlaves[1].boobs > 300 && bedSlaves[0].boobs > 300) { + t.push(`their breasts against your flank,`); + } + if (bedSlaves[1].belly > 5000 && bedSlaves[0].belly > 5000) { + t.push(`their swollen bellies against yours,`); + } else if (bedSlaves[1].weight > 95 && bedSlaves[0].weight > 95) { + t.push(`their soft bellies against yours,`); + } + t.push(`and the warmth between their legs against your hip.`); + App.Events.addParagraph(node, t); + + t = [ + `Today was an unusually relaxing day, and you aren't particularly tired.`, + ]; + App.Events.addParagraph(node, t); + + App.Events.addResponses(node, [ + new App.Events.Result("Take a slave in each hand", eachhand), + (bedSlaves[0].bellyPreg >= 5000 && bedSlaves[1].bellyPreg >= 5000 && V.PC.dick !== 0) ? new App.Events.Result("Fondle their pregnancies", fondlepreg) : new App.Events.Result(), + (canImpreg(bedSlaves[0], V.PC) && canImpreg(bedSlaves[1], V.PC)) ? new App.Events.Result("Tire yourself out with some babymaking", babymaking, fuckNote()) : new App.Events.Result(), + new App.Events.Result("Pull up the sheets and wrestle", pullsheets), + ]); + + function eachhand() { + const frag = document.createDocumentFragment(); + + let t = [ + `With each of your arms around a slave, you begin to run your hands across their bodies. They snuggle closer to you, their nipples growing hard and their hips grinding against you. As your grasp runs lower and lower, cupping and massaging their buttocks, they begin to kiss the` + ]; + if (V.PC.boobs > 300) { + t.push(`breasts`); + } else { + t.push(`chest`); + } + t.push(`against which their adoring faces are pressed, and reach down`); + if (V.PC.dick !== 0 && V.PC.vagina !== -1) { + t.push(`towards your cock and cunt.`); + } else if (V.PC.vagina !== -1) { + t.push(`to your pussy.`); + } else if (V.PC.dick !== 0) { + t.push(`for your member.`); + } else if (V.PC.scrotum !== 0) { + t.push(`for your balls.`); + } else { + t.push(`towards your smooth crotch.`); + } + t.push(`The more manually skilled begins to give you a gentle stroke, while the other softly massages your`); + if (V.PC.scrotum > 0) { + t.push(`testicles`); + } else { + t.push(`mons`); + } + if (canDoVaginal(bedSlaves[1]) && canDoVaginal(bedSlaves[0]) && ((bedSlaves[0].vagina > 0 && bedSlaves[1].vagina > 0) || (bedSlaves[0].clit > 0 && bedSlaves[1].clit > 0))) { + if (bedSlaves[0].vagina > 0 && bedSlaves[1].vagina > 0) { + t.push(`They stiffen in unison when you slip two fingers into each pussy, but immediately relax and begin to work you harder. They orgasm one after the other, their passages clenching against your intruding fingers, and then eagerly clean`); + } else { + t.push(`They stiffen in unison when you pinch each clit, but immediately relax and begin to work you harder. They orgasm one after the other from your manipulations, before eagerly cleaning`); + } + seX(bedSlaves[0], "vaginal"); + seX(bedSlaves[1], "vaginal"); + } else if (canDoAnal(bedSlaves[1]) && canDoAnal(bedSlaves[0])) { + t.push(`They stiffen in unison when you hook two fingers up each asshole, but immediately relax and begin to work you harder. They orgasm one after the other, their butts clenching against your intruding fingers, and then eagerly clean`); + seX(bedSlaves[0], "anal"); + seX(bedSlaves[1], "anal"); + } else if (bedSlaves[1].dick > 0 && bedSlaves[1].chastityPenis === 0 && bedSlaves[0].dick > 0 && bedSlaves[0].chastityPenis === 0) { + t.push(`They stiffen in unison when you take hold of each prick, but immediately relax and begin to work you harder. They cum one after the other from your manipulations, before eagerly cleaning`); + seX(bedSlaves[0], "penetrative"); + seX(bedSlaves[1], "penetrative"); + } else { + t.push(`They stiffen as your hands get more adventurous, but immediately relax and begin to work you harder. They orgasm one after the other from your manipulations, before eagerly cleaning`); + let hole; + bedSlaves.forEach(s => { + if (canDoVaginal(s)) { + hole = "vaginal"; + } else if (canDoAnal(s)) { + hole = "anal"; + } else if (s.dick > 0 && s.chastityPenis === 0) { + hole = "penetrative"; + } else { + hole = "mammary"; + } + seX(s, hole); + }); + } + t.push(`you with their mouths when you climax yourself. They have become <span class="devotion inc">still more devoted to you.</span>`); + bedSlaves[0].devotion += 4; + bedSlaves[1].devotion += 4; + App.Events.addParagraph(frag, t); + + return frag; + } + + function fondlepreg() { + const frag = document.createDocumentFragment(); + + let t = [ + `With your arms each around a slave, you begin to run your hands across their bodies, focusing your attention on their full pregnancies. They snuggle closer to you, their nipples growing hard and their hips grinding against you. As they move, your rising cock catches between their gravid middles, giving you an idea. Shifting your arms under and around their backs, you pull them together over your erect member and begin using their taut stomachs to pleasure yourself. They quickly catch on and push closer to each other, trapping your dick between them. Once they begin rubbing, and you humping, the skin surrounding you is quickly coated in precum. They smile at you as they feel your penis tense, and with one final thrust you coat their bellies in a layer of cum. They love your discovery of a new way to enjoy their bodies and become <span class="devotion inc">even more devoted to you.</span>` + ]; + + App.Events.addParagraph(frag, t); + bedSlaves.forEach(s => (s.devotion += 5)); + + return frag; + } + + function babymaking() { + const frag = document.createDocumentFragment(); + + let t = [ + `Without warning, you roll on top of ${bedSlaves[0].slaveName} and slip your dick right into ${his}`, + ]; + if (bedSlaves[0].mpreg === 1) { + t.push(`${bedSlaves[0].anus === 0 ? "virgin " : ""}anus.`); + } else { + t.push(`${bedSlaves[0].vagina === 0 ? "virgin " : ""}pussy.`); + } + t.push(`Once the surprise wears off and the pleasure sets in, ${he} wraps ${his}`); + if (hasAnyArms(bedSlaves[0])) { + t.push(`arm${hasBothArms(bedSlaves[0]) ? `s` : ""}`); + } else { + t.push(`leg${hasBothLegs(bedSlaves[0]) ? `s` : ""}`); + } + t.push(`around you and basks in your attention. Feeling left out, ${bedSlaves[1].slaveName} slides over to tease ${his2} bucking bedmate. Drawing close to the moaning ${girl},`); + if (hasAnyArms(bedSlaves[1])) { + t.push(`${he2} reaches for ${his} bouncing tits, only to cop a feel of your cock thrusting deep inside ${him}.`); + } else { + t.push(`${he2} pushes towards ${his} bouncing tits, only to feel your cock thrusting deep inside ${him}.`); + } + if (canSee(bedSlaves[1])) { + t.push(`${He2} watches, eyes wide with lust,`); + } else { + t.push(`${He2} pauses, mouth agape with lust,`); + } + t.push(`as the bulge of your penis pistons beneath ${his} lower belly. You make sure to give ${him2} a show before you cum, thrusting as hard and deep as you can. ${He2} gasps at the`); + if (canSee(bedSlaves[1])) { + t.push(`sight`); + } else { + t.push(`sensation`); + } + if (hasAnyArms(bedSlaves[1])) { + t.push(`and brings ${his2} hand`); + } else { + t.push(`and brings ${his2} cheek`); + } + t.push(`to the lump just in time to feel you ejaculate deep inside ${bedSlaves[0].slaveName}.`); + if (V.PC.balls >= 30) { + t.push(`${He2} ${bedSlaves[1].voice !== 0 ? "squeaks" : "gasps"} in shock as ${he2} feels ${bedSlaves[0].slaveName}'s belly swell under ${his2} ${hasAnyArms(bedSlaves[1]) ? "hand" : "face"} with your massive load.`); + if (hasBothArms(bedSlaves[1])) { + t.push(`${He2} quickly brings ${his2} other hand to massage it as the orgasming cumballoon squirms in pleasure.`); + } else { + t.push(`${He2} nuzzles it as the orgasming cumballoon squirms in pleasure.`); + } + } else if (V.PC.balls >= 14) { + t.push(`${He2} ${bedSlaves[1].voice !== 0 ? "squeaks" : "gasps"} in surprise as ${he2} feels ${bedSlaves[0].slaveName}'s belly swell slightly under ${his2} ${hasAnyArms(bedSlaves[1]) ? "hand" : "face"} with your huge load.`); + } else if (V.PC.balls >= 9) { + t.push(`${He2}'s amazed by how big the load felt under ${his2} ${hasAnyArms(bedSlaves[1]) ? "hand" : "face"}.`); + } + t.push(`You`); + if (canSee(bedSlaves[1])) { + t.push(`beckon ${him2} to lie`); + } else if (canHear(bedSlaves[1])) { + t.push(`order ${him2} to lie`); + } else { + t.push(`push ${him2}`); + } + t.push(`down next to exhausted ${girl} and spread ${his2} leg${hasBothLegs(bedSlaves[1]) ? `s` : ""} for ${his2} seeding. As you take ${him2}, ${bedSlaves[0].slaveName} leans over and pulls ${him2} into a deep kiss. You make sure to not blow your next load too quickly, instead savoring the sight of your soon-to-be-mothers making out, but you can only hold out so long before you paint the depths of ${bedSlaves[1].slaveName}'s`); + if (bedSlaves[1].mpreg === 1) { + t.push(`${bedSlaves[1].anus === 0 ? "once virgin " : ""}anus`); + } else { + t.push(`${bedSlaves[1].vagina === 0 ? "once virgin " : ""}pussy`); + } + t.push(`with your potent baby`); + if (V.PC.balls >= 30) { + t.push(`batter until ${his2} stomach is distended and wobbling with cum.`); + } else if (V.PC.balls >= 14) { + t.push(`batter until ${his2} womb is stuffed with seed.`); + } else { + t.push(`batter.`); + } + t.push(`You switch off with the two of them, fucking them in turn, until both pass out`); + if (hasAnyArms(bedSlaves[0]) && hasAnyArms(bedSlaves[1])) { + t.push(`with a hand on`); + } else { + t.push(`pressed against`); + } + t.push(`the other's`); + if (V.PC.balls >= 30) { + t.push(`massively bloated`); + } else if (V.PC.balls >= 14) { + t.push(`bloated`); + } else if (V.PC.balls >= 9) { + t.push(`swollen`); + } + t.push(`belly and cum pooling from their thoroughly seeded holes. You slide back in between them for a well earned`); + if (V.PC.balls >= 30) { + t.push(`sleep, their middles resting on your own, their cum stuffed wombs a testament to your virility.`); + } else if (V.PC.balls >= 14) { + t.push(`sleep, their middles resting on your own, their cum filled wombs a testament to your virility.`); + } else { + t.push(`sleep.`); + } + + bedSlaves.forEach(s => { + s.devotion += 3; + s.trust += 3; + }); + + t.push(`${bedSlaves[0].slaveName} is <span class="devotion inc">honored to bear your children</span> and <span class="trust inc">snuggles even closer.</span>`); + if (virgin0) { + t.push(`Your endeavors have <span class="lime">taken ${his} ${bedSlaves[0].mpreg === 1 ? "anal " : ""}virginity.</span> <span class="devotion inc">${He} couldn't be happier.</span>`); + bedSlaves[0].devotion += 10; + } + if (bedSlaves[0].mpreg === 1) { + VCheck.Anal(bedSlaves[0], 3); + } else { + VCheck.Vaginal(bedSlaves[0], 3); + } + knockMeUp(bedSlaves[0], 100, bedSlaves[0].mpreg, -1); + + t.push(`${bedSlaves[1].slaveName} is <span class="devotion inc">thrilled to carry your child</span> and <span class="trust inc">happily embraces the gift inside ${him2}.</span>`); + if (virgin1) { + t.push(`Your endeavors have <span class="lime">taken ${his} ${bedSlaves[1].mpreg === 1 ? "anal " : ""}virginity.</span> <span class="devotion inc">${He} couldn't be happier.</span>`); + bedSlaves[1].devotion += 10; + } + if (bedSlaves[1].mpreg === 1) { + VCheck.Anal(bedSlaves[1], 3); + } else { + VCheck.Vaginal(bedSlaves[1], 3); + } + knockMeUp(bedSlaves[1], 100, bedSlaves[1].mpreg, -1); + + App.Events.addParagraph(frag, t); + + return frag; + } + + function fuckNote() { + if (virgin0 || virgin1) { + return `This option will break in any fertile holes`; + } + return null; + } + + function pullsheets() { + const frag = document.createDocumentFragment(); + + let t = [ + `Without warning, you jerk the sheets all the way up and pin them at the head of the bed. They giggle as you seize first the one and then the other, groping and tickling. ${bedSlaves[1].slaveName} and ${bedSlaves[0].slaveName} catch the spirit of fun, and rove around in the soft darkness under the sheets. You're` + ]; + if (V.PC.dick !== 0) { + t.push(`rock hard`); + if (V.PC.vagina !== 0) { + t.push(`and`); + } + } + if (V.PC.vagina !== -1) { + t.push(`soaking wet`); + } + t.push(`in no time, wrestling with two naked slaves, and begin to fuck the first one you can grab and hold. When you`); + if (V.PC.dick === 0) { + t.push(`finish with ${him},`); + } else { + t.push(`come inside ${him},`); + } + t.push(`you`); + if (canWalk(bedSlaves[0])) { + t.push(`release ${him} and ${he} slides out of bed to wash; by the time ${he} gets back under the sheets, clean and fresh, you're on the point of fucking`); + } else { + t.push(`shoulder ${his} helpless body out of bed to the washroom; by the time ${he} crawls back under the sheets, clean and fresh, you're on the point of fucking`); + } + t.push(`the other. You switch off with the two of them, fucking them in turn, until everyone falls asleep in an exhausted pile. They have become <span class="trust inc">still more trusting of you.</span>`); + + bedSlaves.forEach(s => { + s.trust += 4; + SimpleSexAct.Player(s, 3); + }); + + App.Events.addParagraph(frag, t); + + return frag; + } + } +}; diff --git a/src/events/scheduled/sePCBirthday.desc.js b/src/events/scheduled/sePCBirthday.desc.js index 9bcf71e04fa76f1cf47fe4a8fc1f730719944b72..b08fe9d143fe8834df06727bcd7c942af4a300a0 100644 --- a/src/events/scheduled/sePCBirthday.desc.js +++ b/src/events/scheduled/sePCBirthday.desc.js @@ -202,7 +202,7 @@ App.Events.pcBirthday.Desc = (function(bday) { html += `<p> The next day, as the figures come in, you are startled by the numbers. The funds you shifted and the stocks you traded show immediate signs of paying off. - For the week, you see a <span class="cash inc">modest windfall from your strange mood</span>. You are ready for a year of success ahead. + For the week, you see a <span class="cash inc">modest windfall from your strange mood.</span> You are ready for a year of success ahead. </p>`; App.Events.pcBirthday.moneyAward(); diff --git a/src/facilities/ads.js b/src/facilities/ads.js index 54b79c0e21a8159938c1bb8bbd3b2c22a52cd3cd..8494ed0c014a0ca0c1886618efb15300bc44a70f 100644 --- a/src/facilities/ads.js +++ b/src/facilities/ads.js @@ -245,11 +245,13 @@ App.Ads.AdManager = class { } }; -App.Ads.report = function(building, preview) { - "use strict"; - if (typeof preview === undefined) { - preview =false; - } +/** + * + * @param {string} building + * @param {boolean} [preview] + * @returns {string} + */ +App.Ads.report = function(building, preview = false) { let r = ``; /** @type {App.Entity.Facilities.Facility} */ diff --git a/src/facilities/farmyard/reports/farmyardReport.js b/src/facilities/farmyard/reports/farmyardReport.js index 7720f7bf7ea0a1136e9c522d0e51eef6afdf53f3..b00dbe93e67e5925a6660a0c1fdf53794dca9253 100644 --- a/src/facilities/farmyard/reports/farmyardReport.js +++ b/src/facilities/farmyard/reports/farmyardReport.js @@ -252,9 +252,6 @@ App.Facilities.Farmyard.farmyardReport = function farmyardReport() { if (Farmer) { const farmerEffects = App.UI.DOM.appendNewElement("p", frag, '', "indent"); - V.i = V.slaveIndices[Farmer.ID]; - App.Utils.setLocalPronouns(Farmer); // needed for "include"s - if (V.showEWD) { const farmerEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); @@ -352,12 +349,8 @@ App.Facilities.Farmyard.farmyardReport = function farmyardReport() { $(intro).append(farmhandCount(slaves.length)); for (const slave of slaves) { - V.i = V.slaveIndices[slave.ID]; // FIXME: V.i is deprecated - slave.devotion += devBonus; - App.Utils.setLocalPronouns(slave); // needed for "include"s - if (V.showEWD) { const slaveEntry = App.UI.DOM.appendNewElement("div", frag, '', "slave-report"); diff --git a/src/facilities/incubator/incubatorInteract.js b/src/facilities/incubator/incubatorInteract.js index 6bc9b4db831b7e7760bd9b105ec68f6dd2908f47..037cdf5a6e0c05f6e3a90dc725f3b1dedecfe915 100644 --- a/src/facilities/incubator/incubatorInteract.js +++ b/src/facilities/incubator/incubatorInteract.js @@ -55,7 +55,7 @@ App.UI.incubator = function() { } else if (incubatorSlaves > 0) { r.push(`It's barely used; most of the tanks lie dormant.`); } else { - r.push(`It's empty and quiet. `); + r.push(`It's empty and quiet.`); r.push( choice( "Decommission the incubator", @@ -714,7 +714,7 @@ App.UI.incubator = function() { r.push(App.UI.DOM.makeElement("span", V.tanks[i].slaveName, "pink")); r.push(`occupies this tank.`); if (V.geneticMappingUpgrade >= 1) { - r.push(`${He} is a `); + r.push(`${He} is a`); if (V.tanks[i].genes === "XX") { r.push(`female`); } else { @@ -722,17 +722,17 @@ App.UI.incubator = function() { } r.push(`of ${V.tanks[i].race} descent with ${App.Desc.eyesColor(V.tanks[i])}, ${V.tanks[i].hColor} hair and ${V.tanks[i].skin} skin. Given ${his} parentage, ${he} is considered ${V.tanks[i].nationality}.`); } else { - r.push(`${He} appears to be `); + r.push(`${He} appears to be`); if (V.tanks[i].genes === "XX") { - r.push(`a natural girl`); + r.push(`a natural girl,`); } else { - r.push(`a natural boy`); + r.push(`a natural boy,`); } - r.push(`, with ${V.tanks[i].hColor} hair`); + r.push(`with ${V.tanks[i].hColor}`); if (getBestVision(V.tanks[i]) === 0) { - r.push(` and ${App.Desc.eyesColor(V.tanks[i])}.`); + r.push(`hair and ${App.Desc.eyesColor(V.tanks[i])}.`); } else { - r.push(`. ${He} most likely will be blind.`); + r.push(`hair. ${He} most likely will be blind.`); } } if (V.tanks[i].preg > 0) { @@ -826,7 +826,7 @@ App.UI.incubator = function() { /* Some bigger size descriptions may be unreachable by normal game mechanics, so they are here just in case.*/ r.push(`${His} bloated form looks more like an overinflated beachball made of the overstretched skin of ${his} belly with ${his} relative tiny body attached to its side. ${He} is completely dominated by it now. The process has gone too far, so ${his} body can't maintain its form with the belly as part of abdominal cavity. Now ${his} skin, tissues and muscles have stretched enough for ${his} belly to expand outside of any physical boundaries and appear more an attachment to ${his} body, rather than part of it.`); } else if (_safeCC > 150000) { - r.push(`${His} body looks almost spherical, having been grotesquely inflated with the stimulator sacks inserted into ${his} internals. The incubator constantly maintains high pressure inside ${him}, forcing the displacement of ${his} organs and stretching skin, tissues, and muscles. Even ${his} chest forced to become a part of the top of ${his} belly, having been pushed forward from the overwhelming volume inside.`); + r.push(`${His} body looks almost spherical, having been grotesquely inflated with the stimulator sacs inserted into ${his} internals. The incubator constantly maintains high pressure inside ${him}, forcing the displacement of ${his} organs and stretching skin, tissues, and muscles. Even ${his} chest forced to become a part of the top of ${his} belly, having been pushed forward from the overwhelming volume inside.`); } else if (_safeCC > 75000) { r.push(`${His} belly has become so huge that can be easily compared with belly of a woman ready to birth quintuplets. It pulses from the pressure applied within by the incubator probes.`); } else if (_safeCC > 45000) { @@ -838,9 +838,9 @@ App.UI.incubator = function() { } else if (_safeCC > 10000) { r.push(`${His} belly has inflated to the size of late term pregnancy; its skin shines from the tension.`); } else if (_safeCC > 5000) { - r.push(`${His} belly resembles a mid term pregnancy; it pulses slightly from the expansion and contraction of expandable sacks tipping the incubator probes.`); + r.push(`${His} belly resembles a mid term pregnancy; it pulses slightly from the expansion and contraction of expandable sacs tipping the incubator probes.`); } else if (_safeCC > 1500) { - r.push(`${His} belly slightly bulges and rhythmically expands and contracts to the cycles of ${his} stimulation as the incubator inflates and deflates expandable sacks on its probes within ${his} body cavity. With the correct serums applied, this should allow it to stretch the skin, tissues, and muscles of ${his} belly to better to tolerate the displacement of internal organs caused by fetal growth.`); + r.push(`${His} belly slightly bulges and rhythmically expands and contracts to the cycles of ${his} stimulation as the incubator inflates and deflates expandable sacs on its probes within ${his} body cavity. With the correct serums applied, this should allow it to stretch the skin, tissues, and muscles of ${his} belly to better to tolerate the displacement of internal organs caused by fetal growth.`); } } App.Events.addNode(p, r, "div"); @@ -904,7 +904,7 @@ App.UI.incubator = function() { if ((V.incubatorPregAdaptationSetting === 1 && V.tanks[i].genes === "XX") || (V.incubatorPregAdaptationSetting === 2 && V.tanks[i].genes === "XY") || V.incubatorPregAdaptationSetting === 3) { /* Should be visible only after incubatorUpgradeReproduction is installed and activated*/ r = []; - r.push(`${His} reproductive organs are getting `); + r.push(`${His} reproductive organs are getting`); if (V.tanks[i].incubatorPregAdaptationPower === 1) { r.push(`an advanced`); } else if (V.tanks[i].incubatorPregAdaptationPower === 2) { @@ -919,7 +919,7 @@ App.UI.incubator = function() { } } r = []; - r.push(`Rename ${him}: `); + r.push(`Rename ${him}:`); r.push( App.UI.DOM.makeTextBox( V.tanks[i].slaveName, @@ -1062,7 +1062,7 @@ App.UI.incubator = function() { App.UI.DOM.appendNewElement("div", p, App.UI.DOM.generateLinksStrip(linkArray)); if (V.tanks[i].voice === 0) { r = []; - r.push(`${He} appears to be mute: `); + r.push(`${He} appears to be mute:`); if (tankOrgans.voicebox !== 1) { r.push(makeLink("Prepare vocal cords", () => { App.Medicine.OrganFarm.growIncubatorOrgan(V.tanks[i], "voicebox"); }, refresh)); } else { diff --git a/src/facilities/incubator/incubatorRetrievalWorkaround.tw b/src/facilities/incubator/incubatorRetrievalWorkaround.tw index f89e5c3590663bb5c82b66ea1882a1c46b7759aa..ba3b56c0f2596d1547b6206c6e4da61a9e55bfc2 100644 --- a/src/facilities/incubator/incubatorRetrievalWorkaround.tw +++ b/src/facilities/incubator/incubatorRetrievalWorkaround.tw @@ -1,22 +1,19 @@ :: Incubator Retrieval Workaround [nobr] -<<set $returnTo = "Main">> +<<set $returnTo = "Main", $nextLink = "Incubator", $nextButton = "Continue">> <<if $readySlave != 0>> - <<set $nextLink = "AS Dump">> - <<run App.Utils.updateUserButton()>> <<setLocalPronouns $readySlave>> $readySlave.slaveName has been discharged from $incubatorName and is ready for $his first ever inspection. <br><br> - <<set $activeSlave = $readySlave>> - <<includeDOM App.Desc.longSlave(V.activeSlave)>> + <<includeDOM App.Desc.longSlave($readySlave)>> <<if $readySlave.tankBaby != 3>> <<if $incubatorOrgans.length > 0>> <<for _irw = 0; _irw < $incubatorOrgans.length; _irw++>> <<if $incubatorOrgans[_irw].ID == $readySlave.ID>> - <<set _newOrgan = {type: $incubatorOrgans[_irw].type, weeksToCompletion: $incubatorOrgans[_irw].weeksToCompletion, ID: $activeSlave.ID}>> + <<set _newOrgan = {type: $incubatorOrgans[_irw].type, weeksToCompletion: $incubatorOrgans[_irw].weeksToCompletion, ID: $readySlave.ID}>> <<if _newOrgan.weeksToCompletion <= 0>> <<set $completedOrgans.push($incubatorOrgans[_irw])>> <<else>> @@ -26,19 +23,21 @@ <</if>> <</for>> <</if>> - <<includeDOM App.UI.newChildIntro($activeSlave)>> + <<includeDOM App.UI.newChildIntro($readySlave)>> <<else>> + <<set $activeSlave = $readySlave>> /* $activeSlave is used by husk Slave Swap Workaround */ A husk is ready to be used. <br> //As expected, $he is a complete vegetable, but that is what you wanted after all. You lack the facilities to care for $him in this state, so you should do what you are planning quickly. Or you could sell $him to the Flesh Heap.// + <<set _price = Math.trunc(slaveCost($readySlave)/3)>> <span id="result"> <<if $cash >= $surgeryCost>> <br>[[Contact the bodyswap surgeon.|husk Slave Swap Workaround]] //Will significantly increase the selected slave's upkeep.// - <br>[[Sell the husk to Flesh Heap.|Main][cashX(Math.trunc(slaveCost($activeSlave)/3), "slaveTransfer")]] - //This body can be bought by the Flesh Heap for <<print cashFormat(Math.trunc(slaveCost($activeSlave)/3))>>//. + <br>[[Sell the husk to Flesh Heap.|Main][cashX(_price, "slaveTransfer")]] + //This body can be bought by the Flesh Heap for <<print cashFormat(_price)>>//. <<else>> - <<run cashX(Math.trunc(slaveCost($activeSlave)/3), "slaveTransfer")>> - //You can't sustain $him and thus must sell $him for <<print cashFormat(Math.trunc(slaveCost($activeSlave)/3))>>.// + <<run cashX(_price, "slaveTransfer")>> + //You can't sustain $him and thus must sell $him for <<print cashFormat(_price)>>.// <</if>> </span> <</if>> diff --git a/src/facilities/nursery/utils/nurseryUtils.js b/src/facilities/nursery/utils/nurseryUtils.js index 704a719f8f2aecf7cfb3b9567a8b56f337994e03..72068bf72602f708495dfae9eb1d0b32d4a44274 100644 --- a/src/facilities/nursery/utils/nurseryUtils.js +++ b/src/facilities/nursery/utils/nurseryUtils.js @@ -702,8 +702,6 @@ App.Facilities.Nursery.nurserySort = function nurserySort() { const slave = V.slaves[i]; const {His, his} = getPronouns(slave); - App.Utils.setLocalPronouns(slave); - if (slave.preg > 0 && !slave.broodmother && slave.pregKnown && slave.eggType === "human") { if (slave.assignment !== Job.DAIRY && V.dairyPregSetting <= 0) { const slaveID = "slave-" + slave.ID; diff --git a/src/gui/options/options.tw b/src/gui/options/options.tw index 1ab2f1a3fe5c74e4bbb620138e7dd4a2d05b0dd9..b5df4232895fee2e73c527ec9edc780472672753 100644 --- a/src/gui/options/options.tw +++ b/src/gui/options/options.tw @@ -394,19 +394,19 @@ <<run _options.addOption("The Security Expansion mod is", "secExpEnabled") .addValue("Enabled", 1).on().addValue("Disabled", 0).off() - .addComment("<div>The mod can be activated in any moment, but it may result in unbalanced gameplay if activated very late in the game.</div> - <div>''If you are enabling the mod mid game for the first time, run the main BC option listed near the top.''</div>")>> + .addComment("<div>The mod can be activated in any moment, but it may result in unbalanced gameplay if activated very late in the game.</div>")>> <<includeDOM _options.render()>> <<if $secExpEnabled > 0>> + <<if Object.values(V.SecExp).length === 0>> + <<include "SecExpBackwardCompatibility">> + <<goto "Options">> + <</if>> <h2>Security Expansion mod options</h2> - - <<if $terrain === "oceanic">> <div>Oceanic arcologies are not by default subject to external attacks. You can however allow them to happen anyway. If you choose to do so please keep in mind that descriptions and mechanics are not intended for naval combat but land combat.</div> <</if>> - <<set _options = new App.UI.OptionsGroup()>> <<if $SecExp.settings.battle.enabled > 0 || $SecExp.settings.rebellion.enabled > 0>> diff --git a/src/interaction/main/mainLinks.js b/src/interaction/main/mainLinks.js index 5a501292ef8ad1a04a2a6b6fc162f54a7853e414..dfab76fb1dda51647360d6904af8d7f5e6465cea 100644 --- a/src/interaction/main/mainLinks.js +++ b/src/interaction/main/mainLinks.js @@ -245,18 +245,18 @@ App.UI.View.mainLinks = function() { fragment.append(div); - /** - * @param {string} school - */ - function schoolSale(school, abbreviation) { + for (const [SCH, schObj] of App.Data.misc.schools) { + if (!schObj.requirements || V[SCH].schoolSale === 0) { + continue; + } const div = document.createElement("div"); div.append(App.UI.DOM.makeElement("span", "For your first purchase, ", "yellow"), App.UI.DOM.passageLink( - school, + schObj.title, "Market", () => { V.market = new App.Markets.GlobalVariable(); - V.market.slaveMarket = abbreviation; + V.market.slaveMarket = SCH; V.market.newSlaves = []; V.market.numArcology = 1; V.nextButton = "Back to Main"; @@ -266,40 +266,5 @@ App.UI.View.mainLinks = function() { App.UI.DOM.makeElement("span", " will sell at half price this week.", "yellow")); fragment.append(div); } - - if (V.seeDicks !== 100) { - if (V.TSS.schoolSale !== 0) { - schoolSale("The Slavegirl School", "TSS"); - } - if (V.TUO.schoolSale !== 0) { - schoolSale("The Utopian Orphanage", "TUO"); - } - if (V.GRI.schoolSale !== 0) { - schoolSale("Growth Research Institute", "GRI"); - } - if (V.SCP.schoolSale !== 0) { - schoolSale("St. Claver Preparatory", "SCP"); - } - if (V.TCR.schoolSale !== 0) { - schoolSale("The Cattle Ranch", "TCR"); - } - if (V.HA.schoolSale !== 0) { - schoolSale("The Hippolyta Academy", "HA"); - } - } - if (V.seeDicks !== 0) { - if (V.LDE.schoolSale !== 0) { - schoolSale("L'École des Enculées", "LDE"); - } - if (V.TGA.schoolSale !== 0) { - schoolSale("The Gymnasium-Academy", "TGA"); - } - if (V.TFS.schoolSale !== 0) { - schoolSale("The Futanari Sisters", "TFS"); - } - } - if (V.NUL.schoolSale !== 0) { - schoolSale("Nueva Universidad de Libertad", "NUL"); - } return fragment; }; diff --git a/src/interaction/main/walkPast.js b/src/interaction/main/walkPast.js index 7f5e994cc1520682d7ec1e871c6f7e40276be850..27edf82a9bd197324e8a1234e3859dc4da8f3f7b 100644 --- a/src/interaction/main/walkPast.js +++ b/src/interaction/main/walkPast.js @@ -1219,8 +1219,11 @@ globalThis.walkPast = (function() { t += `, and even in ${his} sleep, has a proprietary hand on ${partnerName}'s `; if (partnerSlave.balls > 0) { t += `balls`; - } else if (partnerSlave.balls === 0) { - t += `soft cock`; + } else if (partnerSlave.dick > 0) { + if (!canAchieveErection(partnerSlave)) { + t += `soft `; + } + t += `cock`; } else if (partnerSlave.vagina > -1) { t += `pussy`; } else { diff --git a/src/interaction/siFinancial.js b/src/interaction/siFinancial.js index 461ac73a68d103ffcae552413ef406a02fd3c9cd..b6f19c6efa20221677a7bddcd16f83f29bcd4839 100644 --- a/src/interaction/siFinancial.js +++ b/src/interaction/siFinancial.js @@ -1,6 +1,6 @@ App.UI.SlaveInteract.financial = function(slave) { const el = new DocumentFragment(); - let r = []; + let r; let linkArray; const { He, His, @@ -9,11 +9,11 @@ App.UI.SlaveInteract.financial = function(slave) { if (V.studio === 1) { App.UI.DOM.appendNewElement("h3", el, "Media"); slave.porn.spending = Math.clamp(Math.ceil(slave.porn.spending / 1000) * 1000, 0, 5000); + if (slave.porn.prestige === 3) { - r.push( - App.UI.DOM.makeElement("div", `${He} is so prestigious in the realm of ${slave.porn.fameType} porn that ${his} fame is self-sustaining.`, "note") - ); + App.UI.DOM.appendNewElement("div", el, `${He} is so prestigious in the realm of ${slave.porn.fameType} porn that ${his} fame is self-sustaining.`, "note") } else if (slave.porn.feed === 0) { + r = []; r.push(`The media hub is not releasing highlights of ${his} sex life.`); r.push( App.UI.DOM.link( @@ -24,7 +24,9 @@ App.UI.SlaveInteract.financial = function(slave) { } ) ); + App.Events.addNode(el, r, "div"); } else { + r = []; r.push(`The media hub is releasing highlights of ${his} sex life`); if (slave.porn.spending < 500) { r.push(`to those who can find it.`); @@ -60,6 +62,7 @@ App.UI.SlaveInteract.financial = function(slave) { ) ); r.push(App.UI.DOM.generateLinksStrip(linkArray)); + App.Events.addNode(el, r, "div"); } else { r.push( App.UI.DOM.makeTextBox( @@ -115,7 +118,6 @@ App.UI.SlaveInteract.financial = function(slave) { App.Events.addNode(el, r, "div"); if (V.PC.career === "escort") { - App.Events.addNode(el, r, "div"); r = []; r.push(`You retain some contacts from your past life in the industry that may be willing to cut you some discounts should you return to it.`); if (V.PCSlutContacts !== 2) { @@ -141,10 +143,10 @@ App.UI.SlaveInteract.financial = function(slave) { ) ); } + App.Events.addNode(el, r, "div"); } } if (V.studioFeed === 1) { - App.Events.addNode(el, r, "div"); r = []; if (slave.porn.viewerCount < 100) { r.push(`${He} lacks the fame in porn needed to discern what ${his} feed is getting tagged as.`); @@ -159,9 +161,9 @@ App.UI.SlaveInteract.financial = function(slave) { } r.push(App.Porn.genreChoiceLinks("Slave Interact", slave)); } + App.Events.addNode(el, r, "div"); } } - App.Events.addNode(el, r, "div"); } App.UI.DOM.appendNewElement("h3", el, "Financial"); App.UI.DOM.appendNewElement("p", el, slaveExpenses(slave)); diff --git a/src/interaction/siRules.js b/src/interaction/siRules.js index 0a2a8e381634687f4330d665bde0e4d9826be815..36e60ce7c78167a305fae5064d9f92661ac6933a 100644 --- a/src/interaction/siRules.js +++ b/src/interaction/siRules.js @@ -139,9 +139,11 @@ App.UI.SlaveInteract.rules = function(slave) { } // Rest - if (["be a servant", "be a subordinate slave", "get milked", "please you", "serve in the club", "serve the public", "whore", "work as a farmhand", "work in the brothel", "work a glory hole"].includes(slave.assignment) || (V.dairyRestraintsSetting < 2 && slave.assignment === "work in the dairy")) { - div = document.createElement("div"); - div.append("Sleep rules: "); + div = document.createElement("div"); + div.append("Sleep rules: "); + if ([Job.NURSE, Job.HEADGIRL, Job.TEACHER, Job.STEWARD, Job.MATRON, Job.FARMER, Job.MADAM, Job.WARDEN, Job.DJ, Job.MILKMAID].includes(slave.assignment)) { + App.UI.DOM.appendNewElement("span", div, ` ${His} sleeping schedule is managed by ${his} assignment.`, "note"); + } else if ([Job.QUARTER, Job.DAIRY, Job.FUCKTOY, Job.CLUB, Job.PUBLIC, Job.FARMYARD, Job.WHORE, Job.GLORYHOLE].includes(slave.assignment) || (V.dairyRestraintsSetting < 2 && slave.assignment === Job.DAIRY)) { choices = [ {value: "none"}, {value: "cruel"}, @@ -150,8 +152,11 @@ App.UI.SlaveInteract.rules = function(slave) { {value: "mandatory"}, ]; div.append(listChoices(choices, "rest")); - p.append(div); + } else { + App.UI.DOM.appendNewElement("span", div, ` ${His} assignment does not allow setting a sleeping schedule.`, "note"); } + p.append(div); + // Mobility Aids if (!canWalk(slave) && canMove(slave)) { diff --git a/src/interaction/siWork.js b/src/interaction/siWork.js index 3206f24d318b9c69de7fb94026fc1e69dae24329..699bfa1bf39afc1c4baf91bc2658dd1292e4b254 100644 --- a/src/interaction/siWork.js +++ b/src/interaction/siWork.js @@ -737,6 +737,6 @@ App.UI.SlaveInteract.work = function(slave) { } function refresh() { - jQuery("#si-work").empty().append(App.UI.SlaveInteract.work(slave)); + jQuery("#content-work").empty().append(App.UI.SlaveInteract.work(slave)); } }; diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index b6ceabccf72794a7c35b2675e1112fa8f9946d19..f0d83440ac5c590323d4e24a640ae73f2efeeba3 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -63,8 +63,7 @@ globalThis.DefaultRules = (function() { if (slave.preg > 0 && slave.pregKnown === 1 && slave.broodmother === 0) { ProcessAbortions(slave, rule); } - ProcessOtherDrugs(slave, rule); - ProcessAssetGrowthDrugs(slave, rule); + ProcessDrugs(slave, rule); ProcessEnema(slave, rule); ProcessDiet(slave, rule); ProcessCuratives(slave, rule); @@ -1165,12 +1164,13 @@ globalThis.DefaultRules = (function() { * @param {App.Entity.SlaveState} slave * @param {FC.RA.RuleSetters} rule */ - function ProcessAssetGrowthDrugs(slave, rule) { + function ProcessDrugs(slave, rule) { + // First we check AssetGrowthDrugs, then if 1. no growth targets or 2. targets have been hit, we check other drugs. if ((slave.drugs === "super fertility drugs" || slave.drugs === "fertility drugs") && isFertile(slave)) { r += `<br>${slave.slaveName} is on ${slave.drugs} and will not be considered for drug enhancement until that regime is complete.`; - return; + ProcessOtherDrugs(slave, rule); } else if (slave.indentureRestrictions > 1 || (rule.growth.boobs === null && rule.growth.butt === null && rule.growth.lips === null && rule.growth.dick === null && rule.growth.balls === null)) { - return; + ProcessOtherDrugs(slave, rule); } /** @typedef {"lips" | "boobs" | "butt" | "dick" | "balls"} DrugTarget */ @@ -1213,7 +1213,7 @@ globalThis.DefaultRules = (function() { growDrugs.balls = "testicle enhancement"; } - if (rule.hyper_drugs === 1 && V.arcologies[0].FSAssetExpansionistResearch === 1) { + if (V.arcologies[0].FSAssetExpansionistResearch === 1 && rule.hyper_drugs === 1) { growDrugs.boobs = "hyper breast injections"; growDrugs.butt = "hyper butt injections"; if (slave.dick > 0) { @@ -1314,8 +1314,8 @@ globalThis.DefaultRules = (function() { } } } else if (growthDrugs.has(slave.drugs)) { - slave.drugs = "no drugs"; r += `<br>${slave.slaveName}'s body has met all relevant growth targets, so ${his} pharmaceutical regime has been ended.`; + ProcessOtherDrugs(slave,rule); } } @@ -1329,19 +1329,19 @@ globalThis.DefaultRules = (function() { let flag = true; switch (rule.drug) { case "anti-aging cream": - if (slave.visualAge < 18) { + if (V.arcologies[0].FSYouthPreferentialistResearch !== 1 || slave.visualAge < 18) { flag = false; } break; case "growth stimulants": - if (!canImproveHeight(slave)) { + if (V.growthStim !== 1 || !canImproveHeight(slave)) { flag = false; } break; case "sag-B-gone": - if (!(slave.boobs > 250 && slave.boobShape !== "saggy")) { + if (V.purchasedSagBGone !== 1 || (!(slave.boobs > 250 && slave.boobShape !== "saggy"))) { flag = false; } break; @@ -1365,7 +1365,7 @@ globalThis.DefaultRules = (function() { break; case "psychostimulants": - if (!canImproveIntelligence(slave)) { + if (V.arcologies[0].FSSlaveProfessionalismResearch !== 1 || !canImproveIntelligence(slave)) { flag = false; } break; @@ -1377,7 +1377,7 @@ globalThis.DefaultRules = (function() { break; case "hyper breast injections": - if (slave.boobs >= 50000) { + if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || slave.boobs >= 50000) { flag = false; } break; @@ -1388,7 +1388,7 @@ globalThis.DefaultRules = (function() { } break; case "breast redistributors": - if (slave.boobs - slave.boobsImplant <= 100) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || (slave.boobs - slave.boobsImplant <= 100)) { flag = false; } break; @@ -1400,19 +1400,19 @@ globalThis.DefaultRules = (function() { break; case "hyper butt injections": - if (slave.butt >= 20) { + if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || slave.butt >= 20) { flag = false; } break; case "nipple atrophiers": - if (!(["cute", "huge", "puffy"].includes(slave.nipples))) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || !(["cute", "huge", "puffy"].includes(slave.nipples))) { flag = false; } break; case "butt redistributors": - if (slave.buttImplant <= 0) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.buttImplant <= 0) { flag = false; } break; @@ -1424,13 +1424,13 @@ globalThis.DefaultRules = (function() { break; case "lip atrophiers": - if (slave.lips - slave.lipsImplant <= 0) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.lips - slave.lipsImplant <= 0) { flag = false; } break; case "super fertility drugs": - if (!(slave.indentureRestrictions < 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset"))) { + if ((V.seeHyperPreg !== 1 || V.superFertilityDrugs !== 1) || !(slave.indentureRestrictions < 1 && (slave.breedingMark !== 1 || V.propOutcome === 0 || V.eugenicsFullControl === 1 || V.arcologies[0].FSRestart === "unset"))) { flag = false; } break; @@ -1442,13 +1442,13 @@ globalThis.DefaultRules = (function() { break; case "hyper penis enhancement": - if (!((slave.dick > 0 && slave.dick < 31) || slave.clit < 5)) { + if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || !((slave.dick > 0 && slave.dick < 31) || slave.clit < 5)) { flag = false; } break; case "penis atrophiers": - if (slave.dick <= 1) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.dick <= 1) { flag = false; } break; @@ -1460,37 +1460,37 @@ globalThis.DefaultRules = (function() { break; case "hyper testicle enhancement": - if (slave.balls <= 0) { + if (V.arcologies[0].FSAssetExpansionistResearch !== 1 || slave.balls <= 0) { flag = false; } break; case "testicle atrophiers": - if (slave.balls <= 1) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.balls <= 1) { flag = false; } break; case "clitoris atrophiers": - if (slave.clit <= 0) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.clit <= 0) { flag = false; } break; case "labia atrophiers": - if (slave.labia <= 0) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.labia <= 0) { flag = false; } break; case "appetite suppressors": - if (slave.weight > -95) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.weight > -95) { flag = false; } break; case "priapism agents": - if (slave.dick === 0 || slave.dick > 10 || slave.chastityPenis === 1 || (canAchieveErection(slave) && slave.drugs !== "priapism agents")) { + if (slave.dick === 0 || slave.dick > 10 || slave.chastityPenis === 1 || (canAchieveErection(slave))) { flag = false; } break; @@ -1498,7 +1498,7 @@ globalThis.DefaultRules = (function() { if (flag) { slave.drugs = rule.drug; r += `<br>${slave.slaveName} has been put on ${slave.drugs}.`; - } else { + } else if (slave.drugs !== "no drugs") { slave.drugs = "no drugs"; r += `<br>${slave.slaveName} cannot benefit from ${his} assigned drug and has been defaulted to ${slave.drugs}`; } @@ -1569,20 +1569,76 @@ globalThis.DefaultRules = (function() { * @param {FC.RA.RuleSetters} rule */ function ProcessDiet(slave, rule) { - // Diet Setting - if ((rule.diet !== undefined && rule.diet !== null) || rule.weight !== null || rule.muscles !== null) { - /* - if ((slave.boobs >= 1600) && (slave.muscles <= 5) && !isAmputee(slave) && ((rule.muscles == null) || (rule.muscles === 0))) { + /* Here the slave's diets are processed, with the following priorities: + 1. Attractive Weight + 2. Weight Based Rule + 3. Muscle Rule + 4. Specific Diet Rule + ?. TODO: appetite suppressors + */ + + function weightRule(slave, rule) { + if ((rule.diet === "attractive")) { + if (((slave.weight > 95) || ((slave.weight > 30) && (slave.hips < 2)))) { + if ((slave.diet !== "restricted")) { + slave.diet = "restricted"; + r += `<br>${slave.slaveName} is too fat so ${his} diet has been set to restricted.`; + } + } else if (((slave.weight < -95) || ((slave.weight < -30) && (slave.hips > -2)))) { + if ((slave.diet !== "fattening")) { + slave.diet = "fattening"; + r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`; + } + } else if (["restricted", "fattening"].includes(slave.diet)){ + r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; + muscleRule(slave, rule); + } else { + muscleRule(slave, rule); + } + } else { + if (slave.weight > rule.weight.max) { + if (slave.diet !== "restricted") { + slave.diet = "restricted"; + r += `<br>${slave.slaveName} is too fat so ${his} diet has been set to restricted.`; + } + } else if (slave.weight < rule.weight.min) { + if (slave.diet !== "fattening") { + slave.diet = "fattening"; + r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`; + } + } else if (["restricted", "fattening"].includes(slave.diet)) { + r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; + muscleRule(slave, rule); + } else { + muscleRule(slave, rule); + } + } + } + + function muscleRule(slave, rule) { + if (!isAmputee(slave) && App.RA.shallShrink(slave.muscles, rule.muscles, 8)) { + if ((slave.diet !== "slimming")) { + slave.diet = "slimming"; + r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`; + } + } else if (!isAmputee(slave) && App.RA.shallGrow(slave.muscles, rule.muscles, 2)) { if ((slave.diet !== "muscle building")) { - slave.diet = "muscle building" - r += `<br>${slave.slaveName} has big tits and no back muscles, so ${he}'s been assigned to gain some.` + slave.diet = "muscle building"; + r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`; } - } else if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet == "muscle building") && ((rule.muscles == null) || (rule.muscles === 0))) { - */ + } else if (!isAmputee(slave) && ["slimming", "muscle building"].includes(slave.diet)) { + r += `<br>${slave.slaveName} is at the target musculature, so ${his} diet has been normalized.`; + dietRule(slave, rule); + } else { + dietRule(slave, rule); + } + } + + function dietRule(slave, rule) { if (rule.diet === "healthy" && slave.diet !== "healthy") { slave.diet = "healthy"; r += `<br>${slave.slaveName} has been assigned to a healthy diet.`; - } else if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet === "muscle building") && ((rule.muscles === null) || (rule.muscles.val === 0))) { + } else if ((slave.boobs >= 1600) && (slave.muscles > 5) && (slave.diet === "muscle building") && ((rule.muscles === null) || (rule.muscles.val < 5))) { slave.diet = "healthy"; r += `<br>${slave.slaveName} has huge boobs, but ${he} already has the back muscles to bear them, so ${he}'s been assigned to stop working out so hard.`; } else if ((rule.dietGrowthSupport === 1) && ((slave.drugs === "breast injections") || (slave.drugs === "butt injections")) && (slave.weight <= 95)) { @@ -1590,117 +1646,87 @@ globalThis.DefaultRules = (function() { slave.diet = "fattening"; r += `<br>${slave.slaveName} is on drugs designed to expand major body parts, so ${he}'s been put on a fattening diet to provide ${his} body as much fuel for growth as possible.`; } - } else { - // priority to growing/losing muscles, then general body mass, then rest of the diets - if (!isAmputee(slave) && App.RA.shallShrink(slave.muscles, rule.muscles, 8)) { - if ((slave.diet !== "slimming")) { - slave.diet = "slimming"; - r += `<br>${slave.slaveName} has been put on a slimming exercise regime.`; - } - } else if (!isAmputee(slave) && App.RA.shallGrow(slave.muscles, rule.muscles, 2)) { - if ((slave.diet !== "muscle building")) { - slave.diet = "muscle building"; - r += `<br>${slave.slaveName} has been put on a muscle building exercise regime.`; - } - } else if (!isAmputee(slave) && ["slimming", "muscle building"].includes(slave.diet)) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} is at the target musculature, so ${his} diet has been normalized.`; - } else if (rule.weight !== null && slave.weight > rule.weight.max) { - if (slave.diet !== "restricted") { - slave.diet = "restricted"; - r += `<br>${slave.slaveName} is too fat so ${his} diet has been set to restricted.`; + } else if ((rule.diet === "XX")) { + if ((slave.diet !== "XX")) { + slave.diet = "XX"; + r += `<br>${slave.slaveName} has been put on a diet that favors feminine development.`; + } + } else if ((rule.diet === "XY")) { + if ((slave.diet !== "XY")) { + slave.diet = "XY"; + r += `<br>${slave.slaveName} has been put on a diet that favors masculine development.`; + } + } else if ((rule.diet === "XXY")) { + if (slave.balls > 0 && (slave.ovaries === 1 || slave.mpreg === 1)) { + if ((slave.diet !== "XXY")) { + slave.diet = "XXY"; + r += `<br>${slave.slaveName} has been put on a diet that enhances a herm's unique sexuality.`; } - } else if (rule.weight !== null && slave.weight < rule.weight.min) { - if (slave.diet !== "fattening") { - slave.diet = "fattening"; - r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`; + } else { + if ((slave.diet !== "healthy")) { + slave.diet = "healthy"; + r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is not a hermaphrodite.`; } - } else if (rule.weight !== null && ["restricted", "fattening"].includes(slave.diet)) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; - } else if ((rule.diet === "attractive")) { - if (((slave.weight > 95) || ((slave.weight > 30) && (slave.hips < 2)))) { - if ((slave.diet !== "restricted")) { - slave.diet = "restricted"; - r += `<br>${slave.slaveName} is too fat so ${his} diet has been set to restricted.`; - } - } else if (((slave.weight < -95) || ((slave.weight < -30) && (slave.hips > -2)))) { - if ((slave.diet !== "fattening")) { - slave.diet = "fattening"; - r += `<br>${slave.slaveName} is too skinny so ${his} diet has been set to fattening.`; - } - } else { - if ((slave.diet !== "healthy")) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; - } + } + } else if (V.dietCleanse === 1 && (rule.diet === "cleansing")) { + if ((slave.diet !== "cleansing")) { + slave.diet = "cleansing"; + r += `<br>${slave.slaveName} has been put on a diet of cleansers.`; + } + } else if ((rule.diet === "fertility")) { + if ((isFertile(slave) && slave.preg === 0) || (slave.geneticQuirks.superfetation === 2 && canGetPregnant(slave) && V.geneticMappingUpgrade !== 0)) { + if ((slave.diet !== "fertility")) { + slave.diet = "fertility"; + r += `<br>${slave.slaveName} has been put on a diet to enhance fertility.`; } - } else if ((rule.diet === "XX")) { - if ((slave.diet !== "XX")) { - slave.diet = "XX"; - r += `<br>${slave.slaveName} has been put on a diet that favors feminine development.`; - } - } else if ((rule.diet === "XY")) { - if ((slave.diet !== "XY")) { - slave.diet = "XY"; - r += `<br>${slave.slaveName} has been put on a diet that favors masculine development.`; - } - } else if ((rule.diet === "XXY")) { - if (slave.balls > 0 && (slave.ovaries === 1 || slave.mpreg === 1)) { - if ((slave.diet !== "XXY")) { - slave.diet = "XXY"; - r += `<br>${slave.slaveName} has been put on a diet that enhances a herm's unique sexuality.`; - } - } else { - if ((slave.diet !== "healthy")) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is not a hermaphrodite.`; + } else { + if ((slave.diet !== "healthy")) { + slave.diet = "healthy"; + if (slave.pregKnown === 0 && slave.preg > 0) { + r += `<br>${slave.slaveName} has been put on a standard diet since tests reveal ${he} has become pregnant.`; + slave.pregKnown = 1; + } else { + r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is currently unable to become pregnant.`; } } - } else if ((rule.diet === "cleansing")) { - if ((slave.diet !== "cleansing") && (slave.health.condition < 90 || slave.chem >= 10)) { - slave.diet = "cleansing"; - r += `<br>${slave.slaveName} has been put on a diet of cleansers.`; - } - } else if ((rule.diet === "fertility")) { - if ((isFertile(slave) && slave.preg === 0) || (slave.geneticQuirks.superfetation === 2 && canGetPregnant(slave) && V.geneticMappingUpgrade !== 0)) { - if ((slave.diet !== "fertility")) { - slave.diet = "fertility"; - r += `<br>${slave.slaveName} has been put on a diet to enhance fertility.`; - } - } else { - if ((slave.diet !== "healthy")) { - slave.diet = "healthy"; - if (slave.pregKnown === 0 && slave.preg > 0) { - r += `<br>${slave.slaveName} has been put on a standard diet since tests reveal ${he} has become pregnant.`; - slave.pregKnown = 1; - } else { - r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is currently unable to become pregnant.`; - } - } + } + } else if ((rule.diet === "cum production")) { + if (slave.balls > 0) { + if ((slave.diet !== "cum production")) { + slave.diet = "cum production"; + r += `<br>${slave.slaveName} has been put on a diet to promote cum production.`; } - } else if ((rule.diet === "cum production")) { - if (slave.balls > 0) { - if ((slave.diet !== "cum production")) { - slave.diet = "cum production"; - r += `<br>${slave.slaveName} has been put on a diet to promote cum production.`; - } - } else { - if ((slave.diet !== "healthy")) { - slave.diet = "healthy"; - r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is no longer able to produce cum.`; - } + } else { + if ((slave.diet !== "healthy")) { + slave.diet = "healthy"; + r += `<br>${slave.slaveName} has been put on a standard diet since ${he} is no longer able to produce cum.`; } } + } else { + if (slave.diet !== "healthy") { + slave.diet = "healthy"; + r += `<br>${slave.slaveName} has been put on a standard diet.`; + } } + } - if (slave.drugs === "appetite suppressors" && slave.diet !== "restricted") { - slave.drugs = "no drugs"; - r += `<br>${slave.slaveName} no longer needs to lose weight, so ${he}'s no longer being given appetite suppressors.`; - } else if (slave.diet === "restricted" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1 && slave.drugs === "no drugs") { - slave.drugs = "appetite suppressors"; - r += `<br>${slave.slaveName} needs to lose weight so ${he} will be given weight loss pills.`; - } + if (rule.weight !== null) { + weightRule(slave, rule); + } + if (rule.weight === null && rule.muscles !== null) { + muscleRule(slave, rule); + } + if (rule.weight === null && rule.muscles === null && (rule.diet !== undefined && rule.diet !== null)) { + dietRule(slave, rule); + } + + // TODO: Place these somewhere in a function too. + if (slave.drugs === "appetite suppressors" && slave.diet !== "restricted") { + slave.drugs = "no drugs"; + r += `<br>${slave.slaveName} no longer needs to lose weight, so ${he}'s no longer being given appetite suppressors.`; + } else if (slave.diet === "restricted" && V.arcologies[0].FSSlimnessEnthusiastResearch === 1 && slave.drugs === "no drugs") { + slave.drugs = "appetite suppressors"; + r += `<br>${slave.slaveName} needs to lose weight so ${he} will be given weight loss pills.`; } } @@ -1841,18 +1867,19 @@ globalThis.DefaultRules = (function() { * @param {FC.RA.RuleSetters} rule */ function ProcessLivingStandard(slave, rule) { - if ((rule.livingRules !== undefined) && (rule.livingRules !== null)) { + if (rule.livingRules !== undefined && rule.livingRules !== null && slave.rules.living !== rule.livingRules) { if (setup.facilityCareers.includes(slave.assignment)) { - r += ""; // `<br>${slave.slaveName}'s living standards are controlled by ${his} assignment.`; + // Handled in Rules tab of SI now. + //r += `<br>${slave.slaveName}'s living standards are controlled by ${his} assignment.`; } else if (((slave.assignment === Job.HEADGIRL) && (V.HGSuite === 1)) || ((slave.assignment === Job.BODYGUARD) && (V.dojo > 1))) { - r += `<br>${slave.slaveName} has a private room.`; + //r += `<br>${slave.slaveName} has a private room.`; } else if ((slave.fetish === "mindbroken")) { if ((slave.rules.living !== "spare")) { slave.rules.living = "spare"; r += `<br>Since ${slave.slaveName} is mindbroken, ${his} living standard has been set to spare.`; } - } else if (slave.rules.living !== rule.livingRules) { - if (rule.livingRules !== "luxurious") { + } else { + if (rule.livingRules === "luxurious") { if (canMoveToRoom(slave)) { slave.rules.living = rule.livingRules; r += `<br>${slave.slaveName}'s living standard has been set to ${rule.livingRules}.`; @@ -1864,9 +1891,9 @@ globalThis.DefaultRules = (function() { slave.rules.living = rule.livingRules; r += `<br>${slave.slaveName}'s living standard has been set to ${rule.livingRules}.`; } - penthouseCensus(); } } + penthouseCensus(); } /** @@ -1876,8 +1903,12 @@ globalThis.DefaultRules = (function() { function ProcessRest(slave, rule) { if ((rule.restRules !== undefined) && (rule.restRules !== null)) { if (slave.rules.rest !== rule.restRules ) { - slave.rules.rest = rule.restRules; - r += `<br>${slave.slaveName}'s resting time has been set to ${rule.restRules}.`; + if ([Job.NURSE, Job.HEADGIRL, Job.TEACHER, Job.STEWARD, Job.MATRON, Job.FARMER, Job.MADAM, Job.WARDEN, Job.DJ, Job.MILKMAID].includes(slave.assignment)) { + // These assignments enforce "restrictive", do not let RA attempt to change it. + } else { + slave.rules.rest = rule.restRules; + r += `<br>${slave.slaveName}'s resting time has been set to ${rule.restRules}.`; + } } } } @@ -1936,26 +1967,28 @@ globalThis.DefaultRules = (function() { * @param {FC.RA.RuleSetters} rule */ function ProcessRelease(slave, rule) { - if ((rule.releaseRules !== undefined) && (rule.releaseRules !== null)) { + const releaseProperties = [ + 'masturbation', + 'partner', + 'facilityLeader', + 'family', + 'slaves', + 'master', + ]; + if ((rule.releaseRules !== undefined) && (rule.releaseRules !== null) && processReleaseProp(releaseProperties)) { + r += `<br>${slave.slaveName}'s release rules have been set to: ${App.Utils.releaseSummaryLong(slave)}.`; + } + function processReleaseProp(releaseProperties) { let changed = false; - let processReleaseProp = (property) => { + for (const property of releaseProperties) { if (rule.releaseRules[property] !== undefined && rule.releaseRules[property] !== null) { if (slave.rules.release[property] !== rule.releaseRules[property]) { slave.rules.release[property] = rule.releaseRules[property]; - return true; + changed = true; } } - return false; - }; - changed = processReleaseProp('masturbation') || false; - changed = processReleaseProp('partner') || false; - changed = processReleaseProp('facilityLeader') || false; - changed = processReleaseProp('family') || false; - changed = processReleaseProp('slaves') || false; - changed = processReleaseProp('master') || false; - if (changed) { - r += `<br>${slave.slaveName}'s release rules have been set to: ${App.Utils.releaseSummaryLong(slave)}.`; } + return changed; } } @@ -2408,8 +2441,10 @@ globalThis.DefaultRules = (function() { if (rule.skinColor !== undefined && rule.skinColor !== null && rule.skinColor !== slave.skin) { if (rule.skinColor === "natural") { - slave.skin = slave.origSkin; - r += `<br>${slave.slaveName}'s skin color has been returned to ${slave.origSkin}.`; + if (slave.skin !== slave.origSkin) { + slave.skin = slave.origSkin; + r += `<br>${slave.slaveName}'s skin color has been returned to ${slave.origSkin}.`; + } } else { slave.skin = rule.skinColor; r += `<br>${slave.slaveName}'s skin color has been set to ${rule.skinColor}.`; @@ -2619,7 +2654,7 @@ globalThis.DefaultRules = (function() { if (slave.clitPiercing === 3) { let _used = 0; if (rule.clitSetting !== undefined && rule.clitSetting !== null && rule.clitSetting !== "random") { - if (slave.clitSetting !== rule.clitSetting) { + if (slave.clitSetting !== rule.clitSetting && slave.fetishStrength !== 100) { slave.clitSetting = rule.clitSetting; _used = 1; r += `<br>${slave.slaveName}'s smart piercing has been set to ${slave.clitSetting}.`; @@ -2682,6 +2717,13 @@ globalThis.DefaultRules = (function() { } } } + if (_used === 0) { + if (rule.clitSetting !== undefined && rule.clitSetting !== null && slave.clitSetting !== rule.clitSetting) { + slave.clitSetting = rule.clitSetting; + _used = 1; + r += `<br>${slave.slaveName}'s smart piercing has been set to ${slave.clitSetting}.`; + } + } } } diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 93054bd17f9b4552b603710ace42e8267aff4a30..8a34958763da290a0ab2a73110b8ec0a6bd3e942 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -1011,7 +1011,7 @@ App.Entity.SlaveState = class SlaveState { this.lactation = 0; /** how many more weeks until lactation dries up * - * usually 2 as interactions and lact. implant reset it to 2 */ + * usually 2 as interactions and lactation implant reset it to 2 */ this.lactationDuration = 0; /** * odds of inducing lactation @@ -2179,7 +2179,7 @@ App.Entity.SlaveState = class SlaveState { polyhydramnios: 0, /** Pleasurable pregnancy and orgasmic birth. Wider hips, looser and wetter vagina. High pregadaptation and low birth damage. */ uterineHypersensitivity: 0, - /** inapropriate lacation*/ + /** inappropriate lactation*/ galactorrhea: 0, /** is abnormally tall. gigantism + dwarfism - is very average*/ gigantism: 0, diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js index a2e8a84b669afa365cd162d6391db07fb25717a7..b3d157d4aeffb26acb682c3981a1c1b1635708b4 100644 --- a/src/js/birth/birth.js +++ b/src/js/birth/birth.js @@ -1455,22 +1455,22 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {}) App.Events.addParagraph(el, r); /* ------ Social reactions--------------- */ if (V.arcologies[0].FSRestart !== "unset") { - p = document.createElement("p"); + r = []; if (slave.breedingMark === 1 && V.propOutcome === 1 && (slave.pregSource === -1 || slave.pregSource === -6)) { - p.append(`The ${societalElite}`); - App.UI.DOM.appendNewElement("span", p, `are pleased`, "green"); - p.append(`at the new additions to their class.`); + r.push(`The ${societalElite}`); + r.push("span", `are pleased`, "green"); + r.push(`at the new additions to their class.`); V.failedElite -= (2 * numBeingBorn); } else if (V.eugenicsFullControl !== 1) { - p.append(`The ${societalElite}`); - App.UI.DOM.appendNewElement("span", p, `are disappointed`, "red"); - p.append(`that you would allow subhuman filth to dirty the arcology under your watch. Society`); - App.UI.DOM.appendNewElement("span", p, `frowns`, "red"); - p.append(`on the unwelcome addition of more subhumans into the world.`); + r.push(`The ${societalElite}`); + r.push("span", `are disappointed`, "red"); + r.push(`that you would allow subhuman filth to dirty the arcology under your watch. Society`); + r.push("span", `frowns`, "red"); + r.push(`on the unwelcome addition of more subhumans into the world.`); V.failedElite += (5 * numBeingBorn); repX(forceNeg(10 * numBeingBorn), "birth", slave); } - el.append(p); + App.Events.addParagraph(el, r); } } return el; @@ -1844,7 +1844,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {}) if (slave.fetish === "mindbroken" || slave.fuckdoll > 0) { r.push(`${slave.slaveName} does not give any hint of a response.`); } else if (slave.devotion > 95) { - r.push(`will`); + r.push(`${slave.slaveName} will`); r.push(App.UI.DOM.makeElement("span", `worship you utterly`, "hotpink")); r.push(`for this.`); slave.devotion += 6; @@ -1904,7 +1904,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {}) if (slave.fetish === "mindbroken" || slave.fuckdoll > 0) { r.push(`${slave.slaveName} does not give any hint of a response.`); } else if (slave.devotion > 95) { - r.push(`will`); + r.push(`${slave.slaveName} will`); r.push(App.UI.DOM.makeElement("span", `worship you utterly`, "hotpink")); r.push(`for this.`); slave.devotion += 6; @@ -5089,7 +5089,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {}) animals.push(V.canines[roll]); } if (slave.fetish === "mindbroken") { - if (V.farmyardShows && V.seeBestiality) { + if (V.farmyardShows && V.seeBestiality && animals.length > 0) { roll = random(0, animals.length); r.push(`${He} shows no interest in ${his} coming birth as ${he} continues being rutted by a ${animals[roll].species}, so`); if (S.Farmer) { @@ -5105,7 +5105,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false} = {}) } r.push(`to come out, or when ${he} is subsequently hosed off before being led back to ${V.farmyardName}.`); } else { - r.push(`${He} shows no interest in ${his} coming birth as ${he} continues either("loading hay bales", "milking a cow", "pulling weeds"), until ${his} contractions become so strong that ${he} collapses to ${his} knees.`); + r.push(`${He} shows no interest in ${his} coming birth as ${he} continues ${either("loading hay bales", "milking a cow", "pulling weeds")}, until ${his} contractions become so strong that ${he} collapses to ${his} knees.`); if (S.Farmer) { r.push(S.Farmer.slaveName); } else { diff --git a/src/js/economyJS.js b/src/js/economyJS.js index 09715cd6a34ed937621eda0489dded4be611f6a5..28a85dd937dbc5588f064c3162864b53e4f18dd3 100644 --- a/src/js/economyJS.js +++ b/src/js/economyJS.js @@ -620,16 +620,14 @@ globalThis.calculateCosts = (function() { // security expansion function getSecurityExpansionCost() { - let secExpCost = 0, soldierMod = 0; + let secExpCost = 0, soldierMod = 1.5; // V.SecExp.edicts.defense.soldierWages === 1 if (V.secExpEnabled > 0) { secExpCost += App.SecExp.upkeep.edictsCash(); secExpCost += App.SecExp.upkeep.SF(); secExpCost += App.SecExp.upkeep.buildings(); if (V.SecExp.edicts.defense.soldierWages === 0) { soldierMod = 1; - } else if (V.SecExp.edicts.defense.soldierWages === 1) { - soldierMod = 1.5; - } else { + } else if (V.SecExp.edicts.defense.soldierWages === 2) { soldierMod = 2; } const militiaUnits = V.militiaUnits.length, slaveUnits = V.slaveUnits.length, mercUnits = V.mercUnits.length; // predefined for optimization @@ -718,62 +716,16 @@ globalThis.calculateCosts = (function() { function getSchoolCosts() { let costs = 0; - if (V.TSS.schoolPresent === 1) { - costs += 1000; - } - if (V.TUO.schoolPresent === 1) { - costs += 1000; - } - if (V.GRI.schoolPresent === 1) { - costs += 1000; - } - if (V.SCP.schoolPresent === 1) { - costs += 1000; - } - if (V.LDE.schoolPresent === 1) { - costs += 1000; - } - if (V.TGA.schoolPresent === 1) { - costs += 1000; - } - if (V.HA.schoolPresent === 1) { - costs += 1000; - } - if (V.TCR.schoolPresent === 1) { - costs += 1000; - } - if (V.NUL.schoolPresent === 1) { - costs += 1000; - } - if ((V.TFS.schoolPresent === 1) && ((V.PC.dick === 0) || (V.PC.vagina === -1) || (V.PC.boobs < 300))) { - costs += 1000; - } - if (V.TSS.subsidize !== 0) { - costs += 1000; - } - if (V.GRI.subsidize !== 0) { - costs += 1000; - } - if (V.SCP.subsidize !== 0) { - costs += 1000; - } - if (V.LDE.subsidize !== 0) { - costs += 1000; - } - if (V.TGA.subsidize !== 0) { - costs += 1000; - } - if (V.HA.subsidize !== 0) { - costs += 1000; - } - if (V.TCR.subsidize !== 0) { - costs += 1000; - } - if (V.NUL.subsidize !== 0) { - costs += 1000; - } - if (V.TFS.subsidize !== 0) { - costs += 1000; + for (const school of App.Data.misc.schools.keys()) { + if (school === 'TFS') { + if (V[school].subsidize === 1 && ((V.PC.dick === 0) || (V.PC.vagina === -1) || (V.PC.boobs < 300))) { + costs += 1000; + } + } else { + if (V[school].subsidize === 1) { + costs += 1000; + } + } } return costs; } @@ -2424,8 +2376,6 @@ globalThis.SectorCounts = function() { V.AProsperityCap += 10; } else if (cell.type === 2) { V.AProsperityCap += 5; - } else if (cell.type === 3) { - V.lowerClass += 40; } } else if (cell instanceof App.Arcology.Cell.Shop) { if (cell.type !== "Club" && cell.type !== "Brothel") { diff --git a/src/js/releaseRules.js b/src/js/releaseRules.js index fd443122021f54e376d41afbe1fb3c1caa402b32..e16e71cac7e98ea7233a9e7f3156962923b418a5 100644 --- a/src/js/releaseRules.js +++ b/src/js/releaseRules.js @@ -117,22 +117,34 @@ App.Utils.releaseSummaryShort = function releaseSummaryShort(slave) { App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) { const rel = slave.rules.release; const includeFamily = (rel.family === 1) && (V.seeIncest === 1); - if (rel.masturbation === 0 && rel.partner === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) { + let _counter = rel.masturbation + rel.partner + rel.facilityLeader + rel.slaves + rel.master; + if (includeFamily) { + _counter += 1; + } + + if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) { return "chastity"; - } else if (rel.masturbation === 1 && rel.partner === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) { + } else if (rel.masturbation === 1 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) { return "masturbation only"; - } else if (rel.masturbation === 0 && rel.partner === 1 && !includeFamily && rel.slaves === 0 && rel.master === 0) { + } else if (rel.masturbation === 0 && rel.partner === 1 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 0) { return "partner only"; - } else if (rel.masturbation === 0 && rel.partner === 0 && includeFamily && rel.slaves === 0 && rel.master === 0) { + } else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 1 && !includeFamily && rel.slaves === 0 && rel.master === 0) { + return "facility leaders only"; + } else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 && includeFamily && rel.slaves === 0 && rel.master === 0) { return "family only"; - } else if (rel.masturbation === 0 && rel.partner === 0 && !includeFamily && rel.slaves === 0 && rel.master === 1) { + } else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 1 && rel.master === 0) { + return "slaves only"; + } else if (rel.masturbation === 0 && rel.partner === 0 && rel.facilityLeader === 0 && !includeFamily && rel.slaves === 0 && rel.master === 1) { return "you only"; - } else if (rel.slaves === 1) { + } else if (_counter >= 3) { let ret = "permissive"; let exceptions = []; if (rel.partner === 0) { exceptions.push("partner"); } + if (rel.facilityLeader === 0) { + exceptions.push("facility leaders"); + } if (!includeFamily) { exceptions.push("family"); } @@ -146,22 +158,30 @@ App.Utils.releaseSummaryLong = function releaseSummaryLong(slave) { ret += ", no masturbation"; } return ret; - } else { + } else if (_counter > 0 && _counter < 3){ + let ret = "restrictive"; let permissions = []; - if (rel.masturbation === 1) { - permissions.push("masturbation"); - } if (rel.partner === 1) { permissions.push("partner"); } + if (rel.facilityLeader === 1) { + permissions.push("facility leaders"); + } if (includeFamily) { permissions.push("family"); } if (rel.master === 1) { permissions.push("you"); } - if (permissions.length < 1) { return "unknown"; } // probably means BC didn't get run, but let's not die because of it - return permissions.reduce(function(res, ch, i, arr) { return res + (i === arr.length - 1 ? ' and ' : ', ') + ch; }); + if (permissions.length > 0) { + ret += " but permits " + permissions.reduce(function(res, ch, i, arr) { return res + (i === arr.length - 1 ? ' and ' : ', ') + ch; }); + } + if (rel.masturbation === 1) { + ret += ", and allowed to masturbate"; + } + return ret; + } else { + return "no release rules"; } }; diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js index fcde2c4ddc2e2ec9988d8b79fa5985f89961a0fc..fac661e1abb84f818d347a51ecee3ad5cfda62a1 100644 --- a/src/js/rulesAssistant.js +++ b/src/js/rulesAssistant.js @@ -118,8 +118,6 @@ globalThis.ruleAppliesP = function(rule, slave) { } if (V.rulesToApplyOnce[rule.ID].includes(slave.ID)) { return false; - } else { - V.rulesToApplyOnce[rule.ID].push(slave.ID); } } else { if (V.rulesToApplyOnce[rule.ID]) { @@ -148,20 +146,32 @@ globalThis.ruleAppliesP = function(rule, slave) { slaveAttribute, cond.data.value[0], cond.data.value[1]); + if (cond.applyRuleOnce && flag) { + V.rulesToApplyOnce[rule.ID].push(slave.ID); + } break; case "belongs": // the attribute belongs in the list of values flag = cond.data.value.includes(slave[cond.data.attribute]); + if (cond.applyRuleOnce && flag) { + V.rulesToApplyOnce[rule.ID].push(slave.ID); + } break; case "custom": // user provided JS function // TODO: This should use a cached Function instead of 'eval'ing flag = eval(cond.data)(slave); + if (cond.applyRuleOnce && flag) { + V.rulesToApplyOnce[rule.ID].push(slave.ID); + } break; } if (!flag) { return false; } + // If rule always applies. + if (cond.applyRuleOnce && !V.rulesToApplyOnce[rule.ID].includes(slave.ID) && flag) { + V.rulesToApplyOnce[rule.ID].push(slave.ID); + } // assignment / facility / special slaves / specific slaves check - return (cond.assignment.length === 0 || cond.assignment.includes(slave.assignment)) && (cond.selectedSlaves.length === 0 || cond.selectedSlaves.includes(slave.ID)) && !(cond.excludedSlaves.includes(slave.ID)); diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js index 8c28f0f0e784f110e1c759c3df3ed7f04b46783b..19d28e8a3a03c84a18f2399d816ae3ef90055870 100644 --- a/src/js/sexActsJS.js +++ b/src/js/sexActsJS.js @@ -319,23 +319,31 @@ globalThis.SimpleSexAct = (function() { function SimpleSexActPlayer(slave, fuckCount = 1) { let fuckTarget = 0; let r = ""; + const sexArray = ["penetrative"]; + if (V.PC.dick > 0) { + sexArray.push("penetrative", "penetrative"); + } + if (V.PC.vagina > -1) { + sexArray.push("vaginal"); + } + const playerSex = either(sexArray); for (let i = 0; i < fuckCount; i++) { fuckTarget = jsRandom(1, 100); if (slave.nipples === "fuckable" && V.PC.dick > 0 && fuckTarget > 80) { - actX(slave, "mammary"); + seX(slave, "mammary", V.PC, "penetrative"); } else if (canDoVaginal(slave) && slave.vagina > 0 && fuckTarget > 33) { - actX(slave, "vaginal"); + seX(slave, "vaginal", V.PC, playerSex); if (canImpreg(slave, V.PC)) { r += knockMeUp(slave, 10, 0, -1, true); } } else if (canDoAnal(slave) && slave.anus > 0 && fuckTarget > 10) { - actX(slave, "anal"); + seX(slave, "anal", V.PC, "penetrative"); if (canImpreg(slave, V.PC)) { r += knockMeUp(slave, 10, 1, -1, true); } } else { - actX(slave, "oral"); + seX(slave, "oral", V.PC, playerSex); } } return r; diff --git a/src/js/utilsFC.js b/src/js/utilsFC.js index fd5fdbb912729a62a55787f82b30d9aff6bc6b9e..9528b93dd3353a294b5c8334b36c600a2fee823e 100644 --- a/src/js/utilsFC.js +++ b/src/js/utilsFC.js @@ -1575,12 +1575,14 @@ globalThis.lengthToEitherUnit = function(length) { /** * @param {App.Entity.SlaveState} slave + * @param {number} [induce] * @returns {string} */ -globalThis.induceLactation = function(slave) { +globalThis.induceLactation = function(slave, induce = 0) { const {His} = getPronouns(slave); let r = ""; let lactationStartChance = jsRandom(10, 100); + slave.induceLactation += induce; if (slave.boobs < 300) { lactationStartChance *= 1.5; } else if (slave.boobs < 400 || slave.boobs >= 5000) { @@ -1605,7 +1607,7 @@ globalThis.induceLactation = function(slave) { lactationStartChance = (lactationStartChance / (slave.lactationAdaptation / 10)); } if (slave.geneticQuirks.galactorrhea === 2) { - lactationStartChance *= .5 + lactationStartChance *= .5; } lactationStartChance = Math.floor(lactationStartChance); if (slave.induceLactation >= lactationStartChance) { @@ -3045,9 +3047,9 @@ App.Utils.masterSuiteAverages = (function() { })(); App.Utils.schoolCounter = function() { - return App.Data.misc.schools.filter(s => V[s].schoolPresent).length; + return Array.from(App.Data.misc.schools.keys()).filter(s => V[s].schoolPresent).length; }; App.Utils.schoolFailure = function() { - return App.Data.misc.schools.find(s => V[s].schoolPresent && V[s].schoolProsperity <= -10); + return Array.from(App.Data.misc.schools.keys()).find(s => V[s].schoolPresent && V[s].schoolProsperity <= -10); }; diff --git a/src/markets/bulkSlave/bulkSlaveIntro.js b/src/markets/bulkSlave/bulkSlaveIntro.js index f69148c86bba7c6c7ba25d8b4815a21cf3a3b368..a1184fd8a8e0f8e53fcb44d9c5b3de06c7317df8 100644 --- a/src/markets/bulkSlave/bulkSlaveIntro.js +++ b/src/markets/bulkSlave/bulkSlaveIntro.js @@ -177,7 +177,7 @@ App.Markets.bulkSlaveIntro = function() { } /* increment Slave school purchase counts if needed */ - if (App.Data.misc.schools.includes(V.market.slaveMarket)) { + if (App.Data.misc.schools.has(V.market.slaveMarket)) { V[V.market.slaveMarket].studentsBought += V.market.newSlaves.length; } } @@ -204,7 +204,7 @@ App.Markets.bulkSlaveIntro = function() { opinion = App.Neighbor.opinion(0, V.market.numArcology); opinion = Math.clamp(Math.trunc(opinion/20), -10, 10); discount -= (opinion * 25); - } else if (App.Data.misc.schools.includes(V.market.slaveMarket)) { + } else if (App.Data.misc.schools.has(V.market.slaveMarket)) { if (V[V.market.slaveMarket].schoolUpgrade !== 0) { discount = 375; } diff --git a/src/markets/marketUI.js b/src/markets/marketUI.js index 90ca923d691b40f674b54c0808bf2d81e5f1d067..3646424fa74ad966fcd6bb8b3f126608403ef9b6 100644 --- a/src/markets/marketUI.js +++ b/src/markets/marketUI.js @@ -141,7 +141,7 @@ App.Markets.purchaseFramework = function(slaveMarket, {sTitleSingular = "slave", return el; function student() { - if (App.Data.misc.schools.includes(slaveMarket)) { + if (App.Data.misc.schools.has(slaveMarket)) { V[slaveMarket].schoolSale = 0; V[slaveMarket].studentsBought += 1; } @@ -177,53 +177,37 @@ App.Markets.GlobalVariable = function() { * @param {*} arcIndex */ App.Markets.marketName = function(market = "kidnappers", arcIndex = 1) { - switch (market) { - case "corporate": - return `your corporation`; - case "neighbor": - return `${V.arcologies[arcIndex].name}`; - case "kidnappers": - return `the Kidnappers' Market`; - case "indentures": - return `the Indentures Market`; - case "hunters": - return `the Runaway Hunters' Market`; - case "raiders": - return `the Raiders' Market`; - case "underage raiders": - return `the Raiders' Black Market`; - case "heap": - return `the Flesh Heap as alive as when you purchased them.`; - case "wetware": - return `the Wetware CPU market`; - case "trainers": - return `the Trainers' Market`; - case "TSS": - return `The Slavegirl School`; - case "TUO": - return `The Utopian Orphanage`; - case "GRI": - return `Growth Research Institute`; - case "SCP": - return `St. Claver Preparatory`; - case "LDE": - return `L'école des Enculées`; - case "TGA": - return `The Gymnasium-Academy`; - case "TCR": - return `The Cattle Ranch`; - case "TFS": - return `The Futanari Sisters`; - case "HA": - return `The Hippolyta Academy`; - case "NUL": - return `Nueva Universidad de Libertad`; - case "low tier criminals": - case "gangs and smugglers": - case "white collar": - case "military prison": - return `the prisoner sale`; - default: - return `Someone messed up. ${market} is not known.`; + if (App.Data.misc.schools.has(market)) { + return App.Data.misc.schools.get(market).title; + } else { + switch (market) { + case "corporate": + return `your corporation`; + case "neighbor": + return `${V.arcologies[arcIndex].name}`; + case "kidnappers": + return `the Kidnappers' Market`; + case "indentures": + return `the Indentures Market`; + case "hunters": + return `the Runaway Hunters' Market`; + case "raiders": + return `the Raiders' Market`; + case "underage raiders": + return `the Raiders' Black Market`; + case "heap": + return `the Flesh Heap as alive as when you purchased them.`; + case "wetware": + return `the Wetware CPU market`; + case "trainers": + return `the Trainers' Market`; + case "low tier criminals": + case "gangs and smugglers": + case "white collar": + case "military prison": + return `the prisoner sale`; + default: + return `Someone messed up. ${market} is not known.`; + } } }; diff --git a/src/markets/theMarket/buySlaves.js b/src/markets/theMarket/buySlaves.js index 707e6052026657593001a07ba7043242131834fc..a6c743a3bac3da4dc66c78209641f226161fd2e0 100644 --- a/src/markets/theMarket/buySlaves.js +++ b/src/markets/theMarket/buySlaves.js @@ -192,7 +192,7 @@ App.UI.buySlaves = function() { if (store.note) { App.UI.DOM.appendNewElement("span", el, ` ${store.note}`, "note"); } - if (App.Data.misc.schools.includes(store.marketType)) { + if (App.Data.misc.schools.has(store.marketType)) { if (V[store.marketType].schoolSale === 1) { App.UI.DOM.appendNewElement("span", el, `Offering your first purchase at half price this week. `, "yellow"); } diff --git a/src/neighbor/neighborInteract.js b/src/neighbor/neighborInteract.js index 3ef6a2f64f23b4f2bf62790d7f2665adbc17d7e8..450494514f0868b38c91c18da9adc09bcfb21343 100644 --- a/src/neighbor/neighborInteract.js +++ b/src/neighbor/neighborInteract.js @@ -5,7 +5,9 @@ App.Neighbor.Interact = (function() { * @returns {DocumentFragment} */ function list() { - V.arcologies.forEach((a) => a.prosperity = Math.clamp(a.prosperity, 1, 400)); + for (let i = 1; i < V.arcologies.length; i++) { + V.arcologies[i].prosperity = Math.clamp(V.arcologies[i].prosperity, 1, 400); + } if (!V.activeArcologyIdx) { V.activeArcologyIdx = 0; } diff --git a/src/npc/databases/cheatmodeDatabase.tw b/src/npc/databases/cheatmodeDatabase.tw index 479591222ef956ff5d20910bdadb75f973705405..5149a727ca44ee438b0c862607d9d37a6004facd 100644 --- a/src/npc/databases/cheatmodeDatabase.tw +++ b/src/npc/databases/cheatmodeDatabase.tw @@ -1,7 +1,7 @@ :: Cheatmode Database [nobr] -<<set $activeSlave = BaseSlave()>> -<<set _HS = clone($activeSlave)>> +<<set _slave = BaseSlave()>> +<<set _HS = clone(_slave)>> <<set _HS.slaveName = "Miss Anne", _HS.birthName = "Lindy Anne", @@ -61,7 +61,7 @@ <<set $HeadGirlID = _HS.ID>> //There are quite a few left; their names are _HS.slaveName,// -<<set _HS = clone($activeSlave)>> +<<set _HS = clone(_slave)>> <<set _HS.slaveName = "Cornelia", _HS.birthName = "Cora", _HS.ID = 990001, _HS.relationship = 4, _HS.relationshipTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 36, _HS.physicalAge = 36, _HS.visualAge = 36, _HS.ovaryAge = 36, _HS.ageImplant = 1, setHealth(_HS, 10), _HS.devotion = 100, _HS.nationality = "Stateless", _HS.muscles = 20, _HS.height = 190, _HS.race = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "dark", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1200, _HS.boobsImplant = 1000, _HS.boobsImplantType = "fillable", _HS.areolae = 2, _HS.butt = 5, _HS.buttImplant = 3, _HS.buttImplantType = "fillable", _HS.preg = -2, _HS.face = 15, _HS.faceImplant = 65, _HS.lips = 35, _HS.lipsImplant = 10, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 100, _HS.skill.anal = 100, _HS.skill.whoring = 100, _HS.skill.entertainment = 100, _HS.clothes = "a slave gown", _HS.energy = 65, _HS.attrXX = 80, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left hand"] = "a large letter 'S'", _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South.">> <<if $seeDicks != 0>> <<set _HS.genes = "XY", _HS.vagina = -1, _HS.dick = 3, _HS.balls = 3, _HS.scrotum = 3, _HS.foreskin = 3, _HS.prostate = 1, _HS.pubertyXY = 1>> @@ -71,7 +71,7 @@ <<run newSlave(_HS)>> //_HS.slaveName,// -<<set _HS = clone($activeSlave)>> +<<set _HS = clone(_slave)>> <<set _HS.slaveName = "Sheba", _HS.birthName = "Shaneequa", _HS.ID = 990002, _HS.rivalry = 1, _HS.rivalryTarget = 990000, _HS.assignment = "whore", _HS.birthWeek = random(0,51), _HS.actualAge = 19, _HS.physicalAge = 19, _HS.visualAge = 19, _HS.ovaryAge = 19, setHealth(_HS, 10), _HS.devotion = 60, _HS.nationality = "Stateless", _HS.height = 175, _HS.race = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hStyle = "long", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.boobs = 1600, _HS.boobsImplant = 600, _HS.boobsImplantType = "normal", _HS.nipplesPiercing = 1, _HS.areolae = 1, _HS.butt = 6, _HS.buttImplant = 2, _HS.buttImplantType = "normal", _HS.face = 55, _HS.faceImplant = 15, _HS.lips = 55, _HS.lipsImplant = 10, _HS.anus = 1, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.oral = 35, _HS.skill.anal = 35, _HS.skill.whoring = 35, _HS.skill.entertainment = 35, _HS.clothes = "a slave gown", _HS.energy = 100, _HS.attrXY = 40, _HS.fetishKnown = 1, _HS.brand["left hand"] = "a large letter 'S'", _HS.custom.desc = "$He speaks with the demeaning accent of slaves from the Old South.", _HS.mother = 990001>> <<if $seeDicks != 100>> <<set _HS.genes = "XX", _HS.vagina = 1, _HS.ovaries = 1, _HS.skill.vaginal = 35, _HS.pubertyXX = 1>> @@ -81,7 +81,7 @@ <<run newSlave(_HS)>> //_HS.slaveName,// -<<set _HS = clone($activeSlave)>> +<<set _HS = clone(_slave)>> <<set _HS.slaveName = "Cornflower", _HS.birthName = "Alysa", _HS.ID = 990003, _HS.relationship = 3, _HS.relationshipTarget = 990005, _HS.assignment = "get milked", _HS.birthWeek = random(0,51), setHealth(_HS, 20), _HS.devotion = 60, _HS.nationality = "Stateless", _HS.muscles = 50, _HS.height = 190, _HS.race = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.pubicHStyle = "waxed", _HS.waist = -100, _HS.heels = 1, _HS.voice = 0, _HS.boobs = 6000, _HS.nipples = "huge", _HS.areolae = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 3, _HS.buttTat = "bovine patterns", _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "bovine patterns", _HS.anus = 3, _HS.anusTat = "bovine patterns", _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.nosePiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.energy = 65, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1, _HS.custom.tattoo = "A pretty blue cornflower is tattooed on each of $his cheeks.", _HS.custom.desc = "$He once spoke with the demeaning accent of slaves from the Old South.", _HS.mother = 990005>> <<if $seeDicks != 100>> <<set _HS.genes = "XX", _HS.vagina = 1, _HS.vaginaTat = "bovine patterns", _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.pubertyXX = 1>> @@ -91,7 +91,7 @@ <<run newSlave(_HS)>> //_HS.slaveName,// -<<set _HS = clone($activeSlave)>> +<<set _HS = clone(_slave)>> <<set _HS.slaveName = "Miss Lily", _HS.birthName = "Lillian", _HS.ID = 990004, _HS.assignment = "guard you", _HS.birthWeek = random(0,51), setHealth(_HS, 20), _HS.devotion = 30, _HS.nationality = "Stateless", _HS.muscles = 50, _HS.height = 175, _HS.race = "white", _HS.eye.origColor = "green", _HS.origHColor = "straw blonde", _HS.origSkin = "pale", _HS.hLength = 40, _HS.hStyle = "in a short ponytail", _HS.waist = -55, _HS.boobs = 600, _HS.butt = 3, _HS.face = 15, _HS.lips = 35, _HS.preg = -2, _HS.anus = 2, _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.skill.anal = 35, _HS.skill.combat = 1, _HS.energy = 65, _HS.attrXY = 40, _HS.fetish = "buttslut", _HS.fetishKnown = 1, _HS.custom.tattoo = "'Miss Lily' is tattooed in lovely flowing script over $his collarbone.", _HS.custom.desc = "$He once spoke with the rich accent of the Old South.", _HS.mother = 990000>> <<if $seeDicks != 100>> <<set _HS.genes = "XX", _HS.ovaries = 1, _HS.pubertyXX = 1>> @@ -102,7 +102,7 @@ <<set $BodyguardID = _HS.ID>> //_HS.slaveName,// -<<set _HS = clone($activeSlave)>> +<<set _HS = clone(_slave)>> <<set _HS.slaveName = "Lilac", _HS.birthName = "Lillian", _HS.ID = 990005, _HS.relationship = 3, _HS.relationshipTarget = 990003, _HS.assignment = "get milked", _HS.birthWeek = random(0,51), _HS.actualAge = 36, _HS.physicalAge = 36, _HS.visualAge = 36, _HS.ovaryAge = 36, setHealth(_HS, 20), _HS.devotion = 60, _HS.nationality = "Stateless", _HS.muscles = 50, _HS.height = 190, _HS.race = "black", _HS.origHColor = "black", _HS.pubicHColor = "black", _HS.origSkin = "brown", _HS.hLength = 0, _HS.hStyle = "shaved bald", _HS.pubicHStyle = "waxed", _HS.waist = -55, _HS.heels = 1, _HS.boobs = 8000, _HS.nipples = "huge", _HS.areolae = 2, _HS.boobsTat = "bovine patterns", _HS.lactation = 2, _HS.lactationDuration = 2, _HS.butt = 4, _HS.buttTat = "bovine patterns", _HS.face = 15, _HS.lips = 35, _HS.lipsTat = "bovine patterns", _HS.anus = 3, _HS.anusTat = "bovine patterns", _HS.makeup = 1, _HS.nails = 1, _HS.earPiercing = 1, _HS.nosePiercing = 2, _HS.shouldersTat = "bovine patterns", _HS.armsTat = "bovine patterns", _HS.legsTat = "bovine patterns", _HS.stampTat = "bovine patterns", _HS.skill.oral = 15, _HS.skill.anal = 35, _HS.energy = 65, _HS.attrXY = 40, _HS.fetish = "boobs", _HS.fetishKnown = 1, _HS.custom.tattoo = "A pretty purple lilac is tattooed on each of $his cheeks.", _HS.custom.desc = "$He once spoke with the demeaning accent of slaves from the Old South.">> <<if $seeDicks != 100>> <<set _HS.genes = "XX", _HS.vagina = 1, _HS.vaginaTat = "bovine patterns", _HS.ovaries = 1, _HS.skill.vaginal = 15, _HS.pubertyXX = 1>> diff --git a/src/npc/generate/generateLeadershipSlave.js b/src/npc/generate/generateLeadershipSlave.js new file mode 100644 index 0000000000000000000000000000000000000000..11f45fad4cd8e30681522643861d6cf397e46842 --- /dev/null +++ b/src/npc/generate/generateLeadershipSlave.js @@ -0,0 +1,185 @@ +globalThis.generateLeadershipSlave = function(input, location) { + const applyMaleGenitalia = function({dick, balls, prostate}) { + if (V.seeDicks > 0) { + slave.dick = dick; + slave.scrotum = slave.balls = balls; + slave.prostate = prostate; + } + }; + + const agePenaltyCheck = V.AgePenalty === 1 ? 36 : 20; + const isMotherly = V.JFC.role === 'Motherly Attendant'; + let ageMin, ageMax; + switch (input) { + case "Teacher": + case "Attendant": + case "Motherly Attendant": + case "Matron": + if (input === 'Teacher') { + ageMin = 36; + } else if (input === 'Matron') { + ageMin = 24; + } else if (input.contains('Attendant')) { + ageMin = isMotherly ? 36 : 26; + } + ageMax = V.retirementAge-3; + break; + case "Headgirl": + case "Stewardess": + case "Farmer": + case "Madam": + ageMin = agePenaltyCheck; + ageMax = V.retirementAge-5; + break; + default: + ageMin = 20; + ageMax = 36; + } + + let slave = GenerateNewSlave("XX", {minAge: ageMin, maxAge: ageMax, ageOverridesPedoMode: 1, disableDisability: 1}); + const {his} = getPronouns(slave); + slave.devotion = jsRandom(21, 85); + slave.trust = jsRandom(21, 85); + slave.weight = jsRandom(-30, 20); + slave.waist = jsRandom(-30, 10); + slave.intelligenceImplant = 30; + slave.intelligence = jsRandom(20, 85); + slave.hears = 0; + slave.voice = 2; + slave.face = jsRandom(40, 60); + if (location === 'Job Fulfillment Center') { + slave.origin = `The ${location} offered ${his} contract to fill your request for a ${input}.`; + } + if (slave.faceShape === "masculine") { + slave.faceShape = "sensual"; + } + if (slave.boobShape === "saggy" || slave.boobShape === "downward-facing") { + slave.boobShape = "perky"; + } + eyeSurgery(slave, "both", "normal"); + setHealth(slave, jsRandom(80, 95), 0, 0, 0, 0); + switch (input) { + // Security + case "Bodyguard": + slave.devotion = jsRandom(51, 85); + slave.trust = jsRandom(51, 85); + slave.muscles = jsRandom(30, 70); + slave.height = Math.round(Height.random(slave, {skew: 3, spread: .2, limitMult: [1, 4]})); + slave.weight = jsRandom(-10, 10); + slave.teeth = either("normal", "pointy"); + slave.skill.combat = 1; + if (jsRandom(0, 2) === 0) { + configureLimbs(slave, "all", 5); + } + slave.career = either(App.Data.misc.bodyguardCareers); + break; + case "Wardeness": + slave.energy = jsRandom(80, 100); + slave.sexualFlaw = either("malicious", "none", "none", "none", "none"); + slave.fetish = "sadist"; + slave.fetishStrength = 100; + slave.muscles = jsRandom(50, 80); + slave.skill.combat = 1; + applyMaleGenitalia({dick: jsRandom(3, 6), balls: jsRandom(3, 6), prostate: either(1, 1, 1, 2, 2, 3)}); + slave.career = either(App.Data.misc.wardenessCareers); + break; + // Management + case "Headgirl": + slave.intelligence = jsRandom(60, 100); + slave.devotion = jsRandom(51, 85); + slave.trust = jsRandom(51, 85); + slave.fetish = "dom"; + slave.fetishStrength = 100; + slave.energy = jsRandom(70, 90); + Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100}); + slave.vagina = jsRandom(3, 4); + applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 6), prostate: either(1, 1, 2)}); + slave.career = either(App.Data.misc.HGCareers); + break; + case "Teacher": + slave.fetish = "dom"; + slave.fetishStrength = 100; + slave.energy = jsRandom(70, 90); + slave.intelligence = 100; + Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100}); + slave.face = jsRandom(41, 90); + slave.vagina = jsRandom(3, 4); + applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 6), prostate: either(1, 1, 1, 2, 2, 3)}); + slave.career = either(App.Data.misc.schoolteacherCareers); + break; + case "Nurse": + slave.fetish = "dom"; + slave.fetishStrength = 100; + slave.muscles = jsRandom(6, 50); + slave.face = jsRandom(41, 90); + slave.sexualQuirk = "caring"; + slave.career = either(App.Data.misc.nurseCareers); + break; + case "Attendant": + case "Motherly Attendant": + slave.fetish = "submissive"; + slave.fetishStrength = 100; + slave.face = jsRandom(60, 90); + if (isMotherly) { + slave.counter.birthsTotal = jsRandom(1, 3); + slave.pregKnown = 1; + slave.pregWeek = slave.preg = jsRandom(20, 35); + slave.pregType = 1; + SetBellySize(slave); + slave.vagina = jsRandom(3, 4); + } else { + slave.preg = 0; + } + eyeSurgery(slave, "both", either(0, 2, 2) === 2 ? "normal" : "blind"); + slave.career = either(App.Data.misc.attendantCareers); + break; + case "Matron": + slave.sexualQuirk = "caring"; + slave.counter.birthsTotal = jsRandom(2, 4); + slave.vagina = 3; + slave.face = jsRandom(60, 90); + slave.career = either(App.Data.misc.matronCareers); + break; + case "Stewardess": + slave.energy = jsRandom(70, 90); + slave.fetish = "dom"; + slave.fetishStrength = 100; + slave.career = either(App.Data.misc.stewardessCareers); + break; + case "Milkmaid": + slave.muscles = jsRandom(31, 60); + slave.skill.oral = jsRandom(31, 60); + slave.sexualQuirk = "caring"; + slave.behavioralQuirk = "funny"; + applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(4, 9), prostate: either(1, 1, 1, 2)}); + slave.career = either(App.Data.misc.milkmaidCareers); + break; + case "Farmer": + slave.muscles = jsRandom(41, 70); + slave.sexualQuirk = "caring"; + slave.weight = jsRandom(0, 30); + slave.height = Math.round(Height.random(slave, {skew: 3, spread: .2, limitMult: [1, 4]})); + applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(4, 9), prostate: either(1, 1, 1, 2)}); + slave.career = either(App.Data.misc.farmerCareers); + break; + // Entertain + case "DJ": + slave.skill.entertainment = 100; + slave.muscles = jsRandom(6, 30); + slave.face = 100; + slave.career = either(App.Data.misc.DJCareers); + break; + case "Madam": + slave.skill.whoring = 100; + applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 5), prostate: either(1, 1, 1, 2)}); + slave.career = either(App.Data.misc.madamCareers); + break; + case "Concubine": + slave.prestige = 3; + slave.energy = jsRandom(80, 100); + Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100}); + slave.face = 100; + break; + } + return slave; +}; diff --git a/src/npc/generate/newChildIntro.js b/src/npc/generate/newChildIntro.js index 7a57b3f661a74476c499e883e63d4b176e5d478c..8b6c5ce5bab1bd5681b08c4a82ad7fb05fab251e 100644 --- a/src/npc/generate/newChildIntro.js +++ b/src/npc/generate/newChildIntro.js @@ -13,19 +13,12 @@ App.UI.newChildIntro = function(slave) { let dadInterest; /** @type {FC.SlaveStateOrZero} */ - let tempMom = 0; + const tempMom = getSlave(slave.mother); /** @type {FC.SlaveStateOrZero} */ - let tempDad = 0; + const tempDad = getSlave(slave.father); App.Utils.setLocalPronouns(slave); - if (slave.mother > 0) { - tempMom = getSlave(slave.mother) || 0; - } - if (slave.father > 0) { - tempDad = getSlave(slave.father) || 0; - } - r = []; r.push(`You completed the legalities before heading to ${V.incubatorName}, knowing the tank will release ${him} on your approach, and instruct ${V.assistant.name} to notify the new ${girl}'s parents to meet you in your office. As the tank exhumes the disoriented ${girl},`); @@ -39,11 +32,7 @@ App.UI.newChildIntro = function(slave) { } else if (slave.geneticQuirks.neoteny && slave.actualAge > 12 && V.geneticMappingUpgrade === 0) { r.push(`you have to make sure the right ${girl} was released. ${He} was supposed to be ${slave.actualAge}, not this child sitting before you. You double check the machine's logs to be certain and it turns out ${he} really is ${slave.actualAge}, just abnormally young looking for ${his} age.`); } else { - r.push(`you help ${him} to ${his} feet`); - if (V.incubatorReproductionSetting > 1) { - r.push(`, making sure to feel-up ${his} overdeveloped body,`); - } - r.push(` and walk ${him} to your penthouse.`); + r.push(`you help ${him} to ${his} feet${(V.incubatorReproductionSetting > 1) ? `, making sure to feel-up ${his} overdeveloped body,` : ``} and walk ${him} to your penthouse.`); } r.push(`Though first you must decide upon a name for the new ${girl}; it won't take long to reach your office, so you have only <span class="orange">one chance to name ${him}</span> before you arrive.`); App.Events.addParagraph(el, r); @@ -236,111 +225,14 @@ App.UI.newChildIntro = function(slave) { } // Parent naming - - function parentNaming(parent) { - const el = new DocumentFragment(); - ({ - he2, his2, He2 - } = getPronouns(parent).appendSuffix("2")); - if (parent.ID === V.ConcubineID) { - App.UI.DOM.appendNewElement( - "div", - el, - App.UI.DOM.link( - `Permit your Concubine to name ${his2} ${daughter}`, - () => { - parentNames(parent, slave); - slave.birthName = slave.slaveName; - jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} picks a name ${he2} thinks you might find attractive; from now on ${his2} ${daughter} will be known as "${slave.slaveName}".`); - const slaveName = document.createElement("span"); - slaveName.classList.add('slave-name'); - slaveName.append(slave.slaveName); - jQuery("#newName").empty().append(slaveName); - } - ) - ); - } else if (parent.relationship === -3 && (parent.devotion >= -20)) { - App.UI.DOM.appendNewElement( - "div", - el, - App.UI.DOM.link( - `Permit your ${wife2} to name ${his2} ${daughter}`, - () => { - parentNames(parent, slave); - slave.birthName = slave.slaveName; - jQuery("#naming").empty().append(`After some careful consideration,${parent.slaveName} picks a name suitable for your ${daughter}; from now on ${he2} will be known as "${slave.slaveName}".`); - const slaveName = document.createElement("span"); - slaveName.classList.add('slave-name'); - slaveName.append(slave.slaveName); - jQuery("#newName").empty().append(slaveName); - } - ) - ); - } else if (parent.ID === V.BodyguardID) { - App.UI.DOM.appendNewElement( - "div", - el, - App.UI.DOM.link( - `Permit your bodyguard to name ${his2} ${daughter}`, - () => { - parentNames(parent, slave); - slave.birthName = slave.slaveName; - jQuery("#naming").empty().append(`After some careful consideration,${parent.slaveName} decides on "${slave.slaveName}" for ${his2} daughter. ${He2} hopes you'll find it fitting ${his} station.`); - const slaveName = document.createElement("span"); - slaveName.classList.add('slave-name'); - slaveName.append(slave.slaveName); - jQuery("#newName").empty().append(slaveName); - } - ) - ); - } else if (parent.ID === V.HeadGirlID) { - App.UI.DOM.appendNewElement( - "div", - el, - App.UI.DOM.link( - `Permit your Head Girl to name ${his2} ${daughter}`, - () => { - parentNames(parent, slave); - slave.birthName = slave.slaveName; - jQuery("#naming").empty().append(`After some careful consideration,${parent.slaveName} decides on "${slave.slaveName}" for ${his2} daughter, and hopes it will be a name your other slaves will learn to respect.`); - const slaveName = document.createElement("span"); - slaveName.classList.add('slave-name'); - slaveName.append(slave.slaveName); - jQuery("#newName").empty().append(slaveName); - } - ) - ); - } else if (parent.devotion > 50 && parent.trust > 50) { - App.UI.DOM.appendNewElement( - "div", - el, - App.UI.DOM.link( - `Permit ${his} devoted mother to name ${his2} ${daughter}`, - () => { - parentNames(parent, slave); - slave.birthName = slave.slaveName; - jQuery("#naming").empty().append(`After some careful consideration, ${tempMom.slaveName} picks a name ${he2} hopes you'll like; from now on ${his2} ${daughter} will be known as "${slave.slaveName}".`); - const slaveName = document.createElement("span"); - slaveName.classList.add('slave-name'); - slaveName.append(slave.slaveName); - jQuery("#newName").empty().append(slaveName); - } - ) - ); - } - return el; - } - if (tempMom !== 0) { + if (tempMom) { naming.append(parentNaming(tempMom)); } - if (tempDad !== 0 && slave.father !== slave.mother) { + if (tempDad && slave.father !== slave.mother) { naming.append(parentNaming(tempDad)); } el.append(naming); - - r = []; - const newName = document.createElement("span"); newName.id = "newName"; @@ -350,8 +242,8 @@ App.UI.newChildIntro = function(slave) { newName.append(slaveName); + r = []; r.push(newName); - r.push(`now stands before your desk`); if (tempMom !== 0 && tempDad !== 0 && slave.father !== slave.mother) { r.push(`alongside ${his} mother ${tempMom.slaveName} and father ${tempDad.slaveName}.`); @@ -894,4 +786,98 @@ App.UI.newChildIntro = function(slave) { ); return el; + + function parentNaming(parent) { + const el = new DocumentFragment(); + ({ + he2, his2, He2, wife2 + } = getPronouns(parent).appendSuffix("2")); + if (parent.ID === V.ConcubineID) { + App.UI.DOM.appendNewElement( + "div", + el, + App.UI.DOM.link( + `Permit your Concubine to name ${his2} ${daughter}`, + () => { + parentNames(parent, slave); + slave.birthName = slave.slaveName; + jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} picks a name ${he2} thinks you might find attractive; from now on ${his2} ${daughter} will be known as "${slave.slaveName}".`); + const slaveName = document.createElement("span"); + slaveName.classList.add('slave-name'); + slaveName.append(slave.slaveName); + jQuery("#newName").empty().append(slaveName); + } + ) + ); + } else if (parent.relationship === -3 && (parent.devotion >= -20)) { + App.UI.DOM.appendNewElement( + "div", + el, + App.UI.DOM.link( + `Permit your ${wife2} to name ${his2} ${daughter}`, + () => { + parentNames(parent, slave); + slave.birthName = slave.slaveName; + jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} picks a name suitable for your ${daughter}; from now on ${he2} will be known as "${slave.slaveName}".`); + const slaveName = document.createElement("span"); + slaveName.classList.add('slave-name'); + slaveName.append(slave.slaveName); + jQuery("#newName").empty().append(slaveName); + } + ) + ); + } else if (parent.ID === V.BodyguardID) { + App.UI.DOM.appendNewElement( + "div", + el, + App.UI.DOM.link( + `Permit your bodyguard to name ${his2} ${daughter}`, + () => { + parentNames(parent, slave); + slave.birthName = slave.slaveName; + jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} decides on "${slave.slaveName}" for ${his2} daughter. ${He2} hopes you'll find it fitting ${his} station.`); + const slaveName = document.createElement("span"); + slaveName.classList.add('slave-name'); + slaveName.append(slave.slaveName); + jQuery("#newName").empty().append(slaveName); + } + ) + ); + } else if (parent.ID === V.HeadGirlID) { + App.UI.DOM.appendNewElement( + "div", + el, + App.UI.DOM.link( + `Permit your Head Girl to name ${his2} ${daughter}`, + () => { + parentNames(parent, slave); + slave.birthName = slave.slaveName; + jQuery("#naming").empty().append(`After some careful consideration, ${parent.slaveName} decides on "${slave.slaveName}" for ${his2} daughter, and hopes it will be a name your other slaves will learn to respect.`); + const slaveName = document.createElement("span"); + slaveName.classList.add('slave-name'); + slaveName.append(slave.slaveName); + jQuery("#newName").empty().append(slaveName); + } + ) + ); + } else if (parent.devotion > 50 && parent.trust > 50) { + App.UI.DOM.appendNewElement( + "div", + el, + App.UI.DOM.link( + `Permit ${his} devoted mother to name ${his2} ${daughter}`, + () => { + parentNames(parent, slave); + slave.birthName = slave.slaveName; + jQuery("#naming").empty().append(`After some careful consideration, ${tempMom.slaveName} picks a name ${he2} hopes you'll like; from now on ${his2} ${daughter} will be known as "${slave.slaveName}".`); + const slaveName = document.createElement("span"); + slaveName.classList.add('slave-name'); + slaveName.append(slave.slaveName); + jQuery("#newName").empty().append(slaveName); + } + ) + ); + } + return el; + } }; diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js index f71a8020838cfdde0ea75ea9dc8b57501a4942a8..96b362af692208f39c9e5ae11ac5c19a208613c2 100644 --- a/src/npc/generate/newSlaveIntro.js +++ b/src/npc/generate/newSlaveIntro.js @@ -3323,11 +3323,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = `Let it slide for now`, () => { const r = []; - r.push(`You decide to yourself that it may be for the best to just send ${him} on ${his} way for now. You quietly order ${slave.slaveName} out into the penthouse, while you head off to wash out ${his} seed. You can't reasonably expect ${him} to know the full ramifications of what ${he} did; ${he} can't exactly be considered an adult`); - if (slave.physicalAge < 18) { - r.push(`, by any means`); - } - r.push(`. Indeed, the ${girl} is mostly just bewildered by your sudden change in mood, but seems pretty sure that <span class="orangered">${he} had nothing to do with it.</span>`); + r.push(`You decide to yourself that it may be for the best to just send ${him} on ${his} way for now. You quietly order ${slave.slaveName} out into the penthouse, while you head off to wash out ${his} seed. You can't reasonably expect ${him} to know the full ramifications of what ${he} did; ${he} can't exactly be considered an adult${(slave.physicalAge < 18) ? `, by any means` : ``}. Indeed, the ${girl} is mostly just bewildered by your sudden change in mood, but seems pretty sure that <span class="orangered">${he} had nothing to do with it.</span>`); slave.trust += 20; jQuery("#result2").empty().append(r.join(" ")); } @@ -3467,11 +3463,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = } else { r.push(`be pushed to the ground. Standing over ${him}, staring ${him} down as ${he} peeks around your firm globe of a middle, you order ${him} to worship your pregnancy.`); if (slave.fetish === "pregnancy") { - r.push(`${He} complies eagerly. ${He} begins with sucking your popped navel before running ${his} tongue across the taut, smooth surface of your pregnancy. Once ${he} has finished with your belly, ${he} lowers ${himself} under it to begin work on your needy pussy. Before long, ${his} overzealous efforts have you quaking in pleasure, rousing your ${(V.PC.pregType === 1) ? `child` : `children`}. Once ${he} finishes you off, ${he} returns to rubbing your belly, soothing your rowdy child`); - if (V.PC.pregType > 1) { - r.push(`ren`); - } - r.push(`and <span class="hotpink">solidifying ${his} place</span> beneath you.`); + r.push(`${He} complies eagerly. ${He} begins with sucking your popped navel before running ${his} tongue across the taut, smooth surface of your pregnancy. Once ${he} has finished with your belly, ${he} lowers ${himself} under it to begin work on your needy pussy. Before long, ${his} overzealous efforts have you quaking in pleasure, rousing your ${(V.PC.pregType === 1) ? `child` : `children`}. Once ${he} finishes you off, ${he} returns to rubbing your belly, soothing your rowdy ${(V.PC.pregType === 1) ? `child`:`children`}and <span class="hotpink">solidifying ${his} place</span> beneath you.`); slave.devotion += 15; } else { r.push(`${He} shifts ${his} gaze between your middle and your face, not sure what to do. Losing patience, you toss a tube of cream at ${him}. ${He} shakily massages it onto your stretched skin, missing spots, much to your pleasure. With reason, you force ${him} onto ${his} back, turn around, and plant your needy cunt directly onto ${his} face. Struggling to breath under your weight, ${he} begins eating you out in desperation. After coaxing ${him} to massage your belly as ${he} does, you quickly climax across ${his} face and gently lift yourself off the coughing ${girl}. ${He} now <span class="hotpink">understands ${his} place in life</span> and is <span class="gold">terrified</span> about what ${he} will have to do if ${he} wants to survive.`); @@ -3634,11 +3626,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = } else { r.push(`You knew ${he} had a breast fetishist and ${his} eagerness to lighten a lactating ${womanP} proves that.`); } - r.push(`A kick from within startles you from your thoughts; you pat your gravid middle, reassuring your child`); - if (V.PC.pregType > 1) { - r.push(`ren`); - } - r.push(`that you'll make sure to save some milk for them. ${He}'s already starting to <span class="hotpink">show understanding of ${his} place</span> and even <span class="mediumaquamarine">beginning to build trust</span> with you.`); + r.push(`A kick from within startles you from your thoughts; you pat your gravid middle, reassuring your ${(V.PC.pregType === 1) ? `child`:`children`} that you'll make sure to save some milk for them. ${He}'s already starting to <span class="hotpink">show understanding of ${his} place</span> and even <span class="mediumaquamarine">beginning to build trust</span> with you.`); slave.devotion += 15; slave.trust += 15; } else { @@ -3715,11 +3703,7 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = `Let it slide for now`, () => { const r = []; - r.push(`You decide to yourself that it may be for the best to just send ${him} on ${his} way for now. You quietly order ${slave.slaveName} out into the penthouse, while you fetch a towel to wipe off ${his} seed. You can't reasonably expect ${him} to know the full ramifications of what ${he} did; ${he} can't exactly be considered an adult`); - if (slave.physicalAge < 18) { - r.push(`, by any means`); - } - r.push(`. Indeed, the ${girl} is mostly just bewildered by your sudden change in mood, but seems pretty sure that <span class="orangered">${he} had nothing to do with it.</span>`); + r.push(`You decide to yourself that it may be for the best to just send ${him} on ${his} way for now. You quietly order ${slave.slaveName} out into the penthouse, while you fetch a towel to wipe off ${his} seed. You can't reasonably expect ${him} to know the full ramifications of what ${he} did; ${he} can't exactly be considered an adult${(slave.physicalAge < 18) ? `, by any means` : ``}. Indeed, the ${girl} is mostly just bewildered by your sudden change in mood, but seems pretty sure that <span class="orangered">${he} had nothing to do with it.</span>`); slave.trust += 25; jQuery("#result2").empty().append(r.join(" ")); } @@ -3785,11 +3769,11 @@ App.UI.newSlaveIntro = function(slave, slave2, {tankBorn = false, momInterest = } else { r.push(`Suddenly, ${he} buries ${his} head into your cleavage, knocking you off balance and to the floor. As you try to right yourself, you notice ${he} has fallen asleep in your pillowy breasts. Sighing, you make yourself comfortable until ${he} finishes ${his} nap. When `); if (canSee(slave)) { - r.push(`the first thing ${he} sees when ${he} awakes is your face`); + r.push(`the first thing ${he} sees when ${he} awakes is your face,`); } else { - r.push(`he wakes up still enveloped in your bosom`); + r.push(`he wakes up still enveloped in your bosom,`); } - r.push(`, a <span class="hotpink">lasting bond</span> is established between you two. ${He} happily returns to snuggling your tits before you can help ${him} up and send ${him} off. ${He} might be turning into a breast fetishist, if you had to guess.`); + r.push(`a <span class="hotpink">lasting bond</span> is established between you two. ${He} happily returns to snuggling your tits before you can help ${him} up and send ${him} off. ${He} might be turning into a breast fetishist, if you had to guess.`); slave.devotion += 5; if (random(1, 100) > 40 && slave.fetish === "none") { slave.fetish = "boobs"; diff --git a/src/npc/interaction/fRival.tw b/src/npc/interaction/fRival.tw index d6578d87f943d01f6a5defbf42094726c7dad5fa..22090c6aac697ed83a4820a442e82fbd70d0b7ae 100644 --- a/src/npc/interaction/fRival.tw +++ b/src/npc/interaction/fRival.tw @@ -2,7 +2,7 @@ <<set _partnerID = getSlave($AS).rivalryTarget>> <<run App.Utils.setLocalPronouns(getSlave($AS))>> -<<setLocalPronouns getSlave(_partnerID) 2>> +<<run App.Utils.setLocalPronouns(getSlave(_partnerID), '2')>> You call <<= getSlave($AS).slaveName>> to your office and let $him know you'll be abusing <<= getSlave(_partnerID).slaveName>> together. diff --git a/src/personalAssistant/assistantAppearance.js b/src/personalAssistant/assistantAppearance.js index 1328101091730a25e9b0756208a4c6f1c93df580..d576991376b0f02d786d5684116151de8bd55466 100644 --- a/src/personalAssistant/assistantAppearance.js +++ b/src/personalAssistant/assistantAppearance.js @@ -764,7 +764,7 @@ globalThis.PersonalAssistantAppearance = function() { case "roman revivalist": r.push(`${HeA} has ${hisA} toga undone and is absentmindedly jerking off. When ${heA} notices you watching, ${HeA} waves ${hisA} throbbing erection at you, imploring you to finish ${himA} off.`); break; - case "neo imperialist": + case "Neo-Imperialist": r.push(`${HeA}'s stripped off his bodysuit and is absentmindedly jerking off. When ${heA} notices you watching, ${heA} waves ${hisA} throbbing erection at you, imploring you to finish ${himA} off.`); break; case "egyptian revivalist": @@ -994,7 +994,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: ``, subjugationist: ``, "roman revivalist": ``, - "neo imperialist": ``, + "Neo-Imperialist": ``, "aztec revivalist": ``, "egyptian revivalist": ``, "edo revivalist": ``, @@ -1025,7 +1025,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: `${HisA} distinct ${V.arcologies[0].FSSupremacistRace} features are only enhanced by ${hisA} monstrous appearance, and ${heA} has taken to jump-scaring slaves of lesser races when ${heA} isn't too busy with other tasks.`, subjugationist: `${HisA} distinct ${V.arcologies[0].FSSubjugationistRace} features are further exaggerated by ${hisA} monstrous appearance.`, "roman revivalist": `${HeA}'s wearing a conservative stola, which combined with ${hisA} monstrous appearance makes ${himA} look like a Greek demigoddess.`, - "neo imperialist": `${HeA}'s wearing a set of high-tech battle armor, which combined with ${hisA} monstrous appearance makes ${himA} look like some kind of demonic Pagan emperor.`, + "Neo-Imperialist": `${HeA}'s wearing a set of high-tech battle armor, which combined with ${hisA} monstrous appearance makes ${himA} look like some kind of demonic Pagan emperor.`, "aztec revivalist": `${HeA}'s wearing a traditional huipil, a long cape and a headdress, which amplify ${hisA} monstrous visage.`, "egyptian revivalist": `${HeA}'s wearing golden jewelry and a Pharaoh's beard, which combined with ${hisA} animal characteristics makes ${himA} look like an Egyptian deity.`, "edo revivalist": `${HeA}'s given ${hisA} appearance a Japanese style, making ${himA} look like a demon.`, @@ -1056,7 +1056,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: `${HeA} remains nude in order to properly display the glory of a superior ${V.arcologies[0].FSSupremacistRace} cock.`, subjugationist: `Like most ${V.arcologies[0].FSSubjugationistRace} subhumans ${heA} has no self-control, and is constantly playing with ${hisA} erect cock and whimpering in needy arousal.`, "roman revivalist": `${HeA}'s taken to reclining on a traditional Roman couch and drinking wine out of a shallow dish.`, - "neo imperialist": `${HeA}'s wearing an extremely tight-fitting bodysuit that emphasizes the bulge of ${hisA} heavy balls and the swell of ${hisA} asscheeks against the skintight nanoweave.`, + "Neo-Imperialist": `${HeA}'s wearing an extremely tight-fitting bodysuit that emphasizes the bulge of ${hisA} heavy balls and the swell of ${hisA} asscheeks against the skintight nanoweave.`, "aztec revivalist": `${HeA}'s wearing a headdress and a loincloth, which can't hide ${hisA} enviable package.`, "egyptian revivalist": `${HeA}'s wearing an Egyptian melting perfume cake on ${hisA} head.`, "edo revivalist": `${HeA}'s wearing a brief Japanese bathhouse robe.`, @@ -1087,7 +1087,7 @@ globalThis.PersonalAssistantAppearance = function() { supremacist: `wearing armor that blends elements from elite warriors of several historically ${V.arcologies[0].FSSupremacistRace} cultures, evoking the glory of ages past.`, subjugationist: `with wild unkempt hair, dressed in ragged animal skins and crude bone jewelry.`, "roman revivalist": `wearing the armor of a Roman auxilia, complete with lorica hamata and oval shield painted with your arcology's symbols.`, - "neo imperialist": `wearing a full set of advanced, powered battle armor, painted in your colors and with the crest of your family displayed prominently over a massive holographic tower shield.`, + "Neo-Imperialist": `wearing a full set of advanced, powered battle armor, painted in your colors and with the crest of your family displayed prominently over a massive holographic tower shield.`, "aztec revivalist": `wearing the battledress of the greatest warriors,${HeA} stands incredibly imposing, holding a spear and shield.`, "egyptian revivalist": `wearing a simple white linen dress, kohl eye shadow, and sandals, making ${himA} look like a barbarian immigrant to the land of the Nile.`, "edo revivalist": `wearing a Japanese warrior's robe with a pair of swords tucked into its sash.`, @@ -1118,7 +1118,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `wearing a perfectly-tailored suit. ${HeA} has two different tones ${heA} uses when speaking: a respectful one for talking with ${hisA} ${V.arcologies[0].FSSupremacistRace} equals, and a strict domineering one for interacting with the lesser races.`, "subjugationist": `wearing a nice, slightly-used suit. ${HeA} speaks with a stereotypical ${V.arcologies[0].FSSubjugationistRace} voice, but is otherwise the model of a perfect subservient secretary.`, "roman revivalist": `wearing a fine stola appropriate for a respectable Roman lady, with ${hisA} hair up in a complicated style.`, - "neo imperialist": `wearing an elegant black suit tailored perfectly for ${hisA} holographic body, one that you recognize as being the latest in old-world fashion.`, + "Neo-Imperialist": `wearing an elegant black suit tailored perfectly for ${hisA} holographic body, one that you recognize as being the latest in old-world fashion.`, "aztec revivalist": `wearing a modest huipil,${hisA} hair braided to two ponytails, ${HeA}'s the picture of quiet elegance.`, "egyptian revivalist": `wearing a simple white linen dress, kohl eye shadow, sandals, and a serene expression.`, "edo revivalist": `wearing a fine kimono, getae, tabi, and an expression of perfect serenity.`, @@ -1150,7 +1150,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `with swollen breasts and a big pregnant belly. ${HeA} wears a golden tiara on ${hisA} head, and ${hisA} otherwise nude form is a shining example of the ${V.arcologies[0].FSSupremacistRace} race's divine beauty.`, "subjugationist": `with swollen hips and breasts and a huge pregnant belly. ${HeA}'s nude aside from a crown of wilted flowers and the iron shackles on ${hisA} wrists and ankles.`, "roman revivalist": `with swollen hips and a big pregnant belly. ${HeA}'s clothed in a loose stola, with dozens of flowers woven into ${hisA} curly auburn hair.`, - "neo imperialist": `with a heaving, pregnant belly. The crest of your family is emblazoned over ${hisA} womb, as if the unborn child is already your property.`, + "Neo-Imperialist": `with a heaving, pregnant belly. The crest of your family is emblazoned over ${hisA} womb, as if the unborn child is already your property.`, "aztec revivalist": `glowing like a sun goddess,${hisA} full belly commands awe and respect in all who see ${himA}.`, "egyptian revivalist": `wielding an ankh-headed staff. ${HeA}'s wearing a gilded headdress and linen skirt, but leaves ${hisA} breasts and pregnant stomach bare to gleam like bronze.`, "edo revivalist": `${HisA} swollen hips and pregnant belly loosely wrapped in a red tomesode. ${HisA} waterfall of black hair is held by a comb shaped like big pointed fox ears.`, @@ -1183,7 +1183,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} is nude except for a golden tiara on ${hisA} head, a symbol of the ${V.arcologies[0].FSSupremacistRace} race's divine right to rule. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy ${V.arcologies[0].FSSupremacistRace} baby.`, "subjugationist": `${HeA} is shackled onto a large bed, the iron chains forcing ${hisA} legs apart and putting ${hisA} gaping pussy on display. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy ${V.arcologies[0].FSSubjugationistRace} slave baby.`, "roman revivalist": `${HeA}'s taken to reclining on a traditional Roman couch and drinking wine out of a shallow dish. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, - "neo imperialist": `${HeA}'s made ${himselfA} up like a glowing goddess, a golden halo surrounding ${hisA} head at all times. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, + "Neo-Imperialist": `${HeA}'s made ${himselfA} up like a glowing goddess, a golden halo surrounding ${hisA} head at all times. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, "aztec revivalist": `${HeA} glows like a sun goddess, ${hisA} life-giving belly commands awe and respect in all who see ${himA}. Every sacrifice before ${himA} coincides with another life entering the world.`, "egyptian revivalist": `${HeA}'s wearing an Egyptian melting perfume cake on ${hisA} head. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, "edo revivalist": `${HeA}'s wearing a brief Japanese bathhouse robe. Occasionally a stream of liquid pours from ${hisA} crotch along with a healthy baby.`, @@ -1222,7 +1222,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `wearing a plaid skirt and a white shirt. ${HeA} is constantly taking notes and studying the latest textbooks, satisfying the ${V.arcologies[0].FSSupremacistRace} race's thirst for knowledge.`, "subjugationist": `wearing a plaid skirt and a white shirt. ${HeA} speaks with a stereotypical ${V.arcologies[0].FSSubjugationistRace} accent, giving the impression of a foreign exchange student with much to learn.`, "roman revivalist": `wearing a ${girlA}'s stola, with ${hisA} hair pulled up into a proper upper-class Roman coiffure. ${HeA} usually carries a wax tablet and a stylus.`, - "neo imperialist": `wearing a prim and proper school uniform, with your family crest on ${hisA} breast pocket. ${HisA} short plaid skirt occasionally flips up to flash a hint of ${hisA} holographic panties.`, + "Neo-Imperialist": `wearing a prim and proper school uniform, with your family crest on ${hisA} breast pocket. ${HisA} short plaid skirt occasionally flips up to flash a hint of ${hisA} holographic panties.`, "aztec revivalist": `wearing only an overshirt,${hisA} cute little legs are complimented by ${hisA} twin tails.`, "egyptian revivalist": `wearing a simple white linen skirt, kohl eye shadow, sandals, and no top at all, baring ${hisA} perky young breasts.`, "edo revivalist": `wearing a simple robe appropriate for a proper, traditional Japanese lady.`, @@ -1252,7 +1252,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${girlA} wearing shorts and a pink t-shirt with the words '${properMaster()}'s little ${V.arcologies[0].FSSupremacistRace} princess' on the front.`, "subjugationist": `slave ${girlA} wearing nothing but a leather collar and trying ${hisA} best to do master proud.`, "roman revivalist": `${girlA} wearing a ${girlA}'s stola.`, - "neo imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt.`, + "Neo-Imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt.`, "aztec revivalist": `${girlA} wearing only an overshirt; ${hisA} cute little legs are complimented by ${hisA} twin tails.`, "egyptian revivalist": `${girlA} wearing a simple white linen dress, kohl eye shadow and sandals.`, "edo revivalist": `${girlA} wearing a kimono far too large for ${himselfA}.`, @@ -1283,7 +1283,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `belly wearing a cute yellow dress. ${HeA} cradles ${hisA} swollen belly protectively, glowing with pride at carrying a ${V.arcologies[0].FSSupremacistRace} child.`, "subjugationist": `belly, wearing nothing but a pregnancy biometrics collar. The collar's display reads 'Carrying 2 more ${V.arcologies[0].FSSubjugationistRace} subhumans!', something the ${girlA} occasionally reads aloud to ${himselfA}.`, "roman revivalist": `belly wearing a ${girlA}'s stola.`, - "neo imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`, + "Neo-Imperialist": `${girlA} wearing a tiny elementary schooler's uniform, complete with miniature plaid skirt. ${HisA} belly swells underneath the cotton shirt.`, "aztec revivalist": `belly wearing only an overshirt which struggles to cover ${hisA} rounded middle; ${hisA} cute little legs are complimented by ${hisA} twin tails.`, "egyptian revivalist": `belly wearing a bulging white linen dress, kohl eye shadow and sandals.`, "edo revivalist": `belly wearing a kimono far too large for ${himselfA} but does nothing to distract from ${hisA} swollen midriff.`, @@ -1316,7 +1316,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `fairy with distinctly ${V.arcologies[0].FSSupremacistRace} features. ${HeA} has wrapped a golden ribbon around ${hisA} torso to fashion ${himselfA} a dress.`, "subjugationist": `fairy with exaggerated ${V.arcologies[0].FSSubjugationistRace} features. ${HeA} is completely unclothed, with ${hisA} hair in a mess and covered in dirt.`, "roman revivalist": `fairy wearing a small handkerchief wrapped around ${himA} like a toga, with one tiny breast sticking out. A wreath made of twisted clovers sits on ${hisA} head.`, - "neo imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit.`, + "Neo-Imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit.`, "aztec revivalist": `fairy, yellow paint creating tribal patterns across ${hisA} naked form.`, "egyptian revivalist": `fairy wearing a simple white linen dress and has eye shadow poorly applied around ${hisA} eyes.`, "edo revivalist": `fairy wearing a fine kimono and holding a little fan. ${HeA} looks like a little Hina doll.`, @@ -1347,7 +1347,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `and distinctly ${V.arcologies[0].FSSupremacistRace} features. ${HeA} has wrapped a golden ribbon around ${hisA} chest to create an improvised bra, and another under ${hisA} swollen belly to fashion a thong.`, "subjugationist": `and exaggerated ${V.arcologies[0].FSSubjugationistRace} features. ${HeA} is completely unclothed, with ${hisA} hair in a mess and covered in dirt.`, "roman revivalist": `wearing a small handkerchief wrapped around ${himA} like a toga, with one tiny milky breast sticking out. A wreath made of twisted clovers sits on ${hisA} head.`, - "neo imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit. ${HisA} belly swells underneath the skintight material.`, + "Neo-Imperialist": `fairy, ${hisA} tiny body encased in a tight-fitting, high-tech bodysuit. ${HisA} belly swells underneath the skintight material.`, "aztec revivalist": `yellow paint creating tribal patterns across ${hisA} naked form and curving around ${hisA} swollen belly.`, "egyptian revivalist": `wearing a simple white linen dress and has eye shadow poorly applied around ${hisA} eyes.`, "edo revivalist": `wearing a fine kimono and holding a little fan. ${HeA} looks like a little Hina doll.`, @@ -1376,7 +1376,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `slime. ${HeA} keeps trying to shape ${hisA} goo into a beautiful ${V.arcologies[0].FSSupremacistRace} ${girlA}, but ${heA} hasn't quite perfected the finer details yet.`, "subjugationist": `slime. ${HeA} keeps trying to shape ${hisA} goo into a pretty face, but keeps ending up with over-exaggerated ${V.arcologies[0].FSSubjugationistRace} features instead.`, "roman revivalist": `slime with a ${girlA}'s stola sinking into ${hisA} head.`, - "neo imperialist": `slime wearing a high-class suit that fits loosely around ${hisA} gelatinous features, occasionally slipping inside the slime.`, + "Neo-Imperialist": `slime wearing a high-class suit that fits loosely around ${hisA} gelatinous features, occasionally slipping inside the slime.`, "egyptian revivalist": `slime and quite perturbed about the amount of sand caught in ${himA}.`, "edo revivalist": `slime with a silken kimono floating inside ${himA}.`, "arabian revivalist": `slime with a headscarf and a pair of sunglasses floating inside ${himA}.`, @@ -1408,7 +1408,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} cycles between different outfits that reflect the various holy garments of religions popular in ${V.arcologies[0].FSSupremacistRace} countries.`, "subjugationist": `${HeA} is wearing a simple white linen dress, and ${hisA} right ankle is shackled to an iron ball and chain that prevents ${himA} from flying very high.`, "roman revivalist": `${HeA} is wearing a fine stola appropriate for a respectable Roman lady, with ${hisA} hair up in a complicated style.`, - "neo imperialist": `${HeA} is wearing a skintight bodysuit that gives ${himA} the appearance of some kind of techno-angel, cybernetics and angelic beauty meshing seamlessly together.`, + "Neo-Imperialist": `${HeA} is wearing a skintight bodysuit that gives ${himA} the appearance of some kind of techno-angel, cybernetics and angelic beauty meshing seamlessly together.`, "aztec revivalist": `${HeA} is wearing a modest huipil with ${hisA} hair braided to two ponytails; ${HeA}'s the picture of quiet elegance.`, "egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eye shadow, sandals, and a serene expression.`, "edo revivalist": `${HeA} is wearing a fine kimono with slits for ${hisA} wings, getae, tabi, and an expression of perfect serenity.`, @@ -1448,7 +1448,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} is wearing a cute little dressed stitched with designs from ${V.arcologies[0].FSSupremacistRace} culture. Occasionally you get a glance up it; a white pair of panties with similar designs say hello.`, "subjugationist": `${HeA} is shackled to an iron ball and chain that's almost as big as ${heA} is, and ${heA} has to slowly and comically drag it behind ${himA} to get anywhere. Occasionally ${heA} tumbles over in ${hisA} struggles, flipping ${hisA} white linen dress up and treating you to a good look at ${hisA} panties.`, "roman revivalist": `${HeA} is wearing a cute little tunic. Occasionally you get a glance up it; a cute little pussy says hello.`, - "neo imperialist": `${HeA} is wearing a tiny executive skirt that mixes cute and professional. ${HeA}'s obviously not wearing any panties underneath.`, + "Neo-Imperialist": `${HeA} is wearing a tiny executive skirt that mixes cute and professional. ${HeA}'s obviously not wearing any panties underneath.`, "aztec revivalist": `${HeA} is wearing a huipil with ${hisA} hair braided to two ponytails. You can clearly see through the sides that ${heA} has chosen to forgo underwear.`, "egyptian revivalist": `${HeA} is wearing a simple white linen dress, kohl eye shadow, and a serene expression. ${HisA} dress hangs low enough to block your view, unfortunately.`, "edo revivalist": `${HeA} is wearing a cute little kimono with slits for ${hisA} wings. Occasionally you get a glance up it; a lovely pair of panties say hello.`, @@ -1488,7 +1488,7 @@ globalThis.PersonalAssistantAppearance = function() { }, "subjugationist": `${HisA} cartoonishly exaggerated ${V.arcologies[0].FSSubjugationistRace} body is just begging for a whipping, even when ${heA} isn't doing something mischievous and sneaky, which is rare.`, "roman revivalist": `${HeA}'d fit in perfectly tormenting the condemned in Tartarus.`, - "neo imperialist": `${HeA}'s bound himself up with high-tech holographic chains, reminiscent of a slave locked in your cellblocks with ${hisA} devilish features.`, + "Neo-Imperialist": `${HeA}'s bound himself up with high-tech holographic chains, reminiscent of a slave locked in your cellblocks with ${hisA} devilish features.`, "aztec revivalist": `${HeA}'s taken to carrying a pair of ceremonial daggers perfect for bloodletting and even an impromptu sacrifice. Two things ${heA} really enjoys performing.`, "egyptian revivalist": `${HeA} has recently adjusted ${hisA} appearance to resemble an Egyptian slave; that combined with a manufactured rebellious streak are sure to earn ${himA} a whipping.`, "edo revivalist": `${HeA} has tightly bound ${himselfA} in shibari ropes, although they don't achieve much given ${heA} can still fly freely.`, @@ -1529,7 +1529,7 @@ globalThis.PersonalAssistantAppearance = function() { }, "subjugationist": `${HeA} still hasn't managed to undo the spell; ${HeA} looks like a racist caricature of a ${V.arcologies[0].FSSubjugationistRace} ${girlA}, and has an appropriately demeaning accent to match. What's worse, the spell also seems to have stripped most of ${hisA} literacy in ${V.language}, making reading ${hisA} tomes an arduous task for ${himA}.`, "roman revivalist": `While ${heA} acts like a typical Roman ${womanA}, ${HeA} is pretty obviously Greek. ${HeA} can't even name the Pantheon correctly.`, - "neo imperialist": `${HeA} looks like someone you would find selling "magical tokens" on the side of your neon-bathed streets, cybernetic trinkets adorning ${hisA} whole body.`, + "Neo-Imperialist": `${HeA} looks like someone you would find selling "magical tokens" on the side of your neon-bathed streets, cybernetic trinkets adorning ${hisA} whole body.`, "aztec revivalist": `${HeA} is still very obviously not a native and has become rather caught up in the fear that ${heA}'ll soon be sacrificed.`, "egyptian revivalist": `${HeA}'s managed to untangle ${himselfA} from the wrappings, though ${heA} has chosen to leave several still wrapped around ${hisA} body.`, "edo revivalist": `${HeA}'s managed to correct the spell, somewhat, though ${heA} now resembles something that belongs in a hentai.`, @@ -1577,7 +1577,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `wearing nothing at all. ${HeA} looks vaguely ${V.arcologies[0].FSSupremacistRace}, but wrong. You swear you see patches of fish-like scales on ${hisA} skin, but they keep disappearing whenever you try to focus on them.`, "subjugationist": `wearing nothing at all. ${HeA} looks vaguely ${V.arcologies[0].FSSubjugationistRace}, but wrong. You swear you see patches of fish-like scales on ${hisA} skin, but they keep disappearing whenever you try to focus on them.`, "roman revivalist": `wearing a poorly folded toga. You swear you see movement under ${hisA} skin.`, - "neo imperialist": `wearing a tight-fitting bodysuit that you swear moves in unsettling ways. Is the bodysuit moving, or the skin underneath?`, + "Neo-Imperialist": `wearing a tight-fitting bodysuit that you swear moves in unsettling ways. Is the bodysuit moving, or the skin underneath?`, "aztec revivalist": `wearing a torn huipil. ${HeA} looks vaguely Aztec, but wrong. You swear you see movement under ${hisA} skin.`, "egyptian revivalist": `wearing nothing at all. ${HeA} looks vaguely Egyptian, but wrong. You swear you see movement under ${hisA} skin.`, "edo revivalist": `wearing a loose kimono. ${HeA} looks vaguely Japanese, but wrong. You swear you see movement under ${hisA} skin.`, @@ -1626,7 +1626,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `${HeA} is an ideal ${V.arcologies[0].FSSupremacistRace} man, and ${hisA} massive dick is always hard and ready to continue propagating the master race.`, "subjugationist": `${HeA} is a deceptively handsome ${V.arcologies[0].FSSubjugationistRace} man, and gives off an air of lust and danger that serves as a warning to not let the inferior race's libido run unchecked.`, "roman revivalist": `${HeA} is an ideal Roman man, complete with something big and heavy hanging under ${hisA} toga.`, - "neo imperialist": `${HeA} looks like an ideal Imperial Knight, wearing tight leather pants and a nanoweave shirt that fail to contain both his rippling pectorals and the outline of a massive cock.`, + "Neo-Imperialist": `${HeA} looks like an ideal Imperial Knight, wearing tight leather pants and a nanoweave shirt that fail to contain both his rippling pectorals and the outline of a massive cock.`, "aztec revivalist": `${HeA} is an ideal Aztec man wearing a headdress and a loincloth, which can't hide ${hisA} enviable package.`, "egyptian revivalist": `${HeA} is an ideal Egyptian man, complete with something big and heavy dangling behind ${hisA} loincloth.`, "edo revivalist": `${HeA} is an ideal Japanese man, complete with something big and heavy between ${hisA} legs.`, @@ -1696,7 +1696,7 @@ globalThis.PersonalAssistantAppearance = function() { "supremacist": `In fact,${HeA} is the most gorgeous ${V.arcologies[0].FSSupremacistRace} ${womanA} you've ever seen.`, "subjugationist": `In fact,${HeA} is the most gorgeous ${V.arcologies[0].FSSubjugationistRace} ${womanA} you've ever seen.`, "roman revivalist": `In fact,${HeA} is the most gorgeous Roman ${womanA} you've ever seen.`, - "neo imperialist": `In fact,${HeA} is the most gorgeous Imperial ${womanA} you've ever seen.`, + "Neo-Imperialist": `In fact,${HeA} is the most gorgeous Imperial ${womanA} you've ever seen.`, "aztec revivalist": `In fact,${HeA} is the most gorgeous Aztec ${womanA} you've ever seen.`, "egyptian revivalist": `In fact,${HeA} is the most gorgeous Egyptian ${womanA} you've ever seen.`, "edo revivalist": `In fact,${HeA} is the most gorgeous Japanese ${womanA} you've ever seen.`, diff --git a/src/player/js/PlayerState.js b/src/player/js/PlayerState.js index df6db7a038871dc1e7453f799b327d8510925ce4..f5371f36de922420fce09381cb6df29360d7b44d 100644 --- a/src/player/js/PlayerState.js +++ b/src/player/js/PlayerState.js @@ -312,7 +312,8 @@ App.Entity.PlayerState = class PlayerState { * * "luck" */ this.rumor = "wealth"; - /** Player's ID */ + /** Player's ID + * @type {-1} */ this.ID = -1; /** your ability to function normally in day to day affairs * diff --git a/src/player/js/playerJS.js b/src/player/js/playerJS.js index de126699e775af9428dbbfc4eef0595ea045c78b..278777f61631947c84eed047ddd6a07fe3ca2b6d 100644 --- a/src/player/js/playerJS.js +++ b/src/player/js/playerJS.js @@ -507,58 +507,17 @@ globalThis.PCTitle = function() { const schoolsPresent = []; const schoolsPerfected = []; - let schoolTitle = ""; - if (V.TSS.schoolProsperity >= 10) { - schoolsPerfected.push("The Slave School"); - } else if (V.TSS.schoolPresent === 1) { - schoolsPresent.push("The Slave School"); - } - if (V.TUO.schoolProsperity >= 10) { - schoolsPerfected.push("The Utopian Orphanage"); - } else if (V.TUO.schoolPresent === 1) { - schoolsPresent.push("The Utopian Orphanage"); - } - if (V.GRI.schoolProsperity >= 10) { - schoolsPerfected.push("The Growth Research Institute"); - } else if (V.GRI.schoolPresent === 1) { - schoolsPresent.push("The Growth Research Institute"); - } - if (V.SCP.schoolProsperity >= 10) { - schoolsPerfected.push("St. Claver Preparatory"); - } else if (V.SCP.schoolPresent === 1) { - schoolsPresent.push("St. Claver Preparatory"); - } - if (V.LDE.schoolProsperity >= 10) { - schoolsPerfected.push("L'École des Enculées"); - } else if (V.LDE.schoolPresent === 1) { - schoolsPresent.push("L'École des Enculées"); - } - if (V.TGA.schoolProsperity >= 10) { - schoolsPerfected.push("The Gymnasium-Academy"); - } else if (V.TGA.schoolPresent === 1) { - schoolsPresent.push("The Gymnasium-Academy"); - } - if (V.HA.schoolProsperity >= 10) { - schoolsPerfected.push("The Hippolyta Academy"); - } else if (V.HA.schoolPresent === 1) { - schoolsPresent.push("The Hippolyta Academy"); - } - if (V.TCR.schoolProsperity >= 10) { - schoolsPerfected.push("The Cattle Ranch"); - } else if (V.TCR.schoolPresent === 1) { - schoolsPresent.push("The Cattle Ranch"); - } - if (V.NUL.schoolProsperity >= 10) { - schoolsPerfected.push("Nueva Universidad de Libertad"); - } else if (V.NUL.schoolPresent === 1) { - schoolsPresent.push("Nueva Universidad de Libertad"); + let schoolTitle; + for (const [school, obj] of App.Data.misc.schools) { + if (V[school].schoolProsperity >= 10) { + schoolsPerfected.push(obj.title); + } else if (V[school].schoolPresent === 1) { + schoolsPresent.push(obj.title); + } } + if (schoolsPerfected.length > 0) { - if (V.PC.title === 1) { - schoolTitle = "Benefactor of "; - } else { - schoolTitle = "Benefactrix of "; - } + schoolTitle = `${V.PC.title === 1 ? 'Benefactor' : 'Benefactrix'} of `; if (schoolsPerfected.length === 1) { schoolTitle += schoolsPerfected[0]; } else if (schoolsPerfected.length === 2) { @@ -569,7 +528,6 @@ globalThis.PCTitle = function() { } titles.push(schoolTitle); } - if (schoolsPresent.length > 0) { schoolTitle = "Supporter of "; if (schoolsPresent.length === 1) { diff --git a/src/pregmod/JobFulfillmentCenter/generateJobFulfillmentSlave.js b/src/pregmod/JobFulfillmentCenter/generateJobFulfillmentSlave.js deleted file mode 100644 index 4f175049b020039a4911ddd07852ee61bcb8c0e7..0000000000000000000000000000000000000000 --- a/src/pregmod/JobFulfillmentCenter/generateJobFulfillmentSlave.js +++ /dev/null @@ -1,155 +0,0 @@ -globalThis.generateJobFulfillmentSlave = function() { - const applyMaleGenitalia = function({dick, balls, prostate}) { - if (V.seeDicks > 0) { - slave.dick = dick; - slave.scrotum = slave.balls = balls; - slave.prostate = prostate; - } - }; - let slave = GenerateNewSlave("XX", {minAge: 20, maxAge: 36, ageOverridesPedoMode: 1, disableDisability: 1}); - const {his} = getPronouns(slave); - slave.trust = 80; slave.devotion = 80; - slave.weight = jsRandom(-30, 20); - slave.waist = jsRandom(-30, 10); - slave.face = jsRandom(40, 60); - if (slave.faceShape === "masculine") { - slave.faceShape = "sensual"; - } - if (slave.boobShape === "saggy" || slave.boobShape === "downward-facing") { - slave.boobShape = "perky"; - } - eyeSurgery(slave, "both", "normal"); - slave.hears = 0; - slave.voice = 2; - slave.intelligenceImplant = 30; slave.intelligence = jsRandom(20, 100); - setHealth(slave, jsRandom(80, 95), 0, 0, 0, 0); - slave.origin = `The Job Fulfillment Center offered ${his} contract to fill your request for a ${V.JFC.role}.`; - switch (V.JFC.role) { - // Security - case "Bodyguard": - slave.devotion = 90; - slave.muscles = jsRandom(30, 70); - slave.height = Math.round(Height.random(slave, {skew: 3, spread: .2, limitMult: [1, 4]})); - slave.weight = jsRandom(-10, 10); - slave.teeth = either("normal", "pointy"); - slave.skill.combat = 1; - if (jsRandom(0, 2) === 0) { - configureLimbs(slave, "all", 5); - } - slave.career = either("a bodyguard", "a kunoichi", "a law enforcement officer", "a military brat", "a revolutionary", "a soldier", "a transporter", "an assassin", "in a militia"); - break; - case "Wardeness": - slave.energy = jsRandom(80, 100); - slave.sexualFlaw = either("malicious", "none", "none", "none", "none"); - slave.fetish = "sadist"; slave.fetishStrength = 100; - slave.muscles = jsRandom(50, 80); - slave.skill.combat = 1; - applyMaleGenitalia({dick: jsRandom(3, 6), balls: jsRandom(3, 6), prostate: either(1, 1, 1, 2, 2, 3)}); - slave.career = either("a bouncer", "a bounty hunter", "a gang member", "a mercenary", "a prison guard", "a private detective", "a security guard", "a street thug", "an enforcer"); - break; - // Management - case "Headgirl": - slave = GenerateNewSlave("XX", {minAge: V.AgePenalty === 1 ? 36 : 20, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.devotion = 90; slave.trust = 100, - slave.fetish = "dom"; slave.fetishStrength = 100; - slave.energy = jsRandom(70, 90); - slave.intelligence = jsRandom(60, 100); - Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100}); - slave.vagina = jsRandom(3, 4); - applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 6), prostate: either(1, 1, 2)}); - slave.career = either("a lawyer", "a military officer", "a politician"); - break; - case "Teacher": - slave = GenerateNewSlave("XX", {minAge: 36, maxAge: V.retirementAge-3, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.fetish = "dom"; slave.fetishStrength = 100; - slave.energy = jsRandom(70, 90); - slave.intelligence = 100; - Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100}); - slave.face = jsRandom(41, 90); - slave.vagina = jsRandom(3, 4); - applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 6), prostate: either(1, 1, 1, 2, 2, 3)}); - slave.career = either("a librarian", "a principal", "a private instructor", "a professor", "a scholar", "a scientist", "a teacher", "a teaching assistant"); - break; - case "Nurse": - slave.fetish = "dom"; slave.fetishStrength = 100; - slave.muscles = jsRandom(6, 50); - slave.face = jsRandom(41, 90); - slave.sexualQuirk = "caring"; - slave.intelligence = jsRandom(40, 90); - slave.career = either("a doctor", "a medic", "a medical student", "a nurse", "a paramedic"); - break; - case "Motherly Attendant": - slave = GenerateNewSlave("XX", {minAge: 36, maxAge: V.retirementAge-3, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.devotion = 90; slave.trust = 90; - slave.fetish = "submissive"; slave.fetishStrength = 100; - slave.face = jsRandom(60, 90); - slave.counter.birthsTotal = jsRandom(1, 3); - slave.pregKnown = 1; slave.preg = jsRandom(20, 35); slave.pregWeek = slave.preg; slave.pregType = 1; - SetBellySize(slave); - slave.vagina = jsRandom(3, 4); - slave.career = either("a counselor", "a dispatch officer", "a lifeguard", "a masseuse", "a psychologist", "a therapist"); - break; - case "Attendant": - slave = GenerateNewSlave("XX", {minAge: 26, maxAge: V.retirementAge-3, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.devotion = 90; slave.trust = 90; - slave.fetish = "submissive"; slave.fetishStrength = 100; - slave.preg = 0; - slave.face = jsRandom(60, 90); - eyeSurgery(slave, "both", either(0, 2, 2) === 2 ? "normal" : "blind"); - slave.career = either("a counselor", "a masseuse", "a therapist"); - break; - case "Matron": - slave = GenerateNewSlave("XX", {minAge: 24, maxAge: V.retirementAge-3, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.devotion = 90; slave.trust = 90; - slave.sexualQuirk = "caring"; - slave.counter.birthsTotal = jsRandom(2, 4); slave.vagina = 3; - slave.face = jsRandom(60, 90); - slave.career = either( "a nanny", "a practitioner"); - break; - case "Stewardess": - slave = GenerateNewSlave("XX", {minAge: V.AgePenalty === 1 ? 36 : 20, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.energy = jsRandom(70, 90); - slave.fetish = "dom"; slave.fetishStrength = 100; - slave.career = either("a barista", "a bartender", "a caregiver", "a charity worker", "a professional bartender", "a secretary", "a wedding planner", "an air hostess", "an estate agent", "an investor", "an office worker"); - break; - case "Milkmaid": - slave.muscles = jsRandom(31, 60); - slave.skill.oral = jsRandom(31, 60); - slave.sexualQuirk = "caring"; slave.behavioralQuirk = "funny"; - slave.intelligence = jsRandom(20, 70); - applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(4, 9), prostate: either(1, 1, 1, 2)}); - slave.career = either("a cowgirl", "a dairy worker", "a milkmaid", "a farmer's daughter", "a shepherd", "a veterinarian"); - break; - case "Farmer": - slave = GenerateNewSlave("XX", {minAge: V.AgePenalty === 1 ? 36 : 20, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.muscles = jsRandom(41, 70); - slave.sexualQuirk = "caring"; - slave.weight = jsRandom(0, 30); - slave.intelligence = jsRandom(20, 70); - slave.height = Math.round(Height.random(slave, {skew: 3, spread: .2, limitMult: [1, 4]})); - applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(4, 9), prostate: either(1, 1, 1, 2)}); - slave.career = either("a farmer", "a farmer's daughter", "a rancher", "a farmhand", "a zookeeper"); - break; - // Entertain - case "DJ": - slave.skill.entertainment = 100; - slave.muscles = jsRandom(6, 30); - slave.face = jsRandom(80, 100); - slave.career = either("a classical dancer", "a classical musician", "a dancer", "a house DJ", "a musician", "an aspiring pop star"); - break; - case "Madam": - slave = GenerateNewSlave("XX", {minAge: V.AgePenalty === 1 ? 36 : 20, maxAge: V.retirementAge-5, ageOverridesPedoMode: 1, disableDisability: 1}); - slave.skill.whoring = 100; - applyMaleGenitalia({dick: jsRandom(3, 5), balls: jsRandom(3, 5), prostate: either(1, 1, 1, 2)}); - slave.career = either("a business owner", "a manager", "a pimp", "a procuress", "an innkeeper"); - break; - case "Concubine": - slave.devotion = jsRandom(90, 95); slave.trust = jsRandom(90, 100); - slave.prestige = 3; - slave.energy = jsRandom(80, 100); - Object.assign(slave.skill, {entertainment: 100, whoring: 100, anal: 100, oral: 100, vaginal: 100}); - slave.face = 100; - break; - } - return slave; -}; diff --git a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw b/src/pregmod/JobFulfillmentCenterDelivery.tw similarity index 94% rename from src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw rename to src/pregmod/JobFulfillmentCenterDelivery.tw index eacddecee66f5a63eff403507634ad033e7e271d..a9f6bb403ae326f1096610d7581635445f8b0a56 100644 --- a/src/pregmod/JobFulfillmentCenter/JobFulfillmentCenterDelivery.tw +++ b/src/pregmod/JobFulfillmentCenterDelivery.tw @@ -1,7 +1,7 @@ :: JobFulfillmentCenterDelivery [nobr] <<set $JFC.order = 0, $nextButton = "Continue", $nextLink = "Scheduled Event", $encyclopedia = "Enslaving People">> -<<set _slave = generateJobFulfillmentSlave()>> +<<set _slave = generateLeadershipSlave($JFC.role, 'Job Fulfillment Center')>> <<set _slaveCost = slaveCost(_slave) * 6>> <<setLocalPronouns _slave>> <<run App.Utils.setLocalPronouns(_slave)>> diff --git a/src/pregmod/incubatorReport.tw b/src/pregmod/incubatorReport.tw index f112712572ade7416c8f2478173e26cd7583dcfb..d4c6d6d4bcd0f1537afd2e022fcfa07a36fdb145 100644 --- a/src/pregmod/incubatorReport.tw +++ b/src/pregmod/incubatorReport.tw @@ -750,7 +750,7 @@ <<set $tanks[_inc].energy = 0, $tanks[_inc].need = 0>> <</if>> - <<if ($incubatorPregAdaptationSetting == 1 && $tanks[_inc].genes == "XX") || ($incubatorPregAdaptationSetting == 2 && $tanks[_inc].genes == "XY") || $incubatorPregAdaptationSetting == 3>> + <<if (($incubatorPregAdaptationSetting == 1 && $tanks[_inc].genes == "XX") || ($incubatorPregAdaptationSetting == 2 && $tanks[_inc].genes == "XY") || $incubatorPregAdaptationSetting == 3) && $tanks[_inc].growTime > 0>> <br> The incubator is working on adapting $his abdomen and reproductive organs for future pregnancies. @@ -815,8 +815,8 @@ <<set $tanks[_inc].boobs = Math.clamp($tanks[_inc].boobs, 25, 30000)>> <<set $tanks[_inc].height = Math.clamp($tanks[_inc].height, 0, 274)>> <<set $tanks[_inc].hormoneBalance = Math.clamp($tanks[_inc].hormoneBalance, -500, 500)>> - <<set $tanks[_inc].foreskin = $tanks[_inc].dick>> //simple, clean way of making sure foreskins and scrotums grow appropriately - <<set $tanks[_inc].scrotum = $tanks[_inc].balls>> //if we want dicks/balls to outgrow foreskins/scrotums, this will have to be removed + <<set $tanks[_inc].foreskin = $tanks[_inc].dick>> /*simple, clean way of making sure foreskins and scrotums grow appropriately*/ + <<set $tanks[_inc].scrotum = $tanks[_inc].balls>> /*if we want dicks/balls to outgrow foreskins/scrotums, this will have to be removed*/ <br><br> <</for>> diff --git a/src/pregmod/personalNotes.tw b/src/pregmod/personalNotes.tw deleted file mode 100644 index bc2ab16cd9d4734f2f9d8253bc4c7ab0e36d6e7b..0000000000000000000000000000000000000000 --- a/src/pregmod/personalNotes.tw +++ /dev/null @@ -1,406 +0,0 @@ -:: Personal Notes [nobr] - -<<if $useTabs == 0>>__Personal Notes__<</if>> -<br> -<<if ($playerAging != 0)>>Your birthday is <<if $PC.birthWeek == 51>>next week<<if $playerAging == 2>>; you'll be turning <<print $PC.actualAge+1>><</if>><<else>>in <<print 52-$PC.birthWeek>> weeks<</if>>.<</if>> -<<= App.Desc.Player.boobs()>> -<<= App.Desc.Player.belly()>> -<<= App.Desc.Player.crotch()>> -<<= App.Desc.Player.butt()>> -<<if $PC.lactation > 0>> - <<if $PC.rules.lactation != "none" && $PC.rules.lactation != "induce">> - <<set $PC.lactationDuration = 2>> - <<if $PC.rules.lactation == "sell">> - /* watch this be a disaster */ - <<set _milk = milkAmount($PC)>> - Whenever you have a free moment and a chest swollen with milk, you spend your time attached to the nearest milker. As a result, you produce _milk liters of sellable milk over the week. - <<if ($arcologies[0].FSPastoralistLaw == 1)>> - <<set _milkSale = _milk*(28+Math.trunc($arcologies[0].FSPastoralist/30))>> - Since breast milk is $arcologies[0].name's only legal dairy product, and yours is in a class all of its own, society can't get enough of it and you make @@.yellowgreen;<<print cashFormat(_milkSale)>>.@@ - <<elseif ($arcologies[0].FSPastoralist != "unset")>> - <<set _milkSale = _milk*(12+Math.trunc($arcologies[0].FSPastoralist/30))>> - Since milk is fast becoming a major part of the $arcologies[0].name's dietary culture, and yours is in a class all of its own, you make @@.yellowgreen;<<print cashFormat(_milkSale)>>.@@ - <<else>> - <<set _milkSale = _milk*8>> - Your milk is sold for @@.yellowgreen;<<print cashFormat(_milkSale)>>.@@ - <</if>> - <<run cashX(_milkSale, "personalBusiness")>> - <<else>> - You regularly see to your breasts to make sure your milk production doesn't dry up; be it by hand, milker, or mouth, you keep yourself comfortably drained. - <</if>> - <<else>> - <<if $PC.belly < 1500>> - <<set $PC.lactationDuration-->> - <<if $PC.lactationDuration == 0>> - With no reason to continue production, your @@.yellow;lactation has stopped.@@ - <<set $PC.lactation = 0>> - <</if>> - <</if>> - <</if>> -<</if>> -<<if $PC.preg > 0>> - <<set _oldCount = $PC.pregType>> - <<if $PC.preg <= 2>> - <<run fetalSplit($PC, 1000)>> - <<run WombCleanYYFetuses($PC)>> - <</if>> - <<if $pregnancyMonitoringUpgrade == 1>> - <<if _oldCount < $PC.pregType>> - While making use of the advanced pregnancy monitoring equipment, you are surprised to find @@.lime;your womb is a little more occupied than last checkup.@@ - <<elseif _oldCount > $PC.pregType>> - While making use of the advanced pregnancy monitoring equipment, you are surprised to find @@.orange;your womb houses less life than last checkup.@@ - <<if $PC.pregType == 0>> - For all intents and purposes, @@.yellow;you are no longer pregnant.@@ - <<run TerminatePregnancy($PC)>> - <</if>> - <</if>> - <<elseif _oldCount > $PC.pregType && $PC.pregType == 0>> - <<run TerminatePregnancy($PC)>> - <</if>> - <<if $PC.preg == 15>> - <<if $PC.pregKnown == 0>> - Your areolae have gotten dark. Some cursory tests reveal @@.lime;you are about fifteen weeks pregnant.@@ How did that manage to slip past you? - <<set $PC.pregKnown = 1>> - <<else>> - Your areolae have gotten dark. Just another step along your pregnancy. - <</if>> - <<elseif $PC.belly >= 1500>> - <<if ($PC.preg > 20) && ($PC.lactation == 0)>> - <<if $PC.preg > random(18,30)>> - A moist sensation on your breasts draws your attention; @@.lime;your milk has come in.@@ - <<set $PC.lactation = 1>> - <</if>> - <</if>> - <<if $PC.lactation == 1>> - <<set $PC.lactationDuration = 2>> - <</if>> - <</if>> - <<if ($PC.preg >= $PC.pregData.normalBirth/4)>> - <<set _gigantomastiaMod = $PC.geneticQuirks.gigantomastia == 2 ? ($PC.geneticQuirks.macromastia == 2 ? 3 : 2) : 1>> - /* trim this down */ - <<if $PC.geneMods.NCS == 1>> - <<set _boobTarget = 100>> - <<elseif $PC.geneticQuirks.androgyny == 2>> - <<set _boobTarget = 400>> - <<elseif $PC.physicalAge >= 18>> - <<if $PC.pregType >= 8>> - <<set _boobTarget = 1500>> /* 2000 */ - <<elseif $PC.pregType >= 5>> - <<set _boobTarget = 1400>> - <<elseif $PC.pregType >= 2>> - <<set _boobTarget = 1000>> - <<else>> - <<set _boobTarget = 800>> - <</if>> - <<elseif $PC.physicalAge >= 13>> - <<if $PC.pregType >= 8>> - <<set _boobTarget = 1500>> /* 1800 */ - <<elseif $PC.pregType >= 5>> - <<set _boobTarget = 1400>> - <<elseif $PC.pregType >= 2>> - <<set _boobTarget = 1000>> - <<else>> - <<set _boobTarget = 800>> - <</if>> - <<elseif $PC.physicalAge >= 8>> - <<if $PC.pregType >= 8>> - <<set _boobTarget = 1400>> - <<elseif $PC.pregType >= 5>> - <<set _boobTarget = 1000>> - <<elseif $PC.pregType >= 2>> - <<set _boobTarget = 800>> - <<else>> - <<set _boobTarget = 600>> - <</if>> - <<else>> - <<if $PC.pregType >= 8>> - <<set _boobTarget = 1000>> - <<elseif $PC.pregType >= 5>> - <<set _boobTarget = 8000>> - <<elseif $PC.pregType >= 2>> - <<set _boobTarget = 600>> - <<else>> - <<set _boobTarget = 400>> - <</if>> - <</if>> - /*<<set _boobTarget *= _gigantomastiaMod>>*/ - <<if ($PC.geneMods.NCS == 0)>> - /* - <<if $PC.pregType >= 30>> - <<if ($PC.weight <= 65)>> - $He has @@.lime;gained weight@@ in order to better sustain $himself and $his children. - <<set $PC.weight += 1>> - <</if>> - <<if (random(1,100) > 60)>> - <<if (($PC.boobs - $PC.boobsImplant) < _boobTarget)>> - $His breasts @@.lime;greatly swell@@ to meet the upcoming demand. - <<set $PC.boobs += 100>> - <<if $PC.boobShape != "saggy" && $PC.preg > $PC.pregData.normalBirth/1.25 && ($PC.breastMesh != 1) && ($PC.drugs != "sag-B-gone")>> - $His immensely engorged @@.orange;breasts become saggy@@ in the last stages of $his pregnancy as $his body undergoes changes in anticipation of the forthcoming birth. - <<set $PC.boobShape = "saggy">> - <</if>> - <</if>> - <<if $PC.geneticQuirks.androgyny != 2>> - <<if ($PC.hips < 2)>> - $His hips @@.lime;widen@@ for $his upcoming birth. - <<set $PC.hips += 1>> - <</if>> - <<if ($PC.butt < 14)>> - $His butt @@.lime;swells with added fat@@ from $his changing body. - <<set $PC.butt += 1>> - <</if>> - <</if>> - <</if>> - <<elseif ($PC.pregType >= 10)>> - <<if random(1,100) > 80 && (($PC.boobs - $PC.boobsImplant) < _boobTarget)>> - <<set $PC.boobs += 50>> - <<if $PC.boobShape != "saggy" && ($PC.breastMesh != 1) && ($PC.drugs != "sag-B-gone")>> - <<if $PC.preg > random($PC.pregData.normalBirth/1.25, $PC.pregData.normalBirth*2.05)>> - $His swollen @@.orange;breasts become saggy@@ in the last stages of $his pregnancy as $his body undergoes changes in anticipation of the forthcoming birth. - <<set $PC.boobShape = "saggy">> - <</if>> - <</if>> - <</if>> - <</if>> - */ - <<if ($PC.boobs - $PC.boobsImplant) < _boobTarget>> - <<if $PC.boobs >= 1400>> - <<if random(1,100) > 90>> - Unsurprisingly, your cow tits @@.lime;have swollen even larger@@ with your pregnancy. - <<set $PC.boobs += 25>> - <</if>> - <<elseif $PC.boobs >= 1200>> - <<if random(1,100) > 90>> - Your already huge breasts have @@.lime;grown even heavier@@ with your pregnancy. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 1400>> - Your desk is steadily starting to disappear; @@.lime;H-cups will do that.@@ - <</if>> - <</if>> - <<elseif $PC.boobs >= 1000>> - <<if random(1,100) > 75>> - Your already large breasts have @@.lime;grown even larger@@ with your pregnancy. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 1200>> - Nothing fits comfortably now; your tailor says @@.lime;it's your G-cup knockers.@@ Your back agrees. - <</if>> - <</if>> - <<elseif $PC.boobs >= 800>> - <<if random(1,100) > 75>> - Your breasts have @@.lime;grown a bit larger@@ to feed your coming child<<if $PC.pregType > 1>>ren<</if>>. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 1000>> - You popped your bra when you put it on; @@.lime;time to order some F-cups.@@ - <</if>> - <</if>> - <<elseif $PC.boobs >= 650>> - <<if random(1,100) > 80>> - Your breasts have @@.lime;grown a bit larger@@ to feed your coming child<<if $PC.pregType > 1>>ren<</if>>. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 800>> - Their prominence, and a quick measuring, reveals @@.lime;you now sport DDs.@@ - <</if>> - <</if>> - <<elseif $PC.boobs >= 500>> - <<if random(1,100) > 80>> - Your breasts have @@.lime;grown a bit larger@@ to feed your coming child<<if $PC.pregType > 1>>ren<</if>>. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 650>> - They're big, sensitive, @@.lime;and now a D-cup.@@ - <</if>> - <</if>> - <<elseif $PC.boobs >= 400>> - <<if random(1,100) > 80>> - Your breasts have @@.lime;gotten heavier@@ alongside your pregnancy. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 500>> - They spill dramatically out of your bra now, which means @@.lime;you've graduated to a C-cup.@@ - <</if>> - <</if>> - <<elseif $PC.boobs >= 300>> - <<if random(1,100) > 75>> - Your breasts have @@.lime;swollen@@ alongside your pregnancy. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 400>> - A quick measuring after your top started to feel too constricting reveals @@.lime;you are now a B-cup!@@ - <</if>> - <</if>> - <<else>> - <<if random(1,100) > 75>> - Your chest @@.lime;has filled out slightly@@ with your pregnancy. - <<set $PC.boobs += 25>> - <<if $PC.boobs >= 300>> - They've gotten so big that @@.lime;you can now fill an A-cup bra.@@ - <</if>> - <</if>> - <</if>> - <<if _sagCheck>> - <<if $PC.boobShape != "saggy" && $PC.preg > random($PC.pregData.normalBirth/1.25, $PC.pregData.normalBirth*2.5) && ($PC.breastMesh != 1) && ($PC.drugs != "sag-B-gone")>> - $His @@.orange;breasts become saggy@@ in the last stages of $his pregnancy as $his body undergoes changes in anticipation of the forthcoming birth. - <<set $PC.boobShape = "saggy">> - <</if>> - <</if>> - <</if>> - /* - <<if $PC.preg > $PC.pregData.normalBirth/1.25 && $PC.physicalAge >= 18 && $PC.hips == 1 && $PC.hipsImplant == 0 && random(1,100) > 90>> - $His hips @@.lime;widen@@ to better support $his gravidity. - <<set $PC.hips += 1>> - <<elseif $PC.preg > $PC.pregData.normalBirth/1.42 && $PC.physicalAge >= 18 && $PC.hips == 0 && $PC.hipsImplant == 0 && random(1,100) > 70>> - $His hips @@.lime;widen@@ to better support $his gravidity. - <<set $PC.hips += 1>> - <</if>> - */ - <</if>> - <</if>> - /*--------------- main labor triggers: -------- */ - <<if $PC.preg > $PC.pregData.normalBirth/8>> - <<if WombBirthReady($PC, $PC.pregData.normalBirth*1.075) > 0>> /*check for really ready fetuses - 43 weeks - max, overdue*/ - <<set $PC.labor = 1>> - <<elseif WombBirthReady($PC, $PC.pregData.normalBirth) > 0 && (random(1,100) > 50)>> /*check for really ready fetuses - 40 weeks - normal*/ - <<set $PC.labor = 1>> - <<elseif WombBirthReady($PC, $PC.pregData.normalBirth/1.1111) > 0 && (random(1,100) > 90)>> /*check for really ready fetuses - 36 weeks minimum */ - <<set $PC.labor = 1>> - <</if>> - <<if $PC.labor == 1>> - <br> - <<if $PC.birthsTotal > 0>> - @@.red;A dull cramp runs down your middle.@@ You'll be giving birth soon. - <<else>> - You begin to experience @@.red;odd cramps@@ in your lower body. Contractions, more than likely. - <</if>> - <</if>> - /* - <<if $dangerousPregnancy == 1 && $PC.labor != 1>> - <<if $PC.pregAdaptation < 500>> - <<set _miscarriageChance = -10>> - <<set _miscarriageChance += (($PC.bellyPreg/1000)-$PC.pregAdaptation)>> // this could use to not be linear - <<if $PC.inflation > 0>> - <<set _miscarriageChance += 10>> - <</if>> - <<set _miscarriageChance -= ($PC.curatives == 1 ? 100 : 0)>> - <<if $PC.health.health < -20>> - <<set _miscarriageChance -= ($PC.health.health)>> - <<elseif $PC.health.health > 80>> - <<set _miscarriageChance -= ($PC.health.health/10)>> - <</if>> - <<if $PC.weight < -50>> - <<set _miscarriageChance -= ($PC.weight)>> - <</if>> - <<if $PC.bellyAccessory == "a support band">> - <<set _miscarriageChance -= 30>> - <</if>> - <<set _miscarriageChance = Math.round(_miscarriageChance)>> - <<if _miscarriageChance > random(0,100)>> - <<set _chance = random(1,100)>> - <<if $PC.preg >= $PC.pregData.normalBirth/1.33>> - <<set $PC.labor = 1, $birthee = 1>> - <<set _miscarriage = 1>> - <<elseif $PC.preg > $PC.pregData.normalBirth/1.48>> - <<set $PC.labor = 1, $PC.prematureBirth = 1>> - <<set _miscarriage = 1>> - <<elseif $PC.preg > $PC.pregData.normalBirth/1.6 && _chance > 10>> - <<set $PC.labor = 1, $PC.prematureBirth = 1>> - <<set _miscarriage = 1>> - <<elseif $PC.preg > $PC.pregData.normalBirth/1.73 && _chance > 40>> - <<set $PC.labor = 1, $PC.prematureBirth = 1>> - <<set _miscarriage = 1>> - <<elseif $PC.preg > $PC.pregData.normalBirth/1.81 && _chance > 75>> - <<set $PC.labor = 1, $PC.prematureBirth = 1>> - <<set _miscarriage = 1>> - <<else>> - $His overwhelmed body has @@.orange;forced $him to miscarry,@@ possibly saving $his life. - <<set $PC.preg = 0>> - <<if $PC.sexualFlaw == "breeder">> - $He is @@.mediumorchid;filled with violent, all-consuming hatred@@ at $himself for failing to carry to term and you for allowing this to happen. - <<if $PC.pregType > 4>> - The loss of so many children at once @@.red;shatters the distraught breeder's mind.@@ - <<set $PC.fetish = "mindbroken", $PC.behavioralQuirk = "none", $PC.behavioralFlaw = "none", $PC.sexualQuirk = "none", $PC.sexualFlaw = "none", $PC.devotion = 0, $PC.trust = 0>> - <<else>> - $He cares little for what punishment awaits $his actions. - <<set $PC.devotion -= 25*$PC.pregType>> - <</if>> - <<elseif $PC.devotion < -50>> - $He is @@.mediumorchid;filled with violent, consuming hatred@@ and @@.gold;fear.@@ Even though $he knew $his bab<<if $PC.pregType > 1>>ies were<<else>>y was<</if>> likely destined for a slave orphanage, it seems $he cared for <<if $PC.pregType > 1>>them<<else>>it<</if>> and blames you for the loss. - <<set $PC.devotion -= 25, $PC.trust -= 25>> - <<elseif $PC.devotion < -20>> - $He is @@.mediumorchid;afflicted by desperate, inconsolable grief@@ and @@.gold;horror.@@ Even though $he knew $his bab<<if $PC.pregType > 1>>ies were<<else>>y was<</if>> likely destined for a slave orphanage, it seems $he cared for <<if $PC.pregType > 1>>them<<else>>it<</if>>. - <<set $PC.devotion -= 10, $PC.trust -= 20>> - <<elseif $PC.fetish == "pregnancy">> - $He is @@.mediumorchid;filled with deep regret@@ and @@.gold;fear.@@ - <<if $PC.fetishKnown == 1>> - To a pregnancy fetishist, ending it like this hurts far worse than birth ever would. - <<else>> - It appears $he was more attached to $his baby bump than $he let on and is hurting even more for it. - <</if>> - <<set _fetishModifier = $PC.fetishStrength/2>> - <<set $PC.devotion -= 1*_fetishModifier, $PC.trust -= 1*_fetishModifier>> - <<elseif $PC.devotion <= 20>> - $He is @@.mediumorchid;consumed by enduring sorrow@@ and @@.gold;horror.@@ Even though $he knew $his bab<<if $PC.pregType > 1>>ies were<<else>>y was<</if>> likely destined for a slave orphanage, it seems $he cared for <<if $PC.pregType > 1>>them<<else>>it<</if>>. - <<set $PC.devotion -= 5, $PC.trust -= 5>> - <<elseif $PC.devotion <= 50>> - $He is dully obedient. $He has been broken to slave life so thoroughly that even this is neither surprising nor affecting. - <<else>> - $He is @@.mediumorchid;disappointed by this development@@ and @@.gold;afraid@@ of your reaction. By failing to carry to term, $he has failed your will. - <<set $PC.devotion -= 10, $PC.trust -= 10>> - <</if>> - <<set TerminatePregnancy($PC)>> - <<run actX($PC, "abortions")>> - <<if $PC.abortionTat > -1>> - <<set $PC.abortionTat++>> - The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($PC.abortionTat)>> crossed out infant. - <<run cashX(forceNeg($modCost), "slaveMod", $PC)>> - <</if>> - <<set _miscarriage = 1>> - <</if>> - <</if>> - <</if>> - <<if $seeExtreme == 1>> - <<if _miscarriage != 1 && $PC.bellyPreg >= 100000 && $PC.geneMods.rapidCellGrowth != 1>> // If $he can't relieve the pressure that way, will $he hold? - <<if $PC.bellyPreg >= 500000 || $PC.wombImplant != "restraint">> - <<if (($PC.belly > ($PC.pregAdaptation*3200)) || $PC.bellyPreg >= 500000)>> - <<set _burstChance = -80>> - <<set _burstChance += (($PC.belly/1000)-$PC.pregAdaptation)>> // this could use to not be linear - <<if $PC.health.health < -20>> - <<set _burstChance -= ($PC.health.health)>> - <<elseif $PC.health.health > 80>> - <<set _burstChance -= ($PC.health.health/10)>> - <</if>> - <<if $PC.weight < 0>> - <<set _burstChance -= $PC.weight>> - <</if>> - <<set _burstChance -= $PC.bellySag>> - <<set _burstChance -= $PC.muscles>> - <<if $PC.bellyAccessory == "a support band">> - <<set _burstChance -= 10>> - <</if>> - <<if $PC.pregControl == "slow gestation">> - <<set _burstChance -= 20>> - <</if>> - <<if $PC.assignment == "get treatment in the clinic">> - <<if _S.Nurse>> - <<set _burstChance -= 100>> - <<else>> - <<set _burstChance -= 30>> - <</if>> - <<elseif $PC.assignment == "work in the dairy" && $dairyPregSetting == 3>> - <<set _burstChance -= 250>> - <</if>> - <<if $PC.pregControl == "speed up">> - <<if _burstChance > 0>> - <<set _burstChance *= 4>> - <</if>> - <</if>> - <<set _burstChance = Math.round(_burstChance)>> - <<if _burstChance > random(0,100)>> - <<set $PC.burst = 1>> - <<else>> - Constant @@.red;<<if $PC.geneticQuirks.uterineHypersensitivity == 2>>painful orgasms<<else>>sharp pains<</if>>@@ from $his womb strongly suggest @@.red;$his body is beginning to break.@@ - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - <</if>> - */ - <</if>> -<</if>> diff --git a/src/pregmod/reMaleCitizenHookup.tw b/src/pregmod/reMaleCitizenHookup.tw index 4f45c7f0d57dcb839eeb5d92bfbb08ff0fccf60e..5e0cb31a24fbfcacb322853e4f7dc690f1ba094d 100644 --- a/src/pregmod/reMaleCitizenHookup.tw +++ b/src/pregmod/reMaleCitizenHookup.tw @@ -337,7 +337,7 @@ He's clearly attracted to you; even the most consummate actor would have difficu <<elseif _FS != "Youth Preferentialist">> <<if _S.Concubine && !isAmputee(_S.Concubine)>> <<setLocalPronouns _S.Concubine>> - The <<if canSee(_S.Concubine)>>view of your bouncing tits<<elseif canHear($activeSlave)>>sound of lusty sex<<else>>vibrations from your bed bouncing up and down<</if>> is too much for _S.Concubine.slaveName to resist and so $he crawls over to kiss and caress you as your lover finishes. + The <<if canSee(_S.Concubine)>>view of your bouncing tits<<elseif canHear(_S.Concubine)>>sound of lusty sex<<else>>vibrations from your bed bouncing up and down<</if>> is too much for _S.Concubine.slaveName to resist and so $he crawls over to kiss and caress you as your lover finishes. <</if>> <</if>> Sometimes society overlooks that you are a woman and have certain needs, but your lover tonight knows exactly how to treat you. When your guest <<if _FS != "Youth Preferentialist">>is finally spent<<else>>wakes up from against your body<</if>>, he showers, dresses, and leaves discreetly, offering you a proper thank you. This is the kind of thing that @@.green;builds a lasting reputation@@ in the Free Cities. diff --git a/src/pregmod/widgets/bodySwapReaction.tw b/src/pregmod/widgets/bodySwapReaction.tw index 4367efd12a72f871e60a6d452bd00481f99caeb0..b2629c3363d7958ac408770931417b2c5877fe52 100644 --- a/src/pregmod/widgets/bodySwapReaction.tw +++ b/src/pregmod/widgets/bodySwapReaction.tw @@ -657,14 +657,14 @@ Now you only have to wait for $him to wake up. $He quivers a little as $he grabs hold of the @@.lime;two towering protrusions@@ jutting out from $his breasts. <<case "partially inverted">> $He quivers a little as $he - <<if $activeSlave.nipplesPiercing != 0>> + <<if $args[0].nipplesPiercing != 0>> tugs on the piercings, pulling @@.lime;partially inverted nipples@@ out. <<else>> teases the @@.lime;little exposed nipples@@ sticking out of $his breasts. <</if>> <<case "inverted">> $He quivers a little as $he - <<if $activeSlave.nipplesPiercing != 0>> + <<if $args[0].nipplesPiercing != 0>> tugs on the piercings, forcing $his @@.lime;inverted nipples@@ completely out. <<else>> accidentally pops one of $his @@.lime;inverted nipples@@ out. diff --git a/src/uncategorized/REFI.tw b/src/uncategorized/REFI.tw index faa66635bbbaef30ada52b7e4b8e8159b4c532d3..7621d9b22ad53521e4bae1e51717925b423fe50e 100644 --- a/src/uncategorized/REFI.tw +++ b/src/uncategorized/REFI.tw @@ -56,8 +56,7 @@ <<set $slaves[_refi].lactationDuration = 2>> <<set $slaves[_refi].boobs -= $slaves[_refi].boobsMilk, $slaves[_refi].boobsMilk = 0>> <<else>> - <<set $slaves[_refi].induceLactation += 4>> - <<run induceLactation($slaves[_refi])>> + <<run induceLactation($slaves[_refi], 4)>> <</if>> <<case "dom">> /* TODO: expand this */ @@ -1562,8 +1561,7 @@ There was a glint of envy <<if canSee($activeSlave)>>in $his eyes when $he saw<< <<set $activeSlave.lactationDuration = 2>> <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> <<else>> - <<set $activeSlave.induceLactation += 5>> - <<= induceLactation($activeSlave)>> + <<= induceLactation($activeSlave, 5)>> <</if>> <</replace>> <</link>> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 0cf72b8a1e0945bf9f2af6b42aed5e62a1d97a97..6e869d4dd399e6aae743b396b45be81e870863ea 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -1680,8 +1680,7 @@ $He stops and <<if canSee($activeSlave)>>stares<<else>>faces you<</if>>, struggl <<set $activeSlave.lactationDuration = 2>> <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> <<else>> - <<set $activeSlave.induceLactation += 2>> - <<= induceLactation($activeSlave)>> + <<= induceLactation($activeSlave, 2)>> <</if>> <<else>> Even $his nipples show signs of wear, having prolapsed slightly from heavy use. @@ -10029,8 +10028,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <<set $activeSlave.lactationDuration = 2>> <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> <<else>> - <<set $activeSlave.induceLactation += 4>> - <<= induceLactation($activeSlave)>> + <<= induceLactation($activeSlave, 4)>> <</if>> <<case "pregnancy">> <<if !canDoAnal($activeSlave) && !canDoVaginal($activeSlave)>> @@ -11974,8 +11972,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <<set $activeSlave.lactationDuration = 2>> <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> <<else>> - <<set $activeSlave.induceLactation += 3>> - <<= induceLactation($activeSlave)>> + <<= induceLactation($activeSlave, 3)>> <</if>> <</replace>> <</link>> @@ -15448,8 +15445,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <<set $activeSlave.lactationDuration = 2>> <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> <<else>> - <<set $activeSlave.induceLactation += 5>> - <<= induceLactation($activeSlave)>> + <<= induceLactation($activeSlave, 5)>> <</if>> <<case "pregnancy">> $He doesn't have permission to impregnate them, but they don't know that, and $he lies shamelessly. <<if canPenetrate($activeSlave)>>They beg $him not to cum inside them, but $he does anyway,<<else>>$He uses a strap-on with a reservoir to fill them with cum,<</if>> and they cry themselves to sleep every night. @@ -15517,8 +15513,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <<set $activeSlave.lactationDuration = 2>> <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> <<else>> - <<set $activeSlave.induceLactation += 3>> - <<= induceLactation($activeSlave)>> + <<= induceLactation($activeSlave, 3)>> <</if>> <</replace>> <</link>> @@ -15957,8 +15952,7 @@ brought in to you. This time <<= App.UI.slaveDescriptionDialog($activeSlave)>> h <<set $activeSlave.lactationDuration = 2>> <<set $activeSlave.boobs -= $activeSlave.boobsMilk, $activeSlave.boobsMilk = 0>> <<else>> - <<set $activeSlave.induceLactation += 3>> - <<= induceLactation($activeSlave)>> + <<= induceLactation($activeSlave, 3)>> <</if>> <</replace>> <</link>> diff --git a/src/uncategorized/arcadeReport.tw b/src/uncategorized/arcadeReport.tw index 9115f68a97467d252b5d82dcdfec9032f34cabe4..2f2dca07c7e394d40b8a15dba49052161ee1578f 100644 --- a/src/uncategorized/arcadeReport.tw +++ b/src/uncategorized/arcadeReport.tw @@ -138,7 +138,7 @@ <</if>> <<if $showEWD != 0>> <br> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_slave)>> <<= App.SlaveAssignment.diet(_slave)>> <<includeDOM App.SlaveAssignment.longTermEffects(_slave)>> <<= App.SlaveAssignment.drugs(_slave)>> @@ -146,15 +146,13 @@ <<= App.SlaveAssignment.rivalries(_slave)>> <br> <<= App.SlaveAssignment.devotion(_slave)>> <<else>> - <<silently>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules()>> <<run App.SlaveAssignment.diet(_slave)>> <<run App.SlaveAssignment.longTermEffects(_slave)>> <<run App.SlaveAssignment.drugs(_slave)>> <<run App.SlaveAssignment.relationships(_slave)>> <<run App.SlaveAssignment.rivalries(_slave)>> <<run App.SlaveAssignment.devotion(_slave)>> - <</silently>> <</if>> <</for>> @@ -219,7 +217,7 @@ <</if>> <<if ($arcadeUpgradeFuckdolls == 2)>> - <<set $activeSlave = 0, _Age = -1, _FD = -1, _MB = -1, _Con = -1>> + <<set _currentSlave = 0, _Age = -1, _FD = -1, _MB = -1, _Con = -1>> <<for _slave range _slaves>> <<if _slave.sentence == 0>> /* let's not convert slaves we are punishing into Fuckdolls */ <<if (_slave.fetish == "mindbroken")>> @@ -249,19 +247,19 @@ <</if>> <</for>> <<if _FD > -1>> - <<set $activeSlave = $slaves[_FD]>> + <<set _currentSlave = $slaves[_FD]>> <<elseif _Con > -1>> - <<set $activeSlave = $slaves[_Con]>> + <<set _currentSlave = $slaves[_Con]>> <<elseif _MB > -1>> - <<set $activeSlave = $slaves[_MB]>> + <<set _currentSlave = $slaves[_MB]>> <<elseif _Age > -1>> - <<set $activeSlave = $slaves[_Age]>> + <<set _currentSlave = $slaves[_Age]>> <</if>> - <<if $activeSlave != 0>> - <<run App.Utils.setLocalPronouns($activeSlave)>> - <br> $activeSlave.slaveName is low-quality merchandise, so $he has been converted into a Fuckdoll. - <<= removeSlave($activeSlave)>> - <<if $activeSlave == 0>> /% if not zero then technically there was an error INVALID SLAVE %/ + <<if _currentSlave != 0>> + <<run App.Utils.setLocalPronouns(_currentSlave)>> + <br> _currentSlave.slaveName is low-quality merchandise, so $he has been converted into a Fuckdoll. + <<= removeSlave(_currentSlave)>> + <<if _currentSlave == 0>> /% if not zero then technically there was an error INVALID SLAVE %/ <<set $fuckdolls++, _SL-->> <</if>> <<else>> diff --git a/src/uncategorized/arcmgmt.tw b/src/uncategorized/arcmgmt.tw deleted file mode 100644 index 938f088299a0b1a77e31e8245ea96af38d8dce5e..0000000000000000000000000000000000000000 --- a/src/uncategorized/arcmgmt.tw +++ /dev/null @@ -1,1823 +0,0 @@ -:: Arcology Management [nobr] - -<<if $useTabs == 0>>__Arcology Management__<</if>> -<br> -<<set _schools = App.Utils.schoolCounter()>> - -<<includeDOM ownershipReport(false)>> <br><br> - -/* Sexual Satisfaction */ -<<if $arcologies[0].FSDegradationist !== "unset">> - <<if $arcadeDemandDegResult == 1>> - Your endeavors to see slaves as less than human are hampered as citizens find that there are too few slaves ready to be treated as sexual objects around. @@.red;Development towards a degradationist society is damaged@@ as a result.<br> - <<elseif $arcadeDemandDegResult == 2>> - Your endeavors to see slaves as less than human are slightly hampered as citizens find that there are not quite enough slaves ready to be treated as sexual objects around. @@.red;Development towards a degradationist society is lightly damaged@@ as a result.<br> - <<elseif $arcadeDemandDegResult == 3>> - Your citizens were expecting to see more slaves available as sexual objects, but there aren't enough complaints to damage your societal development at this time.<br> - <<elseif $arcadeDemandDegResult == 4>> - Your citizens find themselves surrounded by slaves ready to be degraded and used as sexual objects, this @@.green;helps to establish your degradationist society@@.<br> - <<elseif $arcadeDemandDegResult == 5>> - You are providing your citizens with an adequate amount of slaves to be used as sexual objects, as is expected in your degradationist society.<br> - <</if>> -<</if>> - -<<= supplyPoliciesReport("lower")>> -<<= supplyPoliciesReport("middle")>> -<<= supplyPoliciesReport("upper")>> -<<= supplyPoliciesReport("top")>> -<br> - -/* New Population -Populations depend on the 'demand' for them. People flock to the Free City when there are jobs. Jobs for lower class people depend on prosperity and the need for labor from other classes. They compete with slaves for work. -More elite citizens require their own slaves and will cause the population of slaves to increase as they move in. FS and policies will impact how many slaves they desire and how productive they are. The PC's menials also compete for labor within the arcology. Slaves can now 'expire', speed depends on FS and policies. Default lifespan for menials is an average of ~4 years. */ - -<<set $oldACitizens = $ACitizens, -_FSScore = 0, /*FS progress for tourism*/ -_slaveDemandU = 1, /*Changes to upperClass slave demand*/ -_slaveDemandT = 1, /*Changes to topClass slave demand*/ -_expirationFS = 0.005, /*changes to likelihood of slave death*/ -_slaveProductivity = 0.8, /*changes to slave productivity*/ -_lowerClass = 0, /*fixed amount of changes to lowerClass interest to move in*/ -_lowerClassP = 1, /*scaling changes to lowerClass interest ("stacking bonus")*/ -_welfareFS = 0.004, /*changes to likelihood of lowerClass getting enslaved*/ -_middleClass = 0, /*see lowerClass examples for the rest of these*/ -_middleClassP = 1, -_upperClass = 0, -_upperClassP = 1, -_topClass = 0, -_topClassP = 1, -_enslaveChance = 0.2>> -<<if $arcologies[0].FSSupremacist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSSupremacist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * 0.04, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * 0.05, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * -80, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * -0.004, - _middleClass += Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * -16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * 5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * 2, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSupremacist, 100) / 20) * 0.004>> - Your racial policies are concentrating power in the hands of $arcologies[0].FSSupremacistRace people. /*perhaps too obvious to bother with printing?*/ -<</if>> -<<if $arcologies[0].FSSubjugationist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSSubjugationist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * 0.04, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * 0.05, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * -80, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * -0.004, - _middleClass += Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * -16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * 5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * 2, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSubjugationist, 100) / 20) * 0.004>> - Your racial policies are stripping all power from the $arcologies[0].FSSubjugationistRace people. /*perhaps too obvious to bother with printing?*/ -<</if>> -<<if $arcologies[0].FSGenderRadicalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSGenderRadicalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSGenderRadicalist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSGenderRadicalist, 100) / 20) * 0.025, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSGenderRadicalist, 100) / 20) * -40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSGenderRadicalist, 100) / 20) * -0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSGenderRadicalist, 100) / 20), - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSGenderRadicalist, 100) / 20) * 0.002>> - Your radical views on gender are scaring away the more traditionally minded. -<</if>> -<<if $arcologies[0].FSGenderFundamentalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSGenderFundamentalist, 100), - _lowerClass += Math.trunc(Math.min($arcologies[0].FSGenderFundamentalist, 100) / 20) * 40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSGenderFundamentalist, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSGenderFundamentalist, 100) / 20) * -1, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSGenderFundamentalist, 100) / 20) * -0.002>> - Your traditional views on gender are comforting to many, unimaginative to some. -<</if>> -<<if $arcologies[0].FSPaternalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSPaternalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.04, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.05, - _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.15, - _slaveProductivity += Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * 0.02, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * 80, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * 0.004, - _welfareFS *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.1, - _middleClass += Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * 16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * 0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -2, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.002>> - Poor citizens can rely on their better-off peers in $arcologies[0].name. -<</if>> -<<if $arcologies[0].FSDegradationist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSDegradationist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.04, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.05, - _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.2, - _slaveProductivity += Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.01, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * -80, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * -0.004, - _welfareFS *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.1, - _middleClass += Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * -16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 2, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSDegradationist, 100) / 20) * 0.004>> - The arcology is a cutthroat place in which falling into slavery is very easy. -<</if>> -<<if $arcologies[0].FSIntellectualDependency != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSIntellectualDependency, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * 0.03, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * 0.04, - _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * 0.05, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * 20, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * 0.002, - _middleClass += Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * 10, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * 0.003, - _topClass += Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * -3, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSIntellectualDependency, 100) / 20) * -0.020>> - It's always a party in $arcologies[0].name, giving it a strong appeal to those unable to host such an event. -<</if>> -<<if $arcologies[0].FSSlaveProfessionalism != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSSlaveProfessionalism, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * -0.1, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * -0.125, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * -20, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * 2.7, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * 0.001, - _topClass += Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * 0.5, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSSlaveProfessionalism, 100) / 20) * 0.001>> - The intelligent atmosphere of $arcologies[0].name makes it an attractive place for those with the brains to define their place in the world. -<</if>> -<<if $arcologies[0].FSBodyPurist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSBodyPurist, 100), - _lowerClass += Math.trunc(Math.min($arcologies[0].FSBodyPurist, 100) / 20) * 40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSBodyPurist, 100) / 20) * 0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSBodyPurist, 100) / 20) * -2.7, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSBodyPurist, 100) / 20) * -0.001, - _topClass += Math.trunc(Math.min($arcologies[0].FSBodyPurist, 100) / 20) * -0.5, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSBodyPurist, 100) / 20) * -0.001>> - Body purist fashion standards comfort the poor as they stand out less from their more fortunate neighbors. -<</if>> -<<if $arcologies[0].FSTransformationFetishist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSTransformationFetishist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.025, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * -40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 2.7, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.001, - _topClass += Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.5, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSTransformationFetishist, 100) / 20) * 0.001>> - The lower class fear the kind of transformations could be forced on them if they ever end up enslaved, whereas the rich enjoy wielding such power. -<</if>> -<<if $arcologies[0].FSYouthPreferentialist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSYouthPreferentialist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSYouthPreferentialist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSYouthPreferentialist, 100) / 20) * 0.025, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSYouthPreferentialist, 100) / 20) * 40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSYouthPreferentialist, 100) / 20) * 0.002, - _middleClass += Math.trunc(Math.min($arcologies[0].FSYouthPreferentialist, 100) / 20) * -8, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSYouthPreferentialist, 100) / 20) * -0.002>> - Preference for youth makes the young poor in your arcology feel appreciated despite their lack of wealth. -<</if>> -<<if $arcologies[0].FSMaturityPreferentialist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSMaturityPreferentialist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSMaturityPreferentialist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSMaturityPreferentialist, 100) / 20) * 0.025, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSMaturityPreferentialist, 100) / 20) * -40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSMaturityPreferentialist, 100) / 20) * -0.002, - _middleClass += Math.trunc(Math.min($arcologies[0].FSMaturityPreferentialist, 100) / 20) * 8, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSMaturityPreferentialist, 100) / 20) * 0.002>> - Preference for maturity makes the middle class of your arcology feel like their experience is finally properly appreciated. -<</if>> -<<if $arcologies[0].FSPetiteAdmiration != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSPetiteAdmiration, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSPetiteAdmiration, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSPetiteAdmiration, 100) / 20) * 0.025>> -<</if>> -<<if $arcologies[0].FSStatuesqueGlorification != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSStatuesqueGlorification, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSStatuesqueGlorification, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSStatuesqueGlorification, 100) / 20) * 0.025>> -<</if>> -<<if $arcologies[0].FSSlimnessEnthusiast != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSSlimnessEnthusiast, 100)>> -<</if>> -<<if $arcologies[0].FSAssetExpansionist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSAssetExpansionist, 100)>> - <<if $arcologies[0].FSBodyPurist != "unset">> - <<set _expirationFS *= 1 + (Math.trunc(Math.min($arcologies[0].FSAssetExpansionist, 100) / 20) * 0.05) * (1 + (Math.trunc(Math.min($arcologies[0].FSBodyPurist, 100) / 20) * -0.1))>> - <<else>> - <<set _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSAssetExpansionist, 100) / 20) * 0.05>> - <</if>> -<</if>> -<<if $arcologies[0].FSPastoralist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSPastoralist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.04, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.05>> - <<if $arcologies[0].FSPaternalist != "unset">> - <<set _expirationFS *= 1 + (Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.05) * (1 + (Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.1))>> - <<else>> - <<set _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.05>> - <</if>> - <<set _lowerClass += Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * -80, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * -0.004, - _middleClass += Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 2.7, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.001, - _topClass += Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.5, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPastoralist, 100) / 20) * 0.001>> - The pastoralization of $arcologies[0].name spurs a whole industry around human produce. -<</if>> -<<if $arcologies[0].FSPhysicalIdealist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSPhysicalIdealist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.025, - _slaveProductivity += Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.01, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * -40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * 2.7, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.001, - _topClass += Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.5, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSPhysicalIdealist, 100) / 20) * 0.001>> - Fit slaves and citizens are more productive! However, your arcology's poor do not look forward to even more toil and sweat. -<</if>> -<<if $arcologies[0].FSChattelReligionist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSChattelReligionist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * 0.025, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * -40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * 2.7, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * 0.001, - _topClass += Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * 0.5, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSChattelReligionist, 100) / 20) * 0.001>> - Chattel Religionism helps some poor citizens see slavery as a spiritually pure fate. -<</if>> -<<if $arcologies[0].FSRomanRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSRomanRevivalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20) * 0.025, - _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20) * -0.1, - _welfareFS *= 1 + Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20) * -0.05, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20) * 40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20), - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRomanRevivalist, 100) / 20) * -0.002>> - Your citizens take pride in looking after each other. -<</if>> -<<if $arcologies[0].FSNeoImperialist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSNeoImperialist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 0.05, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 0.030, - _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * -0.06, - _welfareFS *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * -0.025, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * -20, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * -0.002, - _middleClass += Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 0.004, - _upperClass += Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 0.5, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNeoImperialist, 100) / 20) * 0.002>> - Your new Imperium creates a staunchly hierchical society, and while your elites and soldiers enjoy social prestige and luxury, the lower classes are often unhappy about being made to grovel. -<</if>> -<<if $arcologies[0].FSEgyptianRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSEgyptianRevivalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSEgyptianRevivalist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSEgyptianRevivalist, 100) / 20) * 0.025, - _welfareFS *= 1 + Math.trunc(Math.min($arcologies[0].FSEgyptianRevivalist, 100) / 20) * -0.05, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSEgyptianRevivalist, 100) / 20) * 40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSEgyptianRevivalist, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSEgyptianRevivalist, 100) / 20), - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSEgyptianRevivalist, 100) / 20) * -0.002>> - Egyptian Revivalism is benevolent in some ways, and charity is common here. -<</if>> -<<if $arcologies[0].FSEdoRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSEdoRevivalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSEdoRevivalist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSEdoRevivalist, 100) / 20) * 0.025>> -<</if>> -<<if $arcologies[0].FSArabianRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSArabianRevivalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSArabianRevivalist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSArabianRevivalist, 100) / 20) * 0.025>> -<</if>> -<<if $arcologies[0].FSChineseRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSChineseRevivalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSChineseRevivalist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSChineseRevivalist, 100) / 20) * 0.025>> -<</if>> -<<if $arcologies[0].FSAztecRevivalist != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSAztecRevivalist, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSAztecRevivalist, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSAztecRevivalist, 100) / 20) * 0.025>> -<</if>> -<<if $arcologies[0].FSNull != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSNull, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * -0.1, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * -0.125, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * 400, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * 0.016, - _middleClass += Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * 64, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * 0.008, - _upperClass += Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * -21.6, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * -0.008, - _topClass += Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * -8, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSNull, 100) / 20) * -0.016>> - Your arcology's vibrant, open culture helps everyone succeed, preventing many struggling citizens from falling into slavery. -<</if>> -<<if $arcologies[0].FSRepopulationFocus != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSRepopulationFocus, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 0.04, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 0.05, - _slaveProductivity += Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * -0.01>> - <<if $arcologies[0].FSPaternalist != "unset">> - <<set _expirationFS *= 1 + (Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 0.05) * (1 + (Math.trunc(Math.min($arcologies[0].FSPaternalist, 100) / 20) * -0.1))>> - <<else>> - <<set _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 0.05>> - <</if>> - <<set _lowerClass += Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 80, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 0.004, - _middleClass += Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * 0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * -5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * -0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * -2, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRepopulationFocus, 100) / 20) * -0.004>> - You've made repopulation a priority and the less fortunate hope all these new children will make their lives easier in the future, but the wealthy are wary. -<</if>> -<<if $arcologies[0].FSRestart != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSRestart, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * 0.04, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * 0.05, - _lowerClass += Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * -80, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * -0.004, - _middleClass += Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * -16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * 5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * 0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * 2, - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSRestart, 100) / 20) * 0.004>> - Highly restricted breeding pleases the powerful, but the less fortunate may seek reproductive freedom elsewhere. -<</if>> -<<if $arcologies[0].FSHedonisticDecadence != "unset">> - <<set _FSScore += Math.min($arcologies[0].FSHedonisticDecadence, 100), - _slaveDemandU *= 1 + Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.02, - _slaveDemandT *= 1 + Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.025, - _slaveProductivity += Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * -0.01, - _expirationFS *= 1 + Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.1, /*too high?*/ - _lowerClass += Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * 40, - _lowerClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.002, - _middleClass += Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * -16, - _middleClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * -0.002, - _upperClass += Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * -5.4, - _upperClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * -0.002, - _topClass += Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20), - _topClassP *= 1 + Math.trunc(Math.min($arcologies[0].FSHedonisticDecadence, 100) / 20) * 0.002>> - Your citizens enjoy the pleasures of life to their fullest, but some prefer to earn these pleasures. -<</if>> - -/*policies*/ -<<if $policies.retirement.menial2Citizen == 1>> - <<set _slaveDemandU *= 0.8, - _slaveDemandT *= 0.75, - _slaveProductivity += 0.05, - _expirationFS *= 0.8, - _lowerClass += 200, - _lowerClassP *= 1.01, - _middleClass += 80, - _middleClassP *= 1.01, - _upperClass += -27, - _upperClassP *= 0.99, - _topClass += -5, - _topClassP *= 0.99>> -<</if>> -<<if $policies.proRefugees == 1>> - <<set _slaveDemandU *= 1.1, - _slaveDemandT *= 1.125>> - Some desperate people filtered into the arcology during the week: as owner, you were able to enslave a handful of them. -<</if>> -<<if $policies.immigrationCash == 1>> - <<set _lowerClass += 200, - _lowerClassP *= 1.01, - _middleClass += 40, - _middleClassP *= 1.005, - _upperClass += -13.5, - _upperClassP *= 0.995, - _topClass += -5, - _topClass *= 0.99>> - The rent promotion for new immigrants brings new citizens to the arcology. -<</if>> -<<if $policies.immigrationRep == 1>> - <<set _lowerClass += 200, - _lowerClassP *= 1.01, - _middleClass += 40, - _middleClassP *= 1.005, - _upperClass += -13.5, - _upperClassP *= 0.995, - _topClass += -5, - _topClass *= 0.99>> - Your welcome program for new citizens helps encourage wealthy people from the old world to immigrate, but @@.red;annoys some longstanding citizens.@@ - <<run repX(forceNeg(100), "policies")>> -<</if>> -<<if $policies.immigrationCash == -1>> - <<set _lowerClass += -200, - _lowerClassP *= 0.99, - _middleClass += -40, - _middleClassP *= 0.995, - _upperClass += 13.5, - _upperClassP *= 1.005, - _topClass += 5, - _topClass *= 1.01>> - You covertly @@.yellowgreen;sell@@ the private information of potential arcology immigrants on the old world black market. - <<run cashX(random(500,1500), "policies")>> -<</if>> -<<if $policies.immigrationRep == -1>> - <<set _lowerClass += -200, - _lowerClassP *= 0.99, - _middleClass += -40, - _middleClassP *= 0.995, - _upperClass += 13.5, - _upperClassP *= 1.005, - _topClass += 5, - _topClass *= 1.01>> - You allow citizens input on potential immigrants, a @@.green;popular@@ program. - <<run repX(100, "policies")>> -<</if>> -<<if $policies.enslavementCash == 1>> - <<set _slaveDemandU *= 1.1, - _slaveDemandT *= 1.125, - _lowerClass += -200, - _lowerClassP *= .99, - _topClass += 5, - _topClass *= 1.01>> - You @@.yellowgreen;take kickbacks@@ for ignoring enslavement of citizens. - <<run cashX(random(500,1500), "policies")>> -<</if>> -<<if $policies.enslavementRep == 1>> - <<set _slaveDemandU *= 1.1, - _slaveDemandT *= 1.125, - _lowerClass += -200, - _lowerClassP *= 0.99, - _topClass += 5, - _topClass *= 1.01>> - You @@.green;make friends@@ by tacitly supporting enslavement of upstart citizens. - <<run repX(100, "policies")>> -<</if>> -<<if $policies.enslavementCash == -1>> - <<set _slaveDemandU *= 0.9, - _slaveDemandT *= 0.875, - _lowerClass += 200, - _lowerClassP *= 1.02, - _topClass += -5, - _topClass *= 0.98>> - Your charity purse prevents a few citizens from falling into slavery. -<</if>> -<<if $policies.enslavementRep == -1>> - <<set _slaveDemandU *= 0.9, - _slaveDemandT *= 0.875, - _lowerClass += 200, - _lowerClassP *= 1.01, - _topClass += -5, - _topClass *= 0.99>> - You use your personal influence to help struggling citizens. - <<run repX(forceNeg(100), "policies")>> -<</if>> -<<if $arcologies[0].FSSupremacistLawME == 1>> - <<set _slaveDemandU *= 2.2, - _slaveDemandT *= 2.5, - _lowerClass += -400, - _lowerClassP *= 0.98, - _middleClass += -80, - _middleClassP *= 0.99, - _upperClass += 27, - _upperClassP *= 1.01, - _topClass += 10, - _topClassP *= 1.02>> - <<if $FSSupLawTrigger == 1>> - <<set _slavesSupLaw = 0, - _slavesSupLaw += Math.trunc(($lowerClass + $middleClass + $upperClass) * 0.65), - $NPCSlaves += Math.trunc(_slavesSupLaw * 0.7), - $menials += Math.trunc(_slavesSupLaw * 0.2), - $lowerClass = Math.trunc($lowerClass * 0.35), - $middleClass = Math.trunc($middleClass * 0.35), - $upperClass = Math.trunc($upperClass * 0.35), - $FSSupLawTrigger = 2>> - <</if>> -<</if>> -<<if $arcologies[0].FSSubjugationistLawME == 1>> - <<set _slaveDemandU *= 1.24, - _slaveDemandT *= 1.3, - _lowerClass += -200, - _lowerClassP *= 0.99, - _middleClass += -40, - _middleClassP *= 0.995, - _upperClass += 13.5, - _upperClassP *= 1.005, - _topClass += 5, - _topClassP *= 1.01>> - <<if $FSSubLawTrigger == 1>> - <<set _slavesSubLaw = Math.trunc(($lowerClass + $middleClass + $upperClass) * 0.2), - $NPCSlaves += Math.trunc(_slavesSubLaw * 0.7), - $menials += Math.trunc(_slavesSubLaw * 0.2), - $lowerClass = Math.trunc($lowerClass * 0.8), - $middleClass = Math.trunc($middleClass * 0.8), - $upperClass = Math.trunc($upperClass * 0.8), - $FSSubLawTrigger = 2>> - <</if>> -<</if>> -<<if $arcologies[0].FSRepopulationFocusLaw == 1>> - <<set _lowerClass += 100, - _lowerClassP *= 1.005, - _topClass += -2.5, - _topClassP *= 0.995>> - The rent promotion for pregnant women attracts several gravid ladies and a few girls eager to become mothers to enroll as citizens in your arcology. -<</if>> -<<if $arcologies[0].FSRestartLaw == 1>> - <<set _lowerClass += -100, - _lowerClassP *= 0.99, - _topClass += 2.5, - _topClassP *= 1.01>> - Your sterilization program drives several disloyal citizens out of the arcology. -<</if>> -<<if $arcologies[0].FSHedonisticDecadenceLaw == 1>> - <<set _middleClass += 80, - _middleClassP *= 1.01>> -<</if>> -<<if $arcologies[0].FSDegradationistLaw == 1>> - <<set _slaveProductivity += -0.05>> -<</if>> -<<if $arcologies[0].FSPaternalistLaw == 1>> - <<set _slaveDemandU *= 0.9, - _slaveDemandT *= 0.875, - _upperClass += -13.5, - _upperClassP *= 1.005, - _topClass += -2.5, - _topClassP *= 1.005>> -<</if>> -<<if $arcologies[0].FSYouthPreferentialistLaw == 1>> - <<set _lowerClass += 200, - _lowerClassP *= 1.01, - _middleClass += -80, - _middleClassP *= 0.99>> -<</if>> -<<if $arcologies[0].FSMaturityPreferentialistLaw == 1>> - <<set _lowerClass += -200, - _lowerClassP *= 0.99, - _middleClass += 80, - _middleClassP *= 1.01>> -<</if>> -<<if $arcologies[0].FSPetiteAdmirationLaw == 1>> - <<set _lowerClass += -200, - _lowerClassP *= 0.99, - _middleClass += 80, - _middleClassP *= 1.01>> -<</if>> -<<if $arcologies[0].FSStatuesqueGlorificationLaw == 1>> - <<set _lowerClass += -400, - _lowerClassP *= 0.95, - _middleClass += 40, - _middleClassP *= 1.01, - _upperClass += -10, - _upperClassP *= .99>> -<</if>> -<<if $arcologies[0].FSIntellectualDependencyLaw == 1>> - <<set _slaveDemandU *= 1.24, - _slaveDemandT *= 1.3, - _lowerClass += -50, - _lowerClassP *= 0.90, - _middleClass += -40, - _middleClassP *= 0.90, - _upperClass += -1, - _upperClassP *= .99>> -<</if>> -<<if $arcologies[0].FSSlaveProfessionalismLaw == 1>> - <<set _slaveDemandU *= 1.4, - _slaveDemandT *= 1.5, - _lowerClass += -300, - _lowerClassP *= 0.95, - _middleClass += -40, - _middleClassP *= 0.995, - _upperClass += -5, - _upperClassP *= .99, - _topClass += 7, - _topClassP *= 1.05>> - <<if $FSSlaveProfLawTrigger == 1>> - <<set $lowerClass = Math.trunc($lowerClass * 0.8), - $middleClass = Math.trunc($middleClass * 0.8), - $upperClass = Math.trunc($upperClass * 0.8), - $FSSlaveProfLawTrigger = 2>> - <</if>> -<</if>> -<<if $arcologies[0].FSChattelReligionistCreed == 1>> - <<if $nicaea.focus == "slaves">> - <<set _slaveDemandU *= 1 + $nicaea.power * -0.05, - _slaveDemandT *= 1 + $nicaea.power * -0.0625, - _slaveProductivity += $nicaea.power * 0.025, - _expirationFS *= 1 + $nicaea.power * -0.125, - _lowerClass += $nicaea.power * 100, - _lowerClassP *= 1 + $nicaea.power * 0.005, - _topClass += $nicaea.power * -2.5, - _topClassP *= 1 + $nicaea.power * -0.005>> - <<elseif $nicaea.focus == "owners">> - <<set _slaveDemandU *= 1 + $nicaea.power * 0.05, - _slaveDemandT *= 1 + $nicaea.power * 0.0625, - _lowerClass += $nicaea.power * -100, - _lowerClassP *= 1 + $nicaea.power * -0.005, - _middleClass += $nicaea.power * -20, - _middleClassP *= 1 + $nicaea.power * -0.0025, - _upperClass += $nicaea.power * 6.75, - _upperClassP *= 1 + $nicaea.power * 0.0025, - _topClass += $nicaea.power * 2.5, - _topClassP *= 1 + $nicaea.power * 0.005>> - <</if>> - <<if $nicaea.assignment == "whore">> - <<set _upperClass += $nicaea.power * 6.75, - _upperClassP *= 1 + $nicaea.power * 0.0025, - _topClass += $nicaea.power * 1.25, - _topClassP *= 1 + $nicaea.power * 0.0025>> - <<elseif $nicaea.assignment == "serve the public">> - <<set _lowerClass += $nicaea.power * 50, - _lowerClassP *= 1 + $nicaea.power * 0.0025, - _middleClass += $nicaea.power * 20, - _middleClassP *= 1 + $nicaea.power * 0.0025>> - <<else>> - <<set _slaveDemandU *= 1 + $nicaea.power * 0.05, - _slaveDemandT *= 1 + $nicaea.power * 0.0625, - _lowerClass += $nicaea.power * -50, - _lowerClassP *= 1 + $nicaea.power * -0.0025, - _middleClass += $nicaea.power * -20, - _middleClassP *= 1 + $nicaea.power * -0.0025, - _upperClass += $nicaea.power * 13.5, - _upperClassP *= 1 + $nicaea.power * 0.005, - _topClass += $nicaea.power * 2.5, - _topClassP *= 1 + $nicaea.power * 0.005>> - <</if>> - <<if $nicaea.achievement == "slaves">> - <<set _slaveDemandU *= 1 + $nicaea.power * 0.2, - _slaveDemandT *= 1 + $nicaea.power * 0.25, - _lowerClass += $nicaea.power * -200, - _lowerClassP *= 1 + $nicaea.power * -0.01>> - <</if>> -<</if>> -<<if $arcologies[0].FSAztecRevivalistLaw == 1>> - <<set _lowerClass += 200, - _lowerClassP *= 1.01, - _middleClass += -40, - _middleClassP *= 0.995, - _upperClass += -13.5, - _upperClassP *= 0.995>> -<</if>> -<<set _middleClass += ($TSS.subsidize + $GRI.subsidize + $SCP.subsidize + $LDE.subsidize + $TGA.subsidize + $TCR.subsidize + $TFS.subsidize + $HA.subsidize + $NUL.subsidize + $TUO.subsidize) * 40, -_middleClass *= 1 + ($TSS.subsidize + $GRI.subsidize + $SCP.subsidize + $LDE.subsidize + $TGA.subsidize + $TCR.subsidize + $TFS.subsidize + $HA.subsidize + $NUL.subsidize + $TUO.subisdize) * 0.005>> - -/*Slave retirement trigger pulled (one time only)*/ -<<if $citizenRetirementTrigger == 1>> - <<if $customMenialRetirementAge >= 65>> - <<set _citizenRetirementImpact = 0.475 - Math.clamp($customMenialRetirementAge / 200, 0.325, 0.475)>> - <<else>> - <<set _citizenRetirementImpact = 0.9 - Math.clamp($customMenialRetirementAge / 100, 0.2, 0.65)>> - <</if>> - <<if $arcologies[0].FSSupremacistLawME + $arcologies[0].FSSubjugationistLawME > 0>> - <<set _citizenRetirementImpact *= 2 / 3>> - <</if>> - <<set $lowerClass += Math.trunc(($NPCSlaves + $menials) * (0.05 + _citizenRetirementImpact)), - _menialsRetirement = Math.trunc($menials * (0.05 + _citizenRetirementImpact)), - $menials = Math.trunc($menials * (0.95 - _citizenRetirementImpact)), - _ASlavesRetirement = Math.trunc($NPCSlaves * (0.05 + _citizenRetirementImpact)), - $NPCSlaves = Math.trunc($NPCSlaves * (0.95 - _citizenRetirementImpact)), - $citizenRetirementTrigger = 2>> - You have enacted citizen retirement, the slaves of eligible age are granted freedom. - <<if _menialsRetirement > 1>> - @@.red;<<print _menialsRetirement>> of your menial slaves@@ were retired. - <<elseif _menialsRetirements > 0>> - @@.red;One of your menial slaves@@ was retired. - <</if>> - <<if _ASlavesRetirement > 1>> - @@.red;<<print _ASlavesRetirement>> slaves@@ in your arcology were given a citizen retirement. - <</if>> /*I could bother with a single slave retirement message, but that's never going to get used*/ -<</if>> - -/*Slave expiration*/ -<<set _expirationPC = Math.trunc($menials * _expirationFS), -_expirationFD = Math.trunc($fuckdolls * _expirationFS), -_expirationBR = Math.trunc($menialBioreactors * _expirationFS), -_expirationNPC = Math.trunc($NPCSlaves * _expirationFS), -_expiration = _expirationPC + _expirationNPC + _expirationFD + _expirationBR, -$NPCSlaves -= _expirationNPC, -$menials -= _expirationPC, -$fuckdolls -= _expirationFD, -$menialBioreactors -= _expirationBR>> -<<if _expiration > 1>> - <<if _expirationFS <= 0.5>> - @@.red;<<print _expiration>> slaves passed away@@ due to natural causes. - <<else>> - @@.red;<<print _expiration>> slaves died@@ due to the tough working conditions in your arcology. - <</if>> - <<if _expirationPC > 1>> - Of which @@.red;<<print _expirationPC>> were yours.@@ - <<elseif _expirationPC > 0>> - @@.red;One of them was yours.@@ - <</if>> -<</if>> - -/*Citizens turning into slaves*/ -<<if $policies.retirement.menial2Citizen == 1>> - <<if $customMenialRetirementAge >= 65>> - <<set _banishedRatio = 0.475 - Math.clamp($customMenialRetirementAge / 200, 0.325, 0.475)>> - <<else>> - <<set _banishedRatio = 0.9 - Math.clamp($customMenialRetirementAge / 100, 0.2, 0.65)>> - <</if>> - <<if $arcologies[0].FSSupremacistLawME + $arcologies[0].FSSubjugationistLawME > 0>> - <<set _banishedRatio *= 2 / 3>> - <</if>> - <<set _banished = Math.trunc(($lowerClass * _welfareFS) * (0.05 + _banishedRatio)), - _enslaved = Math.trunc($lowerClass * _welfareFS) - _banished, - $lowerClass -= _banished>> - <br>@@.red;<<print _banished>> citizens were banished@@ from your arcology, they committed enslavable offenses but were too old to be enslaved. -<<else>> - <<set _enslaved = Math.trunc($lowerClass * _welfareFS)>> -<</if>> -<<set $lowerClass -= _enslaved>> - -/*Bad weather switch*/ -<<if $weatherToday.severity > 3>> - <<if $secExpEnabled > 0 && $SecExp.buildings.transportHub>> - <<if $SecExp.buildings.transportHub.surfaceTransport < 4>> - <<set _weatherFreeze = 1>> - <<set $weatherAwareness = 1>> - <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// - <<else>> - <<set _weatherFreeze = 0>> - <</if>> - <<elseif $antiWeatherFreeze < 2>> - <<set _weatherFreeze = 1>> - <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// - <<else>> - <<set _weatherFreeze = 0>> - <</if>> -<<elseif $weatherToday.severity > 2>> - <<if $secExpEnabled > 0 && $SecExp.buildings.transportHub>> - <<if $SecExp.buildings.transportHub.surfaceTransport < 3>> - <<set _weatherFreeze = 1>> - <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// - <<else>> - <<set _weatherFreeze = 0>> - <</if>> - <<elseif $antiWeatherFreeze < 1>> - <<set _weatherFreeze = 1>> - <<set $weatherAwareness = 1>> - <br>//The terrible weather is @@.red;preventing people from entering or leaving@@ your arcology. Improving your transport infrastructure will prevent this from happening.// - <<else>> - <<set _weatherFreeze = 0>> - <</if>> -<<else>> - <<set _weatherFreeze = 0>> -<</if>> - -/*For enslavement that happens despite the weather*/ -<<if _weatherFreeze == 1>> - <<if _enslaved > 0>> - <<if _enslaved < 4>> - <<set _enslavedPC = 1, - _enslavedNPC = _enslaved - 1>> - <<else>> - <<set _enslavedPC = Math.trunc(_enslaved / 4), - _enslavedNPC = _enslaved - _enslavedPC>> - <</if>> - <<set $menials += _enslavedPC, - $NPCSlaves += _enslavedNPC>> - <</if>> - <<if _enslaved > 1>> - <br>In total @@.green;<<print _enslaved>> lower class citizens@@ were enslaved for failing to pay their debts. - <br>@@.green;You enslaved <<print _enslavedPC>>@@ of them while other debtholders in the arcology enslaved the remaining <<print _enslavedNPC>>. - <<elseif _enslaved > 0>> - <br>@@.green;As arcology owner you claimed the slave.@@ - <</if>> -<</if>> - -/*Bunch of visitor stuff*/ -<<if _weatherFreeze == 0>> -<<set _FSScore = _FSScore / $FSCreditCount, _transportHub = 1, _crime = 0.8>> -<<if $secExpEnabled > 0>> - <<if $SecExp.buildings.transportHub>> - <<set _transportHub = 0.7 + $SecExp.buildings.transportHub.airport / 10 + $SecExp.buildings.transportHub.surfaceTransport / 10>> - <</if>> - <<set _crime = (100 - $SecExp.core.crimeLow) / 100 + 0.2>> -<</if>> -<<if $terrain == "urban">> - <<set _terrain = 1.2>> -<<elseif $terrain == "rural" || $terrain == "marine">> - <<set _terrain = 1>> -<<else>> - <<set _terrain = 0.8>> -<</if>> - -<<set _honeymoon = 0>> -<<if $arcologies[0].honeymoon > 0>> - <<set _honeymoon = 10 * $arcologies[0].honeymoon>> -<</if>> -<<set _oldVisitors = $visitors, -$visitors = Math.trunc((($arcologies[0].prosperity + _FSScore * 5 + _honeymoon) * _transportHub * _terrain * _crime) * ($localEcon / 100))>> -<<if $visitors < 50>> - <<set $visitors = normalRandInt(50, 2)>> -<</if>> -<<if isNaN($visitors)>> - <br>@@.red;Visitors is NaN, report this issue!@@ - <<set $visitors = _oldVisitors>> -<</if>> -<br>@@.green;<<print $visitors>> traders and tourists@@ visited your arcology this week. - -/*slaves*/ -/*Slaves getting retired*/ -<<if $policies.retirement.menial2Citizen == 1>> - <<set _weeklyRetiredMenials = $menials / (($customMenialRetirementAge - 15) * 52), - _weeklyRetiredNPCMenials = $NPCSlaves / (($customMenialRetirementAge - 15) * 52)>> /*This implies a minimum menial age of 15. Even if the player sets minimum ages lower, there's no point having a 3 year old menial slave. 15 seems alright while being nice and round. This also implies ages are distributed evenly, no easy way around that.*/ - <<if _weeklyRetiredMenials > 1>> - <<set _weeklyRetiredMenials = Math.trunc(_weeklyRetiredMenials)>> - <<if _weeklyRetiredMenials > 1>> - <br>@@.red;<<print _weeklyRetiredMenials>> of your menial slaves@@ retired as free citizens this week. - <<else>> - <br>@@.red;One of your menial slaves@@ retired as a free citizen this week. - <</if>> - <<else>> - <<set _weeklyRetiredMenials *= 100, - _retirementChance = random(1,100)>> - <<if _weeklyRetiredMenials > _retirementChance>> - <<set _weeklyRetiredMenials = 1>> - <br>@@.red;One of your menial slaves@@ retired as a free citizen this week. - <<else>> - <<set _weeklyRetiredMenials = 0>> - <</if>> - <</if>> - <<if _weeklyRetiredNPCMenials > 1>> - <<set _weeklyRetiredNPCMenials = Math.trunc(_weeklyRetiredNPCMenials)>> - <<if _weeklyRetiredNPCMenials > 1>> - <br>@@.red;<<print _weeklyRetiredNPCMenials>> menial slaves@@ were retired as free citizens by other slave owners in your arcology this week. - <<else>> - <br>@@.red;One menial slave@@ was retired as a free citizen by another slave owner in your arcology this week. - <</if>> - <<else>> - <<set _weeklyRetiredNPCMenials *= 100, - _retirementChance2 = random(1,100)>> - <<if _weeklyRetiredNPCMenials > _retirementChance2>> - <<set _weeklyRetiredNPCMenials = 1>> - <br>@@.red;One menial slave@@ was retired as a free citizen by another slave owner in your arcology this week. - <<else>> - <<set _weeklyRetiredNPCMenials = 0>> - <</if>> - <</if>> - <<set $menials -= _weeklyRetiredMenials, - $NPCSlaves -= _weeklyRetiredNPCMenials, - $lowerClass += _weeklyRetiredMenials + _weeklyRetiredNPCMenials>> -<</if>> -/*Demand for simple labor*/ -<<set _LSCD = Math.trunc(($LSCBase * ($localEcon / 100)) + ($arcologies[0].prosperity * 4) + (($middleClass + $visitors * 0.6) * 1.5) + (($upperClass + $visitors * 0.2) * 3.5) + ($topClass * 18)), -/*Demand for owning slaves*/ -_SCD = Math.trunc(($upperClass * (2 + _slaveDemandU)) + ($topClass * (12 + _slaveDemandT)))>> -<<if isNaN(_LSCD)>> - <br>@@.red;LSCD is NaN, report this issue!@@ -<<elseif isNaN(_SCD)>> - <br>@@.red;SCD is NaN, report this issue!@@ -<<else>> /*More slaves than they know what to do with*/ - <<if $NPCSlaves > _SCD * 1.6>> - <<set _NPCSlavesSold = $NPCSlaves - Math.trunc(_SCD * 1.6), - $menialDemandFactor -= _NPCSlavesSold, - $NPCSlaves = Math.trunc(_SCD * 1.6)>> - <<if _NPCSlavesSold > 1>> - <br>@@.red;<<print _NPCSlavesSold>> slaves@@ were sold by your inhabitants. They've got more than enough of them already. - <<elseif _NPCSlavesSold > 0>> - <br>@@.red;One slave@@ was sold by your inhabitants. They've got more than enough of them already. - <</if>> - /*More slaves than there is work*/ - <<elseif $NPCSlaves > (_LSCD / _slaveProductivity) - $menials + _SCD>> - <<set _NPCSlavesSold = $NPCSlaves - Math.trunc(_LSCD / _slaveProductivity - $menials + _SCD), - $menialDemandFactor -= _NPCSlavesSold, - $NPCSlaves = Math.trunc(_LSCD / _slaveProductivity)>> - <<if _NPCSlavesSold > 1>> - <br>@@.red;<<print _NPCSlavesSold>> slaves@@ were sold by your inhabitants. There was so little work that they failed to earn their keep. - <<elseif _NPCSlavesSold > 0>> - <br>@@.red;One slave@@ was sold by your inhabitants. There was so little work that it failed to earn its keep. - <</if>> - /*Cutting back on slaves*/ - <<elseif $NPCSlaves > _SCD * 1.4>> - <<if $slaveCostFactor > 0.95>> - <<set _NPCSlavesSold = Math.trunc(($NPCSlaves - _SCD) * 0.4), - $menialDemandFactor -= _NPCSlavesSold, - $NPCSlaves -= _NPCSlavesSold>> - <<if _NPCSlavesSold > 1>> - <br>@@.red;<<print _NPCSlavesSold>> slaves@@ were sold by your inhabitants. They've got more than enough of them already. - <<elseif _NPCSlavesSold > 0>> - <br>@@.red;One slave@@ was sold by your inhabitants. They've got more than enough of them already. - <</if>> - <</if>> - /*Selling excess slaves for profit*/ - <<elseif $NPCSlaves > _SCD * 1.2>> - <<if $slaveCostFactor > 1.1>> - <<set _NPCSlavesSold = Math.trunc(($NPCSlaves - _SCD) * 0.4), - $menialDemandFactor -= _NPCSlavesSold, - $NPCSlaves -= _NPCSlavesSold>> - <<if _NPCSlavesSold > 1>> - <br>@@.red;<<print _NPCSlavesSold>> slaves@@ were sold by your inhabitants. They saw an opportunity for profit. - <<elseif _NPCSlavesSold > 0>> - <br>@@.red;One slave@@ was sold by your inhabitants. They saw an opportunity for profit. - <</if>> - <</if>> - <</if>> - /*Buying slaves because they are really cheap*/ - <<if $slaveCostFactor < 0.8>> - <<if $NPCSlaves < _SCD * 1.5>> - <<set _NPCSlavesBought = Math.trunc(_SCD * 0.05), - $menialSupplyFactor -= _NPCSlavesBought, - $NPCSlaves += _NPCSlavesBought>> - <<if _NPCSlavesBought > 1>> - <br>@@.green;<<print _NPCSlavesBought>> slaves@@ were bought by your inhabitants. They were too cheap to pass up on. - <</if>> /*there's no way this ever ends up needing a 1 slave version*/ - <</if>> - <</if>> -<</if>> - -/*Lower Class Citizens*/ -/*Work left for lower class citizens*/ -<<set _LCD = Math.trunc((($LSCBase * ($localEcon / 100)) + ($arcologies[0].prosperity * 4) + _lowerClass + (($middleClass + $visitors * 0.6) * 1.5) + (($upperClass + $visitors * 0.2) * 3.5) + ($topClass * 18) - ($NPCSlaves + $menials) * _slaveProductivity) * $rentEffectL * _lowerClassP)>> -<<if $classSatisfied.lowerClass != 0>> - <<set _LCD *= 1 + $classSatisfied.lowerClass * 0.06>> -<</if>> -<<if _LCD < 0>> - <<set _LCD = 0>> -<</if>> -<<if isNaN(_LCD)>> - <br>@@.red;LCD is NaN, report this issue!@@ -<<else>>/*Changing population depending on work available*/ - <br> - <<if $classSatisfied.lowerClass < 0>> - Your lower class is @@.red;sexually frustrated@@ and would rather live elsewhere. - <<elseif $classSatisfied.lowerClass > 0>> - Your lower class is @@.green;sexually satiated@@ and their happiness attracts others. - <</if>> - <<if $lowerClass < _LCD>> - <<if $arcologies[0].FSIntellectualDependencyLaw == 1>> /*Enslaving the dumb lower class immigrants*/ - <<set _LCImmigration = Math.trunc((_LCD - $lowerClass) * (0.3 * _terrain)) + 1, - _intellectualDependencyEnslaved = Math.trunc(_LCImmigration * 0.25), - _LCImmigration -= _intellectualDependencyEnslaved, - _enslaved += _intellectualDependencyEnslaved, - $lowerClass += _LCImmigration>> - @@.green;<<print _intellectualDependencyEnslaved>> dumb immigrants@@ were enslaved for their own good. - <<else>> - <<set _LCImmigration = Math.trunc((_LCD - $lowerClass) * (0.3 * _terrain)) + 1, - $lowerClass += _LCImmigration>> - <</if>> - <<if _LCImmigration > 1>> - @@.green;<<print _LCImmigration>> lower class citizens@@ moved to your arcology. - <<elseif _LCImmigration > 0>> - @@.green;One lower class citizen@@ moved to your arcology. - <</if>> - <<elseif $lowerClass > _LCD>> - <<set _LCEmigration = Math.trunc(($lowerClass - _LCD) * 0.6) + 1>> - <<if $policies.retirement.menial2Citizen == 1>> - <<set _enslavedEmigrants = Math.trunc((($lowerClass - _LCD) * 0.6) * _enslaveChance * (0.05 + _banishedRatio))>> - <<else>> - <<set _enslavedEmigrants = Math.trunc((($lowerClass - _LCD) * 0.6) * _enslaveChance)>> - <</if>> - <<set $lowerClass -= _LCEmigration, - _enslaved += _enslavedEmigrants>> - <<if _LCEmigration > 1>> - @@.red;<<print _LCEmigration>> lower class citizens@@ had no work and tried to leave your arcology. - <<if _enslavedEmigrants > 1>> - @@.green;<<print _enslavedEmigrants>> of them were enslaved instead.@@ - <<elseif _enslavedEmigrants > 0>> - @@.green;One of them was enslaved instead.@@ - <</if>> - <<elseif _LCEmigration > 0>> - @@.red;One lower class citizen@@ left your arcology due to a lack of work. - <</if>> - <</if>> - <<if _enslaved > 0>> - <<if _enslaved < 4>> - <<set _enslavedPC = 1, - _enslavedNPC = _enslaved - 1>> - <<else>> - <<set _enslavedPC = Math.trunc(_enslaved / 4), - _enslavedNPC = _enslaved - _enslavedPC>> - <</if>> - <<set $menials += _enslavedPC, - $NPCSlaves += _enslavedNPC>> - <</if>> - <<if _enslaved > 1>> - <br>In total @@.green;<<print _enslaved>> lower class citizens@@ were enslaved for failing to pay their debts. - <br>@@.green;You enslaved <<print _enslavedPC>>@@ of them while other debtholders in the arcology enslaved the remaining <<print _enslavedNPC>>. - <<elseif _enslaved > 0>> - <br>@@.green;As arcology owner you claimed the slave.@@ - <</if>> - /*Need more slaves still*/ - <<if $NPCSlaves < _SCD>> - <<set _NPCSlavesBought = Math.trunc((_SCD - $NPCSlaves) * 0.75) + 1, - $menialSupplyFactor -= _NPCSlavesBought, - $NPCSlaves += _NPCSlavesBought>> - <<if _NPCSlavesBought > 1>> - <br>@@.green;<<print _NPCSlavesBought>> slaves@@ were bought by your inhabitants. They did not have enough of them to satisfy their needs. - <<elseif _NPCSlavesBought > 0>> - <br>@@.green;One slave@@ was bought by your inhabitants. They did not quite have enough of them to satisfy their needs. - <</if>> - <</if>> -<</if>> - -/*Middle Class Citizens*/ -/*Demand for Middle Class*/ -<<set _MCD = Math.trunc((($MCBase * ($localEcon / 100)) + $arcologies[0].prosperity + _middleClass + ($NPCSlaves * 0.15) + ($lowerClass * 0.1) + (($upperClass + $visitors * 0.2) * 0.5) + ($topClass * 2.5)) * $rentEffectM * _middleClassP)>> -<<if $classSatisfied.middleClass != 0>> - <<set _MCD *= 1 + $classSatisfied.middleClass * 0.06>> -<</if>> -<<if _MCD < 200>> - <<set _MCD = 200>> -<</if>> -<<if isNaN(_MCD)>> - <br>@@.red;MCD is NaN, report this issue!@@ -<<else>> /*Middle Class Citizens immigrating*/ - <<if $classSatisfied.middleClass < 0>> - <br>Your middle class is @@.red;sexually frustrated@@ and would rather live elsewhere. - <<elseif $classSatisfied.middleClass > 0>> - <br>Your middle class is @@.green;sexually satiated@@ and their happiness attracts others. - <</if>> - <<if $middleClass < _MCD>> - <<set _MCImmigration = Math.trunc((_MCD - $middleClass) * (0.3 * _terrain)) + 1, - $middleClass += _MCImmigration>> - <<if _MCImmigration > 1>> - <br>@@.green;<<print _MCImmigration>> middle class citizens@@ moved to your arcology. - <<elseif _MCImmigration > 0>> - <br>@@.green;One middle class citizen@@ moved to your arcology. - <</if>> - /*Middle Class Citizens emigrating*/ - <<elseif $middleClass > _MCD>> - <<set _MCEmigration = Math.trunc(($middleClass - _MCD) * 0.6), - $middleClass -= _MCEmigration>> - <<if _MCEmigration > 1>> - <br>@@.red;<<print _MCEmigration>> middle class citizens@@ left your arcology. - <<elseif _MCEmigration > 0>> - <br>@@.red;One middle class citizen@@ left your arcology. - <</if>> - <</if>> -<</if>> - -/*Upper Class Citizens*/ -/*Demand for Upper Class*/ -<<set _UCD = Math.trunc((($UCBase * ($localEcon / 100)) + ($arcologies[0].prosperity * 0.2) + _upperClass + ($NPCSlaves * 0.02) + ($lowerClass * 0.025) + (($middleClass + $visitors * 0.6) * 0.05) + ($topClass * 0.3)) * $rentEffectU * _upperClassP)>> -<<if $classSatisfied.upperClass != 0>> - <<set _UCD *= 1 + $classSatisfied.upperClass * 0.06>> -<</if>> -<<if _UCD < 50>> - <<set _UCD = 50>> -<</if>> -<<if isNaN(_UCD)>> - <br>@@.red;UCD is NaN, report this issue!@@ -<<else>> /*Upper Class Citizens immigrating*/ - <<if $classSatisfied.upperClass < 0>> - <br>Your upper class is @@.red;sexually frustrated@@ and would rather live elsewhere. - <<elseif $classSatisfied.upperClass > 0>> - <br>Your upper class is @@.green;sexually satiated@@ and their happiness attracts others. - <</if>> - <<if $upperClass < _UCD>> - <<set _UCImmigration = Math.trunc((_UCD - $upperClass) * (0.3 * _terrain)) + 1, - $upperClass += _UCImmigration>> - <<if _UCImmigration > 1>> - <br>@@.green;<<print _UCImmigration>> upper class citizens@@ moved to your arcology. - <<elseif _UCImmigration > 0>> - <br>@@.green;One upper class citizen@@ moved to your arcology. - <</if>> - /*Upper Class Citizens Emigrating*/ - <<elseif $upperClass > _UCD>> - <<set _UCEmigration = Math.trunc(($upperClass - _UCD) * 0.6), - $upperClass -= _UCEmigration>> - <<if _UCEmigration > 1>> - <br>@@.red;<<print _UCEmigration>> upper class citizens@@ left your arcology. - <<elseif _UCEmigration > 0>> - <br>@@.red;One upper class citizen@@ left your arcology. - <</if>> - <</if>> -<</if>> - -/*Top Class Citizens*/ -/*Setting GDP depending on population*/ -<<set $GDP = Math.trunc((($NPCSlaves + $menials) * 0.35 * _slaveProductivity) + ($lowerClass * 0.35) + ($middleClass * 0.75) + ($upperClass * 2) + ($topClass * 10)) / 10>> -/*Top Class Interest in living in your arcology*/ -<<if $eliteFailTimer > 0>> /*when you fail the eugenics Elite and they leave this triggers*/ - <<set _TCD = Math.trunc(($GDP / 15 + _topClass) * $rentEffectT * _topClassP + $TCBase - ($eliteFail / 15 * $eliteFailTimer)), - $eliteFailTimer -= 1>> - <<if $classSatisfied.topClass != 0>> - <<set _TCD *= 1 + $classSatisfied.topClass * 0.06>> - <</if>> -<<else>> - <<set _TCD = Math.trunc(($GDP / 15 + _topClass) * $rentEffectT * _topClassP + $TCBase)>> - <<if $classSatisfied.topClass != 0>> - <<set _TCD *= 1 + $classSatisfied.topClass * 0.06>> - <</if>> -<</if>> -<<if _TCD < 15>> - <<set _TCD = 15>> -<</if>> -<<if isNaN(_TCD)>> - <br>@@.red;TCD is NaN, report this issue!@@ -<<else>> /*Top Class Citizens immigrating*/ - <<if $classSatisfied.topClass < 0>> - <br>Your millionaires are @@.red;sexually frustrated@@ and would rather live elsewhere. - <<elseif $classSatisfied.topClass > 0>> - <br>Your millionaires are @@.green;sexually satiated@@ and their happiness attracts others. - <</if>> - <<if $topClass < _TCD>> - <<set _TCImmigration = Math.trunc((_TCD - $topClass) * (0.3 * _terrain)) + 1, - $topClass += _TCImmigration>> - <<if _TCImmigration > 1>> - <br>@@.green;<<print _TCImmigration>> millionaires@@ moved to your arcology. /*Fat Cat? One-Percenter?*/ - <<elseif _TCImmigration > 0>> - <br>@@.green;One millionaire@@ moved to your arcology. - <</if>> - /*Top Class Citizens emigrating*/ - <<elseif $topClass > _TCD>> - <<set _TCEmigration = Math.trunc(($topClass - _TCD) * 0.6) + 1, - $topClass -= _TCEmigration>> - <<if _TCEmigration > 1>> - <br>@@.red;<<print _TCEmigration>> millionaires@@ left your arcology. - <<elseif _TCEmigration > 0>> - <br>@@.red;One millionaire@@ left your arcology. - <</if>> - <</if>> -<</if>> - -<</if>> /*ends _weatherFreeze*/ - -<<set $ASlaves = $NPCSlaves + $menials + $fuckdolls + $menialBioreactors>> -<<if $secExpEnabled > 0>> - <<set $ASlaves += $SecExp.buildings.secHub ? $SecExp.buildings.secHub.menials : 0 + App.SecExp.Manpower.employedSlave>> -<</if>> -<<set $ACitizens = $lowerClass + $middleClass + $upperClass + $topClass, -_percACitizens = Math.trunc(($ACitizens / ($ACitizens + $ASlaves)) * 1000) / 10, -_percASlaves = Math.trunc(($ASlaves / ($ACitizens + $ASlaves)) * 1000) / 10, -_percLowerClass = Math.trunc(($lowerClass / ($ACitizens + $ASlaves)) * 1000) / 10, -_percMiddleClass = Math.trunc(($middleClass / ($ACitizens + $ASlaves)) * 1000) / 10, -_percUpperClass = Math.trunc(($upperClass / ($ACitizens + $ASlaves)) * 1000) / 10, -_percTopClass = Math.trunc(($topClass / ($ACitizens + $ASlaves)) * 1000) / 10>> -<<if $cheatMode == 1>> - <br><br><<print $arcologies[0].prosperity>> Prosperity | <<print _FSScore>> FS Score | <<print _honeymoon>> Honeymoon | <<print _transportHub>> Transporthub | <<print _terrain>> Terrain | <<print _crime>> Crime - <br><<print _LSCD>> Lower + Slave Class Demand | <<print _SCD>> Slave Class Demand | <<print _slaveProductivity>> Slave Productivity - <br><<print _LCD>> Lower Class Demand | <<print _lowerClassP>> LC Multiplier - <br><<print _MCD>> Middle Class Demand | <<print _middleClassP>> MC Multiplier - <br><<print _UCD>> Upper Class Demand | <<print _upperClassP>> UC Multiplier - <br><<print _TCD>> Top Class Demand | <<print _topClassP>> TC Multiplier -<</if>> -<br> -<<print $arcologies[0].name>> is home to the following: -<br>Lower Class Citizens | <<print $lowerClass>> | <<print _percLowerClass>>% -<br>Middle Class Citizens | <<print $middleClass>> | <<print _percMiddleClass>>% -<br>Upper Class Citizens | <<print $upperClass>> | <<print _percUpperClass>>% -<br>Millionaires | <<print $topClass>> | <<print _percTopClass>>% -<br>Slaves | <<print $ASlaves>> | <<print _percASlaves>>% -<br> -<br><<if $arcologies[0].FSSupremacistLawME == 1>>The citizenry is entirely $arcologies[0].FSSupremacistRace.<</if>> -<<if $arcologies[0].FSRomanRevivalistLaw == 1>>The citizens take pride in their martial duties, preferring to wear utilitarian clothing even when off duty.<</if>> -<<if $arcologies[0].FSNeoImperialistLaw1 == 1>>You can occasionally see an Imperial Knight in full, noble battle-dress coordinating groups of organized citizen's militias, dressed in uniform liveries. Your citizens take pride in their fighting abilities.<</if>> -<<if $arcologies[0].FSGenderRadicalistDecoration == 100>>Every single one of the slaves is female by virtue of her fuckable asshole. -<<elseif $arcologies[0].FSGenderFundamentalistSMR == 1>>Almost every prominent citizen is an upstanding man, while the slave population is almost completely female.<</if>> -<<if $arcologies[0].FSEgyptianRevivalistLaw == 1>>Close relationships between citizens and slaves, especially slave siblings, are common.<<elseif $arcologies[0].FSEgyptianRevivalistIncestPolicy == 1>>Close relationships between citizens, slaves and siblings are common.<</if>> -<<if $arcologies[0].FSSubjugationistLawME == 1>><<= capFirstChar($arcologies[0].FSSubjugationistRace)>> subhumans form a majority of the slaves.<</if>> -<<if $arcologies[0].FSChattelReligionistLaw == 1>>The slave population as a whole is unusually accepting of its station.<</if>> -<<if $arcologies[0].FSPaternalistLaw == 1>>The slaves are well cared for, and it can sometimes be difficult to tell slaves from citizens. -<<elseif $arcologies[0].FSDegradationistLaw == 1>>Most of the slaves are recent captures, since the vicious society that's taken root here uses people up quickly.<</if>> -<<if $arcologies[0].FSBodyPuristLaw == 1>>The average slave is quite healthy. -<<elseif $arcologies[0].FSTransformationFetishistSMR == 1>> - <<if $arcologies[0].FSTransformationFetishistResearch == 1>> - Breast implants are almost universal; <<if $arcologies[0].FSSlimnessEnthusiast == "unset">>an M-cup bust is below average among the slave population<<else>>even the most lithe slave sports a pair of overly round chest balloons<</if>>. - <<else>> - Breast implants are almost universal; <<if $arcologies[0].FSSlimnessEnthusiast == "unset">>a D-cup bust is below average among the slave population.<<else>>even the most lithe slave sports a pair of overly round chest balloons<</if>>. - <</if>> -<</if>> -<<if $arcologies[0].FSIntellectualDependencySMR == 1>>The average slave is entirely dependent on its master. -<<elseif $arcologies[0].FSSlaveProfessionalismSMR == 1>>The average slave is entirely capable of acting on its master's behalf.<</if>> -<<if $arcologies[0].FSSlimnessEnthusiastSMR == 1>>Most of the slave population is quite slim and physically fit. -<<elseif $arcologies[0].FSAssetExpansionistSMR == 1>>The arcology's consumption of pharmaceuticals is impressive, since slave growth hormones are nearly ubiquitous.<</if>> -<<if $arcologies[0].FSPetiteAdmirationSMR == 1>>Slaves are both easy to identify, but hard to find in a crowd given their short stature. -<<elseif $arcologies[0].FSStatuesqueGlorificationSMR == 1>>$arcologies[0].name's <<if $arcologies[0].FSStatuesqueGlorificationLaw == 1>>entire<<else>>slave<</if>> population stands taller than most visitors.<</if>> -<<if $arcologies[0].FSRepopulationFocusLaw == 1>>Many of the women in the arcology are pregnant.<<elseif $arcologies[0].FSRepopulationFocusSMR == 1>>Most of the slaves in the arcology are pregnant.<<elseif $arcologies[0].FSRestartLaw == 1>>Many of your civilians have agreed to be sterilized.<<elseif $arcologies[0].FSRestartSMR == 1>>Many of slave slaves in your arcology are infertile.<</if>> -<<if $arcologies[0].FSPastoralistLaw == 1>>Much of the menial slave labor force works to service the arcology's hundreds of human cattle.<</if>> -<<if $arcologies[0].FSPhysicalIdealistSMR == 1>>The arcology must import a very large quantity of nutritive protein to nourish its slaves.<</if>> -<<if $arcologies[0].FSHedonisticDecadenceSMR == 1>>The arcology must import a very large quantity of fattening food to plump up its slaves.<</if>> - -<<if $ACitizens > $ASlaves*2>> /*This will need to go away Eventually*/ - Since most citizens do not own sex slaves, @@.yellowgreen;demand for sexual services is intense.@@ -<<elseif $ACitizens > $ASlaves>> - Since many citizens do not own sex slaves, @@.yellowgreen;demand for sexual services is healthy.@@ -<<elseif $ACitizens > $ASlaves*0.5>> - Since many citizens keep a personal sex slave, @@.yellow;demand for sexual services is only moderate.@@ -<<elseif $ACitizens > $ASlaves*0.25>> - Since most citizens keep at least one sex slave, @@.gold;local demand for sexual services is low,@@ though visitors to the arcology will always keep it above a certain minimum. -<<else>> - Since most of your citizens now keep private harems of sex slaves, @@.gold;local demand for sexual services is very low,@@ though visitors to the arcology will always keep it above a certain minimum. -<</if>> - -<br> -<<set _rentMultiplier = 1>> -<<if $arcologies[0].FSPaternalistLaw == 1>> - <<set _rentMultiplier *= 0.95>> - Tenants who can prove that they abstain from certain practices are given a reduction to their rent. -<</if>> -<<if $arcologies[0].FSYouthPreferentialistLaw == 1>> - <<set _rentMultiplier *= 0.95>> - Younger citizens are offered subsidized rent to encourage young people to join the free population of your arcology. -<<elseif $arcologies[0].FSMaturityPreferentialistLaw == 1>> - <<set _rentMultiplier *= 0.95>> - Older citizens are offered subsidized rent to encourage mature people to join the free population of your arcology. -<</if>> -<<if $arcologies[0].FSPetiteAdmirationLaw == 1>> - <<set _rentMultiplier *= 0.95>> - Citizens are offered subsidized rent to take drastically shorter partners and harem members. -<<elseif $arcologies[0].FSStatuesqueGlorificationLaw == 1>> - <<set _rentMultiplier *= 0.95>> - Tall citizens are offered rent subsidies, at the expense of short citizens, to encourage more statuesque individuals to join the free population of your arcology. -<</if>> -<<if $arcologies[0].FSRepopulationFocusLaw == 1>> - <<set _rentMultiplier *= 0.95>> - Pregnant citizens are offered subsidized rent to encourage free women to become pregnant and pregnant women to join the free population of your arcology. -<<elseif $arcologies[0].FSRestartLaw == 1>> - <<set _rentMultiplier *= 1.05>> - Non-Elite citizens who refuse to be sterilized face a moderate tax and the looming possibility of expulsion or enslavement. -<</if>> -<<if $arcologies[0].FSHedonisticDecadenceLaw == 1>> - <<set _rentMultiplier *= 0.95>> - Food vendors are offered subsidized rent and operating expenses to set up shop in your arcology. -<</if>> -<<if $secExpEnabled > 0>> - <<if $SecExp.edicts.alternativeRents == 1>> /*A silly policy*/ - Your citizens are allowed to pay their rents in slaves rather than cash and a few financially challenged individuals make use of this. - <<set _rentMultiplier *= 0.95>> - <<set _movement = random(0,3), $menials += _movement, $NPCSlaves -= _movement>> - <</if>> - <<if $SecExp.edicts.defense.discountMercenaries == 1>> - Mercenaries willing to come to your arcology are given a discount on rent. - <<set _rentMultiplier *= 0.98>> - <</if>> - <<if $SecExp.edicts.defense.privilege.militiaSoldier == 1>> - Citizens in the militia are exempt from rent payment. - <<set _rentMultiplier *= 0.98>> - <</if>> -<</if>> -<<if $arcologies[0].FSArabianRevivalistLaw == 1>> - <<set _rentMultiplier *= 1.05>> - Those of your citizens who have not yet subscribed to the society you are building are permitted to live and do business here, but must pay a moderate jizya tax for the privilege as part of their rent. -<</if>> -<<if $arcologies[0].FSNeoImperialistLaw2 == 1>> - <<set _rentMultiplier *= 1.05>> - Your Barons, equipped with golden bands as a symbol of office, flit about their assigned sections of the arcology to personally check up on businesses and punish petty criminals. They make any evasion of your rent extraordinarily diffcult, and consistently earn you more than they take. -<</if>> -<<set _rentMultiplier *= 1 + (5 - $baseDifficulty) / 20>> -<<set _rents = Math.trunc(($lowerClass * $rent.lowerClass + $middleClass * $rent.middleClass + $upperClass * $rent.upperClass + $topClass * $rent.topClass) * _rentMultiplier / 25)>> -<<if !Number.isInteger(_rents)>> - <br>@@.red;Error: rents is outside accepted range, please report this issue@@ -<<else>> - <<run cashX(_rents, "rents")>> -<</if>> - - -This week, rents from $arcologies[0].name came to @@.yellowgreen;<<print cashFormat(_rents)>>.@@ -<<if $difficultySwitch == 0>> - <<if $localEcon < 100>> - <<set _bribes = ($week*100)+random(-100,100)>> - <<if $cash > 1000>> - <<set _bribes += Math.trunc($cash*0.02)>> - <</if>> - The @@.red;degenerating world economy@@ makes supplying and maintaining $arcologies[0].name extremely difficult. This week, bribes and other costs to keep it running came to @@.yellowgreen;<<print cashFormat(_bribes)>>.@@ - <<set _bribes = forceNeg(_bribes)>> - <<run cashX(_bribes, "rents")>> - <</if>> -<</if>> - -<<if $menials+$menialBioreactors+$fuckdolls > 0>> -<<set _menialEarnings = 0,_bioreactorEarnings = 0,_fuckdollsEarnings = 0>> -You own -<<if $menials > 0>> - <<if $menials > Math.trunc(_LSCD / _slaveProductivity - _SCD)>> - <<set _menialEarnings += Math.trunc(_LSCD / _slaveProductivity - _SCD) * 10>> - @@.red;more menial slaves than there was work,@@ consider selling some.<br> You own - <<else>> - <<set _menialEarnings = $menials*10>> - <<if $Sweatshops > 0>> - <<if $Sweatshops*500 <= $menials>> - <<set _menialEarnings += $Sweatshops*7000>> - <<set _menialEarnings += ($menials-$Sweatshops*500)*10>> - <<else>> - <<set _menialEarnings += $menials*14>> - <</if>> - <</if>> - <</if>> - <<if $illegalDeals.menialDrug === 1>> - <<set Math.trunc(_menialEarnings *= 1.5)>> - <</if>> - <<if $menials > 1>> <<print num($menials)>> menial slaves<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><<else>>one menial slave<<if ($menialBioreactors > 0) && ($fuckdolls == 0)>> and<<else>>,<</if>><</if>> - <<run cashX(_menialEarnings, "menialTrades")>> -<</if>> - -<<if $menialBioreactors > 0>> - <<set _bioreactorEarnings = $menialBioreactors*(10+(10*$arcologies[0].FSPastoralistLaw))>> - <<if $dairy && $dairyUpgradeMenials>><<set _bioreactorEarnings += $menialBioreactors*5>><</if>> - <<if $menialBioreactors > 1>> <<print num($menialBioreactors)>> standard bioreactors,<<else>>one standard bioreactor,<</if>> - <<if $fuckdolls > 0>>and<</if>> - <<run cashX(_bioreactorEarnings, "menialBioreactors")>> -<</if>> - - -<<if $fuckdolls > 0>> - <<set _AL = App.Entity.facilities.arcade.employeesIDs().size>> - <<if ($fuckdolls > $arcade - _AL) && ($arcade > _AL)>> - <<set _fuckdollsArcade = $arcade - _AL>> - <<elseif $fuckdolls < $arcade - _AL>> - <<set _fuckdollsArcade = $fuckdolls>> - <<else>> - <<set _fuckdollsArcade = 0>> - <</if>> - <<if $arcadeUpgradeInjectors == 0>> - <<set _arcadeUpgradeInjectors = 0>> - <<elseif $arcadeUpgradeInjectors == 1>> - <<set _arcadeUpgradeInjectors = 1>> - <<else>> - <<set _arcadeUpgradeInjectors = 1.5>> - <</if>> - <<set _fuckdollsEarnings = Math.trunc((($fuckdolls - _fuckdollsArcade) * 140 + _fuckdollsArcade * (175 + 35 * _arcadeUpgradeInjectors)) * ($arcadePrice - 0.5) / 10)>> /*The "/ 10" at the end is just there to keep the price in line with other current prices, hopefully prices will get to a spot where this can be dropped*/ - <<if $fuckdolls > 1>> <<print num($fuckdolls)>> standard Fuckdolls,<<elseif $fuckdolls == 1>>one Fuckdoll,<</if>><<if _fuckdollsArcade > 1>> <<print num(_fuckdollsArcade)>> of which are stationed in the arcade,<<elseif _fuckdollsArcade == 1 && $fuckdolls > 1>>one of which is stationed in the arcade,<<elseif _fuckdollsArcade == 1>>which is stationed in the arcade,<</if>> - <<if $policies.publicFuckdolls == 1>> - <<run repX(_fuckdollsEarnings / 5, "fuckdolls")>> - <<set _fuckdollsEarnings = Math.trunc($fuckdolls * -0.5)>> /*The upkeep of a Fuckdoll*/ - <</if>> - <<run cashX(_fuckdollsEarnings, "fuckdolls")>> -<</if>> - -<<if _menialEarnings + _bioreactorEarnings + _fuckdollsEarnings > 0>> - earning you @@.yellowgreen;<<print cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)>>.@@ -<<else>> - costing you @@.red;<<print cashFormat(_menialEarnings + _bioreactorEarnings + _fuckdollsEarnings)>>@@ on account of your free Fuckdoll policy. -<</if>> -<<if $illegalDeals.menialDrug === 1>> - Your menial slave productivity has been boosted by performance enhancing drugs. -<</if>> -<</if>> - -<<set _AWeekGrowth = $AGrowth>> -<<if _AWeekGrowth+$arcologies[0].prosperity > $AProsperityCap>> - @@.yellow;$arcologies[0].name is at its maximum prosperity, so rents will not increase until it is improved.@@ -<<elseif (2*_AWeekGrowth)+$arcologies[0].prosperity >= $AProsperityCap>> - @@.yellow;Your arcology is nearly at its maximum prosperity.@@ - <<set $arcologies[0].prosperity += _AWeekGrowth>> -<<else>> - <<if $arcologies[0].ownership >= 100>> - Your controlling interest in $arcologies[0].name allows you to lead it economically, @@.green;supercharging growth.@@ - <<set _AWeekGrowth += 3>> - <<elseif $arcologies[0].ownership >= random(40,100)>> - Your interest in $arcologies[0].name allows you to lead it economically, @@.green;boosting growth.@@ - <<set _AWeekGrowth++>> - <</if>> - <<if $arcologies[0].prosperity < ($rep/100)>> - Your impressive reputation relative to $arcologies[0].name's prosperity @@.green;drives an increase in business.@@ - <<set _AWeekGrowth++>> - <<elseif $rep > 18000>> - <<elseif $arcologies[0].prosperity > ($rep/60)>> - Your low reputation relative to $arcologies[0].name's prosperity @@.red;seriously impedes business growth.@@ - <<set _AWeekGrowth -= 2>> - <<elseif $arcologies[0].prosperity > ($rep/80)>> - Your unimpressive reputation relative to $arcologies[0].name's prosperity @@.yellow;slows business growth.@@ - <<set _AWeekGrowth-->> - <</if>> - <<if $secExpEnabled > 0>> - <<if $SecExp.core.trade <= 20>> - <<set _AWeekGrowth += 1>> - <<elseif $SecExp.core.trade <= 40>> - <<set _AWeekGrowth += 2>> - <<elseif $SecExp.core.trade <= 60>> - <<set _AWeekGrowth += 3>> - <<elseif $SecExp.core.trade <= 80>> - <<set _AWeekGrowth += 4>> - <<else>> - <<set _AWeekGrowth += 5>> - <</if>> - - <<if $SecExp.smilingMan.progress === 10>> - The ex-criminal known to the world as The Smiling Man puts her impressive skills to work, improving the financial situation of the arcology with ease. - <<set _AWeekGrowth++>> - <</if>> - <</if>> - <<if $personalAttention == "business">> - <<if ($PC.skill.trading >= 100) || ($PC.career == "arcology owner")>> - Your @@.springgreen;business focus and your experience@@ allow you to greatly assist in advancing the arcology's prosperity. - <<set _AWeekGrowth += 2>> - <<else>> - Your business focus allows you to help improve the arcology's prosperity. - <<set _AWeekGrowth++>> - <</if>> - <<if $PC.actualAge >= 50>> - <<if $arcologies[0].FSMaturityPreferentialistLaw == 1>> - You are able to leverage your long seniority in the business community using the arcology's favorable laws to further advance prosperity. - <<set _AWeekGrowth++>> - <</if>> - <<elseif $PC.actualAge < 35>> - <<if $arcologies[0].FSYouthPreferentialistLaw == 1>> - You are able to leverage your freshness in the business community using the arcology's favorable laws to further advance prosperity. - <<set _AWeekGrowth++>> - <</if>> - <</if>> - <</if>> - <<if $arcologies[0].FSNull != "unset">> - Your cultural openness is a powerful driver of economic activity. - <<set _AWeekGrowth += Math.max(1,Math.trunc($arcologies[0].FSNull/25))>> - <</if>> - <<if $arcologies[0].FSRestart != "unset">> - Your powerful connections open many avenues of economic expansion. - <<set _AWeekGrowth += Math.max(1,Math.trunc($arcologies[0].FSRestart/10))>> - <</if>> - <<if $arcologies[0].FSPaternalist >= random(1,100)>> - This week, the careful attention to slave welfare your new society emphasizes has been a driver of prosperity. - <<set _AWeekGrowth++>> - <</if>> - <<if $arcologies[0].FSHedonisticDecadence >= random(1,100)>> - This week, several new businesses opened local branches or broke ground, greatly increasing prosperity. - <<set _AWeekGrowth += 2>> - <</if>> - <<if $arcologies[0].FSChattelReligionistCreed == 1>> - <<if $nicaea.focus == "owners">> - The focus on slaveowners' whims in the creed of $nicaea.name interests the rich and powerful, increasing prosperity. - <<set _AWeekGrowth += $nicaea.power>> - <</if>> - <</if>> - <<if $arcologies[0].FSSlaveProfessionalismLaw == 1>> - The concentrated intelligence of the free population finds innovative ways to spur prosperity. - <<set _AWeekGrowth++>> - <</if>> - <<if $arcologies[0].FSRomanRevivalist >= random(1,100)>> - This week, intense interest in your project to revive Roman values has driven prosperity. - <<set _AWeekGrowth++>> - <<elseif $arcologies[0].FSNeoImperialist >= random(1,100)>> - This week, your tightly hierarchical Imperial society's efficient organization has attracted traders and increased prosperity. - <<set _AWeekGrowth++>> - <<elseif $arcologies[0].FSChineseRevivalist != "unset">> - <<if ($HeadGirlID != 0) && ($RecruiterID != 0) && ($BodyguardID != 0)>> - This week, your imperial administration, staffed with a Head Girl, a Recruiter, and a Bodyguard, has improved prosperity. - <<set _AWeekGrowth += 2>> - <</if>> - <</if>> - <<if $PC.skill.trading >= 100>> - Your @@.springgreen;business skills@@ drive increased prosperity. - <<set _AWeekGrowth++>> - <<elseif $PC.career == "arcology owner">> - Your @@.springgreen;experience in the Free Cities@@ helps increase prosperity. - <<set _AWeekGrowth++>> - <</if>> - <<if _schools == 1>> - The presence of a slave school in the arcology improves the local economy. - <<elseif _schools > 0>> - The presence of slave schools in the arcology greatly improves the local economy. - <<elseif $arcologies[0].prosperity > 80>> - The lack of a branch campus from a reputable slave school is slowing further development of the local economy. - <<set _AWeekGrowth-->> - <</if>> - <<set _AWeekGrowth += _schools>> - <<if $arcologies[0].FSDegradationistLaw == 1>> - Requiring menials to be given time to fuck human sex toys in the arcade reduces labor efficiency, slowing growth and costs money for each menial slave you own. - <<set _AWeekGrowth-->> - <<run cashX(forceNeg($menials * 3 * $arcadePrice), "fuckdolls")>> - <</if>> - <<if $arcologies[0].FSBodyPuristLaw == 1>> - The drug surcharge used to fund the purity regime reduces growth. - <<set _AWeekGrowth-->> - <</if>> - <<if $arcologies[0].FSPastoralistLaw == 1>> - Prosperity improvement is slowed by the regulations on animal products. - <<set _AWeekGrowth-->> - <</if>> - <<if $arcologies[0].FSPaternalistSMR == 1>> - Your slave market regulations slow the flow of chattel through the arcology. - <<set _AWeekGrowth-->> - <</if>> - - /* deactivated with sec Exp as they are modifiers for the trade mechanic */ - <<if $secExpEnabled == 0>> - <<if $terrain == "urban">> - Since your arcology is located in the heart of an urban area, its commerce is naturally vibrant. - <<set _AWeekGrowth++>> - <</if>> - <<if $terrain == "ravine">> - Since your arcology is located in the heart of a ravine, its commerce is hindered by a lack of accessibility. - <<set _AWeekGrowth-->> - <</if>> - <</if>> - - <<if (def $arcologies[0].embargoTarget) && $arcologies[0].embargoTarget != -1>> - The local economy is hurt by the double edged sword of your economic warfare. - <<set _AWeekGrowth -= $arcologies[0].embargo*2>> - <</if>> - - <<set _desc = []>> - <<set _descNeg = []>> - <<for $i = 1; $i < $arcologies.length; $i++>> - <<set _opinion = App.Neighbor.opinion(0, $i)>> - <<if _opinion >= 100>> - <<set _desc.push($arcologies[$i].name)>> - <<elseif _opinion <= -100>> - <<set _descNeg.push($arcologies[$i].name)>> - <</if>> - <</for>> - <<if _desc.length > 0>> - Your arcology's economy benefits from close social alignment with - <<= _desc.reduce((res, ch, i, arr) => res + (i === arr.length - 1 ? ' and ' : ', ') + ch)>><<if _descNeg.length > 0>>, but<<else>>.<</if>> - <<set _AWeekGrowth += _desc.length>> - <</if>> - <<if _descNeg.length > 0>> - <<if _desc.length == 0>>Your arcology's economy<</if>> - is hindered by social conflicts with - <<= _descNeg.reduce((res, ch, i, arr) => res + (i === arr.length - 1 ? ' and ' : ', ') + ch)>>. - <<set _AWeekGrowth -= _descNeg.length>> - <</if>> - <<if $policies.alwaysSubsidizeGrowth == 1>> - Growth was subsidized as planned. - <<set _AWeekGrowth++>> - <</if>> - <<if $secExpEnabled > 0>> - <<if $SecExp.core.authority > 18000>> - Your authority is so high it discourages new business, slowing down the economic growth of the arcology. - <<set _AWeekGrowth-->> - <</if>> - <<if $SecExp.core.security > 80>> - Your arcology is extremely safe and stable. Many businesses are attracted to it because of this. - <<set _AWeekGrowth++>> - <<elseif $SecExp.core.security < 20>> - Your arcology's low security is an instability factor simply too dangerous to be ignored. Many businesses avoid your arcology because of this. - <<set _AWeekGrowth-->> - <</if>> - <<if $SecExp.edicts.weaponsLaw == 3>> - The free flow of weapons in your arcology has a positive impact on its economy. - <<set _AWeekGrowth++>> - <<elseif $SecExp.edicts.weaponsLaw == 2>> - The fairly liberal flow of weapons in your arcology has a positive impact on its economy. - <<set _AWeekGrowth++>> - <</if>> - <<if $SecExp.buildings.propHub && $SecExp.buildings.propHub.upgrades.controlLeaks > 0>> - The authenticity department prepares extremely accurate, but false financial reports, misleading many of your competitors, allowing your arcology more space to grow undisturbed. - <<set _AWeekGrowth++>> - <</if>> - <<if $SecExp.smilingMan.progress >= 2>> - <<if (def $SecExp.smilingMan.globalCrisisWeeks) && $SecExp.smilingMan.globalCrisisWeeks > 0>> - The great global crisis ignited by The Smiling Man plan is a great weight on the shoulders of everyone, causing great harm to the prosperity of the arcology. - <<set _AWeekGrowth -= random(2,4), $SecExp.smilingMan.globalCrisisWeeks-->> - <<elseif $SecExp.smilingMan.progress >= 3>> - With the global economy recovering from the great crisis unleashed by the Smiling Man, there is plenty of room to grow. Your arcology's prosperity benefits from this greatly. - <<set _AWeekGrowth++>> - <</if>> - <<if (def $SecExp.smilingMan.globalCrisisWeeks) && $SecExp.smilingMan.globalCrisisWeeks === 0>> - <<run delete $SecExp.smilingMan.globalCrisisWeeks>> - <</if>> - <</if>> - <<if $garrison.reactorTime > 0>> - The damage to the reactor caused by the last rebellion is extensive. Businesses and private citizens struggle to operate with the unreliable and limited energy production offered by the auxiliary generators. - It will still take <<if $garrison.reactorTime> 1>>$garrison.reactorTime weeks<<else>>a week<</if>> to finish repair works. - <<set _AWeekGrowth -= random(1,2)>> - <<set $garrison.reactorTime--, IncreasePCSkills('engineering', 0.1)>> - <</if>> - <</if>> - <<set _AWeekGrowth = Math.trunc(0.5*_AWeekGrowth)>> - <<if _AWeekGrowth > 0>> - Since $arcologies[0].name can support more citizens and more activity, @@.green;its prosperity improved this week.@@ - <<elseif _AWeekGrowth == 0>> - Though $arcologies[0].name can support more citizens and more activity, @@.yellow;growth was moribund this week.@@ - <<else>> - Though $arcologies[0].name can support more citizens and more activity, @@.red;it lost prosperity this week.@@ - <</if>> - <<if isNaN(_AWeekGrowth)>> - <br>@@.red;Error: AWeekGrowth is NaN@@ - <<else>> - <<set $arcologies[0].prosperity += _AWeekGrowth>> - <</if>> -<</if>> - -<<if $secExpEnabled > 0>> - <br><br> <<include "tradeReport">> -<</if>> - - -<<if _schools > 0>> -<br> - -<<if $TSS.schoolPresent == 1>> - <br> - The Slave School has a <<if $TSS.schoolProsperity > 4>>very prosperous<<elseif $TSS.schoolProsperity < -4>>struggling<<else>>thriving<</if>> branch campus in $arcologies[0].name. - <<if $TSS.schoolProsperity >= 10>> - It is one of the finest slave schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $TSS.subsidize = 0>> - <<set $TSS.schoolProsperity = 10>> - <</if>> - <<if $TSS.subsidize == 1>> - You have a policy of subsidizing them. - <<set $TSS.schoolProsperity++>> - <<elseif $TSS.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $TSS.schoolProsperity-->> - <</if>> -<</if>> - -<<if $TUO.schoolPresent == 1>> - <br> - The Utopian Orphanage has a <<if $TUO.schoolProsperity > 4>>very prosperous<<elseif $TUO.schoolProsperity < -4>>struggling<<else>>thriving<</if>> branch campus in $arcologies[0].name. - <<if $TUO.schoolProsperity >= 10>> - It is one of the finest slave schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $TUO.subsidize = 0>> - <<set $TUO.schoolProsperity = 10>> - <</if>> - <<if $TUO.subsidize == 1>> - You have a policy of subsidizing them. - <<set $TUO.schoolProsperity++>> - <<elseif $TUO.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $TUO.schoolProsperity-->> - <</if>> -<</if>> - - -<<if $GRI.schoolPresent == 1>> - <br> - The Growth Research Institute has a <<if $GRI.schoolProsperity > 4>>very prosperous<<elseif $GRI.schoolProsperity < -4>>struggling<<else>>thriving<</if>> subsidiary lab in $arcologies[0].name. - <<if $GRI.schoolProsperity >= 10>> - It is one of the finest research facilities in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $GRI.subsidize = 0, $GRI.schoolProsperity = 10>> - <</if>> - <<if $GRI.subsidize == 1>> - You have a policy of subsidizing them. - <<set $GRI.schoolProsperity++>> - <<elseif $GRI.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $GRI.schoolProsperity-->> - <</if>> -<</if>> - -<<if $TCR.schoolPresent == 1>> - <br> - The Cattle Ranch has a <<if $TCR.schoolProsperity > 4>>very prosperous<<elseif $TCR.schoolProsperity < -4>>struggling<<else>>thriving<</if>> local pasture in $arcologies[0].name. - <<if $TCR.schoolProsperity >= 10>> - It is one of the finest slave schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $TCR.subsidize = 0, $TCR.schoolProsperity = 10>> - <</if>> - <<if $TCR.subsidize == 1>> - You have a policy of subsidizing them. - <<set $TCR.schoolProsperity++>> - <<elseif $TCR.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $TCR.schoolProsperity-->> - <</if>> -<</if>> - -<<if $SCP.schoolPresent == 1>> - <br> - St. Claver Preparatory has a <<if $SCP.schoolProsperity > 4>>very prosperous<<elseif $SCP.schoolProsperity < -4>>struggling<<else>>thriving<</if>> branch campus in $arcologies[0].name. - <<if $SCP.schoolProsperity >= 10>> - It is one of the finest slave schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $SCP.subsidize = 0, $SCP.schoolProsperity = 10>> - <</if>> - <<if $SCP.subsidize == 1>> - You have a policy of subsidizing them. - <<set $SCP.schoolProsperity++>> - <<elseif $SCP.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $SCP.schoolProsperity-->> - <</if>> -<</if>> - -<<if $LDE.schoolPresent == 1>> - <br> - L'École des Enculées has a <<if $LDE.schoolProsperity > 4>>very prosperous<<elseif $LDE.schoolProsperity < -4>>struggling<<else>>thriving<</if>> branch campus in $arcologies[0].name. - <<if $LDE.schoolProsperity >= 10>> - It is one of the finest slave schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $LDE.subsidize = 0, $LDE.schoolProsperity = 10>> - <</if>> - <<if $LDE.subsidize == 1>> - You have a policy of subsidizing them. - <<set $LDE.schoolProsperity++>> - <<elseif $LDE.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $LDE.schoolProsperity-->> - <</if>> -<</if>> - -<<if $TGA.schoolPresent == 1>> - <br> - The Gymnasium-Academy has a <<if $TGA.schoolProsperity > 4>>very prosperous<<elseif $TGA.schoolProsperity < -4>>struggling<<else>>thriving<</if>> branch campus in $arcologies[0].name. - <<if $TGA.schoolProsperity >= 10>> - It is one of the finest slave schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $TGA.subsidize = 0, $TGA.schoolProsperity = 10>> - <</if>> - <<if $TGA.subsidize == 1>> - You have a policy of subsidizing them. - <<set $TGA.schoolProsperity++>> - <<elseif $TGA.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $TGA.schoolProsperity-->> - <</if>> -<</if>> - -<<if $TFS.schoolPresent == 1>> - <br> - The Futanari Sisters have a <<if $TFS.schoolProsperity > 4>>very prosperous<<elseif $TFS.schoolProsperity < -4>>struggling<<else>>thriving<</if>> community in $arcologies[0].name. - <<if $TFS.schoolProsperity >= 10>> - They are one of the most renowned futa societies in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $TFS.subsidize = 0, $TFS.schoolProsperity = 10>> - <</if>> - <<if $TFS.subsidize == 1>> - You have a policy of subsidizing them<<if ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>>, which is more effective due to your close relationship with them and your physical resemblance to them<<set $TFS.schoolProsperity++>><</if>>. - <<set $TFS.schoolProsperity++>> - <<elseif $TFS.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $TFS.schoolProsperity-->> - <</if>> -<</if>> - -<<if $HA.schoolPresent == 1>> - <br> - The Hippolyta Academy has a <<if $HA.schoolProsperity > 4>>very prosperous<<elseif $HA.schoolProsperity < -4>>struggling<<else>>thriving<</if>> branch in $arcologies[0].name. - <<if $HA.schoolProsperity >= 10>> - It is one of the most famous schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $HA.subsidize = 0, $HA.schoolProsperity = 10>> - <</if>> - <<if $HA.subsidize == 1>> - You have a policy of subsidizing them. - <<set $HA.schoolProsperity++>> - <<elseif $HA.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $HA.schoolProsperity-->> - <</if>> -<</if>> - -<<if $NUL.schoolPresent == 1>> - <br> - Nueva Universidad de Libertad has a <<if $NUL.schoolProsperity > 4>>very prosperous<<elseif $NUL.schoolProsperity < -4>>struggling<<else>>thriving<</if>> branch campus in $arcologies[0].name. - <<if $NUL.schoolProsperity >= 10>> - It is one of the finest slave schools in the world<<if $rep > 19000>>.<<else>>, @@.green;improving your reputation.@@<<run repX(200, "policies")>><</if>> - <<set $NUL.subsidize = 0, $NUL.schoolProsperity = 10>> - <</if>> - <<if $NUL.subsidize == 1>> - You have a policy of subsidizing them. - <<set $NUL.schoolProsperity++>> - <<elseif $NUL.subsidize == -1>> - You have a policy of covertly undermining them. - <<set $NUL.schoolProsperity-->> - <</if>> -<</if>> -<br> -<</if>> - -<<setAssistantPronouns>> -<<if $assistant.market && $assistant.market.limit > 0>> -<<set _popCap = menialPopCap()>> -<<set _menialSlaveValue = menialSlaveCost()>> -<br> -Your ''business assistant'' manages the menial slave market. -<<if _menialSlaveValue <= 900+$assistant.market.aggressiveness>>/* BUY */ - <<set _bulkMax = _popCap.value-$menials-$fuckdolls-$menialBioreactors>> - <<if _bulkMax <= 0>> - There is no room in the parts of your arcology you own for more menial slaves. - <<else>> - <<if $cash > $assistant.market.limit+_menialSlaveValue>> - <<set _menialBulkPremium = Math.trunc(1+Math.clamp(($cash-$assistant.market.limit)/_menialSlaveValue,0,_bulkMax)/400)>> - _HeM acquires more chattel, since it's a buyers' market. - <<if ($arcologies[0].FSPastoralist != "unset") && ($arcologies[0].FSPaternalist == "unset")>> - <<set $menialBioreactors += Math.trunc(Math.clamp(($cash-$assistant.market.limit)/(_menialSlaveValue+_menialBulkPremium-100),0,_bulkMax)), $menialSupplyFactor -= Math.trunc(Math.clamp(($cash-$assistant.market.limit)/(_menialSlaveValue+_menialBulkPremium-100),0,_bulkMax)), cashX(forceNeg(Math.trunc(Math.clamp(($cash-$assistant.market.limit)/(_menialSlaveValue+_menialBulkPremium-100),0,_bulkMax))*(_menialSlaveValue+_menialBulkPremium-100)), "menialBioreactorsTransferA")>> - <<elseif ($arcologies[0].FSDegradationist != "unset")>> - <<set $fuckdolls += Math.trunc(Math.clamp(($cash-$assistant.market.limit)/((_menialSlaveValue+_menialBulkPremium)*2),0,_bulkMax)), $menialSupplyFactor -= Math.trunc(Math.clamp(($cash-$assistant.market.limit)/((_menialSlaveValue+_menialBulkPremium)*2),0,_bulkMax)), cashX(forceNeg(Math.trunc(Math.clamp(($cash-$assistant.market.limit)/((_menialSlaveValue+_menialBulkPremium)*2),0,_bulkMax))*((_menialSlaveValue+_menialBulkPremium)*2)), "fuckdollsTransferA")>> - <<else>> - <<set $menials += Math.trunc(Math.clamp(($cash-$assistant.market.limit)/(_menialSlaveValue+_menialBulkPremium),0,_bulkMax)), $menialSupplyFactor -= Math.trunc(Math.clamp(($cash-$assistant.market.limit)/(_menialSlaveValue+_menialBulkPremium),0,_bulkMax)), cashX(forceNeg(Math.trunc(Math.clamp(($cash-$assistant.market.limit)/(_menialSlaveValue+_menialBulkPremium),0,_bulkMax)*(_menialSlaveValue+_menialBulkPremium))), "menialTransferA")>> - <</if>> - <</if>> - <</if>> -<<elseif _menialSlaveValue >= 1100-$assistant.market.aggressiveness>>/* SELL */ - <<if $menials+$fuckdolls+$menialBioreactors > 0>> - _HeM liquidates your chattel holdings, since it's a sellers' market. - <</if>> - <<if $menials > 0>> - <<set _cashX = $menials*(menialSlaveCost(-$menials)), $menialDemandFactor -= $menials, $menials = 0>> - <<run cashX(_cashX, "menialTransferA")>> - <</if>> - <<if $fuckdolls > 0>> - <<set _cashX = $fuckdolls*(menialSlaveCost(-$fuckdolls)*2), $menialDemandFactor -= $fuckdolls, $fuckdolls = 0>> - <<run cashX(_cashX, "fuckdollsTransferA")>> - <</if>> - <<if $menialBioreactors > 0>> - <<set _cashX = $menialBioreactors*(menialSlaveCost(-$menialBioreactors)-100), $menialDemandFactor -= $menialBioreactors, $menialBioreactors = 0>> - <<run cashX(_cashX, "menialBioreactorsTransferA")>> - <</if>> -<<else>> - Prices are average, so _heM does not make any significant moves. -<</if>> -<</if>> -<br> - -<span id="food"> - <<if $foodMarket > 0>> - <<include "Food Report">> - <</if>> -</span> diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw deleted file mode 100644 index 3cfca0248129a6a359a32e3c07796afc08c6cdf1..0000000000000000000000000000000000000000 --- a/src/uncategorized/brothelReport.tw +++ /dev/null @@ -1,362 +0,0 @@ -:: Brothel Report [nobr] - -<span id="brothel-stats"> -</span> - -<<set _slaves = App.Utils.sortedEmployees(App.Entity.facilities.brothel)>> -<<set _DL = _slaves.length, _SL = $slaves.length, $legendaryWhoreID = 0, _FLsFetish = 0, _profits = 0>> -<<set $legendaryWombID = 0>> -<<set _minBonus = 50, _maxBonus = 150>> - -<!-- Statistics gathering --> -<<set $facility = $facility || {}, $facility.brothel = initFacilityStatistics($facility.brothel)>> -<<set _brothelNameCaps = capFirstChar($brothelName)>> - -<<if ($MadamID != 0)>> - <<if (_S.Madam.health.condition < -80)>> - <<run improveCondition(_S.Madam, 20)>> - <<elseif _S.Madam.health.condition < -40>> - <<run improveCondition(_S.Madam, 15)>> - <<elseif _S.Madam.health.condition < 0>> - <<run improveCondition(_S.Madam, 10)>> - <<elseif _S.Madam.health.condition < 90>> - <<run improveCondition(_S.Madam, 7)>> - <</if>> - <<if _S.Madam.devotion <= 45>> - <<set _S.Madam.devotion += 5>> - <</if>> - <<if _S.Madam.trust < 45>> - <<set _S.Madam.trust += 5>> - <</if>> - <<if _S.Madam.rules.living != "luxurious">> - <<set _S.Madam.rules.living = "luxurious">> - <</if>> - <<if _S.Madam.rules.rest != "restrictive">> - <<set _S.Madam.rules.rest = "restrictive">> - <</if>> - <<if _S.Madam.fetishStrength <= 95>> - <<if _S.Madam.fetish != "dom">> - <<if fetishChangeChance(_S.Madam) > random(0,100)>> - <<set _FLsFetish = 1, _S.Madam.fetishKnown = 1, _S.Madam.fetish = "dom">> - <</if>> - <<elseif _S.Madam.fetishKnown == 0>> - <<set _FLsFetish = 1, _S.Madam.fetishKnown = 1>> - <<else>> - <<set _FLsFetish = 2, _S.Madam.fetishStrength += 4>> - <</if>> - <</if>> - /% Make sure we have registered living expenses as for any other slave %/ - <<run getSlaveStatisticData(_S.Madam, $facility.brothel)>> - <<setLocalPronouns _S.Madam>> - <<= SlaveFullName(_S.Madam)>> is serving as the Madam. - <<if _S.Madam.relationship == -3 && _S.Madam.devotion > 50>> - As your loving $wife, $he does $his best to attract attention to your brothel. - <</if>> - <<if (_FLsFetish == 1)>> - $He isn't above sampling the merchandise $himself; before long it's obvious to $his girls that $he <span class="fetish-gain">really likes fucking them.</span> - <<elseif (_FLsFetish == 2)>> - $He's careful that all of the whores under $his supervision are all warmed up and ready to get fucked every morning, and $he <span class="fetish inc">becomes more dominant.</span> - <</if>> - <<if (_S.Madam.skill.whoring <= 10)>> - Though _S.Madam.slaveName does $his best to manage the brothel, with $his lack of skill $he can do little. - <<elseif (_S.Madam.skill.whoring <= 30)>> - _S.Madam.slaveName's basic skills marginally <span class="cash inc">improve</span> business at $brothelName. - <<elseif (_S.Madam.skill.whoring <= 60)>> - _S.Madam.slaveName's skills <span class="cash inc">improve</span> business at $brothelName. - <<elseif (_S.Madam.skill.whoring < 100)>> - _S.Madam.slaveName's skills greatly <span class="cash inc">improve</span> business at $brothelName. - <<else>> - _S.Madam.slaveName's mastery immensely <span class="cash inc">improves</span> business at $brothelName. - <</if>> - <<if (_S.Madam.actualAge > 35)>> - $His age and experience also contribute. - <</if>> - <<if setup.madamCareers.includes(_S.Madam.career)>> - $He has experience from $his life before $he was a slave that helps $him in the seedy business of selling other people's bodies for sex. - <<elseif _S.Madam.skill.madam >= $masteredXP>> - $He has experience from working for you that helps $him in the seedy business of selling other people's bodies for sex. - <</if>> - <<if (_S.Madam.intelligence+_S.Madam.intelligenceImplant > 15)>> - $He is a clever manager. - <</if>> - <<if (_S.Madam.dick > 2) && (canPenetrate(_S.Madam))>> - $His turgid dick helps $him manage the bitches. - <</if>> - <<for _slave range _slaves>> - <<set $i = $slaveIndices[_slave.ID]>> /% for the included passages %/ - - <<if _S.Madam.rivalryTarget == _slave.ID>> - $He forces $his <<print rivalryTerm(_S.Madam)>>, to service all the men in the brothel. - <<set _slave.devotion -= 2, _slave.trust -= 2>> - <<if canDoVaginal(_slave)>> - <<run seX(_slave, "vaginal", "public", "penetrative", 10)>> - <</if>> - <<if canDoAnal(_slave)>> - <<run seX(_slave, "anal", "public", "penetrative", 12)>> - <</if>> - <<run seX(_slave, "anal", "public", "penetrative", 10)>> - <<if random(1,100) > 65>> - <<set _S.Madam.rivalry++, _slave.rivalry++>> - <</if>> - <<elseif _S.Madam.relationshipTarget == _slave.ID>> - <<setLocalPronouns _slave 2>> - $He dotes over $his <<print relationshipTerm(_S.Madam)>>, _slave.slaveName, making sure _he2 is safe, but unfortunately driving potential customers away from _him2. - <<set _slave.devotion++>> - <<elseif areRelated(_S.Madam, _slave)>> - <<setLocalPronouns _slave 2>> - $He pays special attention to $his <<print relativeTerm(_S.Madam,_slave)>>, _slave.slaveName, making sure _he2 is treated well and showing off _his2 skills. - <<set _slave.trust++>> - <</if>> - <<if _slave.prestigeDesc == "$He is a famed Free Cities whore, and commands top prices.">> - <<setLocalPronouns _slave 2>> - $He makes sure to promote _slave.slaveName, the famed whore, in order to capitalize on _his2 popularity. - <<elseif _slave.prestigeDesc == "$He is a famed Free Cities slut, and can please anyone.">> - <<setLocalPronouns _slave 2>> - $He makes sure to promote _slave.slaveName, the famed entertainer, in order to capitalize on _his2 popularity. - <<elseif _slave.prestigeDesc == "$He is remembered for winning best in show as a dairy cow.">> - <<setLocalPronouns _slave 2>> - <<if ($arcologies[0].FSPhysicalIdealist != "unset")>> - <<if (_slave.muscles > 60) && (_slave.weight < 30) && (_slave.lactation > 0) && ((_slave.boobs-_slave.boobsImplant) > 6000)>> - $He shows off how even a cow like _slave.slaveName can achieve physical perfection. - <<else>> - A<<if (_slave.muscles < 30)>>n unmuscled,<</if>><<if (_slave.weight > 30)>> fat,<</if>> 'prestigious' <<if (_slave.lactation > 0)>>cow<<elseif ((_slave.boobs-_slave.boobsImplant) > 6000)>>mass of titflesh<<else>>slave<</if>> like _slave.slaveName is woefully out of fashion, so _S.Madam.slaveName tries to draw attention away from _him2. - <</if>> - <<else>> - <<if (_slave.lactation > 0) && ((_slave.boobs-_slave.boobsImplant) > 6000)>> - $He makes sure to massage _slave.slaveName's huge breasts to get the milk flowing before enticing clients to suckle and play with _him2. - <<else>> - $He would like to show off _slave.slaveName's huge udders, but _slave.slaveName <<if (_slave.lactation == 0)>>isn't producing milk anymore<<else>>doesn't exactly have huge udders anymore<</if>>. - <</if>> - <</if>> - <<elseif _slave.prestigeDesc == "$He is remembered for winning best in show as a cockmilker.">> - <<setLocalPronouns _slave 2>> - <<if $arcologies[0].FSGenderFundamentalist != "unset">> /* this needs review - doesn't fit right. An XY slave would be expected to be masculine. */ - <<if (_slave.balls == 0) && (_slave.dick == 0) && (_slave.vagina > -1)>> - $He uses _slave.slaveName as an example of how even a huge-balled freak like _him2 can be restored to proper femininity. - <<else>> - $He tries to hide _slave.slaveName, 'her' body being notorious for its defiance of conventional femininity. - <</if>> - <<else>> - <<if ((_slave.balls > 5) && (_slave.dick != 0)) || ((_slave.balls > 4) && (_slave.dick != 0) && (_slave.prostate > 1))>> - $He shows off _slave.slaveName's copious loads by putting a condom over _his2 dick and teasing _him2 till _he2 bursts it. The show draws multiple clients that want to play with _his2 oversized junk and messy orgasms. - <<else>> - $He would love to show off _slave.slaveName's copious loads, but _slave.slaveName<<if _slave.dick == 0>> doesn't have a dick<<elseif _slave.balls == 0>>'s not producing cum<<else>>'s orgasms just aren't messy enough<</if>>. - <</if>> - <</if>> - <<elseif _slave.prestigeDesc == "$He is remembered for winning best in show as a breeder.">> - <<setLocalPronouns _slave 2>> - <<if _slave.bellyPreg >= 5000>> - $He makes sure _slave.slaveName's growing pregnancy is well taken care of, even if it means driving away potential customers away when the mother-to-be needs a rest. - <<elseif canGetPregnant(_slave)>> - $He makes sure to play off _slave.slaveName's fame and fertility by enticing potential customers to be the one to claim _his2 womb by filling it with their child. - <<else>> - $He would love to play off of _slave.slaveName's fame and fertility, but unfortunately _he2 <<if _slave.pregKnown == 1 && _slave.bellyPreg < 1500>>is already pregnant and not far enough along to show it<<elseif _slave.pregKnown == 1 && _slave.bellyPreg < 5000>>already pregnant, but not enough to be exciting<<else>>is unable to get knocked up<</if>>. - <</if>> - <</if>> - <</for>> - - <<if (_DL+$brothelSlavesGettingHelp < 10) && $MadamNoSex != 1 && !slaveResting(_S.Madam)>> - <<setLocalPronouns _S.Madam>> - <<set _oldCash = $cash>> - <<if $showEWD != 0>> - <br> $He <<= App.SlaveAssignment.whore(_S.Madam)>> - <<else>> - <<run App.SlaveAssignment.whore(_S.Madam)>> - <</if>> - <br> - $He whores $himself because $he doesn't have enough whores to manage to keep $him busy, and makes <span class="cash inc"><<print cashFormat(_S.Madam.lastWeeksCashIncome)>>.</span> $He can charge more for $his time, since many citizens find it erotic to fuck the Madam. - <<set _profits += $cash - _oldCash, _oldCash = $cash>> - <</if>> - <<if (_DL > 0)>><br><br><</if>> -<</if>> - -<<if (_DL > 0)>> - <div class="indent" style="font-weight:bold"> - <<if _DL != 1>> - There are _DL slave whores working out of $brothelName. - <<else>> - There is one slave whore working out of $brothelName. - <</if>> - </div> -<</if>> - -<<if $MadamID != 0>> - <<set $i = $slaveIndices[$MadamID]>> /* apply following SA passages to facility leader */ - <<if $showEWD != 0>> - <br><br> - /* 000-250-006 */ - <<if $seeImages && $seeReportImages>> - <div class="imageRef tinyImg"> - <<= SlaveArt(_S.Madam, 0, 0)>> - </div> - <</if>> - /* 000-250-006 */ - <<includeDOM App.EndWeek.favoriteIcon(_S.Madam)>> - <span class="slave-name"><<= SlaveFullName(_S.Madam)>></span> is serving as the Madam. - <br> - <<= App.SlaveAssignment.choosesOwnClothes(_S.Madam)>> - <<run tired(_S.Madam)>> - <<include "SA rules">> - <<= App.SlaveAssignment.diet(_S.Madam)>> - <<includeDOM App.SlaveAssignment.longTermEffects(_S.Madam)>> - <<= App.SlaveAssignment.drugs(_S.Madam)>> - <<= App.SlaveAssignment.relationships(_S.Madam)>> - <<= App.SlaveAssignment.rivalries(_S.Madam)>> - <br> <<= App.SlaveAssignment.devotion(_S.Madam)>> - <<else>> - <<silently>> - <<run App.SlaveAssignment.choosesOwnClothes(_S.Madam)>> - <<run tired(_S.Madam)>> - <<include "SA rules">> - <<run App.SlaveAssignment.diet(_S.Madam)>> - <<run App.SlaveAssignment.longTermEffects(_S.Madam)>> - <<run App.SlaveAssignment.drugs(_S.Madam)>> - <<run App.SlaveAssignment.relationships(_S.Madam)>> - <<run App.SlaveAssignment.rivalries(_S.Madam)>> - <<run App.SlaveAssignment.devotion(_S.Madam)>> - <</silently>> - <</if>> -<</if>> - -<<if (_DL > 0)>> - <<set _healthBonus = 0, _aphrod = 0>> - <<if ($brothelUpgradeDrugs == 1)>> - <<set _healthBonus += 1, _aphrod = 1>> - <<elseif ($brothelUpgradeDrugs == 2)>> - <<set _healthBonus += 3, _aphrod = 2>> - <</if>> - <<set _oldCash = $cash>> - <<for _slave range _slaves>> - <<set $i = $slaveIndices[_slave.ID]>> - <<setLocalPronouns _slave>> - <<if ($legendaryWombID == 0) && (!isAmputee(_slave)) && (_slave.preg > _slave.pregData.normalBirth/1.33) && (_slave.broodmother == 0) && (_slave.eggType == "human") && (_slave.counter.births > 10) && (_slave.devotion > 50) && (_slave.prestige == 0)>> - <<set $legendaryWombID = _slave.ID>> - <</if>> - <<if ($legendaryWhoreID == 0) && (_slave.skill.whoring >= 100) && (_slave.devotion > 50) && (_slave.prestige == 0)>> - <<set $legendaryWhoreID = _slave.ID>> - <</if>> - - /* Perform facility based rule changes */ - <<run improveCondition(_slave, _healthBonus)>> - <<set _slave.aphrodisiacs = _aphrod>> - <<switch $brothelDecoration>> - <<case "Degradationist" "standard">> - <<set _slave.rules.living = "spare">> - <<default>> - <<set _slave.rules.living = "normal">> - <</switch>> - <<if (_slave.health.condition < -80)>> - <<run improveCondition(_slave, 20)>> - <<elseif _slave.health.condition < -40>> - <<run improveCondition(_slave, 15)>> - <<elseif _slave.health.condition < 0>> - <<run improveCondition(_slave, 10)>> - <<elseif _slave.health.condition < 90>> - <<run improveCondition(_slave, 7)>> - <</if>> - <<if (_slave.devotion <= 20) && (_slave.trust >= -20)>> - <<set _slave.devotion -= 5, _slave.trust -= 5>> - <<elseif (_slave.devotion < 45)>> - <<set _slave.devotion += 4>> - <<elseif (_slave.devotion > 50)>> - <<set _slave.devotion -= 4>> - <</if>> - <<if (_slave.trust < 30)>> - <<set _slave.trust += 5>> - <</if>> - <<if _slave.energy > 40 && _slave.energy < 95>> - <<set _slave.energy++>> - <</if>> - - <<if $showEWD != 0>> - <br><br> - /* 000-250-006 */ - <<if $seeImages && $seeReportImages>> - <div class="imageRef tinyImg"> - <<= SlaveArt(_slave, 0, 0)>> - </div> - <</if>> - /* 000-250-006 */ - <<includeDOM App.EndWeek.favoriteIcon(_slave)>> - <span class="slave-name"><<= SlaveFullName(_slave)>></span> - <<if _slave.choosesOwnAssignment == 2>> - <<= App.SlaveAssignment.choosesOwnJob(_slave)>> - <<else>> - is working out of $brothelName. - <</if>> - <br> $He <<= App.SlaveAssignment.whore(_slave)>> - <br> - <<= App.SlaveAssignment.choosesOwnClothes(_slave)>> - <<include "SA rules">> - <<= App.SlaveAssignment.diet(_slave)>> - <<includeDOM App.SlaveAssignment.longTermEffects(_slave)>> - <<= App.SlaveAssignment.drugs(_slave)>> - <<= App.SlaveAssignment.relationships(_slave)>> - <<= App.SlaveAssignment.rivalries(_slave)>> - <br> <<= App.SlaveAssignment.devotion(_slave)>> - <<else>> - <<silently>> - <<run App.SlaveAssignment.choosesOwnJob(_slave)>> - <<run App.SlaveAssignment.whore(_slave)>> - <<run App.SlaveAssignment.choosesOwnClothes(_slave)>> - <<include "SA rules">> - <<run App.SlaveAssignment.diet(_slave)>> - <<run App.SlaveAssignment.longTermEffects(_slave)>> - <<run App.SlaveAssignment.drugs(_slave)>> - <<run App.SlaveAssignment.relationships(_slave)>> - <<run App.SlaveAssignment.rivalries(_slave)>> - <<run App.SlaveAssignment.devotion(_slave)>> - <</silently>> - <</if>> - - <<set _seed = Math.max(App.Ads.getMatchedCategoryCount(_slave, "brothel"), 1)>> - <<set _adsIncome = _seed * random(50,60) * Math.trunc($brothelAdsSpending/1000)>> - <<set _cashX = _adsIncome, getSlaveStatisticData(_slave, $facility.brothel).adsIncome += _adsIncome>> - <<run cashX(_cashX, "brothelAds")>> - <</for>> - - <p> - <<= App.Ads.report("brothel")>> - </p> - - <<set _profits += $cash-_oldCash>> - <!-- Record statistics gathering --> - <<script>> - var b = State.variables.facility.brothel; - b.whoreIncome = 0; - b.customers = 0; - b.whoreCosts = 0; - b.rep = 0; - for (var si of b.income.values()) { - b.whoreIncome += si.income + si.adsIncome; - b.customers += si.customers; - b.whoreCosts += si.cost; - b.rep += si.rep; - } - b.adsCosts = State.variables.brothelAdsSpending; - b.maintenance = State.variables.brothel * State.variables.facilityCost * (1.0 + 0.2 * State.variables.brothelUpgradeDrugs); - b.totalIncome = b.whoreIncome + b.adsIncome; - b.totalExpenses = b.whoreCosts + b.adsCosts + b.maintenance; - b.profit = b.totalIncome - b.totalExpenses; - <</script>> - - _brothelNameCaps makes you <span class="cash inc"><<print cashFormat(_profits)>></span> this week. - - <<if $brothelDecoration != "standard">> - <p> - _brothelNameCaps's customers enjoyed <span class="reputation inc">fucking whores in $brothelDecoration surroundings.</span> - </p> - <</if>> - - <!-- Statistics output --> - <<includeDOM App.Facilities.Brothel.Stats(false)>> - <<timed 50ms>> - <<replace #brothel-stats>> - <<includeDOM App.Facilities.Brothel.Stats(true)>> - <</replace>> - <</timed>> -<</if>> - -<<if _DL > 0 || $MadamID != 0>> - <br><br> -<</if>> diff --git a/src/uncategorized/cellblockReport.tw b/src/uncategorized/cellblockReport.tw index 7c0555e8fce51ef3ce1a0f3423485b973f0c9137..8a2d3b4426fdf6360f035987da697c5d79beae08 100644 --- a/src/uncategorized/cellblockReport.tw +++ b/src/uncategorized/cellblockReport.tw @@ -141,7 +141,7 @@ <br> <<= App.SlaveAssignment.choosesOwnClothes($slaves[$i])>> <<run tired($slaves[$i])>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules($slaves[$i])>> <<= App.SlaveAssignment.diet($slaves[$i])>> <<includeDOM App.SlaveAssignment.longTermEffects($slaves[$i])>> <<= App.SlaveAssignment.drugs($slaves[$i])>> @@ -149,17 +149,15 @@ <<= App.SlaveAssignment.rivalries($slaves[$i])>> <br> <<= App.SlaveAssignment.devotion($slaves[$i])>> <<else>> - <<silently>> <<run App.SlaveAssignment.choosesOwnClothes($slaves[$i])>> <<run tired($slaves[$i])>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules($slaves[$i])>> <<run App.SlaveAssignment.diet($slaves[$i])>> <<run App.SlaveAssignment.longTermEffects($slaves[$i])>> <<run App.SlaveAssignment.drugs($slaves[$i])>> <<run App.SlaveAssignment.relationships($slaves[$i])>> <<run App.SlaveAssignment.rivalries($slaves[$i])>> <<run App.SlaveAssignment.devotion($slaves[$i])>> - <</silently>> <</if>> <</if>> @@ -263,7 +261,7 @@ <</if>> <br> $He <<= App.SlaveAssignment.stayConfined(_slave)>> <br> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_slave)>> <<= App.SlaveAssignment.diet(_slave)>> <<includeDOM App.SlaveAssignment.longTermEffects(_slave)>> <<= App.SlaveAssignment.drugs(_slave)>> @@ -274,7 +272,7 @@ <<silently>> <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.stayConfined(_slave)>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules(_slave)>> <<run App.SlaveAssignment.diet(_slave)>> <<run App.SlaveAssignment.longTermEffects(_slave)>> <<run App.SlaveAssignment.drugs(_slave)>> diff --git a/src/uncategorized/clubReport.tw b/src/uncategorized/clubReport.tw index e9d427d33e362bedd62d1b7507d34f0b02320a58..c7a90861626efa418ba0b9d01d45b18888383d61 100644 --- a/src/uncategorized/clubReport.tw +++ b/src/uncategorized/clubReport.tw @@ -120,7 +120,7 @@ <br> <<= App.SlaveAssignment.choosesOwnClothes(_S.DJ)>> <<run tired(_S.DJ)>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_S.DJ)>> <<= App.SlaveAssignment.diet(_S.DJ)>> <<includeDOM App.SlaveAssignment.longTermEffects(_S.DJ)>> <<= App.SlaveAssignment.drugs(_S.DJ)>> @@ -128,17 +128,15 @@ <<= App.SlaveAssignment.rivalries(_S.DJ)>> <br> <<= App.SlaveAssignment.devotion(_S.DJ)>> <<else>> - <<silently>> <<run App.SlaveAssignment.choosesOwnClothes(_S.DJ)>> <<run tired(_S.DJ)>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules(_S.DJ)>> <<run App.SlaveAssignment.diet(_S.DJ)>> <<run App.SlaveAssignment.longTermEffects(_S.DJ)>> <<run App.SlaveAssignment.drugs(_S.DJ)>> <<run App.SlaveAssignment.relationships(_S.DJ)>> <<run App.SlaveAssignment.rivalries(_S.DJ)>> <<run App.SlaveAssignment.devotion(_S.DJ)>> - <</silently>> <</if>> <</if>> @@ -197,7 +195,7 @@ <br> $He <<= App.SlaveAssignment.serveThePublic(_slave)>> <br> <<= App.SlaveAssignment.choosesOwnClothes(_slave)>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_slave)>> <<= App.SlaveAssignment.diet(_slave)>> <<includeDOM App.SlaveAssignment.longTermEffects(_slave)>> <<= App.SlaveAssignment.drugs(_slave)>> @@ -205,18 +203,16 @@ <<= App.SlaveAssignment.rivalries(_slave)>> <br> <<= App.SlaveAssignment.devotion(_slave)>> <<else>> - <<silently>> <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.serveThePublic(_slave)>> <<run App.SlaveAssignment.choosesOwnClothes(_slave)>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_slave)>> <<run App.SlaveAssignment.diet(_slave)>> <<run App.SlaveAssignment.longTermEffects(_slave)>> <<run App.SlaveAssignment.drugs(_slave)>> <<run App.SlaveAssignment.relationships(_slave)>> <<run App.SlaveAssignment.rivalries(_slave)>> <<run App.SlaveAssignment.devotion(_slave)>> - <</silently>> <</if>> <</for>> <p> diff --git a/src/uncategorized/dairyReport.tw b/src/uncategorized/dairyReport.tw index 8fc702d6f8aab12ac4bb7b85f9c3f867270e7845..14409cb005a55d468e4c80bb3a27c6ac6a8493d4 100644 --- a/src/uncategorized/dairyReport.tw +++ b/src/uncategorized/dairyReport.tw @@ -310,7 +310,7 @@ <br> <<= App.SlaveAssignment.choosesOwnClothes(_S.Milkmaid)>> <<run tired(_S.Milkmaid)>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_S.Milkmaid)>> <<= App.SlaveAssignment.diet(_S.Milkmaid)>> <<includeDOM App.SlaveAssignment.longTermEffects(_S.Milkmaid)>> <<= App.SlaveAssignment.drugs(_S.Milkmaid)>> @@ -318,17 +318,15 @@ <<= App.SlaveAssignment.rivalries(_S.Milkmaid)>> <br> <<= App.SlaveAssignment.devotion(_S.Milkmaid)>> <<else>> - <<silently>> <<run App.SlaveAssignment.choosesOwnClothes(_S.Milkmaid)>> <<run tired(_S.Milkmaid)>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules(_S.Milkmaid)>> <<run App.SlaveAssignment.diet(_S.Milkmaid)>> <<run App.SlaveAssignment.longTermEffects(_S.Milkmaid)>> <<run App.SlaveAssignment.drugs(_S.Milkmaid)>> <<run App.SlaveAssignment.relationships(_S.Milkmaid)>> <<run App.SlaveAssignment.rivalries(_S.Milkmaid)>> <<run App.SlaveAssignment.devotion(_S.Milkmaid)>> - <</silently>> <</if>> <</if>> @@ -418,7 +416,7 @@ <<set _milkResults = App.SlaveAssignment.getMilked(_slave)>> <br> $He <<= _milkResults.text>> <br> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_slave)>> <<= App.SlaveAssignment.diet(_slave)>> <<includeDOM App.SlaveAssignment.longTermEffects(_slave)>> <<= App.SlaveAssignment.drugs(_slave)>> @@ -426,17 +424,15 @@ <<= App.SlaveAssignment.rivalries(_slave)>> <br> <<= App.SlaveAssignment.devotion(_slave)>> <<else>> - <<silently>> <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<set _milkResults = App.SlaveAssignment.getMilked(_slave)>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules(_slave)>> <<run App.SlaveAssignment.diet(_slave)>> <<run App.SlaveAssignment.longTermEffects(_slave)>> <<run App.SlaveAssignment.drugs(_slave)>> <<run App.SlaveAssignment.relationships(_slave)>> <<run App.SlaveAssignment.rivalries(_slave)>> <<run App.SlaveAssignment.devotion(_slave)>> - <</silently>> <</if>> <<set _milkWeek += _milkResults.milk, _cumWeek += _milkResults.cum>> @@ -488,8 +484,7 @@ <</if>> <<elseif $dairyImplantsSetting == 3>> <<if (_slave.lactation < 1) && (_slave.boobs > 300 || _slave.balls == 0)>> - <<set _slave.induceLactation += 9>> - <<run induceLactation(_slave)>> + <<run induceLactation(_slave, 9)>> <</if>> <</if>> <</if>> diff --git a/src/uncategorized/economics.tw b/src/uncategorized/economics.tw index 4a93c66ac5dfe5ec3f3b57ea1b8f53418760bd38..5b1bcdbb510c9fcac94c0b59a81c69a43e61bca3 100644 --- a/src/uncategorized/economics.tw +++ b/src/uncategorized/economics.tw @@ -1,6 +1,8 @@ :: Economics [nobr] -<h1> <<print $arcologies[0].name + " Weekly Financial Report — Week " + $week>></h1> +<h1> + <<print $arcologies[0].name + " Weekly Financial Report — Week " + $week>> +</h1> <<set $nextButton = "Continue", $nextLink = "Scheduled Event">> @@ -16,123 +18,119 @@ <br><br> <<if $useTabs == 0>> -<<include "Neighbors Development">> - -<br> -<<include "Arcology Management">> - -<<if $FSAnnounced > 0>> - <br><br> - <<include "FS Developments">> -<</if>> - -<<if $corp.Incorporated == 1>> - <br><br> - <<include "Corporation Developments">> -<</if>> - -<<if $secExpEnabled > 0>> + <<include "Neighbors Development">> <br> - <<include "authorityReport">> - <<include "securityReport">> -<</if>> - -<<include "Reputation">> -<br> <<include "Personal Business">> - -<<if $PC.boobs >= 1000 || $PC.pregKnown == 1 || $playerAging != 0>> - <br><br> - <<include "Personal Notes">> -<</if>> - -<<else>> -<body> + <<includeDOM App.EndWeek.arcmgmt()>> -<div class="tab-bar"> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Arcologies')" id="defaultOpen">Arcologies</button> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Management')">Arcology Management</button> <<if $FSAnnounced > 0>> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Societies')">Society Development</button> + <br><br> + <<include "FS Developments">> <</if>> + <<if $corp.Incorporated == 1>> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Corporation')">Corporation Developments</button> + <br><br> + <<include "Corporation Developments">> <</if>> + <<if $secExpEnabled > 0>> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Authority')">Authority</button> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'securityReport')">Security</button> + <br> + <<include "authorityReport">> + <<include "securityReport">> <</if>> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Reputation')">Reputation</button> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Business')">Personal Business</button> + + <<includeDOM App.EndWeek.reputation()>> + <<includeDOM App.EndWeek.personalBusiness()>> + <<if $PC.boobs >= 1000 || $PC.pregKnown == 1 || $playerAging != 0>> - <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Personal')">Personal Notes</button> + <<includeDOM App.EndWeek.personalNotes()>> <</if>> -</div> - -<div id="Arcologies" class="tab-content"> - <div class="content"> - <<include "Neighbors Development">> - </div> -</div> - -<div id="Management" class="tab-content"> - <div class="content"> - <<include "Arcology Management">> - </div> -</div> - -<<if $FSAnnounced > 0>> - <div id="Societies" class="tab-content"> - <div class="content"> - <<include "FS Developments">> - </div> - </div> -<</if>> -<<if $corp.Incorporated == 1>> - <div id="Corporation" class="tab-content"> - <div class="content"> - <<include "Corporation Developments">> +<<else>> + <body> + <div class="tab-bar"> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Arcologies')" id="defaultOpen">Arcologies</button> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Management')">Arcology Management</button> + <<if $FSAnnounced > 0>> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Societies')">Society Development</button> + <</if>> + <<if $corp.Incorporated == 1>> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Corporation')">Corporation Developments</button> + <</if>> + <<if $secExpEnabled > 0>> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Authority')">Authority</button> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'securityReport')">Security</button> + <</if>> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Reputation')">Reputation</button> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Business')">Personal Business</button> + <<if $PC.boobs >= 1000 || $PC.pregKnown == 1 || $playerAging != 0>> + <button class="tab-links" onclick="App.UI.tabBar.openTab(event, 'Personal')">Personal Notes</button> + <</if>> </div> - </div> -<</if>> -<<if $secExpEnabled > 0>> - <div id="Authority" class="tab-content"> - <div class="content"> - <<include "authorityReport">> + <div id="Arcologies" class="tab-content"> + <div class="content"> + <<include "Neighbors Development">> + </div> </div> - </div> - <div id="securityReport" class="tab-content"> - <div class="content"> - <<include "securityReport">> + <div id="Management" class="tab-content"> + <div class="content"> + <<includeDOM App.EndWeek.arcmgmt()>> + </div> </div> - </div> -<</if>> -<div id="Reputation" class="tab-content"> - <div class="content"> - <<include "Reputation">> - </div> -</div> - -<div id="Business" class="tab-content"> - <div class="content"> - <<include "Personal Business">> - </div> -</div> - -<<if $PC.boobs >= 1000 || $PC.pregKnown == 1 || $playerAging != 0>> - <div id="Personal" class="tab-content"> - <div class="content"> - <<include "Personal Notes">> + <<if $FSAnnounced > 0>> + <div id="Societies" class="tab-content"> + <div class="content"> + <<include "FS Developments">> + </div> + </div> + <</if>> + + <<if $corp.Incorporated == 1>> + <div id="Corporation" class="tab-content"> + <div class="content"> + <<include "Corporation Developments">> + </div> + </div> + <</if>> + + <<if $secExpEnabled > 0>> + <div id="Authority" class="tab-content"> + <div class="content"> + <<include "authorityReport">> + </div> + </div> + + <div id="securityReport" class="tab-content"> + <div class="content"> + <<include "securityReport">> + </div> + </div> + <</if>> + + <div id="Reputation" class="tab-content"> + <div class="content"> + <<includeDOM App.EndWeek.reputation()>> + </div> </div> - </div> -<</if>> -<script> - document.getElementById("defaultOpen").click(); -</script> + <div id="Business" class="tab-content"> + <div class="content"> + <<includeDOM App.EndWeek.personalBusiness()>> + </div> + </div> -</body> + <<if $PC.boobs >= 1000 || $PC.pregKnown == 1 || $playerAging != 0>> + <div id="Personal" class="tab-content"> + <div class="content"> + <<includeDOM App.EndWeek.personalNotes()>> + </div> + </div> + <</if>> + + <script> + document.getElementById("defaultOpen").click(); + </script> + </body> <</if>> \ No newline at end of file diff --git a/src/uncategorized/fsDevelopments.tw b/src/uncategorized/fsDevelopments.tw index 5ad4adc2711d80853f8677c3c580c265df6bae75..496deec9a047302de68c3da0da50a252522d54ba 100644 --- a/src/uncategorized/fsDevelopments.tw +++ b/src/uncategorized/fsDevelopments.tw @@ -73,11 +73,9 @@ <</if>> <</if>> -<<if $secExpEnabled > 0>> - <<set _propagandaEffects = App.SecExp.propagandaEffects("social engineering")>> - _propagandaEffects.text - <<set _broadProgress += _propagandaEffects.effect>> -<</if>> +<<set _propagandaEffects = App.SecExp.propagandaEffects("social engineering")>> +_propagandaEffects.text +<<set _broadProgress += _propagandaEffects.effect>> <<if $terrain == "urban">> The @@.yellow;urban location@@ of the arcology naturally promotes cultural interchange, holding back $arcologies[0].name's cultural independence. @@ -464,6 +462,7 @@ <</if>> <br><br> + <<setAssistantPronouns>> With _hisA $assistant.appearance appearance, $assistant.name's public visibility meshes <<if _seed == 2>>very well<<elseif _seed == 1>>well<</if>> with society. <</if>> diff --git a/src/uncategorized/fullReport.tw b/src/uncategorized/fullReport.tw index b840e0372b1b9ce87864ac6ce1dbe038807d60fb..95d64be55e6178b8149b4e3c8b328f271593c277 100644 --- a/src/uncategorized/fullReport.tw +++ b/src/uncategorized/fullReport.tw @@ -61,17 +61,15 @@ <</if>> <<if $showEWD == 0>> - <<silently>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules($slaves[$i])>> <<run App.SlaveAssignment.choosesOwnClothes($slaves[$i])>> <<run App.SlaveAssignment.diet($slaves[$i])>> <<run App.SlaveAssignment.longTermEffects($slaves[$i])>> <<run App.SlaveAssignment.drugs($slaves[$i])>> <<run App.SlaveAssignment.relationships($slaves[$i])>> <<run App.SlaveAssignment.rivalries($slaves[$i])>> - <</silently>> <<else>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules($slaves[$i])>> <<= App.SlaveAssignment.choosesOwnClothes($slaves[$i])>> <<= App.SlaveAssignment.diet($slaves[$i])>> <<includeDOM App.SlaveAssignment.longTermEffects($slaves[$i])>> diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw index 427fac1b04748c5a875a4ab9f56e4394bf841622..4ce25632e4ee77e3e9ae5536109346081d4a617d 100644 --- a/src/uncategorized/nextWeek.tw +++ b/src/uncategorized/nextWeek.tw @@ -299,7 +299,7 @@ <<set $boobsID = -1, $boobsInterestTargetID = -1, $buttslutID = -1, $buttslutInterestTargetID = -1, $cumslutID = -1, $cumslutInterestTargetID = -1, $humiliationID = -1, $humiliationInterestTargetID = -1, $sadistID = -1, $sadistInterestTargetID = -1, $masochistID = -1, $masochistInterestTargetID = -1, $domID = -1, $dominantInterestTargetID = -1, $subID = -1, $submissiveInterestTargetID = -1, $shelterGirlID = -1>> /% Other arrays %/ -<<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $RecETSevent = [], $REFIevent = [], $REFSevent = [], $PESSevent = [], $PETSevent = [], $FSAcquisitionEvents = [], $FSNonconformistEvents = [], $REAnalCowgirlSubIDs = [], $REButtholeCheckinIDs = [], $recruit = [], $RETasteTestSubIDs = [], $rebelSlaves = [], $REBoobCollisionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $RESadisticDescriptionSubIDs = [], $REShowerForceSubIDs = [], $RECockmilkInterceptionIDs = [], $REInterslaveBeggingIDs = [], $bedSlaves = [], $eligibleSlaves = []>> +<<set $events = [], $RESSevent = [], $RESSTRevent = [], $RETSevent = [], $RECIevent = [], $RecETSevent = [], $REFIevent = [], $REFSevent = [], $PESSevent = [], $PETSevent = [], $FSAcquisitionEvents = [], $FSNonconformistEvents = [], $REAnalCowgirlSubIDs = [], $REButtholeCheckinIDs = [], $recruit = [], $RETasteTestSubIDs = [], $rebelSlaves = [], $REBoobCollisionSubIDs = [], $REIfYouEnjoyItSubIDs = [], $RESadisticDescriptionSubIDs = [], $REShowerForceSubIDs = [], $RECockmilkInterceptionIDs = [], $REInterslaveBeggingIDs = [], $eligibleSlaves = []>> /% Slave Objects using 0 instead of null. Second most memory eaten up. %/ <<set $activeSlave = 0, $eventSlave = 0, $subSlave = 0, $milkTap = 0, $relation = 0, $relative = 0, $relative2 = 0>> diff --git a/src/uncategorized/nonRandomEvent.tw b/src/uncategorized/nonRandomEvent.tw index 57c3b1f25cf2523004379742030283d9f1da08f5..cdfe42b06e2840f02005831a60bbd8475d4a45d4 100644 --- a/src/uncategorized/nonRandomEvent.tw +++ b/src/uncategorized/nonRandomEvent.tw @@ -54,11 +54,10 @@ <<goto "P invasion">> <<elseif (_effectiveWeek == 44) && ($mercenaries > 0) && $mercRomeo != 1>> <<set _valid = $slaves.find(function(s) { return (["serve the public", "serve in the club", "whore", "work in the brothel"].includes(s.assignment) || s.counter.publicUse >= 50) && s.fetish != "mindbroken" && s.fuckdoll == 0; })>> + <<set $mercRomeo = 1>> <<if def _valid>> - <<set $mercRomeo = 1, $activeSlave = 0>> <<goto "P mercenary romeo">> <<else>> - <<set $mercRomeo = 1>> <<goto "Nonrandom Event">> <</if>> <<elseif (_effectiveWeek == 46) && ($mercenaries > 0)>> @@ -187,7 +186,7 @@ <<goto "secExpSmilingMan">> <<elseif ($rivalOwner == 0) && ($seeFCNN == 1) && ($FCNNstation == 0) && ($week > 95) && ($cash > 200000) && ($rep > 7500)>> <<goto "SE FCNN Station">> -<<elseif _effectiveWeek >= $murderAttemptWeek && $tempEventToggle>> +<<elseif _effectiveWeek >= $murderAttemptWeek>> <<goto "Murder Attempt">> <<elseif $illegalDeals.slave !== 0 && $illegalDeals.slave !== -1>> <<set $event = "slave trade">> diff --git a/src/uncategorized/pRaidResult.tw b/src/uncategorized/pRaidResult.tw index 8537e1b9306d6dea7ae82411b6611cb21a6bd20b..715eb8b8b747af6b90b851500672d506bfbcfba0 100644 --- a/src/uncategorized/pRaidResult.tw +++ b/src/uncategorized/pRaidResult.tw @@ -15,22 +15,22 @@ Out ahead of the main body of refugees there is a small knot moving quickly and <<run repX(2500, "event")>> <<for _prr = 0; _prr < 3; _prr++>> <<if ($seeDicks > 0)>> - <<set $activeSlave = GenerateNewSlave("XY")>> - <<set $activeSlave.origin = "$He is an enslaved refugee who participated in the defeated attack on your arcology.">> - <<set _newSlaves.push($activeSlave)>> + <<set _slave = GenerateNewSlave("XY")>> + <<set _slave.origin = "$He is an enslaved refugee who participated in the defeated attack on your arcology.">> + <<set _newSlaves.push(_slave)>> <<else>> - <<set $activeSlave = GenerateNewSlave("XX")>> - <<set $activeSlave.origin = "$He is an enslaved refugee who participated in the defeated attack on your arcology.">> - <<set _newSlaves.push($activeSlave)>> + <<set _slave = GenerateNewSlave("XX")>> + <<set _slave.origin = "$He is an enslaved refugee who participated in the defeated attack on your arcology.">> + <<set _newSlaves.push(_slave)>> <</if>> <</for>> <<elseif $eventResults.raidTarget == 2>> Under orders to target civilians, your mercenaries head for the isolated group. When the VTOL descends to circle around the large group of refugees, it becomes obvious that it won't even be necessary to expend nonlethal ammunition. A few of the refugees throw themselves down in bitterness, but most just subside into the catatonia of helplessness. They stand quiescent as they are searched, tagged, and loaded onto the VTOL like the wretched human refuse they are. The successful raid @@.green;is the talk of the Free City.@@ <<run repX(1000, "event")>> <<for _prr = 0; _prr < 4; _prr++>> - <<set $activeSlave = GenerateNewSlave()>> - <<set $activeSlave.origin = "$He is an enslaved refugee.">> - <<set _newSlaves.push($activeSlave)>> + <<set _slave = GenerateNewSlave()>> + <<set _slave.origin = "$He is an enslaved refugee.">> + <<set _newSlaves.push(_slave)>> <</for>> <<else>> <<set _nurseGender = $seeDicks == 100 ? 100 : 0>> /* nurse gender is female unless seeDicks is 100 */ @@ -39,10 +39,10 @@ Out ahead of the main body of refugees there is a small knot moving quickly and <<set $eventResults.slaveMedic = 1>> <<run repX(1000, "event")>> <<for _prr = 0; _prr < 5; _prr++>> - <<set $activeSlave = GenerateNewSlave()>> - <<set $activeSlave.origin = "$He is an enslaved refugee who was wounded in the defeated attack on your arcology.">> - <<run setHealth($activeSlave, jsRandom(-50, 40), normalRandInt(20, 3), normalRandInt(15, 3), Math.max(normalRandInt(0, 1), 0), jsRandom(40, 80))>> - <<set _newSlaves.push($activeSlave)>> + <<set _slave = GenerateNewSlave()>> + <<set _slave.origin = "$He is an enslaved refugee who was wounded in the defeated attack on your arcology.">> + <<run setHealth(_slave, jsRandom(-50, 40), normalRandInt(20, 3), normalRandInt(15, 3), Math.max(normalRandInt(0, 1), 0), jsRandom(40, 80))>> + <<set _newSlaves.push(_slave)>> <</for>> <</if>> <br><br> diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw deleted file mode 100644 index bc220814bf31500f3e0d6acfac706c4fc6645975..0000000000000000000000000000000000000000 --- a/src/uncategorized/persBusiness.tw +++ /dev/null @@ -1,1028 +0,0 @@ -:: Personal Business [nobr] - -<<if $useTabs == 0>>__Personal Business__<</if>> -<br> - -<<if $cash < 0>> - <<set _cashX = cashX(forceNeg(1+Math.trunc(Math.abs($cash)/100)), "personalBusiness")>> - @@.red;You are in debt.@@ This week, interest came to <<print cashFormat(_cashX, "personalBusiness")>>. - <<if $arcologies[0].FSRomanRevivalist != "unset">> - Society @@.red;very strongly disapproves@@ of your being in debt; this damages the idea that you model yourself on what a Roman leader should be. - <<run FutureSocieties.Change("RomanRevivalist", -10)>> - <</if>> - <<if $cash < 0 && $cash > -25000 && $arcologies[0].FSRestartDecoration == 100>> - <<if $eugenicsFullControl != 1>> - Money is quickly shifted to bring you out of debt, though @@.red;the Societal Elite are left doubting@@ your worth. - <<set $cash = 0>> - <<set $failedElite += 100>> - <<else>> - Money is quickly shifted to bring you out of debt, though the Societal Elite grumble all the while. - <<set $cash = 0>> - <</if>> - <<elseif $cash < -9000>> - @@.red;WARNING: you are dangerously indebted.@@ Immediately acquire more liquid assets or you will be in danger of being enslaved yourself. - <<set $debtWarned += 1>> - <<if $debtWarned > 1>> - <<set $ui = "start">> - <<set $gameover = "debt">><<goto "Gameover">> - <</if>> - <</if>> -<</if>> -<<if $PC.health.shortDamage >= 30>> - <<run endWeekHealthDamage($PC)>> - The injuries received in the recent battle prevents you from engaging in tiring endeavors. - <<if $PC.health.shortDamage >= 51>> - Your trusted physician believes it will still take a few weeks to fully recover. - <<elseif $PC.health.shortDamage >= 39>> - You are starting to feel better. It's very likely you will be back to full working order within the next week. - <<else>> - You have finally recovered from your injuries. - <</if>> -<<elseif ($personalAttention == "whoring")>> - <<set _income = random(2000,4500)>> - <<if $PC.belly >= 1500>> - <<if $arcologies[0].FSRepopulationFocus != "unset">> - You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly)))>>@@ for your body, much more than usual; you guess your pregnancy-focused population wants your baby-rounded body more than ever. However, doing such things @@.red;damages your reputation.@@ - <<run cashX(Math.trunc((_income*($rep/500))+($PC.belly)), "personalBusiness")>> - <<run repX(($rep*.95) - $rep, "personalBusiness")>> - <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1>> - You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly/2)))>>@@ for your body, more than usual; but that's to be expected, after all, pregnancy is trendy right now. Event still, doing such things @@.red;damages your reputation.@@ - <<run cashX(Math.trunc((_income*($rep/500))+($PC.belly/2)), "personalBusiness")>> - <<run repX(($rep*.95) - $rep, "personalBusiness")>> - <<elseif $arcologies[0].FSRestart != "unset">> - <<if $PC.pregSource != -1 && $PC.pregSource != -6>> - You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(25)>>,@@ barely enough to cover the abortion the john that gave it to you told you to get. Showing off your gravid body @@.red;infuriates your citizens and cripples your reputation.@@ - <<run cashX(25, "personalBusiness")>> - <<run repX(($rep*.5) - $rep, "personalBusiness")>> - <<if $eugenicsFullControl != 1>> - <<set $failedElite += 25>> - <</if>> - <<else>> - You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income($rep/500)))>>@@ for your body. However, doing such things @@.red;damages your reputation.@@ - <<run cashX(Math.trunc(_income*($rep/500)), "personalBusiness")>> - <<run repX(($rep*.9) - $rep, "personalBusiness")>> - <</if>> - <<else>> - <<set _income = random(5,2500)>> - You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income*($rep/800)))>>@@ for your body, much less than usual; your pregnancy must be turning off potential clients. However, doing such things @@.red;damages your reputation.@@ - <<run cashX(Math.trunc(_income*($rep/800)), "personalBusiness")>> - <<run repX(($rep*.9) - $rep, "personalBusiness")>> - <</if>> - <<else>> - You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income*($rep/500)))>>@@ for your body. However, doing such things @@.red;damages your reputation.@@ - <<run cashX(Math.trunc(_income*($rep/500)), "personalBusiness")>> - <<run repX(($rep*.9) - $rep, "personalBusiness")>> - <<if canGetPregnant($PC)>> - <<if $arcologies[0].FSRepopulationFocus != "unset" && random(1,100) > 80>> - A horny client offered you an extra @@.yellowgreen;<<print cashFormat(1000)>>@@ for downing some fertility drugs. You're already forgoing birth control, so what harm could an extra baby do? - <<run cashX(1000, "personalBusiness")>> - <<set $PC.forcedFertDrugs += 2>> - <<elseif random(1,100) > 90>> - <<if $PC.skill.medicine >= 25>> - Your client this week tried to trick you into taking fertility supplements disguised as party drugs. You still took them, of course, but made sure he @@.yellowgreen;paid extra@@ for the privilege. - <<run cashX(1000, "personalBusiness")>> - <<else>> - Your client this week offered you some free pills to make sex more fun. He was right; it made bareback sex feel amazing. - <</if>> - <<set $PC.forcedFertDrugs += 2>> - <</if>> - <<= knockMeUp($PC, 20, 0, -5)>> - <</if>> - <</if>> - <<set $enduringRep *= .5>> -<<elseif ($personalAttention == "upkeep")>> - <<if $PC.belly >= 5000>> - You spend your free time hustling around your penthouse, cleaning and making sure everything is in order. You manage to reduce your upkeep by 20%. Your <<if $PC.preg > 0>>pregnancy<<else>>big belly<</if>> slows you down some<<if $PC.counter.birthMaster > 0>>, but you're used to working around it<</if>>. - <<else>> - You spend your free time hustling around your penthouse, cleaning and making sure everything is in order. You manage to reduce your upkeep by 25%.<<if $PC.counter.birthMaster > 0>> This is much easier to do without a big baby bump in the way.<</if>> - <</if>> -<<elseif ($personalAttention == "defensive survey")>> - This week you focus on surveying your defenses in person, @@.green;making yourself more known throughout $arcologies[0].name.@@ - <<run repX(50 * $PC.skill.warfare, "personalBusiness")>> - <<if $PC.skill.warfare < 100>> - <<= IncreasePCSkills('warfare', 0.5)>> - <</if>> -<<elseif ($personalAttention == "development project")>> - <<if ($arcologies[0].prosperity + 1 * (1 + Math.ceil($PC.skill.engineering/100))) < $AProsperityCap>> - This week you focus on contributing to a local development project, @@.green;boosting prosperity.@@ - <<set $arcologies[0].prosperity += 1 * (1 + Math.ceil($PC.skill.engineering/100))>> - <<if $PC.skill.engineering < 100>> - <<= IncreasePCSkills('engineering', 0.5)>> - <</if>> - <<else>> - Contributing to a local development project this week @@.yellow;would be futile.@@ - <<set $personalAttention = "business">> - <</if>> -<<elseif ($personalAttention == "proclamation")>> - /* handled after this if chain */ -<<elseif ($personalAttention == "smuggling")>> - <<set _qualifiedFS = []>> - <<if $arcologies[0].FSDegradationistDecoration >= 80>> - <<set _qualifiedFS.push("degradationist")>> - <</if>> - <<if $arcologies[0].FSPaternalistDecoration >= 80>> - <<set _qualifiedFS.push("paternalist")>> - <</if>> - <<if $arcologies[0].FSHedonisticDecadenceDecoration >= 80>> - <<set _qualifiedFS.push("hedonistic")>> - <</if>> - <<if $arcologies[0].FSSlaveProfessionalismLaw == 1>> - <<set _qualifiedFS.push("professionalism")>> - <</if>> - <<if $arcologies[0].FSIntellectualDependencyLaw == 1>> - <<set _qualifiedFS.push("dependency")>> - <</if>> - <<if $arcologies[0].FSPetiteAdmiration >= 80>> - <<set _qualifiedFS.push("petite")>> - <</if>> - <<if $arcologies[0].FSStatuesqueGlorification >= 80>> - <<set _qualifiedFS.push("statuesque")>> - <</if>> - <<if $arcologies[0].FSPastoralistDecoration >= 80 && $arcologies[0].FSPastoralistLaw == 1>> - <<set _qualifiedFS.push("pastoralist")>> - <</if>> - <<if $arcologies[0].FSSupremacistDecoration >= 80>> - <<set _qualifiedFS.push("supremacist")>> - <</if>> - <<if $arcologies[0].FSBodyPuristDecoration >= 80>> - <<set _qualifiedFS.push("body purist")>> - <</if>> - <<if $arcologies[0].FSRestartDecoration >= 80>> - <<set _qualifiedFS.push("eugenics")>> - <</if>> - <<if $arcologies[0].FSRepopulationFocusDecoration >= 80>> - <<set _qualifiedFS.push("repopulation")>> - <</if>> - <<if $arcologies[0].FSGenderFundamentalistDecoration >= 80>> - <<set _qualifiedFS.push("fundamentalist")>> - <</if>> - <<if $arcologies[0].FSSubjugationistDecoration >= 80>> - <<set _qualifiedFS.push("subjugationist")>> - <</if>> - <<if $arcologies[0].FSGenderRadicalistResearch == 1>> - <<set _qualifiedFS.push("radicalist")>> - <</if>> - <<if $arcologies[0].FSTransformationFetishistResearch == 1>> - <<set _qualifiedFS.push("transformation")>> - <</if>> - <<if $arcologies[0].FSYouthPreferentialistDecoration >= 80>> - <<set _qualifiedFS.push("youth")>> - <</if>> - <<if $arcologies[0].FSMaturityPreferentialistDecoration >= 80>> - <<set _qualifiedFS.push("maturity")>> - <</if>> - <<if $arcologies[0].FSSlimnessEnthusiastDecoration >= 80>> - <<set _qualifiedFS.push("slimness")>> - <</if>> - <<if $arcologies[0].FSAssetExpansionistResearch == 1>> - <<set _qualifiedFS.push("expansionist")>> - <</if>> - <<if $arcologies[0].FSPhysicalIdealistDecoration >= 80>> - <<set _qualifiedFS.push("idealist")>> - <</if>> - <<if $arcologies[0].FSChattelReligionistLaw == 1>> - <<set _qualifiedFS.push("religion")>> - <</if>> - <<if $arcologies[0].FSRomanRevivalistLaw == 1>> - <<set _qualifiedFS.push("roman law")>> - <<elseif $arcologies[0].FSRomanRevivalistDecoration >= 80>> - <<set _qualifiedFS.push("roman")>> - <<elseif $arcologies[0].FSEgyptianRevivalistDecoration >= 80>> - <<set _qualifiedFS.push("egyptian")>> - <<elseif $arcologies[0].FSAztecRevivalistLaw == 1>> - <<set _qualifiedFS.push("aztec law")>> - <<elseif $arcologies[0].FSAztecRevivalistDecoration >= 80>> - <<set _qualifiedFS.push("aztec")>> - <<elseif $arcologies[0].FSNeoImperialistLaw1 == 1>> - <<set _qualifiedFS.push("imperial law")>> - <<elseif $arcologies[0].FSNeoImperialistDecoration >= 80>> - <<set _qualifiedFS.push("imperial")>> - <<elseif $arcologies[0].FSArabianRevivalistLaw == 1>> - <<set _qualifiedFS.push("arabian law")>> - <<elseif $arcologies[0].FSArabianRevivalistDecoration >= 80>> - <<set _qualifiedFS.push("arabian")>> - <<elseif $arcologies[0].FSEdoRevivalistLaw == 1>> - <<set _qualifiedFS.push("edo law")>> - <<elseif $arcologies[0].FSEdoRevivalistDecoration >= 80>> - <<set _qualifiedFS.push("edo")>> - <<elseif $arcologies[0].FSChineseRevivalistLaw == 1>> - <<set _qualifiedFS.push("chinese law")>> - <<elseif $arcologies[0].FSChineseRevivalistDecoration >= 80>> - <<set _qualifiedFS.push("chinese")>> - <</if>> - <<set _caught = 0>> - <<if $rep >= 18000>> /* prestigious */ - <<set _income = random(8500,9000)>> - <<elseif $rep >= 9000>> /* well known */ - <<set _income = random(4500,5000)>> - <<else>> - <<set _income = random(1500,2000)>> - <</if>> - <<switch _qualifiedFS.random()>> - <<case "eugenics">> - <<set _income += random(2500,4000)>> - <<if $eugenicsFullControl != 1>> - You are smuggling <<if $PC.dick != 0>>your<<else>>one of the Societal Elite's<</if>> semen to allow some desperate girls to be pregnant. Anonymity is really hard to attain, and it is easy to find out what you've been doing. Even if you did manage to make @@.yellowgreen;<<print cashFormat(_income)>>,@@ the Societal Elite are @@.red;quite displeased@@ by your actions. - <<set $failedElite += 50, _caught = 1>> - <<else>> - You are smuggling <<if $PC.dick != 0>>your<<else>>one of the Societal Elite's<</if>> semen to allow some desperate girls to be pregnant. Anonymity is really hard to attain, and it is easy to find out what you've been doing. Even if you did manage to make @@.yellowgreen;<<print cashFormat(_income)>>,@@ the Societal Elite are @@.red;quite displeased@@ by your actions, even though they know how little they can do about it now. - <<set _caught = 1>> - <</if>> - <<case "paternalist">> - <<set _income += random(1000,1500)>> - You manage to find a few low-standards slavers without any problem, but when you actually try to do business, you are quickly recognized. You only manage to make @@.yellowgreen;<<print cashFormat(_income)>>@@ before you are sent away. The people of your arcology are @@.red;outraged by your lack of respect@@ for slave rights. - <<set _caught = 1>> - <<case "supremacist">> - <<set _income += random(2000,3000)>> - When it comes to smuggling in your arcology, there is no better target than $arcologies[0].FSSupremacistRace slaves, and there is a high demand for them, making you a nice @@.yellowgreen;<<print cashFormat(_income)>>.@@ Participating in this slave trade means you can control who is set. Your people do not see things in the same light though, and @@.red;your reputation takes a big hit.@@ - <<set _caught = 1>> - <<case "degradationist">> - <<set _income += random(2000,3000)>> - During your free time, you make business with a few low-standards slavers and manage to buy stolen slaves and sell them at a profit. Even if people recognized you, such treatment of slaves is normal, and only a few people would really complain about it. Your dealings have made you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "repopulation">> - <<set _income += random(1500,2500)>> - You manage to discreetly rent out your remote surgery services for abortions. You make sure the people do not recognize your penthouse, having them come blindfolded or unconscious, should the abortion request does not come from themselves. With this, you make @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "fundamentalist">> - <<set _income += random(1500,2500)>> - You manage to arrange a few sex-changes and geldings in your own remote surgery for some powerful people to accommodate your arcology's sense of power, but also for people who want to transform others into females so that they lose all the power they have. This makes you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "hedonistic">> - <<set _income += random(1500,2500)>> - Since most of what the old world considered to be illegal is legal in your arcology, "smuggling" is quite common, and you easily find people ready to pay for your help with dealing with their competition. With this, you manage to make @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "pastoralist">> - <<set _income += random (1500,2500)>> - You take advantage of your own laws, making sure that animal products still come into your arcology. But you also make sure to make them as disgusting as possible so that people would rather turn to slave-produced ones instead. This allows you to make @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "body purist">> - <<set _income += random(1500,2500)>> - In your arcology, people are expected to be all natural, but this doesn't mean the same thing applies outside. By buying slaves, giving them implants and quickly selling them before anyone notices, you manage to make @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "subjugationist">> - <<set _income += random(1500,2500)>> - You manage to work with some slavers that deal exclusively in $arcologies[0].FSSubjugationistRace slaves, and you export them from the arcology at a cost, bringing in @@.yellowgreen;<<print cashFormat(_income)>>.@@ Considering most people do not care about the fate of the slaves, they are simply mildly annoyed at the short-term raise of prices due to the exportation. - <<case "radicalist">> - <<set _income += random(2500,4000)>> - Anal pregnancy may be accepted in your arcology, but seeing how it goes against the laws of nature makes it a gold mine for dirty businesses; you have rich slaveowners and well-known slavers come to you with their best sissies so that you can implant them with artificial uteri. This flourishing business made you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "transformation">> - <<set _income += random(2500,4000)>> - Your arcology is well known for its implants, and usually, one would have to pay a fortune simply to have a clinic implant them with normal implants. You take advantage of this trend to rent your remote surgery and your knowledge of gigantic implants to slavers for a cut of their profit. This gets you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "youth">> - <<set _income += random(1500,2500)>> - Youth is more important than anything in your arcology, yet some people who are not really in their prime are rich and powerful, enough that renting your remote surgery to them for age lifts and total body rework is quite worth it, both for them and for you. You get paid @@.yellowgreen;<<print cashFormat(_income)>>@@ for these services. - <<case "maturity">> - <<set _income += random(1500,2500)>> - In your arcology, the older the slave, the better. This also means that your arcology deals a lot in curatives and preventatives, as well as less-than-legal drugs that are supposed to extend one's lifespan. You manage to ship in a few of these drugs and sell them at a high price, making you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "slimness">> - <<set _income += random(1500,2500)>> - Your arcology treats chubby people quite poorly, so they are ready to spend a lot of money on surgeries and supposed "miracle" solutions. When they can't afford legal and efficient methods, they have to turn to other drugs. The sales bring you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "expansionist">> - <<set _income += random(2500,4000)>> - Your arcology likes its slaves nice and stacked and you have exactly the drugs for it. But you always make sure to produce just a bit more, enough to not alarm anybody who might be watching, but also enough to sell to other prominent slaveowners outside your arcology, who pay you @@.yellowgreen;<<print cashFormat(_income)>>@@ for them. - <<case "idealist">> - <<set _income += random(1500,2500)>> - Your society's obsession with fit and muscular slaves has developed a particular interest in steroids and all kinds of drugs to tone one's body. As an arcology owner, you always have access to the most potent of them, but this is not the case for lower class citizens; some of them just aren't willing to pay a lot for them, so they buy experimental drugs off the black market. Participating in these activities made you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "professionalism">> - <<set _income += random(2500,5500)>> - Your arcology has strict laws when it comes to who may be stay within its walls and those that don't cut it are often desperate for a loop hole; one you can easily provide. @@.yellowgreen;<<print cashFormat(_income)>>@@ for your pocket and another taxable citizen. Win, win. - <<case "dependency">> - <<set _income += random(5500,15000)>> - Your arcology has strict laws when it comes to who may be claimed as a dependent and thusly excused from taxation. Of course, there are always those looking to cheat the system for their own benefit and more than willing to slip you a sum of credits to make it happen. While in the long term it may cost you, but for now you rake in a quick @@.yellowgreen;<<print cashFormat(_income)>>@@ for the forged documents. - <<case "statuesque">> - <<set _income += random(1500,3500)>> - Your arcology likes its slaves tall, but even then there is the occasional outlier. An outlier usually keen on paying a lovely sum to have a tiny embarrassment of a slave slipped discreetly into their possession. All that is seen is a pair of suitcases changing hands and you walk away with @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "petite">> - <<set _income += random(1500,3000)>> - Your arcology prefer a couple with a sizable gap between their heights. When they can't quite achieve that goal, they turn to any means they can. A few discreet surgeries and growth inhibitor sales net you @@.yellowgreen;<<print cashFormat(_income)>>@@ this week. - <<case "religion">> - <<set _income += random(2000,3000)>> - The best smugglers know how to use the law to its advantage, and not only are you a really good smuggler, you're also the law itself. You have word spread that some company has done something blasphemous, and have them pray and pay for forgiveness. Panicked at the word of their Prophet, the higher-ups of the company give you @@.yellowgreen;<<print cashFormat(_income)>>@@ for salvation. - <<case "roman law">> - <<set _income += random(2000,3000)>> - Every citizen of your arcology is trained in the art of war and supposed to defend its arcology when the time comes. This, of course, also means that people are supposed to be able to defend themselves. By arranging with the best fighters around, you manage to make some citizens face outrageous losses; so bad, in fact, that they are forced to pay @@.yellowgreen;<<print cashFormat(_income)>>@@ for you to forget the shame they've put on your arcology. - <<case "roman">> - <<set _income += random(1500,2500)>> - Slaveowners from all around your arcology are rushing to the pit, eager to show their most recent training. Some of them, having more cunning than experience, are ready to sway the fight in their direction, no matter what it takes. You make sure to catch such people, and only agree to let them do their dirty tricks if they pay you. By the times the bribes and betting are done, you have made @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "egyptian">> - <<set _income += random(1500,2500)>> - Having a society that likes incest often means that people are ready to go to great lengths to get their hands on people related to their slaves. In the smuggling business, this means that kidnapped relatives are common, and as an arcology owner with access to data on most of the slaves, you are able to control this trade a bit in exchange for @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "aztec law">> - <<set _income += random(2000,3000)>> - People that inherit trades are sometimes too lazy to take classes in an academy, but at the same time, they fear what might happen were they to go against you. To solve both problems, you arrange a trade of fake diplomas, making sure that there is always a small detail to recognize them, so that they will get exposed in due time. This has made you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "aztec">> - <<set _income += random(1500,2500)>> - There are a lot of slaveowners in your arcology that tend to grow quickly attached to the slaves they planned on sacrificing to sate the blood thirst of other important citizens, and such owners often come to you, begging you to swap two of their slaves' appearance. You accept, but not for free. After the surgery, this has made you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "imperial law">> - <<set _income += random(2000,3000)>> - With Imperial Knights contantly patrolling the streets and a strict noble hierarchy flowing up from your Barons directly to you, you have a great deal of room to play with legal codes and edifices - which, of course, are constantly being modified to be eternally in your favor. The Barons and Knights who maintain your arcology happily turn a blind eye as you skim trade income directly into your pockets - after all, they're going to benefit from your success too. Sly manipulation of trade codes has earned you @@.yellowgreen;<<print cashFormat(_income)>>@@. - <<case "imperial">> - <<set _income += random(1500,2500)>> - Your new Imperial culture fosters a particularly large amount of trade, given its fascination with high technology and old world culture. The constant influx of new fashions, materials, and technologies allows for one of the rarest oppurtunities for an ultra-wealthy plutocrat such as yourself; the chance to earn an honest dollar. By spending time at the bustling marketplace and trading in fashion, you've made @@.yellowgreen;<<print cashFormat(_income)>>@@. - <<case "arabian law">> - <<set _income += random(2000,3000)>> - You have a lot of persons scared of the consequences of not being a part of your society; even if they pay the Jizya, other citizens are not forced to accept them. So if they were to get mugged in some dark alley, people would not get outraged, and there probably wouldn't be any investigations. After buying everyone's silence, you still had @@.yellowgreen;<<print cashFormat(_income)>>@@ to put in your pockets. - <<case "arabian">> - <<set _income += random(1500,2500)>> - People in your arcology are supposed to keep a myriad of slaves as their personal harem, and failure to do so is considered to be highly dishonorable. This opens up some opportunities for smuggling, as people are ready to go to great length to get an edge against their competitors. Becoming a part for this business has made you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "edo law">> - <<set _income += random(2000,3000)>> - Outside culture is banned in your arcology. Your citizens do not need anything other than what you have inside. But this doesn't help with their curiosity — they always want to discover what the outside world is like. So you let some news and a few books from other cultures slip in, but not before you made sure they would disgust your citizens and reinforce their love for the Edo culture. The sales brought you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<case "edo">> - <<set _income += random(1500,2500)>> - During important meetings with higher society, it is wise to have a lot of slaves to put at the disposition of others. But some slaveowners grow really attached to their slaves, and so they'd much rather rent out unknown slaves from an anonymous owner's stock than use their own. This is a good opportunity to make some money, as shown by the @@.yellowgreen;<<print cashFormat(_income)>>@@ you managed to make. - <<case "chinese law">> - <<set _income += random(2000,3000)>> - <<setLocalPronouns _S.HeadGirl>> - This time, you have a good idea that will also make use of your Head Girl. You coax $him into thinking $he should accept bribes for the time being, making up a good reason on the spot, and $he ends up bringing back @@.yellowgreen;<<print cashFormat(_income)>>@@ from all the bribes people gave for $him to turn the other way. - <<case "chinese">> - <<set _income += random(1500,2500)>> - Being under what people call the Mandate of Heaven means you have a crucial importance in society, and some desperate people are willing to pay just for you to throw a word or small gesture in their direction, such as simply acknowledging a child or a slave, thinking that such things will make sure the Heavens smile upon them. For these services, you get @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<default>> - <<set _income += random(500,2000)>> - You use former contacts to get you some opportunities in your arcology and deal with them. You make little money, only @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <</switch>> - /* reputation effects */ - <<if $rep >= 18000>> /* prestigious */ - Your strong reputation makes it both really easy to find opportunities to gain quite a bit of money, but at the same time, it makes it hard to do so anonymously. - <<if _caught || random(1,100) >= 25>> - Even with your attempts at discretion, people somehow manage to recognize you, and @@.red;rumors that you're back in the gang business@@ are spreading through your arcology like wildfire. - <<run repX(($rep*.8) - $rep, "personalBusiness")>> - <<set $enduringRep *= .5>> - <<elseif random(1,100) >= 50>> - You are as discreet as possible, but yet some people seem to have doubts about who you are, and for quite some time, you can hear whispers @@.red;that you may be helping the shadier businesses in your arcology.@@ - <<run repX(($rep*.9) - $rep, "personalBusiness")>> - <<set $enduringRep *= .75>> - <<else>> - You fool almost everyone with your <<if ($PC.actualAge >= 30)>>experience and <</if>>cunning, but the sole fact that smugglers are in your arcology @@.red;damages your reputation.@@ - <<run repX(($rep*.95) - $rep, "personalBusiness")>> - <<set $enduringRep *= .9>> - <</if>> - <<elseif $rep >= 9000>> /* well known */ - Your reputation helps you find opportunities that need people who have proved discreet. But even when taking precautions, nothing guarantees you can stay anonymous. - <<if _caught || random(1,100) >= 40>> - Try as you might, people notice who you are, and the next day, @@.red;rumors about your business affairs@@ are already spreading everywhere in your arcology. - <<run repX(($rep*.9) - $rep, "personalBusiness")>> - <<set $enduringRep *= .65>> - <<elseif random(1,100) >= 50>> - You manage to fool some people, but not everyone, and soon enough, people are @@.red;discussing whether you're smuggling or not.@@ - <<run repX(($rep*.95) - $rep, "personalBusiness")>> - <<set $enduringRep *= .9>> - <<else>> - You somehow manage to hide your identity for all but the most cunning of people, so the only thing that really @@.red;damages your reputation@@ is the fact that people associate you with gangs all the time. - <<run repX(($rep*.98) - $rep, "personalBusiness")>> - <</if>> - <<else>> /* low reputation */ - <<if !_caught && random(1,100) >= 90>> - You work efficiently, not spending any time talking to people more than you need. Your efficiency even managed to earn you @@.green;quite a few good words@@ from some people who were leading double lives like you were, and they made sure to get a word in about you in their business conversations. - <<run repX(($rep*1.05) - $rep, "personalBusiness")>> - <<elseif !_caught && random(1,100) >= 50>> - You get a few curious glances from some people here and there, but most people do not care about who you are, or maybe they don't know, and it's better this way. Though your regular absences have @@.red;not gone unnoticed@@ and some baseless rumors are spreading. - <<run repX(($rep*.95) - $rep, "personalBusiness")>> - <<set $enduringRep *= .95>> - <<else>> - Some people whisper when you pass by them. They seem to know who you are, and you know that @@.red;after a bit of alcohol, their tongue will come loose,@@ and you can't afford to shut them up right here, right now. - <<run repX(($rep*.9) - $rep, "personalBusiness")>> - <<set $enduringRep *= .8>> - <</if>> - <</if>> - <<set _income += Math.trunc(Math.min(3000 * Math.log($cash+1), $cash * 0.07))>> - This week, your illicit and legitimate business dealings earned you a combined total of @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<run cashX(_income, "personalBusiness")>> -<<elseif ($cash > 1000) && ($personalAttention == "business")>> - <<if $PC.belly >= 1500>> - <<set _income = random(500,1000)>> - <<else>> - <<set _income = random(1000,1500)>> - <</if>> - <<if $PC.skill.trading >= 100>> - You focus on business and leverage your @@.springgreen;venture capital experience@@ to make good money: - <<set _income += random(5000,10000) + Math.trunc(Math.min(4000 * Math.log($cash), $cash * 0.07))>> - <<elseif $PC.career == "arcology owner">> - You focus on business and leverage your @@.springgreen;Free Cities experience@@ to make good money: - <<set _income += random(5000,10000) + Math.trunc(Math.min(4000 * Math.log($cash), $cash * 0.07))>> - <<else>> - You focus on business this week and make some money: - <<set _income += Math.trunc(Math.min(3500 * Math.log($cash), $cash * 0.07))>> - <</if>> - @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<run cashX(_income, "personalBusiness")>> - <<if $arcologies[0].FSRomanRevivalist != "unset">> - Society @@.green;approves@@ of your close attention to your own affairs; this advances your image as a <<if $PC.title == 1>>well-rounded Roman man<<else>>responsible Roman lady<</if>>. - <<run FutureSocieties.Change("RomanRevivalist", 2)>> - <</if>> -<<elseif ($cash > 1000)>> - <<set _income = Math.trunc(Math.min(3000 * Math.log($cash), $cash * 0.07))>> - This week, your business endeavors made you @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<run cashX(_income, "personalBusiness")>> -<<else>> - You have enough cash to manage your affairs, but not enough to do much business. -<</if>> - -<<if ($personalAttention == "proclamation")>> - <<if ($SecExp.proclamation.currency == "authority" && $SecExp.core.authority >= 2000) || ($SecExp.proclamation.currency == "reputation" && $rep >= 4000) || ($SecExp.proclamation.currency == "cash" && $cash >= 8000)>> - After several days of preparation you are ready to issue the proclamation. You announce to the arcology your plans and in short order you use <<if $SecExp.proclamation.currency == "authority">>control over the arcology<<elseif $SecExp.proclamation.currency == "reputation">>great influence<<elseif $SecExp.proclamation.currency == "cash">> vast financial means<</if>> to - <<if $SecExp.proclamation.type == "security">> - gather crucial information for your security department. In just a few many hours holes are plugged and most moles are eliminated. @@.green;Your security greatly increased.@@ - <<set $SecExp.core.security = Math.clamp($SecExp.core.security + 25,0,100)>> - <<elseif $SecExp.proclamation.type == "crime">> - force the arrest of many suspected citizens. Their personal power allowed them to avoid justice for a long time, but this day is their end. @@.green;Your crime greatly decreased.@@ - <<set $SecExp.core.crimeLow = Math.clamp($SecExp.core.crimeLow - 25,0,100)>> - <</if>> - <<if $SecExp.proclamation.currency == "authority">> - <<set $SecExp.core.authority = Math.clamp($SecExp.core.authority - 2000,0,20000)>> - <<elseif $SecExp.proclamation.currency == "reputation">> - <<run repX(Math.clamp($rep - 2000,0,20000), "personalBusiness")>> - <<else>> - <<run cashX(-8000, "personalBusiness")>> - <</if>> - <<set $SecExp.proclamation.cooldown = 4, $personalAttention = "business">> - <<else>> - As you currently lack the minimum amount of your chosen proclamation currency, $SecExp.proclamation.currency, it would be unwise to attempt execution of your $SecExp.proclamation.type this week. - <</if>> -<</if>> - - -<<if $PC.actualAge >= $IsInPrimePC && $PC.actualAge < $IsPastPrimePC>> - <<set _Cal = Math.ceil(random($AgeTrainingLowerBoundPC,$AgeTrainingUpperBoundPC)*$AgeEffectOnTrainerEffectivenessPC)>> - <<set _X = 1>> -<</if>> -/* <<if $PC.actualAge >= $IsPastPrimePC>> */ - /* <<set _Cal = Math.ceil(random($AgeTrainingLowerBoundPC,$AgeTrainingUpperBoundPC)*$AgeEffectOnTrainerEffectivenessPC)>> */ - /* <<set _X = 0>> */ -/* <</if>> */ - -<<if $PC.health.shortDamage < 30>> - <<switch $personalAttention>> - <<case "trading">> - <<set _oldSkill = $PC.skill.trading>> - <<if _X == 1>> - <<set $PC.skill.trading += _Cal>> - <<else>> - <<set $PC.skill.trading -= _Cal>> - <</if>> - <<if _oldSkill <= 10>> - <<if $PC.skill.trading > 10>> - You now have @@.green;basic knowledge@@ about how to be a venture capitalist. - <<else>> - You have made progress towards a basic knowledge of venture capitalism. - <</if>> - <<elseif _oldSkill <= 30>> - <<if $PC.skill.trading > 30>> - You now have @@.green;some skill@@ as a venture capitalist. - <<else>> - You have made progress towards being skilled in venture capitalism. - <</if>> - <<elseif _oldSkill <= 60>> - <<if $PC.skill.trading > 60>> - You are now an @@.green;expert venture capitalist.@@ - <<else>> - You have made progress towards being an expert in venture capitalism. - <</if>> - <<else>> - <<if $PC.skill.trading >= 100>> - <<set $personalAttention = "sex">> - You are now a @@.green;master venture capitalist.@@ - <<else>> - You have made progress towards mastering venture capitalism. - <</if>> - <</if>> - - <<case "warfare">> - <<set _oldSkill = $PC.skill.warfare>> - <<if _X == 1>> - <<set $PC.skill.warfare += _Cal>> - <<else>> - <<set $PC.skill.warfare -= _Cal>> - <</if>> - <<if _oldSkill <= 10>> - <<if $PC.skill.warfare > 10>> - You now have @@.green;basic knowledge@@ about how to be a mercenary. - <<else>> - You have made progress towards a basic knowledge of mercenary work. - <</if>> - <<elseif _oldSkill <= 30>> - <<if $PC.skill.warfare > 30>> - You now have @@.green;some skill@@ as a mercenary. - <<else>> - You have made progress towards being skilled in mercenary work. - <</if>> - <<elseif _oldSkill <= 60>> - <<if $PC.skill.warfare > 60>> - You are now an @@.green;expert mercenary.@@ - <<else>> - You have made progress towards being an expert in mercenary work. - <</if>> - <<else>> - <<if $PC.skill.warfare >= 100>> - <<set $personalAttention = "sex">> - You are now a @@.green;master mercenary.@@ - <<else>> - You have made progress towards mastering mercenary work. - <</if>> - <</if>> - - <<case "slaving">> - <<set _oldSkill = $PC.skill.slaving>> - <<if _X == 1>> - <<set $PC.skill.slaving += _Cal>> - <<else>> - <<set $PC.skill.slaving -= _Cal>> - <</if>> - <<if _oldSkill <= 10>> - <<if $PC.skill.slaving > 10>> - You now have @@.green;basic knowledge@@ about how to be a slaver. - <<else>> - You have made progress towards a basic knowledge of slaving. - <</if>> - <<elseif _oldSkill <= 30>> - <<if $PC.skill.slaving > 30>> - You now have @@.green;some skill@@ as a slaver. - <<else>> - You have made progress towards being skilled in slaving. - <</if>> - <<elseif _oldSkill <= 60>> - <<if $PC.skill.slaving > 60>> - You are now an @@.green;expert slaver.@@ - <<else>> - You have made progress towards being an expert in slaving. - <</if>> - <<else>> - <<if $PC.skill.slaving >= 100>> - <<set $personalAttention = "sex">> - You are now a @@.green;master slaver.@@ - <<else>> - You have made progress towards mastering slaving. - <</if>> - <</if>> - - <<case "engineering">> - <<set _oldSkill = $PC.skill.engineering>> - <<if _X == 1>> - <<set $PC.skill.engineering += _Cal>> - <<else>> - <<set $PC.skill.engineering -= _Cal>> - <</if>> - <<if _oldSkill <= 10>> - <<if $PC.skill.engineering > 10>> - You now have @@.green;basic knowledge@@ about how to be an arcology engineer. - <<else>> - You have made progress towards a basic knowledge of arcology engineering. - <</if>> - <<elseif _oldSkill <= 30>> - <<if $PC.skill.engineering > 30>> - You now have @@.green;some skill@@ as an arcology engineer. - <<else>> - You have made progress towards being skilled in arcology engineering. - <</if>> - <<elseif _oldSkill <= 60>> - <<if $PC.skill.engineering > 60>> - You are now an @@.green;expert arcology engineer.@@ - <<else>> - You have made progress towards being an expert in arcology engineering. - <</if>> - <<else>> - <<if $PC.skill.engineering >= 100>> - <<set $personalAttention = "sex">> - You are now a @@.green;master arcology engineer.@@ - <<else>> - You have made progress towards mastering arcology engineering. - <</if>> - <</if>> - - <<case "medicine">> - <<set _oldSkill = $PC.skill.medicine>> - <<if _X == 1>> - <<set $PC.skill.medicine += _Cal>> - <<else>> - <<set $PC.skill.medicine -= _Cal>> - <</if>> - <<if _oldSkill <= 10>> - <<if $PC.skill.medicine > 10>> - You now have @@.green;basic knowledge@@ about how to be a slave surgeon. - <<else>> - You have made progress towards a basic knowledge of slave surgery. - <</if>> - <<elseif _oldSkill <= 30>> - <<if $PC.skill.medicine > 30>> - You now have @@.green;some skill@@ as a slave surgeon. - <<else>> - You have made progress towards being skilled in slave surgery. - <</if>> - <<elseif _oldSkill <= 60>> - <<if $PC.skill.medicine > 60>> - You are now an @@.green;expert slave surgeon.@@ - <<else>> - You have made progress towards being an expert in slave surgery. - <</if>> - <<else>> - <<if $PC.skill.medicine >= 100>> - <<set $personalAttention = "sex">> - You are now a @@.green;master slave surgeon.@@ - <<else>> - You have made progress towards mastering slave surgery. - <</if>> - <</if>> - - <<case "hacking">> - <<set _oldSkill = $PC.skill.hacking>> - <<if _X == 1>> - <<set $PC.skill.hacking += _Cal>> - <<else>> - <<set $PC.skill.hacking -= _Cal>> - <</if>> - <<if _oldSkill <= 10>> - <<if $PC.skill.hacking > 10>> - You now have @@.green;basic knowledge@@ about how to hack and manipulate data. - <<else>> - You have made progress towards a basic knowledge of hacking and data manipulation. - <</if>> - <<elseif _oldSkill <= 30>> - <<if $PC.skill.hacking > 30>> - You now have @@.green;some skill@@ as a hacker. - <<else>> - You have made progress towards being skilled in hacking and data manipulation. - <</if>> - <<elseif _oldSkill <= 60>> - <<if $PC.skill.hacking > 60>> - You are now an @@.green;expert hacker.@@ - <<else>> - You have made progress towards being an expert in hacking and data manipulation. - <</if>> - <<else>> - <<if $PC.skill.hacking >= 100>> - <<set $personalAttention = "sex">> - You are now a @@.green;master hacker.@@ - <<else>> - You have made progress towards mastering hacking and data manipulation. - <</if>> - <</if>> - - <<case "technical accidents">> - <<set _windfall = Math.trunc((150*$PC.skill.hacking)+random(100,2500)), _X = 0>> - <<if $PC.skill.hacking == -100>> - <<set _Catchtchance = 10>> - <<elseif $PC.skill.hacking <= -75>> - <<set _Catchtchance = 30>> - <<elseif $PC.skill.hacking <= -50>> - <<set _Catchtchance = 40>> - <<elseif $PC.skill.hacking <= -25>> - <<set _Catchtchance = 45>> - <<elseif $PC.skill.hacking == 0>> - <<set _Catchtchance = 50>> - <<elseif $PC.skill.hacking <= 25>> - <<set _Catchtchance = 60>> - <<elseif $PC.skill.hacking <= 50>> - <<set _Catchtchance = 70>> - <<elseif $PC.skill.hacking <= 75>> - <<set _Catchtchance = 85>> - <<elseif $PC.skill.hacking >= 100>> - <<set _Catchtchance = 100>> - <</if>> - This week your services to the highest bidder earned you @@.yellowgreen;<<print cashFormat(_windfall)>>.@@ - <<if random(0,100) >= _Catchtchance>> - However, since the source of the attack was traced back to your arcology, your - <<if $secExpEnabled > 0>> <<set _X = 1>> - @@.red;authority,@@ <<set $SecExp.core.authority -= random(100,500)>> @@.red;crime rate@@ <<set $SecExp.core.crimeLow += random(10,25)>> and - <</if>> - @@.red;reputation@@ <<run repX(forceNeg(random(50,500)), "event")>> - <<if _X != 1>> - has - <<else>> - have all - <</if>> - been negatively affected. - <</if>> - <<if $PC.skill.hacking < 100>> - <<= IncreasePCSkills('hacking', 0.5)>> - <</if>> - <<run cashX(_windfall, "personalBusiness")>> - - <</switch>> -<</if>> - -<<if $policies.cashForRep == 1>> - <<if $cash > 1000>> - This week you gave up business opportunities worth <<print cashFormat(policies.cost())>> to help deserving citizens, @@.green;burnishing your reputation.@@ - <<run repX(1000, "personalBusiness")>> - <<run cashX(forceNeg(policies.cost()), "policies")>> - <<if $PC.degeneracy > 1>> - This also helps @@.green;offset any rumors@@ about your private actions. - <<set $PC.degeneracy -= 1>> - <</if>> - <<else>> - Money was too tight this week to risk giving up any business opportunities. - <</if>> -<</if>> -<<if $policies.goodImageCampaign == 1>> - <<if $cash > 5000>> - This week you paid <<print cashFormat(policies.cost())>> to have positive rumors spread about you, @@.green;making you look good<<if $PC.degeneracy > 1>> and weakening existing undesirable rumors<<set $PC.degeneracy -= 2>><</if>>.@@ - <<run repX(500, "personalBusiness")>> - <<run cashX(forceNeg(policies.cost()), "policies")>> - <<else>> - You lacked enough extra ¤ to pay people to spread positive rumors about you this week. - <</if>> -<</if>> -<<if $rep > 20>> - <<if $policies.cashForRep == -1>> - This week you used your position to secure business opportunities worth <<print cashFormat(policies.cost())>> at the expense of citizens, @@.red;damaging your reputation.@@ - <<run repX(-20, "personalBusiness")>> - <<run cashX(policies.cost(), "personalBusiness")>> - <</if>> -<</if>> -<<if $rep <= 18000>> - <<if $policies.regularParties == 0>> - <<if $rep > 3000>> - Your @@.red;reputation is damaged@@ by your not hosting regular social events for your leading citizens. - <<run repX(-50, "personalBusiness")>> - <<else>> - Though you are not hosting regular social events for your leading citizens, your lack of renown prevents this from damaging your reputation; they don't expect someone so relatively unknown to be throwing parties. - <</if>> - <</if>> -<</if>> - -<<if $secExpEnabled > 0>> - <<if $SecExp.smilingMan.progress === 10 && random(1,100) >= 85>> - This week one of the offside adventures of The Smiling Man produced a copious amount of money, of which @@.yellowgreen;you receive your share.@@ - <<run cashX(random(10,20) * 1000, "personalBusiness")>> - <</if>> - - <<if $SecExp.buildings.secHub && $SecExp.edicts.sellData == 1>> - <<set _upgradeCount = 0>> - <<set _upgradeCount += Object.values($SecExp.buildings.secHub.upgrades.security).reduce((a, b) => a + b)>> - <<set _upgradeCount += Object.values($SecExp.buildings.secHub.upgrades.crime).reduce((a, b) => a + b)>> - <<set _upgradeCount += Object.values($SecExp.buildings.secHub.upgrades.intel).reduce((a, b) => a + b)>> - - <<set _dataGain = _upgradeCount * 200>> - <<if !Number.isInteger(_dataGain)>> - <br>@@.red;Error, dataGain is NaN@@ - <<else>> - You are selling the data collected by your security department, which earns a discreet sum of @@.yellowgreen;<<print cashFormat(_dataGain)>>.@@ - <<run cashX(_dataGain, "personalBusiness")>> - Many of your citizens are not enthusiastic of this however, @@.red;damaging your authority.@@ - <<set $SecExp.core.authority -= 50>> - <</if>> - <</if>> - - <<if $SecExp.buildings.propHub && $SecExp.buildings.propHub.upgrades.marketInfiltration > 0>> - <<set _blackMarket = random(7000,8000)>> - Your secret service makes use of black markets and illegal streams of goods to make a profit, making you @@.yellowgreen;<<print cashFormat(_blackMarket)>>.@@ This however allows @@.red;crime to flourish@@ in the underbelly of the arcology. - <<set $SecExp.core.crimeLow += random(1,3)>> - <<run cashX(_blackMarket, "personalBusiness")>> - <</if>> - - <<if $arcRepairTime > 0>> - The recent rebellion left the arcology wounded and it falls to its owner to fix it. It will still take <<if $arcRepairTime > 1>>$arcRepairTime weeks<<else>>a week<</if>> to finish repair works. - <<run cashX(-5000, "personalBusiness")>> - <<set $arcRepairTime--, IncreasePCSkills('engineering', 0.1)>> - <</if>> - - <<if $SecExp.buildings.weapManu>> - <br><br>The weapons manufacturing complex produces armaments - <<if $SecExp.buildings.weapManu.productivity <= 2>> at a steady pace. - <<else>> with great efficiency. - <</if>> - <<set _income = 0>> - <<set _price = Math.trunc(Math.clamp(random(1,2) + ($arcologies[0].prosperity / 15) - ($week / 30), 2, 8))>> - <<set _factoryMod = Math.round(1 + ($SecExp.buildings.weapManu.productivity + $SecExp.buildings.weapManu.lab) / 2 + ($SecExp.buildings.weapManu.menials / 100))>> - <<if $SecExp.buildings.weapManu.sellTo.citizen == 1>> - <<if $SecExp.edicts.weaponsLaw == 3>> - Your lax regulations regarding weapons allows your citizens to buy much of what you are capable of producing. - <<set _income += Math.round(($ACitizens * 0.1) * _price * _factoryMod)>> - <<elseif $SecExp.edicts.weaponsLaw >= 1>> - Your policies allow your citizen to buy your weaponry and they buy much of what you are capable of producing. - <<set _income += Math.round((($ACitizens * 0.1) * _price * _factoryMod) / (3 - $SecExp.edicts.weaponsLaw))>> - <<else>> - Your policies do allow your citizen to buy weaponry, meaning all your income will come from exports. - <</if>> - <</if>> - <<if $SecExp.buildings.weapManu.sellTo.raiders == 1>> - Some weapons are sold to the various raider gangs infesting the wastelands. - <<set _income += Math.round($week / 3 * (_price / 2) * 10 * _factoryMod)>> - <</if>> - <<if $SecExp.buildings.weapManu.sellTo.oldWorld == 1>> - Part of our production is sold to some old world nations. - <<set _income += Math.round($week / 3 * _price * 10 * _factoryMod)>> - <</if>> - <<if $SecExp.buildings.weapManu.sellTo.FC == 1>> - A share of our weapons production is sold to other Free Cities. - <<set _income += Math.round($week / 3 * _price * 10 * _factoryMod)>> - <</if>> - <<if $peacekeepers.strength >= 50>> - The peacekeeping force is always in need of new armaments and is happy to be supplied by their ally. - <<set _income += Math.round($peacekeepers.strength * _price * 10 * _factoryMod)>> - <</if>> - <<set _income = Math.trunc(_income * 0.5)>> - This week we made @@.yellowgreen;<<print cashFormat(_income)>>.@@ - <<if !Number.isInteger(_income)>> - <br>@@.red;Error failed to calculate income@@ - <<else>> - <<run cashX(_income, "personalBusiness")>> - <</if>> - <</if>> - - <<if $SecExp.edicts.taxTrade == 1>> <<set _tradeTax = Math.ceil($SecExp.core.trade * random(80,120))>> - <br>Fees on transitioning goods this week made @@.yellowgreen;<<print cashFormat(_tradeTax)>>.@@ - <<run cashX(Math.ceil(_tradeTax), "personalBusiness")>> - <</if>> - <br> -<</if>> - -Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@ -<<if $plot == 1>> - <<if $week > 10>> - <<if $weatherToday.severity-$weatherCladding > 2>> - <<set $weatherAwareness = 1>> - <<if $weatherCladding == 1>> - <<set _weatherRepairCost = Math.trunc((($weatherToday.severity-3)*($arcologies[0].prosperity*random(50,100)))+random(1,100)), IncreasePCSkills('engineering', 0.1)>> - $arcologies[0].name's hardened exterior only partially resisted the extreme weather this week, and it requires repairs costing @@.yellow;<<print cashFormat(_weatherRepairCost)>>.@@ Your citizens are @@.green;grateful@@ to you for upgrading $arcologies[0].name to provide a safe haven from the terrible climate. - <<run repX(500, "architecture")>> - <<elseif $weatherCladding == 2>> - <<set _weatherRepairCost to Math.trunc((($weatherToday.severity-4)*($arcologies[0].prosperity*random(50,100)))+random(1,100)), IncreasePCSkills('engineering', 0.1)>> - $arcologies[0].name's hardened exterior only partially resisted the extreme weather this week, and it requires repairs costing @@.yellow;<<print cashFormat(_weatherRepairCost)>>.@@ Your citizens are @@.green;grateful@@ to you for upgrading $arcologies[0].name to provide a safe haven from the terrible climate. - <<run repX(500, "architecture")>> - <<else>> - <<set _weatherRepairCost = Math.trunc((($weatherToday.severity-2)*($arcologies[0].prosperity*random(50,100)))+random(1,100)), IncreasePCSkills('engineering', 0.1)>> - Severe weather damaged the arcology this week, requiring repairs costing @@.yellow;<<print cashFormat(_weatherRepairCost)>>.@@ Your citizens are @@.red;unhappy@@ that the arcology has proven vulnerable to the terrible climate. - <<run repX(-50, "architecture")>> - <</if>> - <<if $cash > 0>> - <<run cashX(forceNeg(Math.trunc(_weatherRepairCost)), "weather")>> - <<elseif $arcologies[0].FSRestartDecoration == 100>> - Since you lack the resources to effect prompt repairs yourself, the Societal Elite cover for you. The arcology's prosperity is @@.red;is damaged,@@ but your public reputation is left intact. - <<if $eugenicsFullControl != 1>> - The Societal Elite @@.red;are troubled by your failure.@@ - <<set $failedElite += 100>> - <</if>> - <<if $arcologies[0].prosperity > 50>> - <<set $arcologies[0].prosperity -= random(5,10), IncreasePCSkills('engineering', 0.1)>> - <</if>> - <<run cashX(forceNeg(Math.trunc(_weatherRepairCost/4)), "weather")>> - <<else>> - Since you lack the resources to effect prompt repairs yourself, prominent citizens step in to repair their own parts of the arcology. This is @@.red;terrible for your reputation,@@ and it also @@.red;severely reduces the arcology's prosperity.@@ - <<if $arcologies[0].prosperity > 50>> - <<set $arcologies[0].prosperity -= random(5,10), IncreasePCSkills('engineering', 0.1)>> - <</if>> - <<run repX((Math.trunc($rep*0.9)) - $rep, "weather")>> - <<= IncreasePCSkills('engineering', 0.1)>> - <<run cashX(forceNeg(Math.trunc(_weatherRepairCost/4)), "weather")>> - <</if>> - <<elseif $weatherToday.severity-$weatherCladding <= 2>> - <<if $weatherToday.severity > 2>> - <<set $weatherAwareness = 1>> - The arcology's hardened exterior resisted severe weather this week. Your citizens are @@.green;grateful@@ to you for maintaining the arcology as a safe haven from the terrible climate. - <<run repX(500, "architecture")>> - <</if>> - <</if>> - <</if>> -<</if>> -<<set $costs = Math.trunc(Math.abs(calculateCosts.bill()) * 100)/100>> /*overwrite the prediction and actually pay the bill. GetCost should return a negative. Round to two decimal places.*/ -<<if isNaN($costs)>> - <br>@@.red;Error, costs is NaN@@ -<</if>> - -/*Adding random changes to slave demand and supply*/ -<<run endWeekSlaveMarket()>> -<<if $menialDemandFactor <= -35000>> - <br>Demand for slaves is approaching a @@.red;''historic low'',@@ forecasts predict - <<if $deltaDemand > 0>> - the market will turn soon and @@.green;''demand will rise''.@@ - <<elseif $deltaDemand < 0>> - @@.red;''demand will continue to weaken'',@@ but warn the bottom is in sight. - <<else>> - the current demand will @@.yellow;''stabilize''.@@ - <</if>> -<<elseif $menialDemandFactor <= -20000>> - <br>Demand for slaves is @@.red;''very low'',@@ forecasts predict - <<if $deltaDemand > 0>> - the market will turn soon and @@.green;''demand will rise''.@@ - <<elseif $deltaDemand < 0>> - @@.red;''demand will continue to weaken''.@@ - <<else>> - the current demand will @@.yellow;''stabilize''.@@ - <</if>> -<<elseif $menialDemandFactor >= 35000>> - <br>Demand for slaves is approaching a @@.green;''historic high'',@@ forecasts predict - <<if $deltaDemand > 0>> - @@.green;''demand will continue to rise'',@@ but warn the peak is in sight. - <<elseif $deltaDemand < 0>> - the market will turn soon and @@.red;''demand will weaken''.@@ - <<else>> - the current demand will @@.yellow;''stabilize''.@@ - <</if>> -<<elseif $menialDemandFactor >= 20000>> - <br>Demand for slaves is @@.green;''very high'',@@ forecasts predict - <<if $deltaDemand > 0>> - @@.green;''demand will continue to rise''.@@ - <<elseif $deltaDemand < 0>> - the market will turn soon and @@.red;''demand will weaken''.@@ - <<else>> - the current demand will @@.yellow;''stabilize''.@@ - <</if>> -<<else>> - <br>Demand for slaves is @@.yellow;''average'',@@ forecasts predict - <<if $deltaDemand > 0>> - the market will see @@.green;''rising demand''.@@ - <<elseif $deltaDemand < 0>> - the market will see @@.red;''weakening demand''.@@ - <<else>> - it will @@.yellow;''remain stable''@@ for the coming months. - <</if>> -<</if>> -<<if $menialSupplyFactor <= -35000>> - <br>Supply of slaves is approaching a @@.green;''historic low'',@@ forecasts predict - <<if $deltaSupply > 0>> - the market will turn soon and @@.red;''supply will rise''.@@ - <<elseif $deltaSupply < 0>> - @@.green;''supply will continue to weaken'',@@ but warn the bottom is in sight. - <<else>> - the current supply will @@.yellow;''stabilize''.@@ - <</if>> -<<elseif $menialSupplyFactor <= -20000>> - <br>Supply for slaves is @@.green;''very low'',@@ forecasts predict - <<if $deltaSupply > 0>> - the market will turn soon and @@.red;''supply will rise''.@@ - <<elseif $deltaSupply < 0>> - @@.green;''supply will continue to weaken''.@@ - <<else>> - the current supply will @@.yellow;''stabilize''.@@ - <</if>> -<<elseif $menialSupplyFactor >= 35000>> - <br>Supply for slaves is approaching a @@.red;''historic high'',@@ forecasts predict - <<if $deltaSupply > 0>> - @@.red;''supply will continue to rise'',@@ but warn the peak is in sight. - <<elseif $deltaSupply < 0>> - the market will turn soon and @@.green;''supply will weaken''.@@ - <<else>> - the current supply will @@.yellow;''stabilize''.@@ - <</if>> -<<elseif $menialSupplyFactor >= 20000>> - <br>Supply for slaves is @@.red;''very high'',@@ forecasts predict - <<if $deltaSupply > 0>> - @@.red;''supply will continue to rise''.@@ - <<elseif $deltaSupply < 0>> - the market will turn soon and @@.green;''supply will weaken''.@@ - <<else>> - the current supply will @@.yellow;''stabilize''.@@ - <</if>> -<<else>> - <br>Supply for slaves is @@.yellow;''average'',@@ forecasts predict - <<if $deltaSupply > 0>> - the market will see @@.red;''rising supply''.@@ - <<elseif $deltaSupply < 0>> - the market will see @@.green;''weakening supply''.@@ - <<else>> - it will @@.yellow;''remain stable''@@ for the coming months. - <</if>> -<</if>> - -/* Menial and regular slave markets are part of the same market, e.a. if (menial)slave supply goes up, all slave prices fall. -The RomanFS may need further tweaking (it probably got weaker). Could increase the slave supply cap if this FS is chosen to fix. */ - -<<set $slaveCostFactor = menialSlaveCost()/1000>> -<<if $arcologies[0].FSRomanRevivalist > random(1,150)>> - <<if $slaveCostFactor > 0.8>> - <br><br>@@.yellow;Your Roman Revivalism is having an effect on the slave market and has driven local prices down@@ by convincing slave traders that this is a staunchly pro-slavery area.<br> - <<set $menialSupplyFactor += 2000>> - <<else>> - <br><br>@@.yellow;Your Roman Revivalism is having an effect on the slave market and is holding local prices down@@ by convincing slave traders that this is a staunchly pro-slavery area.<br> - <</if>> -<</if>> - -<<if $difficultySwitch == 1>> - <<if $econWeatherDamage > 0>> - <<set _repairSeed = random(1,3)>> - <<if $disasterResponse == 0>> - <<if _repairSeed == 3>> - <<set $econWeatherDamage -= 1>> - <<set $localEcon += 1>> - <</if>> - <<elseif $disasterResponse == 1>> - <<if _repairSeed > 1>> - <<set $econWeatherDamage -= 1>> - <<set $localEcon += 1>> - <</if>> - <<else>> - <<if _repairSeed == 3>> - <<if $econWeatherDamage > 1>> - <<set $econWeatherDamage -= 2>> - <<set $localEcon += 2>> - <<else>> - <<set $econWeatherDamage -= 1>> - <<set $localEcon += 1>> - <</if>> - <<else>> - <<set $econWeatherDamage -= 1>> - <<set $localEcon += 1>> - <</if>> - <</if>> - <</if>> - <<if $terrain != "oceanic">> - <<if $weatherToday.severity == 3>> - <<set $localEcon -= 1>> - <<set $econWeatherDamage += 1>> - <br><br>This week's terrible weather did a number on the region, @@.red;hurting the local economy.@@ <<if $disasterResponse == 0>>//Investing in a disaster response unit will speed up recovery//<</if>> - <<elseif $weatherToday.severity > 3>> - <<set $localEcon -= 3>> - <<set $econWeatherDamage += 3>> - <br><br>This week's extreme weather ravaged the region, @@.red;the local economy is seriously disrupted.@@ <<if $disasterResponse == 0>>//Investing in a disaster response unit will speed up recovery//<</if>> - <</if>> - <</if>> -<</if>> - -<<if $SF.Toggle && $SF.Active >= 1>> <<= App.SF.AAR()>> <</if>> diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw index 542fece06e4b911b01f0faecbe37f17d10d52100..a67c0a0ac5caab3898a843819c7bf7687a6312a5 100644 --- a/src/uncategorized/randomNonindividualEvent.tw +++ b/src/uncategorized/randomNonindividualEvent.tw @@ -86,7 +86,7 @@ <<if $pregInventor == 0>> <<if $eventSlave.bellyPreg >= 600000 && $eventSlave.counter.birthsTotal > 30 && $eventSlave.ovaries == 1 && canDoVaginal($eventSlave) && canSee($eventSlave)>> <<if $eventSlave.fetish != "mindbroken" && $eventSlave.fuckdoll == 0>> - <<if ($eventSlave.devotion > 90 && $eventSlave.trust > 50) || $activeSlave.sexualFlaw == "breeder">> + <<if ($eventSlave.devotion > 90 && $eventSlave.trust > 50) || $eventSlave.sexualFlaw == "breeder">> <<if $eventSlave.intelligence+$eventSlave.intelligenceImplant > 50>> <<set $events.push("RE preg inventor")>> <</if>> @@ -281,17 +281,6 @@ /* Multislave Events */ <<set _L = App.Utils.countFacilityWorkers(["brothel", "clinic", "club", "dairy", "cellblock", "spa", "schoolroom", "servantsQuarters"])>> - <<if $fuckSlaves > 1>> - <<set $bedSlaves = $slaves.filter(function(s) { return s.devotion > 50 && (s.assignment == "please you" || s.assignment == "serve in the master suite" || s.assignment == "be your Concubine") && !isAmputee(s) && canDoAnal(s); })>> - <<if def $bedSlaves[1]>> - <<set $bedSlaves = $bedSlaves.shuffle()>> - <<set $bedSlaves.length = 2>> - <<set $bedSlaves[0] = $bedSlaves[0].ID>> - <<set $bedSlaves[1] = $bedSlaves[1].ID>> - <<set $events.push("RE full bed")>> - <</if>> - <</if>> - <<if $dairyRestraintsSetting >= 2>> <<set $rebelSlaves = $slaves.filter(function(s) { return s.devotion < -20 && s.assignment != "be confined in the arcade" && canWalk(s) && s.assignment != "work in the dairy"; })>> <<else>> diff --git a/src/uncategorized/reBusyMasterSuite.tw b/src/uncategorized/reBusyMasterSuite.tw index 27aad3256dd8df2b49da27f1ad946eabb84395cd..16a1aafe364b4dd3f990dbfae26da359ec03fbc6 100644 --- a/src/uncategorized/reBusyMasterSuite.tw +++ b/src/uncategorized/reBusyMasterSuite.tw @@ -137,11 +137,11 @@ <<replace "#result">> <<setLocalPronouns _top.slave 2>> _S.Concubine.slaveName anticipates you, and is already sliding $himself partway out of _top.slave.slaveName and cocking $his hips to spread $his - <<if $activeSlave.butt > 15>> + <<if _S.Concubine.butt > 15>> immeasurable - <<elseif $activeSlave.butt > 10>> + <<elseif _S.Concubine.butt > 10>> expansive - <<elseif $activeSlave.butt > 7>> + <<elseif _S.Concubine.butt > 7>> enormous <<elseif (_S.Concubine.butt > 5)>> huge @@ -177,11 +177,11 @@ lips <</if>> around your <<if ($PC.dick == 0)>>clit<<else>>cock<<if $PC.vagina != -1>> and starts stroking your pussy<</if>><</if>> eagerly enough, even as _msSlaves[1].slave.slaveName goes back to fucking _him2. The sex train is fairly gentle, since anything too fast would disintegrate the gymnastic arrangement, but _bottomSlave.slaveName is still getting enough stimulation that _he2 whimpers quietly into your <<if ($PC.vagina != -1)>>pussy<<else>>dick<</if>>, a nice feeling. The blowjob is <<if (_bottomSlave.skill.oral >= 100)>>masterful, despite the distraction<<elseif (_bottomSlave.skill.oral > 10)>>serviceable, despite the distraction<<else>>only mediocre, but serviceable enough<</if>>, so you let _him2 work for a while before gently shoving _him2 off the side of the bed and telling _him2 to get to the back of the line. The slaves all shuffle forward awkwardly, and inadvertently block your view so that you hear rather than see _bottomSlave.slaveName start groping your concubine _S.Concubine.slaveName's - <<if $activeSlave.butt > 15>> + <<if _S.Concubine.butt > 15>> immeasurable - <<elseif $activeSlave.butt > 10>> + <<elseif _S.Concubine.butt > 10>> expansive - <<elseif $activeSlave.butt > 7>> + <<elseif _S.Concubine.butt > 7>> enormous <<elseif (_S.Concubine.butt > 5)>> huge diff --git a/src/uncategorized/reFullBed.tw b/src/uncategorized/reFullBed.tw deleted file mode 100644 index 850090d38cdcc5887a5702f33cf25484cef3fac3..0000000000000000000000000000000000000000 --- a/src/uncategorized/reFullBed.tw +++ /dev/null @@ -1,139 +0,0 @@ -:: RE full bed [nobr] -/* all slaves that enter this passage have all limbs */ -<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">> - -<<set _bedSlaveOne = $slaveIndices[$bedSlaves[0]]>> -<<set _bedSlaveTwo = $slaveIndices[$bedSlaves[1]]>> - -/* 000-250-006 */ -<<if $seeImages == 1>> - <div class="imageColumn"> - <div class="imageRef medImg"> - <<= SlaveArt($slaves[_bedSlaveOne], 2, 0)>> - </div> - <div class="imageRef medImg"> - <<= SlaveArt($slaves[_bedSlaveTwo], 2, 0)>> - </div> - </div> -<</if>> -/* 000-250-006 */ - -<<setLocalPronouns $slaves[_bedSlaveOne]>> -<<setLocalPronouns $slaves[_bedSlaveTwo] 2>> - -You have the luxury of being attended to by a coterie of devoted sex slaves. Tonight, $slaves[_bedSlaveTwo].slaveName and <<= contextualIntro($slaves[_bedSlaveTwo], $slaves[_bedSlaveOne])>> are with you when it's time for bed, so they strip naked and climb under the sheets with you, one on either side. They snuggle in under both of your arms so that each can rest their head on your shoulder, a hand on your chest, <<if $slaves[_bedSlaveTwo].boobs > 300 && $slaves[_bedSlaveOne].boobs > 300>>their breasts against your flank, <</if>><<if $slaves[_bedSlaveTwo].belly > 5000 && $slaves[_bedSlaveOne].belly > 5000>>their swollen belly against yours, <</if>>and the warmth between their legs against your hip. - -<br><br> - -Today was an unusually relaxing day, and you aren't particularly tired. - -<br><br> - -<span id="result"> -<<link "Take a slave in each hand">> - <<replace "#result">> - With each of your arms around a slave, you begin to run your hands across their bodies. They snuggle closer to you, their nipples growing hard and their hips grinding against you. As your grasp runs lower and lower, cupping and massaging their buttocks, they begin to kiss the chest against which their adoring faces are pressed, and reach down <<if $PC.dick == 0>>to your pussy<<else>><<if $PC.vagina != -1>>towards your cock and cunt<<else>>for your member<</if>><</if>>. The more manually skilled begins to give you a gentle stroke, while the other softly massages your <<if ($PC.dick == 0)>>mons<<else>>testicles<</if>>. They stiffen in unison when you hook two fingers up each asshole, but immediately relax and begin to work you harder. They orgasm one after the other, their butts clenching against your intruding fingers, and then eagerly clean you with their mouths when you climax yourself. They have become @@.hotpink;still more devoted to you.@@ - <<set $slaves[_bedSlaveOne].devotion += 4, $slaves[_bedSlaveTwo].devotion += 4>> - <<set $slaves[_bedSlaveOne].counter.anal++, $slaves[_bedSlaveTwo].counter.anal++>> - <<set $analTotal += 2>> - <</replace>> -<</link>> -<<if $slaves[_bedSlaveOne].bellyPreg >= 5000 && $slaves[_bedSlaveTwo].bellyPreg >= 5000 && $PC.dick != 0>> - <br><<link "Fondle their pregnancies">> - <<replace "#result">> - With your arms each around a slave, you begin to run your hands across their bodies, focusing your attention on their full pregnancies. They snuggle closer to you, their nipples growing hard and their hips grinding against you. As they move, your rising cock catches between their gravid middles, giving you an idea. Shifting your arms under and around their backs, you pull them together over your erect member and begin using their taut stomachs to pleasure yourself. They quickly catch on and push closer to each other, trapping your dick between them. Once they begin rubbing, and you humping, the skin surrounding you is quickly coated in precum. They smile at you as they feel your penis tense, and with one final thrust you coat their bellies in a layer of cum. They love your discovery of a new way to enjoy their bodies and become @@.hotpink;even more devoted to you.@@ - <<set $slaves[_bedSlaveOne].devotion += 5, $slaves[_bedSlaveTwo].devotion += 5>> - <</replace>> - <</link>> -<</if>> -<<if $seePreg != 0>> - <<if canImpreg($slaves[_bedSlaveOne], $PC) && canImpreg($slaves[_bedSlaveTwo], $PC)>> - <br><<link "Tire yourself out with some babymaking">> - <<replace "#result">> - Without warning, you roll on top of $slaves[_bedSlaveOne].slaveName and slip your dick right into $his - <<if $slaves[_bedSlaveOne].mpreg == 1>> - <<if $slaves[_bedSlaveOne].anus == 0>>virgin <</if>>anus. - <<else>> - <<if $slaves[_bedSlaveOne].vagina == 0>>virgin <</if>>pussy. - <</if>> - Once the surprise wears off and the pleasure sets in, $he wraps $his arm<<if hasBothArms($slaves[_bedSlaveOne])>>s<</if>> around you and basks in your attention. Feeling left out, $slaves[_bedSlaveTwo].slaveName slides over to tease _his2 bucking bedmate. Drawing close to the moaning $girl, _he2 reaches for $his bouncing tits, only to cop a feel of your cock thrusting deep inside $him. _He2 watches, eyes wide with lust, at the bulge of your penis in $his lower belly. You make sure to give _him2 a show before you cum, thrusting hard and deep as you can. _He2 gasps at the sight and brings _his2 hand to the lump just in time to feel you ejaculate deep inside $slaves[_bedSlaveOne].slaveName. - <<if $PC.balls >= 30>> - _He2 squeaks in shock as _he2 feels $slaves[_bedSlaveOne].slaveName's belly swell under _his2 hand with your massive load. _He2 quickly brings _his2 other hand to massage it as the orgasming cumballoon squirms in pleasure. - <<elseif $PC.balls >= 14>> - _He2 squeaks in surprise as _he2 feels $slaves[_bedSlaveOne].slaveName's belly swell slightly under _his2 hand with your huge load. - <<elseif $PC.balls >= 9>> - _He2's amazed by how big the load felt under _his2 hand. - <</if>> - You beckon _him2 to lie down next to exhausted $girl and spread _his2 legs for _his2 seeding. As you take _him2, $slaves[_bedSlaveOne].slaveName leans over and pulls _him2 into a deep kiss. You make sure to not blow your next load too quickly, instead savoring the sight of your soon-to-be-mothers making out, but you can only hold out so long before you paint the depths of $slaves[_bedSlaveTwo].slaveName's - <<if $slaves[_bedSlaveTwo].mpreg == 1>> - <<if $slaves[_bedSlaveTwo].anus == 0>>once virgin <</if>>anus - <<else>> - <<if $slaves[_bedSlaveTwo].vagina == 0>>once virgin <</if>>pussy - <</if>> - with your potent baby batter<<if $PC.balls >= 30>> until _his2 stomach is distended and wobbling with cum<<elseif $PC.balls >= 14>> until _his2 womb is stuffed with seed<</if>>. You switch off with the two of them, fucking them in turn, until both pass out with a hand on the other's <<if $PC.balls >= 30>>massively bloated <<elseif $PC.balls >= 14>>bloated <<elseif $PC.balls >= 9>>swollen <</if>>belly and cum pooling from their thoroughly seeded holes. You slide back in between them for a well earned sleep<<if $PC.balls >= 30>>, their middles resting on your own, their cum stuffed wombs a testament to your virility<<elseif $PC.balls >= 14>>, their middles resting on your own, their cum filled wombs a testament to your virility<</if>>. - <<set $slaves[_bedSlaveOne].devotion += 3, $slaves[_bedSlaveTwo].devotion += 3, $slaves[_bedSlaveOne].trust += 3, $slaves[_bedSlaveTwo].trust += 3>> - $slaves[_bedSlaveOne].slaveName is @@.hotpink;honored to bear your children@@ and @@.mediumaquamarine;snuggles even closer.@@ - <<if $slaves[_bedSlaveOne].mpreg == 1>> - <<if $slaves[_bedSlaveOne].anus == 0>>Your endeavors have @@.lime;taken $his anal virginity.@@ @@.hotpink;$He couldn't be happier.@@ <<set $slaves[_bedSlaveOne].devotion += 10>><</if>> - <<set $slaves[_bedSlaveOne].counter.anal += 3>> - <<set $analTotal += 3>> - <<= knockMeUp($slaves[_bedSlaveOne], 100, 1, -1)>> - <<else>> - <<if $slaves[_bedSlaveOne].vagina == 0>>Your endeavors have @@.lime;taken $his virginity.@@ @@.hotpink;$He couldn't be happier.@@ <<set $slaves[_bedSlaveOne].devotion += 10>><</if>> - <<set $slaves[_bedSlaveOne].counter.vaginal += 3>> - <<set $vaginalTotal += 3>> - <<= knockMeUp($slaves[_bedSlaveOne], 100, 0, -1)>> - <</if>> - $slaves[_bedSlaveTwo].slaveName is @@.hotpink;thrilled to carry your child@@ and @@.mediumaquamarine;happily embraces the gift inside _him2.@@ - <<if $slaves[_bedSlaveTwo].mpreg == 1>> - <<if $slaves[_bedSlaveTwo].anus == 0>>Your endeavors have @@.lime;taken _his2 anal virginity.@@ @@.hotpink;_He2 couldn't be happier.@@ <<set $slaves[_bedSlaveTwo].devotion += 10>><</if>> - <<set $slaves[_bedSlaveTwo].counter.anal += 3>> - <<set $analTotal += 3>> - <<= knockMeUp($slaves[_bedSlaveTwo], 100, 1, -1)>> - <<else>> - <<if $slaves[_bedSlaveTwo].vagina == 0>>Your endeavors have @@.lime;taken _his2 virginity.@@ @@.hotpink;_He2 couldn't be happier.@@ <<set $slaves[_bedSlaveTwo].devotion += 10>><</if>> - <<set $slaves[_bedSlaveTwo].counter.vaginal += 3>> - <<set $vaginalTotal += 3>> - <<= knockMeUp($slaves[_bedSlaveTwo], 100, 0, -1)>> - <</if>> - <</replace>> - <</link>> - <</if>> -<</if>> -<br><<link "Pull up the sheets and wrestle">> - <<replace "#result">> - Without warning, you jerk the sheets all the way up and pin them at the head of the bed. They giggle as you seize first the one and then the other, groping and tickling. $slaves[_bedSlaveTwo].slaveName and $slaves[_bedSlaveOne].slaveName catch the spirit of fun, and rove around in the soft darkness under the sheets. You're <<if $PC.dick != 0>>rock hard<<if $PC.vagina != -1>> and <</if>><</if>><<if $PC.vagina != -1>>soaking wet<</if>> in no time, wrestling with two naked slaves, and begin to fuck the first one you can grab and hold. When you <<if ($PC.dick == 0)>>finish with $him<<else>>come inside $him<</if>>, you <<if (!isAmputee($slaves[_bedSlaveOne]))>>release $him and $he slides out of bed to wash; by the time $he gets back under the sheets, clean and fresh, you're on the point of fucking<<else>>carry $his limbless, helpless body out of bed to wash $him, and then return to the bed to fuck<</if>> the other. You switch off with the two of them, fucking them in turn, until everyone falls asleep in an exhausted pile. They have become @@.mediumaquamarine;still more trusting of you.@@ - <<set $slaves[_bedSlaveOne].trust += 4, $slaves[_bedSlaveTwo].trust += 4>> - <<if canDoVaginal(_bedSlaveOne)>> - <<set $slaves[_bedSlaveOne].counter.vaginal += 2>> - <<set $vaginalTotal += 2>> - <<set $slaves[_bedSlaveOne].counter.anal++>> - <<set $analTotal++>> - <<if canImpreg($slaves[_bedSlaveOne], $PC)>> - <<= knockMeUp($slaves[_bedSlaveOne], 10, 2, -1, 1)>> - <</if>> - <<else>> - <<set $slaves[_bedSlaveOne].counter.anal += 3>> - <<set $analTotal += 3>> - <<if canImpreg($slaves[_bedSlaveOne], $PC)>> - <<= knockMeUp($slaves[_bedSlaveOne], 15, 1, -1, 1)>> - <</if>> - <</if>> - <<if canDoVaginal(_bedSlaveTwo)>> - <<set $slaves[_bedSlaveTwo].counter.vaginal += 2>> - <<set $vaginalTotal += 2>> - <<set $slaves[_bedSlaveTwo].counter.anal++>> - <<set $analTotal++>> - <<if canImpreg($slaves[_bedSlaveTwo], $PC)>> - <<= knockMeUp($slaves[_bedSlaveTwo], 10, 2, -1, 1)>> - <</if>> - <<else>> - <<set $slaves[_bedSlaveTwo].counter.anal += 3>> - <<set $analTotal += 3>> - <<if canImpreg($slaves[_bedSlaveTwo], $PC)>> - <<= knockMeUp($slaves[_bedSlaveTwo], 15, 1, -1, 1)>> - <</if>> - <</if>> - <</replace>> -<</link>> -</span> diff --git a/src/uncategorized/reNickname.tw b/src/uncategorized/reNickname.tw index ab75b53f5889e47a4de89391daeef96216fdc678..9317cf7f0269c3f6bf86c854c7c3fbc6b436aee6 100644 --- a/src/uncategorized/reNickname.tw +++ b/src/uncategorized/reNickname.tw @@ -592,7 +592,7 @@ <<case "Romanian">> <<set _nickname = either("'Bucharest'", "'Ceaușescu'", "'Cluj-Napoca'", "'Constanța'", "'Dacian'", "'Dracula'", "'Gypsy'", "'Impaler'", "'Lynx'", "'Orphan'", "'Roma'", "'Roman'", "'România'", "'Romanian'", "'Transylvanian'", "'Vlad'", "'Wallachia'")>> <<case "Russian">> - <<set _nickname = either("'Bolshevik'", "'Cabbage Eater'", "'Commie'", "'Double-Headed Eagle'", "'Kacap'", "'Katsap'", "'Mafiya'", "'Moscow'", "'Moskal'", "'Omsk'", "'Red Banner'", "'Rosuke'", "'Russian'", "'Russkie'", "'Saint Petersburg'", "'Shlyukha'", "'Siberian Kitten'", "'Sickle & Hammer'", "'Slav'", "'Soviet'", "'Stalin'", "'Suchka'", "'Suka'", "'Tovarish'", "'Tsar'", "'Tsaritsa'", "'Ulyanovsk'", "'Vodka'", "'Yekaterinburg'")>> + <<set _nickname = either("'Bolshevik'", "'Cabbage Eater'", "'Commie'", "'Double-Headed Eagle'", "'Kacap'", "'Katsap'", "'Mafiya'", "'Mail Order'", "'Moscow'", "'Moskal'", "'Omsk'", "'Red Banner'", "'Rosuke'", "'Russian'", "'Russkie'", "'Saint Petersburg'", "'Shlyukha'", "'Siberian Kitten'", "'Sickle & Hammer'", "'Slav'", "'Soviet'", "'Stalin'", "'Suchka'", "'Suka'", "'Tovarish'", "'Tsar'", "'Tsaritsa'", "'Ulyanovsk'", "'Vodka'", "'Yekaterinburg'")>> <<case "Rwandan">> <<set _nickname = either("'Expanded'", "'Habyarimana'", "'Hotel Rwanda'", "'Hutu'", "'Kigali'", "'Leopard'", "'Muhanga'", "'Ruanda'", "'Rwandan'", "'Rwandese'", "'Thousand Hills'", "'Tutsi'")>> <<case "Sahrawi">> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 821c501d46bb02fa642ca603ca12939449a676cc..021fafc1f2a0a34edb4e3819e2300f3b5a992cf7 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -1014,7 +1014,7 @@ <div class="choices"> <<if getSlave($AS).lactation < 2>> <<if getSlave($AS).indentureRestrictions < 2>> - [[Implant slow-release pro-lactation drugs|Surgery Degradation][getSlave($AS).lactation = 2, getSlave($AS).lactationDuration = 2, getSlave($AS).induceLactation = 0, getSlave($AS).boobs -= getSlave($AS).boobsMilk, getSlave($AS).boobsMilk = 0, getSlave($AS).rules.lactation = "none", cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10),$surgeryType = "lactation"]] <span class="note">This may increase $his natural breast size</span> + [[Implant slow-release pro-lactation drugs|Surgery Degradation][getSlave($AS).lactationDuration = 2, getSlave($AS).induceLactation = 0, getSlave($AS).boobs -= getSlave($AS).boobsMilk, getSlave($AS).boobsMilk = 0, getSlave($AS).rules.lactation = "none", cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10),$surgeryType = "lactation"]] <span class="note">This may increase $his natural breast size</span> <</if>> <</if>> <<if getSlave($AS).lactation > 1>> diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw deleted file mode 100644 index 33c014f0a81d3a815942ac1a558736320b4e3ff0..0000000000000000000000000000000000000000 --- a/src/uncategorized/reputation.tw +++ /dev/null @@ -1,920 +0,0 @@ -:: Reputation [nobr] - -<<if $useTabs == 0>><br>__Reputation__<</if>> -<br> - -On formal occasions, you are announced as <<= PCTitle()>>. - -<<if $arcologies[0].FSChattelReligionist != "unset">> - <<if $arcologies[0].FSChattelReligionistCreed == 1>> - $arcologies[0].name keeps the creed of the $nicaea.name. The faithful - <<if $nicaea.achievement == "slaves">> - <<if $slaves.length > 50>> - @@.green;strongly approve@@ of the large - <<run FutureSocieties.Change("ChattelReligionist", 5)>> - <<elseif $slaves.length > 20>> - @@.green;approve@@ of the good - <<run FutureSocieties.Change("ChattelReligionist", 2)>> - <<else>> - are not impressed by the - <</if>> - number of people you're giving the honor of sexual servitude. - <<elseif $nicaea.achievement == "devotion">> - <<if $averageDevotion > 80>> - @@.green;strongly approve@@ of the worshipfulness - <<run FutureSocieties.Change("ChattelReligionist", 5)>> - <<elseif $averageDevotion > 50>> - @@.green;approve@@ of the devotion - <<run FutureSocieties.Change("ChattelReligionist", 2)>> - <<else>> - are not impressed by the devotion - <</if>> - of your slaves. - <<else>> - <<if $averageTrust > 50>> - @@.green;strongly approve@@ of the great trust your slaves place in you. - <<run FutureSocieties.Change("ChattelReligionist", 5)>> - <<elseif $averageTrust > 20>> - @@.green;approve@@ of the trust your slaves place in you. - <<run FutureSocieties.Change("ChattelReligionist", 2)>> - <<else>> - are not impressed by the fear many of your slaves feel towards you. - <</if>> - <</if>> - <</if>> -<</if>> - -<<set _repDecay = 0.05, -_enduringRep = $enduringRep>> -<<if $arcologies.FSChattelReligionistLaw == 1>> - <<set _enduringRep = Math.min(_enduringRep + 2000, 12000)>> -<</if>> -<<if $arcologies.FSRestartDecoration == 100>> - <<set _enduringRep = Math.min(_enduringRep + 2000, 13000)>> /* that 13000 is not a typo, it allows for some stacking of FSRestart and FSChattel */ -<</if>> -<<if $rep > _enduringRep>> - <<if $arcologies[0].FSMaturityPreferentialistLaw == 1>> - <<if $PC.actualAge >= 65>> - Since you're getting on in years and have an impressive list of accomplishments, and $arcologies[0].name's society respects age, your reputation degrades quite slowly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay-0.0125))>> - <<elseif $PC.actualAge >= 50>> - Since you're well into middle age and have an impressive list of accomplishments, and $arcologies[0].name's society respects age, your reputation degrades quite slowly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay-0.0125))>> - <<elseif $PC.actualAge < 35>> - Since you're unusually young for an arcology owner, and $arcologies[0].name's society respects age, your reputation degrades quite quickly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay+0.0125))>> - <<else>> - Since you're only entering middle age, and $arcologies[0].name's society respects age, your reputation degrades fairly quickly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay))>> - <</if>> - <<elseif $arcologies[0].FSYouthPreferentialistLaw == 1>> - <<if $PC.actualAge >= 65>> - Since you're getting on in years and have an impressive list of accomplishments, but $arcologies[0].name's society is coming to prefer youth to experience, so your reputation degrades fairly quickly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay+0.0125))>> - <<elseif $PC.actualAge >= 50>> - You're well into middle age and have an impressive list of accomplishments, but $arcologies[0].name's society is coming to prefer youth to experience, so your reputation degrades fairly quickly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay+0.0125))>> - <<elseif $PC.actualAge < 35>> - You're unusually young for an arcology owner, but $arcologies[0].name's society doesn't mind. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay))>> - <<else>> - Since you're entering middle age, and $arcologies[0].name's society respects youth, your reputation degrades fairly quickly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay+0.0125))>> - <</if>> - <<else>> - <<if $PC.actualAge >= 65>> - Since you're getting on in years and have an impressive list of accomplishments, and $arcologies[0].name's society respects age, your reputation degrades quite slowly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay-0.0125))>> - <<elseif $PC.actualAge >= 50>> - Since you're well into middle age and have an impressive list of accomplishments, your reputation degrades fairly slowly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay-0.0125))>> - <<elseif $PC.actualAge < 35>> - Since you're unusually young for an arcology owner, your reputation degrades fairly quickly. - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay+0.0125))>> - <<else>> - <<set _repLoss = Math.trunc(($rep-_enduringRep)*(_repDecay))>> - <</if>> - <</if>> - <<if $arcologies[0].FSChattelReligionistLaw == 1>> - <<if _repLoss > 100>> - <<set _repLoss -= 100, $PC.degeneracy = 0>> - <<else>> - <<set _repLoss = 0, $PC.degeneracy = 0>> - <</if>> - Since you are the Prophet, your reputation degrades less. - <</if>> - <<if $arcologies[0].FSRestartDecoration == 100>> - <<if _repLoss > 100>> - <<set _repLoss -= 100, $PC.degeneracy = 0>> - <<else>> - <<set _repLoss = 100, $PC.degeneracy = 0>> - <</if>> - Since you are an established member of the Societal Elite, your public reputation degrades less. - <</if>> - <<if _enduringRep > 8000>> - However, you have been a figure of renown for so long that much of your reputation has become permanent. - <<elseif _enduringRep > 5000>> - However, you have been a figure of repute for enough time that part of your reputation has become permanent. - <<elseif _enduringRep > 2000>> - However, you have been a figure of regard for long enough that some of your reputation has become permanent. - <</if>> - <<if _repLoss > 500 * (1 - (5 - $baseDifficulty) / 10)>> - <<set _repLoss = 500 * (1 - (5 - $baseDifficulty) / 10)>> - <<elseif _repLoss < 0>> - <<set _repLoss = 0>> - <</if>> - <<set $enduringRep += Math.trunc(1 + Math.pow((10000 - $enduringRep) / 5770, 2) * _repLoss * 0.1)>> -<<else>> - <<if $arcologies[0].FSChattelReligionistLaw == 1 || $arcologies[0].FSRestartDecoration == 100>> - <<set $PC.degeneracy = 0>> - <</if>> - <<set _repLoss = 0>> - <<if _enduringRep > 8000>> - You have been a figure of renown for so long that your reputation does not decay past its present level. - <<elseif _enduringRep > 5000>> - You have been a figure of repute for enough time that your reputation does not decay past its present level. - <<elseif _enduringRep > 2000>> - You have been a figure of regard for long enough that your reputation does not decay past its present level. - <</if>> -<</if>> - -/*play games with overflow. Gains are calculated (and then sadly rounded) on previous pages but losses are calculated here, after the overflow happened. Let's borrow from the past.*/ -<<if $lastWeeksRepExpenses.overflow < 0>> - <<set $rep += Math.abs($lastWeeksRepExpenses.overflow)>> - <<set $lastWeeksRepExpenses.overflow = 0>> -<</if>> -<<run repX(forceNeg(_repLoss), "multiplier")>> - -<<if ($weatherAwareness == 0) && ($weatherCladding == 2)>> - The public @@.green;is awestruck@@ of the beautiful weather hardening you have applied to the arcology's exterior, though they do not understand why you would waste so much money first ruining your arcology's appearance before doing this. - <<run repX(10, "architecture")>> -<<elseif ($weatherAwareness == 0) && ($weatherCladding == 1)>> - The public @@.red;disapproves@@ of the ugly weather hardening you have applied to the arcology's exterior, not understanding what you're worried about. - <<run repX(-100, "architecture")>> -<</if>> - -<<if $arcologies[0].FSRestartDecoration == 100>> - As a member of the Societal Elite, your appearance has no bearing on your reputation. -<<else>> - <<if ($PC.dick == 0) && ($PC.boobs >= 300) && $PC.title == 0>> - <<if $rep > 18000>> - Your reputation is so well-established that society has accepted your notoriously feminine appearance despite how unusual it is for a prominent slaveowner to look like you do. - <<if $arcologies[0].FSGenderRadicalist > 30>> - Indeed, society sees you as entirely male, since you are powerful, and @@.green;strongly approves@@ of your nonconformity; this advances the redefinition of gender around power. - <<run FutureSocieties.Change("GenderRadicalist", 5)>> - <<elseif $arcologies[0].FSGenderFundamentalist > 30>> - Indeed, society has been reconciled to female leadership, preferring to see you as a mother figure. - <</if>> - <<elseif $arcologies[0].FSGenderRadicalist > 40>> - Society accepts you as an arcology owner, since it has become open-minded about power and gender. - <<if $arcologies[0].FSGenderRadicalist > 50>> - Indeed, society sees you as fundamentally male, since you are powerful, and @@.green;strongly approves@@ of your audacity; this advances the redefinition of gender around power. - <<run FutureSocieties.Change("GenderRadicalist", 5)>> - <</if>> - <<else>> - Most prominent slaveowners are male, and your obviously feminine appearance makes it @@.red;harder for you to maintain your reputation.@@ - <<run repX(forceNeg(Math.min(($rep*0.05), 500)), "PCappearance")>> - <<if $arcologies[0].FSGenderFundamentalist > 10>> - Society @@.red;strongly resents@@ your being an arcology owner; this damages the idea that women should not be in positions of responsibility. - <<run FutureSocieties.Change("GenderFundamentalist", -5)>> - <</if>> - <</if>> - <<elseif ($PC.boobs >= 300) || $PC.title == 0>> - <<if $rep > 15000>> - Your reputation is so strong that society has accepted your feminine appearance despite how unusual it is for a prominent slaveowner to look like you do. - <<if $arcologies[0].FSGenderRadicalist > 30>> - Indeed, society sees you as entirely male, since you are powerful, and @@.green;strongly approves@@ of your nonconformity; this advances the redefinition of gender around power. - <<run FutureSocieties.Change("GenderRadicalist", 5)>> - <<elseif $arcologies[0].FSGenderFundamentalist > 30>> - Indeed, society has been reconciled to your feminine appearance, seeing you as a person apart. - <</if>> - <<elseif $arcologies[0].FSGenderRadicalist > 20>> - Society accepts you as an arcology owner, since it has become open-minded anyone who has a cock and fucks. - <<if $arcologies[0].FSGenderRadicalist > 30>> - Indeed, society sees you as dominant, since you fuck bitches, and @@.green;strongly approves@@ of your nonconformity; this advances the redefinition of gender around power. - <<run FutureSocieties.Change("GenderRadicalist", 5)>> - <</if>> - <<else>> - Most prominent slaveowners are very masculine, and your feminine appearance makes it @@.red;harder for you to maintain your reputation.@@ - <<run repX(forceNeg(Math.min(($rep*0.025), 250)), "PCappearance")>> - <<if $arcologies[0].FSGenderFundamentalist > 30>> - Society @@.red;strongly resents@@ your being an arcology owner; this damages the idea that feminine people should not be in positions of responsibility. - <<run FutureSocieties.Change("GenderFundamentalist", -5)>> - <</if>> - <</if>> - <<elseif ($PC.dick == 0) || ($PC.vagina != -1)>> - <<if $rep > 15000>> - Your reputation is so strong that society has accepted your unorthodox arrangement downstairs, for an arcology owner. - <<if $arcologies[0].FSGenderRadicalist > 30>> - Indeed, society sees you as entirely male, since you are powerful, and @@.green;strongly approves@@ of your nonconformity; this advances the redefinition of gender around power. - <<run FutureSocieties.Change("GenderRadicalist", 5)>> - <<elseif $arcologies[0].FSGenderFundamentalist > 30>> - Indeed, society has been reconciled to your strangeness, seeing you as a person apart. - <</if>> - <<elseif $arcologies[0].FSGenderRadicalist > 20>> - Society accepts you as an arcology owner, since it has become open-minded about the exact genital layout of powerful people. - <<if $arcologies[0].FSGenderRadicalist > 30>> - Indeed, society sees you as dominant, since you are powerful, and @@.green;strongly approves@@ of your nonconformity; this advances the redefinition of gender around power. - <<run FutureSocieties.Change("GenderRadicalist", 5)>> - <</if>> - <<else>> - Most prominent slaveowners are very masculine, and though your unorthodox arrangement downstairs isn't obvious when you're clothed, the rumors are unavoidable and it's @@.red;harder for you to maintain your reputation.@@ - <<run repX(forceNeg(Math.min(($rep*0.025), 250)), "PCappearance")>> - <<if $arcologies[0].FSGenderFundamentalist > 30>> - Society @@.red;strongly resents@@ your being an arcology owner; this damages the idea that people who are not men should not be in positions of responsibility. - <<run FutureSocieties.Change("GenderFundamentalist", -5)>> - <</if>> - <</if>> - <</if>> -<</if>> - -/* height block here */ - -<<if $arcologies[0].FSChattelReligionistLaw == 1 || $arcologies[0].FSRestartDecoration == 100>> - /* already handled above */ -<<elseif $arcologies[0].FSIntellectualDependency != "unset">> - <<if $PC.intelligence+$PC.intelligenceImplant < -10>> - <<if $rep > 18000>> - You've somehow built such a reputation for yourself that your lack of a brain is no longer a societal concern. - <<else>> - <<run repX(forceNeg(Math.min(($rep*0.025), 100)), "PCappearance")>> - Society @@.red;is uncomfortable@@ with just how slow you are. While they may find your mannerisms cute, it is not befitting of a leader. - <</if>> - <</if>> -<<elseif $arcologies[0].FSSlaveProfessionalism != "unset">> - <<if $PC.intelligence+$PC.intelligenceImplant < 100>> - <<if $rep > 18000>> - You've built such a reputation for yourself that you not being a genius is no longer a societal concern. - <<else>> - <<run repX(forceNeg(Math.min(($rep*0.05), 750)), "PCappearance")>> - Society @@.red;strongly despises@@ being led by someone so easily outsmarted by even the slave population. - <<run FutureSocieties.Change("SlaveProfessionalism", -10)>> - <</if>> - <</if>> -<<elseif $PC.intelligence+$PC.intelligenceImplant <= 10>> - <<if $rep > 18000>> - You've managed to build such a reputation for yourself that your lack of intelligence is no longer a societal concern. - <<else>> - <<run repX(forceNeg(Math.min(($rep*0.05), 750)), "PCappearance")>> - Society @@.red;is uncomfortable@@ being led by someone not smart. Your lack of intelligence brings your every action under scrutiny. - <</if>> -<<elseif $PC.intelligence+$PC.intelligenceImplant <= 50>> - <<if $rep > 12000>> - You've built such a reputation for yourself that your lack of intelligence is no longer a societal concern. - <<else>> - <<run repX(forceNeg(Math.min(($rep*0.05), 500)), "PCappearance")>> - Society @@.red;is uncomfortable@@ being led by someone not very smart. Your lack of intelligence brings your every action under scrutiny. - <</if>> -<</if>> - -<<if $policies.sexualOpenness == 1>> - <<if $arcologies[0].FSChattelReligionistLaw == 1 || $arcologies[0].FSRestartDecoration == 100>> - /* already handled above */ - <<else>> - <<if $arcologies[0].FSGenderRadicalist != "unset">> - <<if $rep > 18000>> - You are so well regarded that society has acquiesced that getting penetrated is not a sure sign of femininity. - <<else>> - Society views getting fucked as sign of femininity and is @@.red;strongly against your sexual preferences.@@ - <<run FutureSocieties.Change("GenderRadicalist", -1)>> - <<run repX(-1000, "PCactions")>> - <</if>> - <<elseif $arcologies[0].FSGenderFundamentalist != "unset" && $PC.vagina != -1 && $PC.title == 0>> - <<if $rep > 10000>> - Society has grown accustomed to your efforts enough to not care that you enjoy slave dick. In fact, it even @@.green;strengthens@@ traditional gender roles, even though you insist on breaking them. - <<run FutureSocieties.Change("GenderFundamentalist", 1)>> - <<else>> - Society wonders if you would be happier in a whore house getting fucked all day instead of trying to lead an arcology. Your efforts @@.red;strongly support@@ the idea that women should not be in positions of responsibility. - <<run FutureSocieties.Change("GenderFundamentalist", -3)>> - <<run repX(-1000, "PCactions")>> - <</if>> - <<else>> - <<if $rep > 15000>> - You are so well liked that society has accepted that you enjoy taking everything a slave has to offer. - <<else>> - Society finds your penchant for taking slave dick @@.red;very distasteful@@ for a slaveowner. - <<run repX(-500, "PCactions")>> - <</if>> - <</if>> - <</if>> -<</if>> - -<<if $secExpEnabled > 0>> - <<if $SecExp.smilingMan.progress === 20>> - The grim statue of the Smiling Man outside your arcology @@.green;reminds the world of who managed to eliminate such a threat.@@ - <<run repX(100, "architecture")>> - <</if>> - - <<if $SecExp.edicts.weaponsLaw == 3>> - The absence of any kind of restriction on weaponry within your arcology is @@.green;welcomed by your citizens@@ as sign of your respect for the ideals the Free Cities stand for. - <<run repX(20, "edicts")>> - <</if>> -<</if>> - -<<if $SF.Toggle && $SF.Active >= 1 && $SF.UC.Assign > 0>> - <br>Assigning a <<if $SF.UC.Assign === 1>>small<<else>>large<</if>> portion of $SF.Lower to @@.green;undercover work, slightly boosts your reputation.@@ - <<if $SF.UC.Assign === 1>> - <<set _value = $SF.ArmySize * 0.05>> - <<else>> - <<set _value = $SF.ArmySize * 0.25>> - <</if>> - <<run repX(_value, "specialForces")>> <br> -<<elseif $SF.FS.BadOutcome === "ISOLATION">> - <br>Your citizens are @@.red;very displeased@@ that you are hosting a legion of heavily armed squatters in your basement. - <<run repX(forceNeg($SF.ArmySize + App.SF.upgrades.total()), "specialForces")>> -<</if>> - -<<if $arcologies[0].FSSupremacist != "unset">> - <<if ($PC.race == $arcologies[0].FSSupremacistRace)>> - Since you are a member of the $PC.race race, society @@.green;strongly approves@@ of your ownership of the arcology. - <<run FutureSocieties.Change("Supremacist", 5)>> - <</if>> -<<elseif $arcologies[0].FSSubjugationist != "unset">> - <<if ($PC.race == $arcologies[0].FSSubjugationistRace)>> - <<if $rep > 15000>> - Your reputation is so strong that society has accepted your <<print $PC.race>>ness despite you being an inferior race. - <<else>> - Society @@.red;loathes;@@ being lead by an inferior $PC.race, believing that any other race would make a far better leader than you. - <<run repX(forceNeg(200*($arcologies[0].FSSubjugationist/$FSLockinLevel)), "PCappearance")>> - <</if>> - <</if>> -<</if>> - -<<if $arcologies[0].FSAssetExpansionist != "unset">> - <<if $PC.boobs >= 1400>> - Society loves enormous breasts and you are no exception; your <<if $PC.boobsImplant > 0>>chest balloons<<else>>cow tits<</if>> @@.green;improve@@ your public image. - <<run repX(10, "PCappearance")>> - <</if>> - <<if $PC.butt >= 5>> - Society loves big butts and you are no exception; your <<if $PC.buttImplant > 0>>inflated ass<<else>>fat ass<</if>> @@.green;improves@@ your public image. - <<run repX(10, "PCappearance")>> - <</if>> - <<if $PC.balls >= 9>> - Society loves big things and the bulge in your crotch is no exception; your swollen balls @@.green;improve@@ your public image. - <<run repX((5*$PC.ballsImplant), "PCappearance")>> - <</if>> -<<elseif $arcologies[0].FSSlimnessEnthusiast != "unset">> - <<if $PC.boobs >= 1000>> - Society finds big breasts unsightly and you are no exception; your <<if $PC.boobsImplant > 0>>chest balloons<<else>>fat tits<</if>> @@.red;harm@@ your public image. - <<run repX(forceNeg(($PC.boobs/100)*3), "PCappearance")>> - <</if>> - <<if $PC.butt >= 5>> - Society finds big butts unsightly and you are no exception; your <<if $PC.buttImplant > 0>>inflated ass<<else>>fat ass<</if>> @@.red;harms@@ your public image. - <<run repX(forceNeg(10*$PC.butt), "PCappearance")>> - <</if>> -<</if>> - -<<if $arcologies[0].FSTransformationFetishist != "unset">> - <<if $PC.boobsImplant > 0>> - Society loves fake breasts and yours are no exception; your breast implants @@.green;improve@@ your public image. - <<run repX(($PC.boobsImplant/5), "PCappearance")>> - <</if>> - <<if $PC.buttImplant > 0>> - Society loves fake butts and yours are no exception; your ass implants @@.green;improve@@ your public image. - <<run repX((7*$PC.buttImplant), "PCappearance")>> - <</if>> - <<if $PC.ballsImplant > 0>> - Society loves everything augmented and the bulge in your crotch is no exception; your swollen balls @@.green;improve@@ your public image. - <<run repX((5*($PC.ballsImplant)), "PCappearance")>> - <</if>> - <<if ($arcologies[0].FSRepopulationFocus != "unset")>> - <<if $PC.boobs >= 1000 && $PC.boobsImplant == 0>> - Society approves of anything that helps the repopulation efforts. Your large breasts promise plentiful milk and @@.green;improve@@ your public image. - <<run repX(($PC.boobs/50), "PCappearance")>> - <</if>> - <<if $PC.balls >= 5>> - Society loves anything that helps the repopulation efforts. Your huge fertile balls indicate that you're a successful breeder and @@.green;strongly improves@@ your public image. - <<run repX((15*$PC.balls), "PCappearance")>> - <</if>> - <</if>> -<<elseif $arcologies[0].FSBodyPurist != "unset">> - <<if $PC.boobsImplant != 0>> - Society finds fake breasts repulsive and yours are no exception; your balloon-like breasts @@.red;harm@@ your public image. - <<run repX(forceNeg($PC.boobsImplant/10), "PCappearance")>> - <</if>> - <<if $PC.buttImplant > 0>> - Society finds fake butts unsightly and yours is no exception; your inflated ass @@.red;harms@@ your public image. - <<run repX(forceNeg(10*$PC.buttImplant), "PCappearance")>> - <</if>> - <<if $PC.ballsImplant > 0>> - Society finds everything unnatural disgusting and the grotesque bulge in your crotch is no exception; your gel filled balls @@.red;harm@@ your public image. - <<run repX(forceNeg(10*$PC.ballsImplant), "PCappearance")>> - <</if>> - <<if ($arcologies[0].FSRepopulationFocus != "unset") && $PC.boobs >= 1000 && $PC.boobsImplant == 0>> - Society approves of anything that helps the repopulation efforts. Your large breasts promise plentiful milk and @@.green;improve@@ your public image. - <<run repX(($PC.boobs/50), "PCappearance")>> - <</if>> -<<elseif ($arcologies[0].FSRepopulationFocus != "unset")>> - <<if $PC.boobs >= 1000 && $PC.boobsImplant == 0>> - Society approves of anything that helps the repopulation efforts. Your large breasts promise plentiful milk and @@.green;improve@@ your public image. - <<run repX(($PC.boobs/50), "PCappearance")>> - <</if>> - <<if $PC.balls >= 5>> - Society loves anything that helps the repopulation efforts. Your huge fertile balls indicate that you're a successful breeder and @@.green;strongly improves@@ your public image. - <<run repX((5*($PC.balls)), "PCappearance")>> - <</if>> -<</if>> - -<<if (($PC.belly >= 1500) || ($PC.career == "escort" && $PC.belly >= 500)) && $PC.preg > 0>> - <<if $arcologies[0].FSRestart != "unset">> - <<if $arcologies[0].FSRestartDecoration == 100>> - <<if $PC.pregSource != -1 && $PC.pregSource != -6>> - Most prominent female owners avoid being penetrated on - <<if $policies.sexualOpenness == 1>> - principle, though you choose the opposite; your fecund figure suggests a slave knocked you up, a huge - <<else>> - principle; your fecund figure exposes not only your willingness to be penetrated, but your - <</if>> - breach of eugenics. Your citizens are @@.red;livid@@ over your actions and are calling for your removal. - <<run repX(-500, "PCactions")>> - <<if $eugenicsFullControl != 1>> - <<set $failedElite += 100>> - <</if>> - <<else>> - Since it is public knowledge that you are carrying a child in the name of eugenics, society views you as a bearer of the future and @@.green;celebrates@@ your contributions to society. - <<run repX(200, "PCappearance")>> - <<set $failedElite -= 10>> - <</if>> - <<else>> - <<if $PC.pregSource != -1 && $PC.pregSource != -6>> - Most prominent female owners avoid being penetrated on - <<if $policies.sexualOpenness == 1>> - principle, though you choose the opposite; your fecund figure suggests a slave knocked you up, a huge - <<else>> - principle; your fecund figure exposes not only your willingness to be penetrated, but your - <</if>> - breach of the eugenics you are pushing for. Your citizens are @@.red;disgusted@@ by both your body and your lack of commitment. - <<run repX(-500, "PCactions")>> - <<if $eugenicsFullControl != 1>> - <<set $failedElite += 50>> - <</if>> - <<else>> - Since it is public knowledge that you are carrying a child in the name of eugenics, society views you as a bearer of modernity and @@.green;commends@@ your contributions to society. - <<run repX(200, "PCappearance")>> - <<set $failedElite -= 5>> - <</if>> - <</if>> - <<elseif $arcologies[0].FSRepopulationFocus >= 60>> - Most prominent female owners avoid being penetrated on principle, but your arcology values motherhood so much that it is more @@.green;pleased@@ with your dedication than it is disappointed in your - <<if $policies.sexualOpenness == 1>> - suspected slave baby. - <<else>> - penetration. - <</if>> - <<run repX(10, "PCappearance")>> - <<else>> - Most prominent female owners avoid being penetrated on - <<if $policies.sexualOpenness == 1>> - principle, though you choose the opposite; your fecund figure suggests a slave knocked you up, - <<else>> - principle; your fecund figure exposes your willingness to be penetrated, - <</if>> - making it @@.red;harder for you to maintain your reputation.@@ - <<run repX(-200, "PCactions")>> - <</if>> -<</if>> - -<<if $PC.career == "escort" && $rep < 16000>> - Society @@.red;frowns@@ over being run by an ex-whore. The presence of porn of you on the net doesn't aid your reputation either. - <<run repX(forceNeg(Math.min(($rep*0.05), 500)), "PCactions")>> -<<elseif $PC.career == "escort">> - Your reputation is so strong that society has accepted your previous endeavors despite how unusual it is for a prominent slaveowner to have once nearly been a slave. -<</if>> -<<if $PC.career == "servant" && $rep < 12000>> - Society @@.red;frowns@@ over being run by an ex-<<if $PC.title == 1>>butler<<else>>maid<</if>>, despite how prominent their previous owner was. - <<run repX(forceNeg(Math.min(($rep*0.05), 500)), "PCactions")>> -<<elseif $PC.career == "servant">> - Your reputation is so strong that society has accepted your previous vocation despite how unusual it is for a prominent slaveowner to have once been nothing more than a lowly servant. -<</if>> -<<if $PC.career == "gang" && $rep < 15000>> - Society @@.red;frowns@@ over being run by an ex-gang leader, no matter how strong they might have been. - <<run repX(forceNeg(Math.min(($rep*0.05), 500)), "PCactions")>> -<<elseif $PC.career == "BlackHat" && $rep < 15000>> - Society @@.red;dislikes@@ being run by someone so capable of dredging up secrets, especially when they used to do it for the highest bidder. - <<run repX(forceNeg(Math.min(($rep*0.05), 500)), "PCactions")>> -<<elseif $PC.career == "gang" || $PC.career == "BlackHat">> - Your reputation is strong enough that society has come to accept your background as part of your image. -<</if>> - -<<if $PCSlutContacts == 2>> - You are actively starring in pornographic videos. While they are rather exclusive, @@.red;some still leak out to the public,@@ harming your image. - <<run repX(-50, "PCactions")>> - <<if canGetPregnant($PC)>> - That's not all that leaks out of you, considering all your shoots are rubber free. - <<= knockMeUp($PC, 20, 0, -5, 1)>> - <</if>> -<</if>> - -<<if $arcologies[0].FSRomanRevivalist != "unset">> - <<if $mercenaries > 0>> - Society @@.green;approves@@ of how you are providing for the defense of the state, as should all citizens of the new Rome. - <<run FutureSocieties.Change("RomanRevivalist", $mercenaries)>> - <</if>> - <<if ($slaves.length > 20) && ($cash > 50000)>> - Society @@.green;strongly approves@@ of your wealth and prosperity, fit goals for the <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title == 1>>new Roman man<<else>>rising Roman lady<</if>>. - <<run FutureSocieties.Change("RomanRevivalist", 5)>> - <</if>> - <<if $language != "Latin">> - Continuing to use $language as the lingua franca of $arcologies[0].name rather than the storied Latin @@.red;disappoints@@ society and causes doubt about your revivalist project. - <<run FutureSocieties.Change("RomanRevivalist", -2)>> - <</if>> -<<elseif $arcologies[0].FSAztecRevivalist != "unset">> - <<if $PC.visualAge >= 35>> - Society @@.green;approves@@ of your advancing age, which advances the ancient Aztec ideal of an experienced leader of the people. - <<run FutureSocieties.Change("AztecRevivalist", 1)>> - <</if>> - <<if $HeadGirlID == 0>> - Society @@.red;disapproves@@ of you not having a Head Girl as an advisor and assistant. - <<run FutureSocieties.Change("AztecRevivalist", -2)>> - <<else>> - Society @@.green;approves@@ of your reliance on a Head Girl as an advisor and assistant. - <<run FutureSocieties.Change("AztecRevivalist", 2)>> - <</if>> - <<if $PC.skill.warfare < 0>> - Society @@.red;greatly disapproves@@ of your feebleness in the arts of war. - <<run FutureSocieties.Change("AztecRevivalist", -4)>> - <<elseif $PC.skill.warfare < 50>> - Society @@.red;disapproves@@ of you not being properly trained in the arts of war. - <<run FutureSocieties.Change("AztecRevivalist", -2)>> - <<else>> - Society @@.green;approves@@ of having a leader that is trained in the arts of war. - <<run FutureSocieties.Change("AztecRevivalist", 2)>> - <</if>> - <<if $language != "Nahuatl">> - Continuing to use $language as the lingua franca of $arcologies[0].name rather than the revived Nahuatl @@.red;disappoints@@ society and causes doubt about your revivalist project. - <<run FutureSocieties.Change("AztecRevivalist", -3)>> - <</if>> - <<elseif $arcologies[0].FSNeoImperialist != "unset">> - <<if $mercenaries > 0>> - Society @@.green;approves@@ of your strong militarism and elite mercenaries, as your tradition of Imperial conquest glorifies military success above all else. - <<run FutureSocieties.Change("NeoImperialist", $mercenaries)>> - <</if>> - <<if ($slaves.length > 20) && ($cash > 50000)>> - Society @@.green;strongly approves@@ of your great wealth and prosperity, as is only fitting for an <<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title == 1>>proper Imperial noble<<else>>graceful Imperial noble<</if>>. - <<run FutureSocieties.Change("NeoImperialist", 5)>> - <</if>> - <<if ($cash < 1000)>> - Society @@.red;disapproves@@ of your poverty; it is viewed as completely unbeffiting for an Imperial ruler to have so little cash on hand, and indicative of weakness in your rule. - <<run FutureSocieties.Change("NeoImperialist", -2)>> - <</if>> - <<if $PC.skill.warfare < 0>> - Society @@.red;greatly disapproves@@ of your weakness in combat. The core duty of any Imperial noble is to fight, and your failure to understand the art of war is an unacceptable weakness. - <<run FutureSocieties.Change("NeoImperialist", -4)>> - <<elseif $PC.skill.warfare < 50>> - Society @@.red;disapproves@@ of you lacking training in the art of warfare, as fighting is a core duty of any Imperial noble. - <<run FutureSocieties.Change("NeoImperialist", -2)>> - <<else>> - Society @@.green;approves@@ of having a leader who is a capable warrior. Your strength in battle is seen proof of your indisputable right to rule. - <<run FutureSocieties.Change("NeoImperialist", 2)>> - <</if>> -<<elseif $arcologies[0].FSEgyptianRevivalist != "unset">> - <<set _racialVarieties = new Set($slaves.map((s) => s.race))>> - <<if _racialVarieties.size > 4>> - Society @@.green;strongly approves@@ of how you own a cornucopia of different races, which advances the ancient Egyptian ideal of cosmopolitan sex slavery. - <<run FutureSocieties.Change("EgyptianRevivalist", 5)>> - <</if>> - <<if $language != "Ancient Egyptian">> - Continuing to use $language as the lingua franca of $arcologies[0].name rather than revived Ancient Egyptian @@.red;disappoints@@ society and causes doubt about your revivalist project. - <<run FutureSocieties.Change("EgyptianRevivalist", -2)>> - <</if>> -<<elseif $arcologies[0].FSEdoRevivalist != "unset">> - <<set _threshold = Math.trunc($rep/2000)>> - <<if $publicServants <= _threshold>> - Society @@.red;disapproves@@ of your failure to provide for cultural development by offering public servants or club slaves in a number that befits your reputation. - <<run FutureSocieties.Change("EdoRevivalist", -2)>> - <<else>> - Society @@.green;approves@@ of your provision for cultural development by offering public servants and club slaves in a number that befits your reputation. - <<run FutureSocieties.Change("EdoRevivalist", 2)>> - <</if>> - <<if $language != "Japanese">> - Continuing to use $language as the lingua franca of $arcologies[0].name rather than pure Japanese @@.red;disappoints@@ society and causes doubt about your revivalist project. - <<run FutureSocieties.Change("EdoRevivalist", -2)>> - <</if>> -<<elseif $arcologies[0].FSArabianRevivalist != "unset">> - <<if $fuckSlaves < $rep/3500>> - Society @@.red;disapproves@@ of the small size of your harem, feeling that you do not have enough fucktoys or slaves in your master suite for your reputation. - <<run FutureSocieties.Change("ArabianRevivalist", -2)>> - <<else>> - Society @@.green;approves@@ of the size of your harem, feeling that you have a good number of fucktoys and slaves in your master suite for your reputation. - <<run FutureSocieties.Change("ArabianRevivalist", 2)>> - <</if>> - <<if $language != "Arabic">> - Continuing to use $language as the lingua franca of $arcologies[0].name rather than the Arabic in which the word of God was passed to Muhammad @@.red;disappoints@@ society and causes doubt about your revivalist project. - <<run FutureSocieties.Change("ArabianRevivalist", -2)>> - <</if>> -<<elseif $arcologies[0].FSChineseRevivalist != "unset">> - <<if $HeadGirlID == 0>> - Society @@.red;disapproves@@ of your failure to rely on a Head Girl, as proper imperial administration requires, - <<run FutureSocieties.Change("ChineseRevivalist", -2)>> - <<else>> - Society @@.green;approves@@ of your reliance on a Head Girl, as proper imperial administration requires, - <<run FutureSocieties.Change("ChineseRevivalist", 2)>> - <</if>> - <<if $RecruiterID == 0>> - @@.red;disapproves@@ of your failure to maintain a Recruiter to expand the Middle Kingdom, - <<run FutureSocieties.Change("ChineseRevivalist", -2)>> - <<else>> - @@.green;approves@@ of your maintaining a Recruiter to expand the Middle Kingdom, - <<run FutureSocieties.Change("ChineseRevivalist", 2)>> - <</if>> - <<if $BodyguardID === 0>> - and @@.red;disapproves@@ of your failure to keep a Bodyguard as befits a proper imperial palace. - <<run FutureSocieties.Change("ChineseRevivalist", -2)>> - <<else>> - and @@.green;approves@@ of your keeping a Bodyguard, as befits a proper imperial palace. - <<run FutureSocieties.Change("ChineseRevivalist", 2)>> - <</if>> - <<if $language != "Chinese">> - Continuing to use $language as the lingua franca of $arcologies[0].name rather than the Chinese of the Middle Kingdom @@.red;disappoints@@ society and causes doubt about your revivalist project. - <<run FutureSocieties.Change("ChineseRevivalist", -2)>> - <</if>> -<</if>> - -<<if ($arcologies[0].FSRepopulationFocus != "unset")>> - <<if policies.countEugenicsSMRs() > 0>> - Society @@.red;disapproves@@ of your policies sterilizing potential mothers. Your insistence on eugenics hinders adoption of your new society. - <<set _noEugenics = -1 * policies.countEugenicsSMRs()>> - <<run FutureSocieties.Change("RepopulationFocus", _noEugenics)>> - <</if>> -<<elseif $arcologies[0].FSPaternalist != "unset">> - <<if policies.countEugenicsSMRs() > 0>> - Society @@.red;disapproves@@ of your policies forcefully sterilizing slaves, especially when they snuff out the life growing within them. - <<set _noEugenics = -1 * policies.countEugenicsSMRs()>> - <<run FutureSocieties.Change("Paternalist", _noEugenics)>> - <</if>> -<<elseif ($arcologies[0].FSRestart != "unset") && $arcologies[0].FSPaternalist == "unset">> - <<if policies.countEugenicsSMRs() > 0 && $arcologies[0].FSRestartSMR != 1>> - Society @@.green; approves@@ of your slave eugenics policies, easing them into more thorough eugenics. - <<set _yesEugenics = policies.countEugenicsSMRs()>> - <<run FutureSocieties.Change("Eugenics", _yesEugenics)>> - <<set $failedElite -= (1 * policies.countEugenicsSMRs())>> - <<elseif $arcologies[0].FSRestartSMR == 1>> - <<set $failedElite -= (2 * policies.countEugenicsSMRs())>> - <</if>> -<</if>> - -<<if ($arcologies[0].FSRepopulationFocus != "unset") && ($birthsTotal > 0)>> - The number of children you've brought into the world @@.green;pleases@@ your citizens. - <<if $birthsTotal < 1000>> - <<run repX($birthsTotal, "PCactions")>> - <<else>> - <<run repX(1000, "PCactions")>> - <</if>> -<</if>> - -<<if $shelterAbuse > 5>> - <<if $arcologies[0].FSPaternalist != "unset">> - You are on the Slave Shelter's public list of abusive slaveowners. Society @@.red;disapproves@@ of your falling foul of such a well regarded charity. - <<run FutureSocieties.Change("Paternalist", -2)>> - <<elseif $arcologies[0].FSDegradationist != "unset">> - You are on the Slave Shelter's public list of abusive slaveowners. Your citizens find this hilarious, and @@.green;approve@@ of your taking advantage of a pack of idiots. - <<run FutureSocieties.Change("Degradationist", 2)>> - <</if>> -<</if>> - -<<if $TCR.schoolPresent == 1>> - <<if $arcologies[0].FSRestart != "unset">> - Your Eugenics focused society @@.red;disagrees@@ with the local branch of The Cattle Ranch's views on slave breeding. Until society sees them as nothing more than mindless cattle and not human, they are in conflict with current reproduction standards. - <<run FutureSocieties.Change("Eugenics", -1)>> - <<elseif $arcologies[0].FSPaternalist != "unset">> - While they can't stop what happens to slaves outside of your arcology, they can @@.red;disapprove and protest@@ you allowing a branch of the mentally and physically abusive Cattle Ranch to be established in your arcology. - <<run FutureSocieties.Change("Paternalist", -2)>> - <</if>> -<</if>> - -<<if $policies.cash4Babies == 1>> - <<if $arcologies[0].FSDegradationist != "unset">> - Society @@.green;approves@@ of your poor treatment of slave infants. - <<run repX(5*$FSSingleSlaveRep*($arcologies[0].FSDegradationist/$FSLockinLevel), "babyTransfer")>> - <<elseif $arcologies[0].FSRestart != "unset">> - <<if $eugenicsFullControl != 1>> - The Societal Elite @@.red;strongly disapproves@@ of your creating an economic incentive for the lower classes to breed and sell infants, holding back acceptance of your new society. - <<set $failedElite += 5>> - <<else>> - Society @@.red;strongly disapproves@@ of your creating an economic incentive for the lower classes to breed and sell infants, holding back acceptance of your new society. - <</if>> - <<set $arcologies[0].FSRestart -= $FSSingleSlaveRep>> - <<run repX(forceNeg((5*$FSSingleSlaveRep*($arcologies[0].FSRestart/$FSLockinLevel))+($rep/40)), "babyTransfer")>> - <<elseif $arcologies[0].FSPaternalist != "unset">> - Society @@.red;greatly despises@@ your poor treatment of slave infants. - <<run repX(forceNeg((25*$FSSingleSlaveRep*($arcologies[0].FSPaternalist/$FSLockinLevel))+($rep/20)), "babyTransfer")>> - <<elseif $arcologies[0].FSRepopulationFocus != "unset">> - Society @@.red;disapproves@@ of your poor treatment of your future population, holding back acceptance of your new society. - <<set $arcologies[0].FSRepopulationFocus -= $FSSingleSlaveRep>> - <<run repX(forceNeg((5*$FSSingleSlaveRep*($arcologies[0].FSRepopulationFocus/$FSLockinLevel))+($rep/20)), "babyTransfer")>> - <<else>> - Your citizens @@.red;disapprove@@ of your poor treatment of slave children. - <<run repX(forceNeg($rep/20), "babyTransfer")>> - <</if>> -<</if>> - -<<if $policies.mixedMarriage == 1>> - Your citizens - <<if $arcologies[0].FSPaternalist >= 80>> - are so paternalistic that they @@.green;approve@@ of - <<run FutureSocieties.Change("Paternalist", 2)>> - <<elseif $arcologies[0].FSPaternalist >= 40>> - are paternalistic enough to tolerate - <<else>> - @@.red;disapprove@@ of - <<run repX(-50, "PCactions")>> - <</if>> - your support for marriage between citizens and slaves. -<</if>> - -<<if $citizenOrphanageTotal > 0>> - <<if $arcologies[0].FSPaternalist != "unset">> - The public @@.green;approves@@ of the way you're providing for $citizenOrphanageTotal of your slaves' children to be raised as citizens. - <<run FutureSocieties.Change("Paternalist", $citizenOrphanageTotal)>> - <<if $privateOrphanageTotal > 0>> - Raising <<print num($privateOrphanageTotal)>> of your slaves' children privately is considered even more @@.green;impressive.@@ - <<set _care = $privateOrphanageTotal*2>> - <<run FutureSocieties.Change("Paternalist", _care)>> - <</if>> - <<elseif $arcologies[0].FSDegradationist != "unset">> - The public @@.red;disapproves@@ of the way you're providing for $citizenOrphanageTotal of your slaves' children to be raised as citizens. - <<set _care = -$citizenOrphanageTotal>> - <<run FutureSocieties.Change("Degradationist", _care)>> - <<if $privateOrphanageTotal > 0>>Fortunately your raising slaves' children privately is not publicly known.<</if>> - <</if>> -<<elseif $privateOrphanageTotal > 0>> - <<if $arcologies[0].FSPaternalist != "unset">> - Raising <<print num($privateOrphanageTotal)>> of your slaves' children privately is considered extremely @@.green;impressive.@@ - <<set _care = $privateOrphanageTotal*2>> - <<run FutureSocieties.Change("Paternalist", _care)>> - <<elseif $arcologies[0].FSDegradationist != "unset">> - Fortunately your raising slaves' children privately is not publicly known. - <</if>> -<</if>> -<<if $breederOrphanageTotal > 0 && $arcologies[0].FSRepopulationFocus != "unset">> - The public @@.green;approves@@ of the way you've dedicated <<print num($breederOrphanageTotal)>> of your slaves' children to be raised into future breeders. - <<set _futureBreeders = Math.round((($breederOrphanageTotal/100)+1))>> - <<run FutureSocieties.Change("RepopulationFocus", _futureBreeders)>> -<</if>> - -<<if $arcologies[0].FSNull != "unset">> - Your cultural openness @@.green;helps your reputation,@@ since few citizens have disputes with your permissive approach. - <<run repX(50*$FSSingleSlaveRep*($arcologies[0].FSNull/$FSLockinLevel), "policies")>> -<</if>> - -<<if $arcologies[0].FSRestartLaw == 1>> - Your laws requiring the non-elite to pay additional taxes or be sterilized @@.red;agitates@@ some of your citizens, but they don't matter. Only your @@.green;pleased@@ elite do. - <<run repX(-100, "policies")>> - <<set $failedElite -= 1>> -<</if>> - -<<if $arcologies[0].FSHedonisticDecadenceLaw == 1>> - The burgeoning prosperity brought on by new business through your policies @@.green;builds your reputation,@@ since nearly every citizen has something available to satisfy their cravings. - <<run repX(100, "policies")>> -<</if>> - -<<if $arcologies[0].FSIntellectualDependencyLaw == 1>> - The protections you have in place to protect invalids @@.green;adds to your reputation,@@ since every citizen will eventually find themselves benefitting from it. - <<run repX(100, "policies")>> -<</if>> - -<<if $policies.SMR.frigiditySMR == 1>> - Your market regulations regarding slave sex drives @@.red;outrages@@ your citizens seeking sex slaves, since only slaves disinterested in sex are available. - <<run repX(-250, "policies")>> -<</if>> - -<<if $PC.degeneracy > 0>> - <<if $PC.degeneracy > 100>> - There are @@.red;severe and devastating rumors@@ about you spreading across the arcology. - <<run repX(forceNeg(100*$PC.degeneracy), "PCactions")>> - <<set $enduringRep = 0>> - <<elseif $PC.degeneracy > 75>> - There are @@.red;severe rumors@@ about you spreading across the arcology. - <<run repX(forceNeg(20*$PC.degeneracy), "PCactions")>> - <<elseif $PC.degeneracy > 50>> - There are @@.red;bad rumors@@ about you spreading across the arcology. - <<run repX(forceNeg(10*$PC.degeneracy), "PCactions")>> - <<elseif $PC.degeneracy > 25>> - There are @@.red;rumors@@ about you spreading across the arcology. - <<run repX(forceNeg(5*$PC.degeneracy), "PCactions")>> - <<elseif $PC.degeneracy > 10>> - There are @@.red;minor rumors@@ about you spreading across the arcology. - <<run repX(forceNeg(2*$PC.degeneracy), "PCactions")>> - <<else>> - The occasional rumor about you can be heard throughout the arcology. - <<run repX(forceNeg(1*$PC.degeneracy), "PCactions")>> - <</if>> -<</if>> - -<<if $FCNNstation == 1>> - Playing host to the Free Cities News Network brings @@.green;approval@@ from those who still consider freedom of the press a virtue. - <<run repX(500, "policies")>> -<</if>> - -<<if $secExpEnabled > 0 && $SecExp.buildings.propHub && $SecExp.buildings.propHub.upgrades.fakeNews > 0>> - The authenticity department produces and distributes copious amounts of plausible enough news and reports, @@.green;increasing your reputation.@@ - <<run repX(10 * $SecExp.buildings.propHub.upgrades.fakeNews, "policies")>> -<</if>> - -<br> -<<set _repGain = hashSum($lastWeeksRepIncome), _repLoss = hashSum($lastWeeksRepIncome)>> -<<if _repGain > _repLoss>> - @@.green;Your reputation increased this week.@@ -<<elseif _repGain < _repLoss>> - @@.red;Your reputation decreased this week.@@ -<</if>> - - -<<if isNaN($rep)>> - <br>@@.red;Error: rep is outside accepted range, please report this issue@@ -<</if>> - -<<if $rep > 20000>> - Your reputation is capped. -<<elseif $rep-$enduringRep > 7500>> - Your base rate of reputation decay is very high. -<<elseif $rep-$enduringRep > 5000>> - Your base rate of reputation decay is high. -<<elseif $rep-$enduringRep > 2500>> - Your base rate of reputation decay is moderate. -<<elseif $rep-$enduringRep > 0>> - Your base rate of reputation decay is low. -<</if>> -<<if $enduringRep >= 10000>> - Your legend is perfected, reducing reputation decay to its lowest possible level. - <<set $enduringRep = 10000>> -<</if>> - -<<if $policies.alwaysSubsidizeRep == 1>> - <<if $rep <= 19900>> - <<run repX(100, "policies")>> - Reputation subsidized as planned. - <<if $PC.degeneracy > 1>> - <<set $PC.degeneracy -= 1>> - <</if>> - <<elseif $PC.degeneracy > 1>> - <<set $PC.degeneracy -= 1>> - Rumors quelled as planned. - <<else>> - <<run cashX(1000, "policies")>> - Reputation subsidy reclaimed this week since your reputation is capped. - <</if>> -<</if>> - -<<if $failedElite > 1>> - <<set $failedElite -= 1>> -<</if>> -<<if $PC.degeneracy > 1>> - <<set $PC.degeneracy -= 1>> -<</if>> - -<<if $arcologies[0].FSRestartDecoration == 100>> - <<if $eugenicsFullControl != 1>> - <<if $failedElite > 300>> - The Societal Elite @@.red;are plotting your demise.@@ - <<elseif $failedElite > 250>> - The Societal Elite @@.red;are openly discussing about your failures.@@ It would be in your best interests to appease them. - <<elseif $failedElite > 200>> - The Societal Elite @@.red;are avoiding you.@@ Getting back on their good side is a good idea, lest you want to disappear. - <<elseif $failedElite > 150>> - The Societal Elite @@.red;stop their conversations around you.@@ You may want to consider your actions more. - <<elseif $failedElite > 100>> - The Societal Elite @@.red;seem to dislike you.@@ - <<elseif $failedElite > 50>> - The Societal Elite @@.red;mutter about you.@@ - <<elseif $failedElite > 0>> - The Societal Elite @@.red;question some of your actions.@@ - <<else>> - The Societal Elite hold you in high regards. - <</if>> - <<else>> - The Societal Elite can think what they want, they know better than to try and cross you again. - <</if>> -<<elseif $arcologies[0].FSRestart != "unset">> - <<if $eugenicsFullControl != 1>> - <<if $failedElite > 300>> - The Societal Elite @@.red;have departed from your arcology in disgust.@@ - <<run FutureSocieties.remove("FSRestart")>> - <<run repX(forceNeg(10000), "event")>> - <<set $eliteFail = random(30,100), - $eliteFailTimer = 15>> - <<if $eliteFail > $topClass - 20>> - <<set $eliteFail = $topClass - 20>> - <</if>> - <<if $arcologies[0].prosperity > 50>> - <<set $arcologies[0].prosperity -= random(20,40)>> - <</if>> - <<elseif $failedElite > 250>> - The Societal Elite @@.red;are openly discussing leaving.@@ It would be in your best interests to appease them. - <<elseif $failedElite > 200>> - The Societal Elite @@.red;are avoiding you.@@ Getting back on their good side is a good idea, lest you want to disappear. - <<elseif $failedElite > 150>> - The Societal Elite @@.red;stop their conversations around you.@@ You may want to consider your actions more. - <<elseif $failedElite > 100>> - The Societal Elite @@.red;seem to dislike you.@@ - <<elseif $failedElite > 50>> - The Societal Elite @@.red;mutter about you.@@ - <<elseif $failedElite > 0>> - The Societal Elite @@.red;question some of your actions.@@ - <<else>> - The Societal Elite hold you in warm regards. - <</if>> - <<else>> - The Societal Elite can think what they want, they know better than to try and cross you again. - <</if>> -<</if>> \ No newline at end of file diff --git a/src/uncategorized/resEndowment.tw b/src/uncategorized/resEndowment.tw index 580c3895d9fd4c3b005008105064d994873cdbae..5618653f503cafe07811eca5d0ec36e0ca448322 100644 --- a/src/uncategorized/resEndowment.tw +++ b/src/uncategorized/resEndowment.tw @@ -3,45 +3,10 @@ <<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check">> <<set $RESEndowment = $RESEndowment.random()>> +<<set _SCH = App.Data.misc.schools.get($RESEndowment)>> -<<if $RESEndowment == "TSS">> - You receive a personal call from a senior representative of The Slavegirl School. It seems the school is raising funds, and since you've already <<if $TSS.schoolPresent == 0>>purchased $TSS.studentsBought of its graduates<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to provide good quality slaves at competitive prices." Getting down to the business advantages, he adds that "donors receive considerable price advantage on future graduates," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent. -<<elseif $RESEndowment == "TUO">> - You receive a personal call from a senior representative of The Utopian Orphanage. It seems the institute is raising funds, and since you've already <<if $TUO.schoolPresent == 0>>purchased $TUO.studentsBought of its test subjects<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools and research institutions are of course for-profit organizations, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to make slave children's dreams come true." Getting down to the business advantages, he adds that "donors receive considerable price advantage on future transactions," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide institute policy to an extent. -<<elseif $RESEndowment == "GRI">> - You receive a personal call from a senior representative of the Growth Research Institute. It seems the institute is raising funds, and since you've already <<if $GRI.schoolPresent == 0>>purchased $GRI.studentsBought of its test subjects<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools and research institutions are of course for-profit organizations, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to truly make the 21st century the century of biology." Getting down to the business advantages, he adds that "donors receive considerable price advantage on future transactions," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide institute policy to an extent. -<<elseif $RESEndowment == "SCP">> - You receive a personal call from a senior representative of St. Claver Preparatory. It seems the school is raising funds, and since you've already <<if $SCP.schoolPresent == 0>>purchased $SCP.studentsBought of its graduates<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to build a reputation for infallible uniformity of product." Getting down to the business advantages, he adds that "donors receive considerable price advantage on future graduates," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent. -<<elseif $RESEndowment == "LDE">> - You receive a personal call from a senior representative of L'École des Enculées. It seems the school is raising funds, and since you've already <<if $LDE.schoolPresent == 0>>purchased $LDE.studentsBought of its graduates<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to create a new paradigm in anal sluttery." Getting down to the business advantages, he adds that "donors receive considerable price advantage on future graduates," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent. -<<elseif $RESEndowment == "NUL">> - You receive a personal call from a senior representative of Nueva Universidad de Libertad. It seems the school is raising funds, and since you've already <<if $NUL.schoolPresent == 0>>purchased $NUL.studentsBought of its graduates<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to promote the Skoptic ideal." Getting down to the business advantages, they add that "donors receive considerable price advantage on future graduates," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; they hesitate, but then admit that "as our foremost supporter" you could use an endowment to guide school policy to an extent. -<<elseif $RESEndowment == "TGA">> - You receive a personal call from a senior representative of the Gymnasium-Academy. It seems the school is raising funds, and since you've already <<if $TGA.schoolPresent == 0>>purchased $TGA.studentsBought of its graduates<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to provide the very finest companions to persons of quality such as yourself." Getting down to the business advantages, he adds that "donors receive considerable price advantage on future graduates," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent. -<<elseif $RESEndowment == "HA">> - You receive a personal call from a senior representative of the Hippolyta Academy. It seems the school is raising funds, and since you've already <<if $HA.schoolPresent == 0>>purchased $HA.studentsBought of its graduates<<else>>encouraged them to open a branch campus in your arcology<</if>> and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to provide the very finest companions to persons of quality such as yourself." Getting down to the business advantages, he adds that "donors receive considerable price advantage on future graduates," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent. -<<elseif $RESEndowment == "TCR">> - You receive a personal call from a senior representative of the Cattle Ranch. It seems the farm is raising funds, and since you've already <<if $TCR.schoolPresent == 0>>purchased $TCR.studentsBought of its stock<<else>>encouraged them to open a pasture in your arcology<</if>> and are known to be wealthy, you are an obvious potential investor. Though the Cattle Ranchers are, of course, a for-profit farm, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to lactation focused society as a whole. - <br><br> - "A generous donation," the representative insists, "would help us advance our mission to provide the very finest livestock to persons of quality such as yourself." Getting down to the business advantages, he adds that "donors receive considerable price advantage on available stock," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost investor" you could use an endowment to guide stock policy to an extent. -<<else>> - You receive a personal call from an older member of the Futanari Sisters. Like all of the Sisters, she's very beautiful, but you know how to judge age through the most cutting-edge treatments, and you guess she's in her early forties. That makes her one of the most senior Sisters, at the age when mandatory enslavement will happen very soon for her. She doesn't seem preoccupied by the prospect, though the pair of gorgeous young women cooperating to suck off her enormous cock may have something to do with that. +<<if $RESEndowment == "TFS">> + You receive a personal call from an older member of _SCH.title. Like all of the Sisters, she's very beautiful, but you know how to judge age through the most cutting-edge treatments, and you guess she's in her early forties. That makes her one of the most senior Sisters, at the age when mandatory enslavement will happen very soon for her. She doesn't seem preoccupied by the prospect, though the pair of gorgeous young women cooperating to suck off her enormous cock may have something to do with that. <<if $PC.slaveSurname>>"<<if $PC.title>>Mr.<<else>>Ms.<</if>> <<print $PC.slaveSurname>>,"<<else>>"<<print $PC.slaveName>>,"<</if>> she says forthrightly, <<if ($PC.dick != 0) && ($PC.vagina != -1) && ($PC.boobs >= 300)>> @@ -52,6 +17,36 @@ I would like to ask you for help." She explains that a schism is developing within the Sisters over whether the ideal futanari should have balls. "This is a serious matter," she says. "We must agree on our goals. I believe a futa's pussy is most exquisite without testicles to obscure it." She stands up, displacing her attendants and bringing her genitalia into view. She has scarcely a trace of scrotum. "Sadly, removal of our balls would reduce our ability to remain erect, and reduce our sex drives. So, the solution is clearly to carefully calibrate our transformations to ensure that our testicles never descend, like mine; or if they have descended, to reverse that with surgery. With your support, I can make this vision predominate. I hope," she says, turning to give one of her attendants a tender kiss, "that this will make us more loving, as well." <br><br> Scarcely has the call ended than another comes in. It's another matron of the Futanari Sisters; she looks so much like her Sister that you are momentarily confused. "I know what my Sister said, and I know what she asked for," she purrs. She manipulates the video call controls, zooming the camera out. It reveals that she has her equally enormous cock in a much younger Sister's pussy; another attendant is lavishing oral attention on her testicles, which are comically big. "She's wrong. We are more beautiful with balls, and the bigger, the better." She shudders, pulling out to blow a gigantic load all over all three of them. Her erection does not waver for an instant as she transfers it to the other futa's anus. "We are sexually superior like this, too. Lust is better than love. Support me instead, I beg you." +<<else>> + You receive a personal call from a senior representative of _SCH.title. It seems the _SCH.nickname is raising funds, and since you've already + <<if V[$RESEndowment].schoolPresent == 0>> + purchased <<= V[V.RESEndowment].studentsBought>> of its _SCH.nickname + <<else>> + encouraged them to open a _SCH.branchName in your arcology + <</if>> + and are known to be wealthy, you are an obvious potential donor. Though the Free Cities' slave schools are of course for-profit institutions, they do their best to maintain a veneer of public service, and cast their efforts to improve their product as a benefit to slaveowning society as a whole. + <br><br> + "A generous donation," the representative insists, "would help us advance our mission to + <<switch $RESEndowment>> + <<case "TUO">> + make slave children's dreams come true." + <<case "GRI">> + truly make the 21st century the century of biology." + <<case "SCP">> + build a reputation for infallible uniformity of product." + <<case "LDE">> + create a new paradigm in anal sluttery." + <<case "NUL">> + promote the Skoptic ideal." + <<case "TGA" "HA">> + provide the very finest companions to persons of quality such as yourself." + <<case "TCR">> + provide the very finest livestock to persons of quality such as yourself." + <<default>> /* TSS */ + provide good quality slaves at competitive prices." + <</switch>> + + Getting down to the business advantages, he adds that "donors receive considerable price advantage on future _SCH.nickname," which seems to translate into a discount of around 20% once the sales language is stripped off it. You point out that's bordering on pointlessness to you, given your ability to purchase almost anything you wish; he hesitates, but then admits that "as our foremost supporter" you could use an endowment to guide school policy to an extent. <</if>> <br><br> @@ -112,7 +107,7 @@ <<elseif $RESEndowment == "GRI">> <<link "Focus on curative research">> <<replace "#result">> - You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving test subjects will probably leave testing programs at a unique level of vitality. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express your interest in the institute's curative research. The representative admits the field is notoriously difficult, but readily agrees that the institute could certainly focus on health to a greater extent than it already does; its surviving _SCH.nickname will probably leave testing programs at a unique level of vitality. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $GRI.schoolUpgrade = 1>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -121,7 +116,7 @@ <br> <<link "Support refined hormonal research to prevent shrinkage">> <<replace "#result">> - You introduce your plans to the representative by forwarding the records of the GRI test subjects you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You introduce your plans to the representative by forwarding the records of the GRI _SCH.nickname you've purchased and what you've done with them. His eyes widen at the profitability you've found in use of their already-impressive breasts to produce milk. The institute readily agrees to pursue the field by focusing more heavily on lactation and breast expansion. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $GRI.schoolUpgrade = 2>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -138,7 +133,7 @@ <<elseif $RESEndowment == "SCP">> <<link "Endow a focus on loyalty at the cost of intelligence">> <<replace "#result">> - You express general satisfaction with previous graduates on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname on a physical level, but mention exasperation with the unfortunate tendency of some of them to question their place in life. You crossdeck a series of research reports that outline a method of reducing any girl to idiotic devotion. The representative is dubious, since it will reduce prices, but you point out the potential for commensurately reduced overhead, and the school eventually agrees. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $SCP.schoolUpgrade = 1>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -147,7 +142,7 @@ <br> <<link "Support better skills training">> <<replace "#result">> - You state general satisfaction with previous graduates, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You state general satisfaction with previous _SCH.nickname, but mention some doubt about the school's focus on the physical to the exclusion of the mental. You outline a plan under which surgical recovery time could be used for low intensity training, and after reviewing it the school agrees to implement it without delay. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $SCP.schoolUpgrade = 2>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -164,7 +159,7 @@ <<elseif $RESEndowment == "LDE">> <<link "Endow drug therapy designed to enhance infatuation">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname, but point out that on arrival, you found it necessary to do some additional work before they discovered their true calling as constant buttsluts. The representative quickly hides his incredulous glee as you crossdeck a series of research reports that suggest the potential for a pharmaceutical fix for this blemish. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $LDE.schoolUpgrade = 1>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -173,7 +168,7 @@ <br> <<link "Support refined hormonal research to prevent shrinkage">> <<replace "#result">> - You state general satisfaction with previous graduates, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You state general satisfaction with previous _SCH.nickname, but express some regret that the hormonal treatments that feminize the school's products tend to impact certain amusing parts of their anatomy. The representative is dubious, since that minimization is a major part of the school's brand, but you wax rhapsodic on the advantages of a well-endowed bottom kept soft by hormones, and the school eventually agrees. It spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $LDE.schoolUpgrade = 2>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -190,7 +185,7 @@ <<elseif $RESEndowment == "TGA">> <<link "Endow an advanced training center to produce fanatical loyalty">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname, but point out that their mental conditioning is incomplete at best. The representative quickly hides his incredulous glee as you outline a basic plan for an advanced training center that would use refined versions of old world mental conditioning techniques to produce total loyalty. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $TGA.schoolUpgrade = 1>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -199,7 +194,7 @@ <br> <<link "Endow a combat training program">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy graduates lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname, but point out that in this uncertain world, it's important that every possible resource be used to defend slave society. The representative quickly hides his incredulous glee as you outline a basic plan for a combat training program that will make Gymnasium-Academy _SCH.nickname lethal fighters that can be trusted not to use their talents to rebel. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $TGA.schoolUpgrade = 2>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -216,7 +211,7 @@ <<elseif $RESEndowment == "HA">> <<link "Support higher education training">> <<replace "#result">> - You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the graduates without negatively affecting their physical development. The school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You and the representative discuss the academy's focus on raw quality. You offer to endow a better educational program able to enhance the mental faculties of the _SCH.nickname without negatively affecting their physical development. The school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $HA.schoolUpgrade = 1>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -225,7 +220,7 @@ <br> <<link "Focus on growth stimulants research">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy graduates powerful colossi. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname powerful colossi. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $HA.schoolUpgrade = 2>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -234,7 +229,7 @@ <br> <<link "Focus on strongfat body type">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy graduates strong yet graciously soft and feminine battlemaids. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname, but point out that if they truly wish to distinguish themselves in the world, they need to focus on their trademark features. The representative quickly hides his incredulous glee as you outline a research program that will make Hippolyta Academy _SCH.nickname strong yet graciously soft and feminine battlemaids. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $HA.schoolUpgrade = 3>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -260,7 +255,7 @@ <br> <<link "Encourage the sale of heifers">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slave milking. + You express general satisfaction with previous _SCH.nickname, but point out that it would be quite enjoyable to bring in their milk yourself. The representative tries to explain that they aren't ready yet, but quickly changes his tune when he hears how much you'll be sending their way. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slave milking. <<set $TCR.schoolUpgrade = 2>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -277,7 +272,7 @@ <<elseif $RESEndowment == "NUL">> <<link "Fund a training program for non-sexual skills">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname, but point out that their intense androgyny is likely to be off-putting for other buyers. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to show off for their betters. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $NUL.schoolUpgrade = 1>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> @@ -286,7 +281,7 @@ <br> <<link "Fund a training program for sexual skills">> <<replace "#result">> - You express general satisfaction with previous graduates, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. + You express general satisfaction with previous _SCH.nickname, but point out that their lack of genitalia severely hinders their use as sex slaves. The representative reluctantly agrees with your doubts, and enthusiastically agrees with your idea for an intensive training regimen to teach students how to use their mouths and asses as sexual tools. The grateful school spreads @@.green;word of your generosity,@@ using you as an example of investment in the future of slaveowning. <<set $NUL.schoolUpgrade = 2>> <<run cashX(-50000, "capEx")>> <<run repX(7500, "event")>> diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw index 101bf67bda7795f9b4c9f4297a9ef7996b1b1ec4..0341a1d74c47e64d3d9e97d8082601522e74c3a0 100644 --- a/src/uncategorized/resFailure.tw +++ b/src/uncategorized/resFailure.tw @@ -870,42 +870,13 @@ </p> <<else>> <p> - You receive a personal call from a senior representative of - <<switch $RESFailure>> - <<case "TSS">> - the Slavegirl School, - <<case "GRI">> - the Growth Research Institute, - <<case "SCP">> - St. Claver Prep, - <<case "LDE">> - the École des Enculées, - <<case "TGA">> - the Gymnasium-Academy, - <<case "HA">> - the Hippolyta Academy, - <<case "NUL">> - Nueva Universidad de Libertad, - <<case "TCR">> - the Cattle Ranch, - <<default>> - error for: "$RESFailure". - <</switch>> - as you've been expecting since their second missed rent payment. "I apologize," _he says with some embarrassment, "but it seems our expansion into your arcology was a mistake. It's strange — the business climate seemed excellent, and other corporations are doing well." + You receive a personal call from a senior representative of <<print App.Data.misc.schools.get($RESFailure).title>> as you've been expecting since their second missed rent payment. "I apologize," _he says with some embarrassment, "but it seems our expansion into your arcology was a mistake. It's strange — the business climate seemed excellent, and other corporations are doing well." <<if $RESFailure == "NUL">> They sigh <<else>> He sighs <</if>> - "Nevertheless, nothing ever seemed to go as planned. We'll be shutting our - <<if $RESFailure == "GRI">> - subsidiary lab - <<elseif $RESFailure == "TCR">> - farm - <<else>> - branch campus - <</if>> - down immediately. In fact, it should be shut down within the hour. + "Nevertheless, nothing ever seemed to go as planned. We'll be shutting our <<print App.Data.misc.schools.get($RESFailure).branchName>> down immediately. In fact, it should be shut down within the hour. <<if $RESFailure == "TCR">> However, we lack the funds to remove some of our finest cattle and since we still owe you a little... We'd like to you to have them; we'll even have them delivered to your penthouse with the last of our credits." <<else>> diff --git a/src/uncategorized/saLiveWithHG.tw b/src/uncategorized/saLiveWithHG.tw index 3090acf5a33451d74be5f6e2c91b41c062c69250..48f53186004fd51e73ca5e795469370a33b2f8c2 100644 --- a/src/uncategorized/saLiveWithHG.tw +++ b/src/uncategorized/saLiveWithHG.tw @@ -1031,19 +1031,17 @@ <</if>> <<if $showEWD == 0>> - <<silently>> /*<<run App.SlaveAssignment.choosesOwnClothes($slaves[$i])>>*/ - <<include "SA rules">> + <<run App.SlaveAssignment.rules($slaves[$i])>> <<run App.SlaveAssignment.diet($slaves[$i])>> <<run App.SlaveAssignment.longTermEffects($slaves[$i])>> <<run App.SlaveAssignment.drugs($slaves[$i])>> <<run App.SlaveAssignment.relationships($slaves[$i])>> <<run App.SlaveAssignment.rivalries($slaves[$i])>> <<run App.SlaveAssignment.devotion($slaves[$i])>> - <</silently>> <<else>> /*<<= App.SlaveAssignment.choosesOwnClothes($slaves[$i])>>*/ - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules($slaves[$i])>> <<= App.SlaveAssignment.diet($slaves[$i])>> <<includeDOM App.SlaveAssignment.longTermEffects($slaves[$i])>> <<= App.SlaveAssignment.drugs($slaves[$i])>> diff --git a/src/uncategorized/saRules.tw b/src/uncategorized/saRules.tw deleted file mode 100644 index d0b58feeb6901dc8b830868508844763146ffd79..0000000000000000000000000000000000000000 --- a/src/uncategorized/saRules.tw +++ /dev/null @@ -1,2393 +0,0 @@ -:: SA rules [nobr] - -<<set _L = App.Utils.countFacilityWorkers()>> -<<set _release = $slaves[$i].rules.release>> - -<<if $slaves[$i].fuckdoll == 0>> - $He - <<if $slaves[$i].fetish == "mindbroken">> - is mentally broken so none of the rules have any impact. - <<else>> - <<switch $slaves[$i].assignment>> - <<case "be confined in the arcade">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off, not that $he gets a choice. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off, not that $he gets a choice. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off at work despite $his reluctance, @@.hotpink;habituating $him to being a fuckhole.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<elseif App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - wasn't a popular enough hole to sate $his arousal, leaving $him @@.gold;uncomfortably horny@@ despite $his conditions. - <<set $slaves[$i].trust -= 3>> - <</if>> - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $his body gets used. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - <<case "be the Madam">> - <<set $slaves[$i].need -= (App.Entity.facilities.brothel.employeesIDs().size*10)>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in $brothelName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - It also helps to offset the tiring nature of $his position. - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict $his non-essential activities. - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he manages clients, analyzing $his tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples. - <<set $slaves[$i].induceLactation += 2>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "work in the brothel">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off, not that $his clients care. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off, not that $his clients care. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<elseif App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - <<switch $brothelDecoration>> - <<case "Degradationist" "standard">> - The spare living conditions of $brothelName @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<set $slaves[$i].devotion += 1>> - <<case "Chattel Religionist">> - The open, yet comfortable, conditions of $brothelName @@.hotpink;get $him used@@ to the routine of slavery. - <<set $slaves[$i].devotion += 1>> - <<default>> - $He gets a little room all to $himself, allowing $him to feel self-reliant; or it would, if it didn't reek of sex and shame after all the customers $he serviced in it. - <</switch>> - <<else>> - <<switch $brothelDecoration>> - <<case "Degradationist" "standard">> - <<if ($slaves[$i].trust > 40)>> - The spare living conditions of $brothelName @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The spare living conditions of $brothelName @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - $He's used to spare living conditions, so $he's not bothered by $brothelName's. - <</if>> - <<case "Chattel Religionist">> - The open, yet comfortable, conditions of $brothelName's slave quarters are quite refreshing after a day of public sex, even if $he has to share it with all the other whores. - <<default>> - $He likes $his little room in $brothelName, even if <<if canSmell($slaves[$i])>>it smells of sex<<else>>it's filled with the heat of sex<</if>> after fucking in it all day. - <</switch>> - <</if>> - <<if $slaves[$i].rules.living == "luxurious">> - They provide @@.green;satisfying rest@@ every time $he drifts off to sleep. - <<elseif $slaves[$i].rules.living == "spare">> - <<if $slaves[$i].devotion > 20 && $slaves[$i].trust <= 10>> - They don't provide much rest, however. - <<else>> - They provide meager rest, if anything. - <</if>> - <<else>> - They provide - <<if $slaves[$i].devotion > 20>> - @@.green;adequate rest@@ for a $girl that knows how to manage $his time. - <<else>> - @@.green;adequate rest,@@ but not enough for a slave lacking time management. - <</if>> - <</if>> - - <<if $slaves[$i].rules.rest == "mandatory">> - <<if ($slaves[$i].devotion <= 20)>> - Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have. - <<set $slaves[$i].trust += 3>> - <<else>> - $He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= getWrittenTitle($slaves[$i])>>.@@ - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaveUsedRest>> - <<if $slaves[$i].rules.rest == "permissive">> - <<if ($slaves[$i].devotion <= 20)>> - $He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@ - <<set $slaves[$i].trust += 2>> - <<else>> - $He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired. - <<set $slaves[$i].devotion += 1>> - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "restrictive">> - <<if ($slaves[$i].devotion <= -20)>> - $He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional. - <<set $slaves[$i].trust -= 1>> - <<elseif ($slaves[$i].devotion <= 20)>> - $He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive. - <<set $slaves[$i].devotion += 1>> - <<else>> - $He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better. - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "cruel">> - <<if ($slaves[$i].devotion <= -20)>> - $He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him. - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].devotion <= 20)>> - You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning. - <<set $slaves[$i].trust -= 3>> - <<set $slaves[$i].devotion -= 3>> - <<else>> - Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little. - <<set $slaves[$i].devotion -= 2>> - <</if>> - <</if>> - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he services customers, analyzing $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Customers are encouraged to work $his breasts and nipples in an effort to induce lactation; whoever gets $him to start dribbling milk wins a week of drinks on the house. - <<set $slaves[$i].induceLactation += 4>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $slaves[$i].devotion > 20>> - <<if $slaves[$i].fetish == "boobs">> - It's unclear if $he is using $his milky breasts during sex for you or $himself; either way, $his lactation won't be going anywhere. - <<else>> - $He happily puts $his milky breasts to use during sex in order to keep lactating for you. - <</if>> - <<elseif $slaves[$i].devotion >= -20>> - <<if $slaves[$i].fetish == "boobs">> - $He doesn't need to be ordered to use $his milky breasts during sex since $he favors them heavily. - <<else>> - $He is required to utilize $his milky breasts during sex to keep $his lactation strong. - <</if>> - <<else>> - Customers are encouraged to molest $his breasts to keep $him lactating. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the DJ">> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in the back of $clubName and @@.mediumaquamarine;trusts@@ you a bit more for placing your faith in $his abilities. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - It helps offset the tiring nature of $his position and gives $him a place to center $himself at the end of the day. - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict $his non-essential activities. - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he works the crowd, analyzing $his sexual tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment between $his sets, $he spends that time massaging $his breasts and working $his nipples. - <<set $slaves[$i].induceLactation += 2>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - $He has worked milking $himself into $his dance routines, both entertaining the crowd and keeping $his lactation strong for you. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "serve in the club">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off, not that $his spectators care. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off, not that $his spectators care. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<elseif App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - $He shares a room with <<if App.Entity.facilities.club.employeesIDs().size > 4>>some of <</if>>the other sluts, preventing $him from becoming too complacent. It doesn't help that during business hours $he has to take citizens in $his own bed. - <<else>> - $He likes $his personal space in $clubName, even if <<if canSmell($slaves[$i])>>it smells of<<else>>it's filled with the heat from<</if>> sex and citizens. - <</if>> - It provides - <<if $slaves[$i].devotion > 20>> - @@.green;adequate rest@@ for a slut that knows how to manage $his time. - <<else>> - @@.green;adequate rest,@@ but not enough for a slut lacking time management. - <</if>> - - <<if $slaves[$i].rules.rest == "mandatory">> - <<if ($slaves[$i].devotion <= 20)>> - Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have. - <<set $slaves[$i].trust += 3>> - <<else>> - $He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= getWrittenTitle($slaves[$i])>>.@@ - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaveUsedRest>> - <<if $slaves[$i].rules.rest == "permissive">> - <<if ($slaves[$i].devotion <= 20)>> - $He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@ - <<set $slaves[$i].trust += 2>> - <<else>> - $He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired. - <<set $slaves[$i].devotion += 1>> - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "restrictive">> - <<if ($slaves[$i].devotion <= -20)>> - $He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional. - <<set $slaves[$i].trust -= 1>> - <<elseif ($slaves[$i].devotion <= 20)>> - $He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive. - <<set $slaves[$i].devotion += 1>> - <<else>> - $He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better. - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "cruel">> - <<if ($slaves[$i].devotion <= -20)>> - $He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him. - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].devotion <= 20)>> - You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning. - <<set $slaves[$i].trust -= 3>> - <<set $slaves[$i].devotion -= 3>> - <<else>> - Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little. - <<set $slaves[$i].devotion -= 2>> - <</if>> - <</if>> - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he services citizens, analyzing $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Citizens are encouraged to work $his breasts and nipples in an effort to induce lactation; whoever gets $him to start dribbling milk wins a week of drinks on the house. - <<set $slaves[$i].induceLactation += 4>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $slaves[$i].devotion > 20>> - <<if $slaves[$i].fetish == "boobs">> - It's unclear if $his lactation based routines are for your benefit or $his own; either way, $his milk production won't be slowing down. - <<else>> - $He happily works $his lactation into $his routines in order to keep $his milk flowing. - <</if>> - <<elseif $slaves[$i].devotion >= -20>> - <<if $slaves[$i].fetish == "boobs">> - $He doesn't need to be ordered to work $his lactation into $his routines since $he does so already. - <<else>> - $He is required to utilize $his lactation while entertaining to keep $his lactation strong. - <</if>> - <<else>> - Citizens are encouraged to molest $his breasts to keep $him lactating. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the Nurse">> - <<set $slaves[$i].need -= ($flSex.size*3)>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in $clinicName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - Having a place to call $his own each night helps keep the stress of $his duties from catching up with $him. - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict $his non-essential activities. - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he cares for $his patients to determine $his tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - $He spends much of $his time with a pair of automatic breast pumps attached to $his chest. The constant stimulation will have $him milky soon enough. - <<set $slaves[$i].induceLactation += 8>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - It's not unusual to see $him tending to $his patients with a pair of breast pumps sucking away at $his breasts. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "get treatment in the clinic">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<else>> - <<set _partner = App.EndWeek.getClinicPartner($slaves[$i])>> - <<switch _partner.type>> - <<case "player">> - is well taken care of during $his stay in $clinicName; you make sure your $wife's every sexual need is handled personally. - <<set $slaves[$i].need = 0>> - <<if canImpreg($slaves[$i], $PC) && (($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)||($slaves[$i].anus != 0 && $slaves[$i].mpreg == 1))>> - <<= knockMeUp($slaves[$i], 10, 0, -1, 1)>> - <<if ($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)>> - <<set $slaves[$i].counter.vaginal += 7, $vaginalTotal += 7>> - <<else>> - <<set $slaves[$i].counter.anal += 7, $analTotal += 7>> - <</if>> - <<if $slaves[$i].preg > 0>> - It comes as little surprise when routine health checks start to show @@.lime;$he's pregnant!@@ - <</if>> - <</if>> - <<case "lover">> - <<setLocalPronouns _partner.slave 2>> - <<set $slaves[$i].need = 0>> - is well taken care of during $his stay in $clinicName; $his <<if $slaves[$i].relationship == 3>>friend with benefits<<elseif $slaves[$i].relationship == 4>>sweetheart<<else>>_wife2<</if>> frequently stops by when $he gets the chance to make sure $his sexual needs are properly handled. - <<set _partner.slave.counter.oral += 14, $oralTotal += 14>> - <<case "family">> - is well-loved by $his family; this week, $his <<= relativeTerm($slaves[$i], _partner.slave)>> @@.lightgreen;_partner.slave.slaveName@@ pays special attention to $him, making sure $his sexual needs are met. - <<set $slaves[$i].need = 0>> - <<set _partner.slave.counter.oral += 7, $oralTotal += 7>> - <<case "friend">> - is friends with @@.lightgreen;_partner.slave.slaveName,@@ who comes to visit $him regularly. $His sexual frustration from being confined to the clinic shows, and _partner.slave.slaveName often winds up helping $him get relief. - <<if _partner.slave.rules.relationship === "permissive" && $slaves[$i].rules.relationship === "permissive">> - They have @@.lightgreen;become lovers.@@ - <<set $slaves[$i].relationship = 3, _partner.slave.relationship = 3>> - <<else>> - They know it your rules prevent them from becoming anything more, but they enjoy themselves anyway. - <</if>> - <<set $slaves[$i].need = 0>> - <<set _partner.slave.counter.oral += 7, $oralTotal += 7>> - <<case "nurse">> - is routinely brought to orgasm by _S.Nurse.slaveName as part of $his duties. - <<if canPenetrate($slaves[$i]) && _S.Nurse.boobs >= 500>> - <<run seX(_S.Nurse, "mammary", $slaves[$i], "penetrative", 14)>> - <<else>> - <<run actX(_S.Nurse, "oral", 14)>> - /* possible cumflation code here */ - <</if>> - <<set $slaves[$i].need -= 60>> - <<default>> - <<if _release.masturbation === 1>> - <<if ($slaves[$i].devotion <= 20) && ($slaves[$i].trust >= -20)>> - takes solace in $his permission to masturbate rather than being forced to seek other means of release, @@.mediumaquamarine;reducing $his fear@@ of you. - <<set $slaves[$i].trust += 2, $slaves[$i].need = 0>> - <<elseif ($slaves[$i].devotion <= 20)>> - enjoys being allowed to masturbate rather than having to seek other means of release, @@.mediumaquamarine;slightly reducing $his fear@@ of you but @@.mediumorchid;allowing $him to remain in control of $him sexuality.@@ - <<set $slaves[$i].trust += 1, $slaves[$i].devotion -= 1, $slaves[$i].need = 0>> - <<elseif ($slaves[$i].devotion <= 50)>> - accepts having to relieve $himself solely through masturbation. - <<set $slaves[$i].need = 0>> - <<else>> - is a little disappointed that $he's limited to $his <<if !hasAnyArms($slaves[$i])>>imagination<<else>>hand<<if hasBothArms($slaves[$i])>>s<</if>><</if>> and toys, but @@.mediumaquamarine;understands you care about $his current health.@@ - <<set $slaves[$i].trust += 1, $slaves[$i].need = 0>> - <</if>> - <<if $slaves[$i].devotion > 20>> - When $he does play with $himself, $he - <<includeDOM App.EndWeek.Rules.masturbationFetishPlay($slaves[$i])>> - <<includeDOM App.EndWeek.Rules.masturbationDiscoversFetish($slaves[$i])>> - <</if>> - <<includeDOM App.EndWeek.Rules.masturbationDrugEffects($slaves[$i])>> - <<else>> - eventually gives in to $his urges and is @@.gold;punished@@ for illicit masturbation. - <<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>> - <</if>> - <</switch>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - <<switch $clinicDecoration>> - <<case "Eugenics" "Gender Fundamentalist" "Gender Radicalist" "Hedonistic" "Maturity Preferentialist" "Paternalist" "Repopulation Focus" "Slimness Enthusiast" "Youth Preferentialist" "Neo-Imperialist">> - The luxurious living conditions encourage $him to @@.mediumaquamarine;feel respectable.@@ $He can't help but @@.hotpink;feel you care@@ about $him as something more than just an object under such lovely treatment. - <<set $slaves[$i].trust += 3, $slaves[$i].devotion += 1>> - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Egyptian Revivalist" "Roman Revivalist">> - The living conditions, despite their open nature, are @@.mediumaquamarine;quite relaxing.@@ $His opinion of you @@.hotpink;can only rise@@ with such lovely treatment. - <<set $slaves[$i].trust += 2, $slaves[$i].devotion += 1>> - <<case "Edo Revivalist">> - The living conditions, despite their spartan nature, are @@.mediumaquamarine;calming.@@ $His opinion of you @@.hotpink;improves@@ with such a contrast to $his usual life. - <<set $slaves[$i].trust += 1, $slaves[$i].devotion += 1>> - <<case "standard">> - The spare living conditions of $clinicName serve as a constant reminder that @@.hotpink;you only care about $his body@@ and not about $him. - <<if ($slaves[$i].trust > 20)>> - @@.gold;$He fully understands what this means for $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].devotion += 1>> - <<default>> - The spare living conditions of $clinicName serve as a constant reminder that @@.hotpink;$he is nothing more than an object@@ for your amusement. - <<if ($slaves[$i].trust > 20)>> - $He can only @@.gold;envision the horrors@@ that await $him under your care. - <<set $slaves[$i].trust -= 2>> - <</if>> - <<set $slaves[$i].devotion += 1>> - <</switch>> - <<else>> - <<switch $clinicDecoration>> - <<case "Eugenics" "Gender Fundamentalist" "Gender Radicalist" "Hedonistic" "Maturity Preferentialist" "Paternalist" "Repopulation Focus" "Slimness Enthusiast" "Youth Preferentialist" "Neo-Imperialist">> - $He loves $his stay in $clinicName and almost wishes it didn't have to end. - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Egyptian Revivalist" "Roman Revivalist">> - The living conditions, despite their open nature, are @@.mediumaquamarine;quite relaxing.@@ $He savors $his stay at $clinicName. - <<set $slaves[$i].trust += 1>> - <<case "Edo Revivalist">> - The living conditions, despite their spartan nature, are @@.mediumaquamarine;calming.@@ $He enjoys $his stay at $clinicName. - <<set $slaves[$i].trust += 1>> - <<case "standard">> - <<if ($slaves[$i].trust > 40)>> - The spare living conditions of $clinicName @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The spare living conditions of $clinicName @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<default>> - <<if ($slaves[$i].devotion >= 80)>> - The spare living conditions of $clinicName remind $him that $he is just an object for your amusement, and that is fine with $him. - <<elseif ($slaves[$i].trust > 40)>> - The spare living conditions of $clinicName @@.gold;remind $him that $he is just an object to you.@@ - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The spare living conditions of $clinicName @@.gold;keep $him aware of $his place as your plaything.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <</switch>> - <</if>> - - /% diverges from App.EndWeek.Rules.consentRules($slaves[$i]) %/ - <<if ($universalRulesConsent == 0)>> - <<if ($slaves[$i].devotion <= 20)>> - <<if ($slaves[$i].trust > -10)>> - Under the rules, $he is free game for other slaves to molest, and lives $his life constantly @@.gold;afraid@@ of the day $he is released from $clinicName. - <<set $slaves[$i].trust -= 2>> - <<else>> - Under the rules, $he will find $himself constantly molested by other slaves once $he leaves $clinicName, but $he's already in such constant terror it that it doesn't cross $his mind. - <</if>> - <<elseif (_release.slaves === 1)>> - <<if ($slaves[$i].energy > 95)>> - Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly takes the opportunity@@ whenever visiting slaves are present. - <<set $slaves[$i].devotion += 1>> - <<elseif ($slaves[$i].fetishKnown == 1) && ($slaves[$i].fetishStrength > 60)>> - <<if ($slaves[$i].fetish == "sadist")>> - Under the rules, $he's allowed to demand that other slaves get $him off, and $he @@.hotpink;eagerly orders@@ visiting slaves to get in bed with $him. - <<set $slaves[$i].devotion += 1>> - <<elseif ($slaves[$i].fetish == "dom")>> - Under the rules, $he's allowed to demand other slaves to have sex with $him, and $he @@.hotpink;eagerly orders@@ visiting slaves to serve $his every desire. - <<set $slaves[$i].devotion += 1>> - <</if>> - <</if>> - <</if>> - <<else>> - <<if ($slaves[$i].devotion <= 20) && ($slaves[$i].devotion >= -20)>> - Since $he's low in the slave hierarchy, @@.mediumaquamarine;$he knows that $he's safe@@ from other slave's abuse while $he is recovering. - <<set $slaves[$i].trust += 1>> - <</if>> - <</if>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $his choice of entertainment, analyzing $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - $He spends $his stay with a pair of automatic breast pumps attached to $his chest. The constant stimulation will have $him milky soon enough. - <<set $slaves[$i].induceLactation += 10>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $slaves[$i].devotion > 20>> - <<if $slaves[$i].fetish == "boobs">> - <<if (canHold($slaves[$i]))>> - Whenever $he is feeling up to it, $he enjoys milking $himself by hand in lieu of using a breast pump; it's around for those times $he can't muster the energy. - <<else>> - $He spends $his stay mostly with a pair of automatic breast pumps attached to $his chest. They get $him so worked up, $he has to be asked to take breaks from using them. - <</if>> - <<else>> - $He spends $his stay with a pair of automatic breast pumps attached to $his chest. The periodic suction is both relieving and invigorating. - <</if>> - <<elseif $slaves[$i].devotion >= -20>> - <<if $slaves[$i].fetish == "boobs">> - $He spends most of $his stay with a pair of automatic breast pumps attached to $his chest. They get $him so worked up, $his time with them has to be limited. - <<else>> - $He spends $his stay with a pair of automatic breast pumps attached to $his chest. It's a little uncomfortable, but $he won't dare complain. - <</if>> - <<else>> - $He spends $his stay with a pair of automatic breast pumps locked to $his chest. $His lactation will not be allowed to wane so easily. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the Wardeness">> - <<set $slaves[$i].need -= ($flSex.size*5)>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - gets off at work, so $he doesn't feel the need for release that often. - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in $cellblockName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - It also helps to offset the tiring nature of $his position. - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict $his non-essential activities. - <<unset $slaveUsedRest>> - <</if>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he oversees the prisoners, analyzing $his preferences. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples. - <<set $slaves[$i].induceLactation += 3>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - $He works maintaining $his lactation into $his duties; when $he feels $his chest has grown too heavy, the nearest prisoner had better have an appetite or there will be punishment. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be confined in the cellblock">> - <<set _wardenFunTimes = 0>> - <<if $flSex.has($slaves[$i].ID)>> - <<set _wardenFunTimes = random(0,5)>> - <<set $slaves[$i].need -= (10*_wardenFunTimes)>> - <</if>> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off, making the rule restricting $his sexual outlets superfluous. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off, making the rule restricting $his sexual outlets superfluous. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].relationship == -3>> - You make sure your troublesome $wife's sexual needs are handled, openly, in the middle of $cellblockName, where everyone can see, hear, and smell your dominance. - <<set $slaves[$i].need = 0>> - <<if canDoVaginal($slaves[$i]) && $slaves[$i].vagina > 0>> - <<run seX($PC, "penetrative", $slaves[$i], "vaginal", 7)>> - <<elseif canDoAnal($slaves[$i]) && $slaves[$i].anus > 0>> - <<run seX($PC, "penetrative", $slaves[$i], "anal", 7)>> - <<else>> - <<run seX($PC, "penetrative", $slaves[$i], "oral", 7)>> - <</if>> - <<if canImpreg($slaves[$i], $PC) && (($slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)||($slaves[$i].anus != 0 && $slaves[$i].mpreg == 1))>> - <<= knockMeUp($slaves[$i], 10, 0, -1, 1)>> - <<if $slaves[$i].preg > 0>> - As an added show, you @@.lime;proudly display $his positive pregnancy@@ test for all to see. - <</if>> - <</if>> - <<else>> - <<if _wardenFunTimes > 0>> - <<run SimpleSexAct.Slaves($slaves[$i], _S.Wardeness, _wardenFunTimes)>> - <<if _wardenFunTimes > 0 && canImpreg($slaves[$i], _S.Wardeness) && ($cellblockWardenCumsInside == 1 || _S.Wardeness.fetish == "mindbroken")>> - <<if (canDoVaginal($slaves[$i]) && $slaves[$i].vagina > 0 && $slaves[$i].ovaries == 1)>> - <<= knockMeUp($slaves[$i], 10, 0, $WardenessID, 1)>> - <<elseif (canDoAnal($slaves[$i]) && $slaves[$i].anus > 0 && $slaves[$i].mpreg == 1)>> - <<= knockMeUp($slaves[$i], 10, 1, $WardenessID, 1)>> - <</if>> - <</if>> - <</if>> - <<if $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - <<if random(-100,0) > $slaves[$i].devotion>> - refuses to not touch $himself and is @@.gold;severely punished@@ for illicit masturbation. - <<set $slaves[$i].trust -= 2, $slaves[$i].need -= 10>> - <<else>> - @@.gold;fears@@ trying to - <<if ($slaves[$i].chastityPenis)>> - touch $himself - <<elseif canAchieveErection($slaves[$i])>> - jack off - <<else>> - touch $himself - <</if>> - to get relief when $he knows what the consequences are. - <<set $slaves[$i].trust -= 1>> - <</if>> - <</if>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<switch $cellblockDecoration>> - <<case "Degradationist">> - $He expected spare living conditions. In reality, they are far worse. @@.gold;Not one moment goes by that $he isn't filled with terror.@@ - <<set $slaves[$i].trust -= 3>> - <<case "Paternalist">> - $He expected far worse living conditions, and while still resistant, @@.hotpink;finds $himself more willing to obey.@@ - <<set $slaves[$i].devotion += 1>> - <<case "Pastoralist">> - $He expected the spare living conditions, but not the dietary supplements. $He never anticipated @@.gold;you'd go this far@@ to force $him into shape and is constantly reminded of $his changes by just how small $his cell feels with a belly full of milk. - <<set $slaves[$i].trust -= 2>> - <<case "Body Purist">> - $He expected the spare living conditions, but not the excessive hydration. $He never anticipated @@.gold;you'd go this far@@ to force $him into shape and is constantly reminded of $his changes by the fullness of $his bladder. - <<set $slaves[$i].trust -= 2>> - <<case "Hedonistic">> - $He expected the spare living conditions, but not the dietary supplements. $He never anticipated @@.gold;you'd go this far@@ to force $him into shape and is constantly reminded of $his changes by just how small $his cell feels with a belly full of food. - <<set $slaves[$i].trust -= 2>> - <<default>> - $He expected the spare living conditions, but no matter how hard $he tries to shut out $his surroundings, @@.gold;they still wear down $his will.@@ - <<set $slaves[$i].trust -= 1>> - <</switch>> - - <<if $slaves[$i].rules.lactation == "induce">> - $He spends $his sentence with a pair of automatic breast pumps locked to $his chest. If all goes well, $he'll be both reformed and lactating by $his release. - <<set $slaves[$i].induceLactation += 10>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - $He spends $his stay with a pair of automatic breast pumps locked to $his chest. - <<if $slaves[$i].devotion > 20>> - <<if $slaves[$i].fetish == "boobs">> - It's both enjoyable and what you want, so the inconvenience is easily tolerated. - <<else>> - It beats swollen breasts, so $he can't complain. - <</if>> - <<elseif $slaves[$i].devotion >= -20>> - <<if $slaves[$i].fetish == "boobs">> - It's enjoyable, but showing it will only be met with punishment. - <<else>> - It's uncomfortable, but complaints will only be met with punishment. - <</if>> - <<else>> - $His lactation will not be allowed to wane so easily. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the Attendant">> - <<set $slaves[$i].need -= ($flSex.size*3)>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in the back of $spaName and @@.mediumaquamarine;trusts@@ you a bit more for placing the well-being of your slaves in $his <<if !hasAnyArms($slaves[$i])>>figurative <</if>>hand<<if hasBothArms($slaves[$i])>>s<</if>>. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - $He finds plenty of time to relax between $his duties, or during them, should $his company be requested. - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he massages and relieves slaves, analyzing $his tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples. - <<set $slaves[$i].induceLactation += 4>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "rest in the spa">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $flSex.has($slaves[$i].ID)>> - is routinely relieved of any built up tension by _S.Attendant.slaveName and $his - <<if canPenetrate($slaves[$i]) && _S.Attendant.boobs >= 500>> - luscious breasts. - <<run actX(_S.Attendant, "mammary", 14)>> - <<else>> - <<if _S.Attendant.lips > 40>> - luscious lips. - <<elseif _S.Attendant.skill.oral > 30>> - skilled tongue. - <<else>> - willing mouth. - <</if>> - <<run actX(_S.Attendant, "oral", 14)>> - /* possible cumflation code here */ - <</if>> - <<set $slaves[$i].need -= 60>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - <<switch $spaDecoration>> - <<case "Chinese Revivalist">> - The steam of the bathhouse lingers even in $his personal room and @@.hotpink;dulls $his will.@@ - <<set $slaves[$i].devotion += 1>> - <<case "Chattel Religionist">> - $He gets a space of $his own in the communal slave quarters, but the constant sexual presence of the other slaves @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<set $slaves[$i].devotion += 1>> - <<case "Degradationist">> - $He gets a little room all to $himself, allowing $him to feel self-reliant; or it would, if it didn't have numerous cameras watching $his every move. The conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<case "Asset Expansionist" "Transformation Fetishist" "Pastoralist">> - $He gets a little room all to $himself, allowing $him to feel self-reliant; or it would, if it weren't filled with constant reminders of $his changing body. The conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<default>> - $He gets a comfortable little room all to $himself, allowing $him to let down $his guard and @@.mediumaquamarine;feel self-reliant.@@ - <<set $slaves[$i].trust += 1>> - <</switch>> - <<else>> - <<switch $spaDecoration>> - <<case "Chinese Revivalist">> - The steam of the bathhouse lingers even in $his personal room and @@.hotpink;renders $him even more submissive.@@ - <<set $slaves[$i].devotion += 1>> - <<case "Chattel Religionist">> - $He likes $his personal space in $spaName, even if <<if canSmell($slaves[$i])>>it smells of<<else>>it's filled with the heat from<</if>> sex and steam. - <<case "Degradationist">> - <<if ($slaves[$i].trust > 40)>> - The invasive living conditions of $spaName @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The invasive living conditions of $spaName @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<case "Asset Expansionist" "Transformation Fetishist" "Pastoralist">> - $He likes $his little room in $spaName, <<if $slaves[$i].boobs < 10000>>even if $his boobs are too small to make the most of it<<else>>even more so, since it accommodates $his expansive bust<</if>>. - <<default>> - $He loves $his little room in $spaName. It's the perfect end to a day of relaxation. - <<set $slaves[$i].trust += 1>> - <</switch>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he mingles with other soaking slaves, analyzing $his sexual tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $AttendantID != 0>> /* Attendant milks natural lactation in order to relieve physical stress — spaReport */ - <<if $slaves[$i].rules.lactation == "induce">> - <<if canHold($slaves[$i]) && $slaves[$i].devotion >= -20>> - $He massages $his breasts while relaxing in an effort to bring in $his lactation. - <<else>> - $He tries to relax as best $he can with a pair of automatic breast pumps attached to $his chest in an attempt to induce lactation. - <</if>> - <<set $slaves[$i].induceLactation += 4>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if canHold($slaves[$i]) && ($slaves[$i].devotion >= -20 || $slaves[$i].fetish == "boobs")>> - $He massages $his breasts while relaxing to take the edge off and keep the milk flowing. - <<else>> - $He tries to relax as best $he can with a pair of automatic breast pumps stuck to $his chest, keeping $his milk flowing. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the Matron">> - <<set $slaves[$i].need -= ($flSex.size*3)>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if (_release.masturbation === 0)>> - gets off while relieving $his charges, so being forbidden from masturbation doesn't really bother $him. - <<else>> - gets off while relieving $his charges, so $he doesn't feel the need for release that often. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in the back of $nurseryName and @@.mediumaquamarine;trusts@@ you a bit more for placing the responsibility of raising $arcologies[0].name's children in $his <<if !hasAnyArms($slaves[$i])>>figurative <</if>>hand<<if hasBothArms($slaves[$i])>>s<</if>>. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he massages and relieves slaves, analyzing $his tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples. - <<set $slaves[$i].induceLactation += 4>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "work as a nanny">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $flSex.has($slaves[$i].ID)>> - is routinely relieved of any built up tension by _S.Matron.slaveName and $his - <<if canPenetrate($slaves[$i]) && _S.Matron.boobs >= 500>> - luscious breasts. - <<run actX(_S.Matron, "mammary", 14)>> - <<else>> - <<if _S.Matron.lips > 40>> - luscious lips. - <<elseif _S.Matron.skill.oral > 30>> - skilled tongue. - <<else>> - willing mouth. - <</if>> - <<run actX(_S.Matron, "oral", 14)>> - /* possible cumflation code here */ - <</if>> - <<set $slaves[$i].need -= 60>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - <<switch $nurseryDecoration>> - <<case "Chinese Revivalist">> - The Oriental artwork in $his personal room reminds $him of where $he is and @@.hotpink;dulls $his will.@@ - <<set $slaves[$i].devotion += 1>> - <<case "Chattel Religionist">> - $He gets a space of $his own in the communal slave quarters, but the constant sexual presence of the other slaves @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<set $slaves[$i].devotion += 1>> - <<case "Degradationist">> - $He gets a little room all to $himself, allowing $him to feel self-reliant; or it would, if it didn't have numerous cameras watching $his every move. The conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<case "Asset Expansionist" "Transformation Fetishist" "Pastoralist">> - $He gets a little room all to $himself, allowing $him to feel self-reliant; or it would, if it weren't filled with constant reminders of $his changing body. The conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<default>> - $He gets a comfortable little room all to $himself, allowing $him to let down $his guard and @@.mediumaquamarine;feel self-reliant.@@ - <<set $slaves[$i].trust += 1>> - <</switch>> - <<else>> - <<switch $nurseryDecoration>> - <<case "Chinese Revivalist">> - The Oriental artwork in $his personal room reminds $him of $his position and @@.hotpink;renders $him even more submissive.@@ - <<set $slaves[$i].devotion += 1>> - <<case "Chattel Religionist">> - $He likes $his personal space in $nurseryName, even if it constantly reminds $him that $he is naught but a servant to the Prophet. - <<case "Degradationist">> - <<if ($slaves[$i].trust > 40)>> - The invasive living conditions of $nurseryName @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The invasive living conditions of $nurseryName @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<case "Asset Expansionist" "Transformation Fetishist" "Pastoralist">> - $He likes $his little room in $nurseryName, <<if $slaves[$i].boobs < 10000>>even if $his boobs are too small to make the most of it<<else>>even more so, since it accommodates $his expansive bust<</if>>. - <<default>> - $He loves $his little room in $nurseryName. It's the perfect end to a busy day of taking care of children. - <<set $slaves[$i].trust += 1>> - <</switch>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he mingles with other busily working slaves, analyzing $his sexual tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - /* update me, things like wet nursing and the like are important here */ - <<if $slaves[$i].rules.lactation == "induce">> - $He spends $his stay with a pair of automatic breast pumps attached to $his chest. The constant stimulation will have $him milky soon enough. - <<set $slaves[$i].induceLactation += 10>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $slaves[$i].devotion > 20>> - Milk is always needed in a nursery and $his is no exception. $He is thoroughly drained each and every day, be it by breast pump or nursing infant. - <<elseif $slaves[$i].devotion >= -20>> - Milk is always needed in a nursery and $his is no exception. $He is thoroughly drained each and every day. - <<else>> - $He spends $his stay with a pair of automatic breast pumps locked to $his chest. $His is a valuable commodity and needs to be maintained. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the Schoolteacher">> - <<set $slaves[$i].need -= ($flSex.size*10)>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if (_release.masturbation == 0)>> - gets off with $his students, so being forbidden from masturbation doesn't really bother $him. - <<else>> - gets off with $his students, so $he doesn't feel the need for release that often. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in the back of $schoolroomName and @@.mediumaquamarine;trusts@@ you a bit more for placing the future education of your slaves in $his <<if !hasAnyArms($slaves[$i])>>figurative <</if>>hand<<if hasBothArms($slaves[$i])>>s<</if>>. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - It also helps to offset the tiring nature of $his position. - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict $his non-essential activities. - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he teaches students, analyzing $his preferences. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - $His lectures frequently include demonstrations on the proper way to induce lactation. - <<set $slaves[$i].induceLactation += 5>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - $He makes sure to give a special lecture whenever $his breasts start to feel full on the proper methods to milk a $girl. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "learn in the schoolroom">> - <<if $flSex.has($slaves[$i].ID)>> - <<set $slaves[$i].need -= 30>> - <<run seX($slaves[$i], "oral", _S.Schoolteacher, "oral", 7)>> - <<if canPenetrate(_S.Schoolteacher) && $slaves[$i].boobs > 500>> - <<run seX($slaves[$i], "mammary", _S.Schoolteacher, "penetrative", 7)>> - <</if>> - <<if canDoVaginal($slaves[$i])>> - <<if $slaves[$i].vagina != 0>> - <<run seX(_S.Schoolteacher, "penetrative", $slaves[$i], "vaginal", 7)>> - <<if canImpreg($slaves[$i], _S.Schoolteacher) && ($slaves[$i].breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> - <<= knockMeUp($slaves[$i], 5, 0, _S.Schoolteacher.ID, 1)>> - <</if>> - <</if>> - <<set $slaves[$i].need -= 10>> - <</if>> - <<if canDoAnal($slaves[$i])>> - <<if $slaves[$i].anus != 0>> - <<run seX(_S.Schoolteacher, "penetrative", $slaves[$i], "anal", 7)>> - <<if canImpreg($slaves[$i], _S.Schoolteacher) && ($slaves[$i].breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> - <<= knockMeUp($slaves[$i], 5, 1, _S.Schoolteacher.ID, 1)>> - <</if>> - <</if>> - <<set $slaves[$i].need -= 10>> - <</if>> - <<if canPenetrate($slaves[$i])>> - <<if _S.Schoolteacher.vagina != 0>> - <<run seX(_S.Schoolteacher, "vaginal", $slaves[$i], "penetrative", 7)>> - <<elseif _S.Schoolteacher.anus != 0>> - <<run seX(_S.Schoolteacher, "anal", $slaves[$i], "penetrative", 7)>> - <</if>> - <<if canImpreg(_S.Schoolteacher, $slaves[$i]) && (_S.Schoolteacher.breedingMark == 0 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> - <<if _S.Schoolteacher.vagina != 0 && _S.Schoolteacher.ovaries == 1>> - <<= knockMeUp(_S.Schoolteacher, 5, 0, $slaves[$i].ID, 1)>> - <<elseif _S.Schoolteacher.anus != 0 && _S.Schoolteacher.mpreg == 1>> - <<= knockMeUp(_S.Schoolteacher, 5, 1, $slaves[$i].ID, 1)>> - <</if>> - <</if>> - <<set $slaves[$i].need -= 10>> - <</if>> - <</if>> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off, making the rule restricting $his sexual outlets superfluous. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off, making the rule restricting $his sexual outlets superfluous. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off during class despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<elseif App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off during class as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off during class, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off during class, so $he doesn't feel the need to masturbate frequently. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - The reasonable living conditions allow $him to @@.mediumaquamarine;feel self-reliant.@@ - <<set $slaves[$i].trust += 1>> - <<else>> - $He likes $his personal space in the dormitory even if the other students sometimes bother $him. - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he studies, analyzing what topics $he tends to keep returning to. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - $He is taught and tested on how to properly induce lactation. - <<set $slaves[$i].induceLactation += 2>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - $He is taught and tested on how to properly manage lactation. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the Stewardess">> - <<set $slaves[$i].need -= _L.servantsQuarters*10>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if _release.masturbation === 0>> - gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him. - <<set $slaves[$i].need -= 20>> - <<else>> - gets off while performing $his duties, so $he doesn't feel the need for release that often. - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room off of $servantsQuartersName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - It also helps to offset the tiring nature of $his position. - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict $his non-essential activities. - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he manages the servants, analyzing $his preferences. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples. - <<set $slaves[$i].induceLactation += 2>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "work as a servant">> - <<set $slaves[$i].need -= $slaves.length*5>> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<elseif App.Utils.hasNonassignmentSex($slaves[$i])>> - gets off at work as well as during $his rest time. - <<elseif _release.masturbation == 0>> - gets off at work, so being unable to touch $himself doesn't bother $him. - <<else>> - gets off at work, so being unable to sate $his urges doesn't affect $him seriously. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - <<switch $servantsQuartersDecoration>> - <<case "Degradationist">> - The abysmal living conditions @@.hotpink;force $him to get used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of how meaningless $he is.@@ - <<set $slaves[$i].trust -= 3>> - <<else>> - slavery and @@.gold;reminds $him that $his life is meaningless.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<case "Subjugationist" "Supremacist">> - The spare living conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - Every time $he has to watch another slave get beaten @@.gold;solidifies $his fears.@@ - <<set $slaves[$i].trust -= 1>> - <<case "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Edo Revivalist" "Roman Revivalist">> - The spare living conditions @@.hotpink;get $him used@@ to the routine of slavery. - <<case "Arabian Revivalist" "Egyptian Revivalist" "Neo-Imperialist">> - The spare living conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery, but the small luxuries @@.mediumaquamarine;afford $him some dignity.@@ - <<set $slaves[$i].trust += 1>> - <<else>> - slavery. - <</if>> - <<default>> - The reasonable living conditions allow $him to @@.mediumaquamarine;feel some dignity@@ after @@.hotpink;cleaning up sexual fluids and servicing slaves all day.@@ - <<set $slaves[$i].trust += 1>> - <</switch>> - <<set $slaves[$i].devotion += 1>> - <<else>> - <<switch $servantsQuartersDecoration>> - <<case "Degradationist">> - <<if ($slaves[$i].trust > 40)>> - The abysmal living conditions of $servantsQuartersName @@.gold;remind $him that $his life is absolutely meaningless to you.@@ - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].trust > 10)>> - The abysmal living conditions of $servantsQuartersName @@.gold;remind $him that $he is worthless as a person to you.@@ - <<set $slaves[$i].trust -= 2>> - <</if>> - <<case "Subjugationist" "Supremacist">> - <<if ($slaves[$i].trust > 40)>> - The spare living conditions of $servantsQuartersName @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The spare living conditions of $servantsQuartersName @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<case "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Edo Revivalist" "Roman Revivalist">> - The living conditions of $servantsQuartersName might be spare, but they are no means uncomfortable. - <<case "Arabian Revivalist" "Egyptian Revivalist" "Neo-Imperialist">> - The living conditions of $servantsQuartersName might be spare, but $he loves the little luxuries that come with them. - <<default>> - $He likes $his personal space in $servantsQuartersName's dormitory. - <</switch>> - <</if>> - <<if $slaves[$i].rules.living == "luxurious">> - They provide @@.green;satisfying rest@@ every time $he drifts off to sleep. - <<elseif $slaves[$i].rules.living == "spare">> - <<if $slaves[$i].devotion > 20 && $slaves[$i].trust <= 10>> - They don't provide much rest, however. - <<else>> - They provide meager rest, if anything. - <</if>> - <<else>> - They provide - <<if $slaves[$i].devotion > 20>> - @@.green;adequate rest@@ for a $girl that knows how to manage $his time. - <<else>> - @@.green;adequate rest,@@ but not enough for a slave lacking time management. - <</if>> - <</if>> - - <<if $slaves[$i].rules.rest == "mandatory">> - <<if ($slaves[$i].devotion <= 20)>> - Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have. - <<set $slaves[$i].trust += 3>> - <<else>> - $He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= getWrittenTitle($slaves[$i])>>.@@ - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaveUsedRest>> - <<if $slaves[$i].rules.rest == "permissive">> - <<if ($slaves[$i].devotion <= 20)>> - $He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@ - <<set $slaves[$i].trust += 2>> - <<else>> - $He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired. - <<set $slaves[$i].devotion += 1>> - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "restrictive">> - <<if ($slaves[$i].devotion <= -20)>> - $He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional. - <<set $slaves[$i].trust -= 1>> - <<elseif ($slaves[$i].devotion <= 20)>> - $He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive. - <<set $slaves[$i].devotion += 1>> - <<else>> - $He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better. - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "cruel">> - <<if ($slaves[$i].devotion <= -20)>> - $He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him. - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].devotion <= 20)>> - You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning. - <<set $slaves[$i].trust -= 3>> - <<set $slaves[$i].devotion -= 3>> - <<else>> - Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little. - <<set $slaves[$i].devotion -= 2>> - <</if>> - <</if>> - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he sees to your other slaves, analyzing $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - $He carries out $his daily tasks with a pair of automatic breast pumps attached to $his chest to help bring in $his lactation. - <<set $slaves[$i].induceLactation += 6>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain" && $servantMilkers != 1>> - $He utilizes $his lactation during $his daily tasks when needed, and if it should not be needed, spends the evenings with a pair of automatic breast pumps. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be the Milkmaid">> - <<set $slaves[$i].need -= _L.dairy*5>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if (_release.masturbation === 0)>> - gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him. - <<else>> - gets off while performing $his duties, so $he doesn't feel the need for release that often. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in $dairyName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - It also helps to offset the tiring nature of $his position. - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict $his non-essential activities. - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he cares for the cattle, analyzing $his preferences. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment from $his duties, $he spends that time hooked up to a milker to hasten $his milk production. - <<set $slaves[$i].induceLactation += 10>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "work in the dairy">> - <<if $dairyRestraintsSetting > 1>> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off, not that $he gets the choice. - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off, not that $he gets a choice. - <<else>> - gets off regardless of $his thoughts on the matter. - <</if>> - <<set $slaves[$i].need = 0>> - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him arousal in regards to the visual stimulation. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - <<else>> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off from being milked despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].need -= 20>> - <<elseif (_release.masturbation === 0)>> - gets off from being milked, so being forbidden to masturbate doesn't affect $him seriously. - <<set $slaves[$i].need -= 20>> - <<else>> - gets off from being milked, so $he doesn't feel the need to masturbate frequently. - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - <<switch $dairyDecoration>> - <<case "Degradationist">> - The abysmal living conditions @@.hotpink;force $him to get used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware that $his fluids are more valuable than $his life.@@ - <<set $slaves[$i].trust -= 3>> - <<else>> - slavery and @@.gold;reminds $him that $he is nothing more than a cow.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].devotion += 1>> - <<case "Subjugationist" "Supremacist">> - The spare living conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<set $slaves[$i].devotion += 1>> - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Edo Revivalist" "Egyptian Revivalist" "Roman Revivalist" "Neo-Imperialist">> - The spare living conditions and daily tasks @@.hotpink;get $him used@@ to the routine of slavery. - <<set $slaves[$i].devotion += 1>> - <<default>> - The reasonable living conditions allow $him to relax after the days work, or would if $his - <<if $slaves[$i].lactation>> - breasts<<if $slaves[$i].balls>> and<</if>> - <</if>> - <<if $slaves[$i].balls>> - balls - <</if>> - didn't ache so much, constantly reminding $him of $his role as a cow. - <<if $slaves[$i].pregKnown && $dairyPregSetting >= 1 && $slaves[$i].bellyPreg >= 1500>> - Getting comfortable - <<if $slaves[$i].bellyPreg >= 750000>> - <<set _belly = bellyAdjective($slaves[$i])>> - with a strained, _belly stomach ready to burst with contracted calves - <<elseif $slaves[$i].bellyPreg >= 600000>> - <<set _belly = bellyAdjective($slaves[$i])>> - with a constantly quivering _belly stomach filled to the brim with contracted calves - <<elseif $slaves[$i].bellyPreg >= 450000>> - <<set _belly = bellyAdjective($slaves[$i])>> - with a _belly stomach overstuffed with contracted calves - <<elseif $slaves[$i].bellyPreg >= 150000>> - with the massive bulge of $his contract pregnancy - <<elseif $slaves[$i].bellyPreg >= 120000>> - while so enormously pregnant with calves - <<elseif $slaves[$i].bellyPreg >= 10000>> - while so heavily pregnant with <<if $slaves[$i].pregType > 1>>contracted children<<else>>a contracted child<</if>> - <<elseif $slaves[$i].bellyPreg >= 5000>> - with $his contract pregnancy - <<else>> - with the slight bulge of pregnancy - <</if>> - also weighs heavily on $his - <<if $slaves[$i].bellyPreg >= 120000>> - mind, though $he often gets lost in the sensation of being so full of life. - <<else>> - mind. - <</if>> - <</if>> - <</switch>> - <<else>> - <<switch $dairyDecoration>> - <<case "Degradationist">> - <<if ($slaves[$i].trust > 40)>> - The abysmal living conditions of $dairyName @@.gold;remind $him that $his fluids are more valuable to you than $his life.@@ - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].trust > 10)>> - The abysmal living conditions of $dairyName @@.gold;remind $him that $he is worthless as a person to you@@ and forces $him to accept $he is nothing more than a lowly cow. - <<set $slaves[$i].trust -= 2>> - <</if>> - <<case "Subjugationist" "Supremacist">> - <<if ($slaves[$i].trust > 40)>> - The spare living conditions of $dairyName @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The spare living conditions of $dairyName @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Edo Revivalist" "Egyptian Revivalist" "Roman Revivalist">> - The living conditions of $dairyName might be spare, but they are by no means meant to be uncomfortable. - <<set _adequateConditions = 1>> - <<default>> - $He likes $his personal space in $dairyName's dormitory, even if it's just a stall. - <</switch>> - <</if>> - <<if $slaves[$i].rules.living == "luxurious">> - It provides a @@.green;satisfying rest@@ every time $he drifts off to sleep. - <<elseif $slaves[$i].rules.living == "spare">> - <<if $slaves[$i].devotion > 20>> - <<if _adequateConditions>> - They are @@.green;quite relaxing@@ - <<else>> - They suffice - <</if>> - for cows that know their place. - <<else>> - <<if _adequateConditions>> - They could even be considered relaxing if properly appreciated. - <<else>> - They are just barely sufficient, but only if properly made use of. - <</if>> - <</if>> - <<else>> - It provides - <<if $slaves[$i].devotion > 20>> - @@.green;more than enough rest@@ for a happy cow looking to unwind. - <<else>> - @@.green;adequate rest,@@ but only to cows capable of appreciating what they've got. - <</if>> - <</if>> - - <<if $slaves[$i].rules.rest == "mandatory">> - <<if ($slaves[$i].devotion <= 20)>> - Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have. - <<set $slaves[$i].trust += 3>> - <<else>> - $He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= getWrittenTitle($slaves[$i])>>.@@ - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaveUsedRest>> - <<if $slaves[$i].rules.rest == "permissive">> - <<if ($slaves[$i].devotion <= 20)>> - $He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@ - <<set $slaves[$i].trust += 2>> - <<else>> - $He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired. - <<set $slaves[$i].devotion += 1>> - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "restrictive">> - <<if ($slaves[$i].devotion <= -20)>> - $He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional. - <<set $slaves[$i].trust -= 1>> - <<elseif ($slaves[$i].devotion <= 20)>> - $He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive. - <<set $slaves[$i].devotion += 1>> - <<else>> - $He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better. - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "cruel">> - <<if ($slaves[$i].devotion <= -20)>> - $He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him. - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].devotion <= 20)>> - You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning. - <<set $slaves[$i].trust -= 3>> - <<set $slaves[$i].devotion -= 3>> - <<else>> - Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little. - <<set $slaves[$i].devotion -= 2>> - <</if>> - <</if>> - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he gets milked, attempting to gauge $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <</if>> - <<case "be the Farmer">> - <<set $slaves[$i].need -= _L.farmyard*5>> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if (_release.masturbation === 0)>> - gets off while performing $his duties, so being forbidden from masturbation doesn't really bother $him. - <<set $slaves[$i].need -= 20>> - <<else>> - gets off while performing $his duties, so $he doesn't feel the need for release that often. - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - $He is @@.hotpink;very happy@@ with $his private room in $farmyardName and @@.mediumaquamarine;trusts@@ you a bit more for placing $him in charge of it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - - <<if $slaveUsedRest>> - $He is permitted to take short breaks throughout the week to help manage $his building exhaustion, though it does restrict impact $his effectiveness. - <<unset $slaveUsedRest>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he cares for the cattle, analyzing $his preferences. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - Whenever $he finds a free moment from $his duties, $he spends that time massaging $his breasts and working $his nipples. - <<set $slaves[$i].induceLactation += 2>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $servantMilkers == 1>> - $His duties keep $him busy, but $he <<if $slaves[$i].fetish == "boobs">>eagerly <</if>>uses the penthouse milkers whenever $he can, - <<set _milkResult = App.SlaveAssignment.getMilked($slaves[$i], 0.25)>> - giving <<= _milkResult.milk>> liters of milk over the week, which is sold for @@.yellowgreen;<<print cashFormat(_milkResult.milkSale)>>.@@ - <<else>> - Whenever $he finds a free moment from $his duties, $he takes the time to thoroughly milk $his breasts to keep $his lactation strong for you. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "work as a farmhand">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off from working as a farmhand despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].need -= 20>> - <<elseif (_release.masturbation === 0)>> - gets off from working as a farmhand, so being forbidden to masturbate doesn't affect $him seriously. - <<set $slaves[$i].need -= 20>> - <<else>> - gets off from working as a farmhand, so $he doesn't feel the need to masturbate frequently. - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - <<switch $farmyardDecoration>> - <<case "Degradationist">> - The abysmal living conditions @@.hotpink;force $him to get used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware that $his work in the fields is more valuable than $his life.@@ - <<set $slaves[$i].trust -= 3>> - <<else>> - slavery and @@.gold;reminds $him that $he is nothing more than a farming tool.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].devotion += 1>> - <<case "Subjugationist" "Supremacist">> - The spare living conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<set $slaves[$i].devotion += 1>> - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Edo Revivalist" "Egyptian Revivalist" "Neo-Imperialist">> - The spare living conditions and daily tasks @@.hotpink;get $him used@@ to the routine of slavery. - <<set $slaves[$i].devotion += 1>> - <<case "Roman Revivalist">> - $He is @@.hotpink;pleased@@ with $his cushy living arrangements, and @@.mediumaquamarine;trusts you more@@ for it. - <<set $slaves[$i].devotion += 2, $slaves[$i].trust += 2>> - <<default>> - The reasonable living conditions allow $him to relax after the days work. - <<if $slaves[$i].pregKnown && $farmyardPregSetting >= 1 && $slaves[$i].bellyPreg >= 1500>> - Getting comfortable - <<if $slaves[$i].bellyPreg >= 750000>> - <<set _belly = bellyAdjective($slaves[$i])>> - with a strained, _belly stomach ready to burst - <<elseif $slaves[$i].bellyPreg >= 600000>> - <<set _belly = bellyAdjective($slaves[$i])>> - with a constantly quivering _belly stomach filled to the brim - <<elseif $slaves[$i].bellyPreg >= 450000>> - <<set _belly = bellyAdjective($slaves[$i])>> - with a _belly stomach overstuffed - <<elseif $slaves[$i].bellyPreg >= 150000>> - with the massive bulge of $his pregnancy - <<elseif $slaves[$i].bellyPreg >= 120000>> - while so enormously pregnant - <<elseif $slaves[$i].bellyPreg >= 10000>> - while so heavily pregnant with <<if $slaves[$i].pregType > 1>>children<<else>>a child<</if>> - <<elseif $slaves[$i].bellyPreg >= 5000>> - with $his pregnancy - <<else>> - with the slight bulge of pregnancy - <</if>> - also weighs heavily on $his - <<if $slaves[$i].bellyPreg >= 120000>> - mind, though $he often gets lost in the sensation of being so full of life. - <<else>> - mind. - <</if>> - <</if>> - <</switch>> - <<else>> - <<switch $farmyardDecoration>> - <<case "Degradationist">> - <<if ($slaves[$i].trust > 40)>> - The abysmal living conditions of $farmyardName @@.gold;remind $him that $his work in the fields is more valuable to you than $his life.@@ - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].trust > 10)>> - The abysmal living conditions of $farmyardName @@.gold;remind $him that $he is worthless as a person to you@@ and forces $him to accept $he is nothing more than a lowly farmhand. - <<set $slaves[$i].trust -= 2>> - <</if>> - <<case "Subjugationist" "Supremacist">> - <<if ($slaves[$i].trust > 40)>> - The spare living conditions of $farmyardName @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The spare living conditions of $farmyardName @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<case "Arabian Revivalist" "Aztec Revivalist" "Chattel Religionist" "Chinese Revivalist" "Edo Revivalist" "Egyptian Revivalist" "Neo-Imperialist">> - The living conditions of $farmyardName might be spare, but they are by no means meant to be uncomfortable. - <<case "Roman Revivalist">> - $He is @@.hotpink;very happy@@ about $his cushy living arrangements, and @@.mediumaquamarine;trusts you all the more@@ for it. - <<set $slaves[$i].devotion += 2, $slaves[$i].trust += 2>> - <<default>> - $He likes $his personal space in $farmyardName's dormitory, even if it's just a small room. - <</switch>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he works with the crops and animals, attempting to gauge $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - $He carries out $his daily tasks with a pair of automatic breast pumps attached to $his chest to help bring in $his lactation. - <<set $slaves[$i].induceLactation += 6>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - $He carries out $his daily tasks with a pair of automatic breast pumps attached to $his chest to keep $him productive and drained. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "be your Concubine">> - <<if $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off allowing $him to focus on getting you off. - <<set $slaves[$i].need = 0>> - <<else>> - gets more of your attention each day than any other slave, leaving $him thoroughly satisfied. - <<set $slaves[$i].need = 0>> - <</if>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he amuses $himself, analyzing $his tastes. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - $He spends $his time away from you fervently working to induce lactation, eager to enjoy it with you. - <<set $slaves[$i].induceLactation += 9>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - $He doesn't need to do anything to maintain $his lactation as you personally see to it each night. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "serve in the master suite">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off. - <<set $slaves[$i].need = 0>> - <<elseif $masterSuiteUpgradeLuxury == 2 && _L.masterSuite > 3>> - never goes unsatisfied with all the action in the fuckpit. - <<set $slaves[$i].need -= 80>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off regularly despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].need -= 20>> - <<elseif (_release.masturbation === 0)>> - gets off regularly, so being forbidden to masturbate doesn't affect $him seriously. - <<set $slaves[$i].need -= 20>> - <<else>> - gets off regularly, so $he doesn't feel the need to seek relief. - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - <<if ($slaves[$i].devotion <= 20)>> - sometimes needs a little extra attention from you, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing to your touch, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].need -= 40>> - <<else>> - sometimes needs a little extra sexual attention, not that you mind giving it to $him. - <<set $slaves[$i].need -= 40>> - <</if>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he gets off, analyzing $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - When you have the free time, you message $his breasts and work $his nipples in an effort to bring in $his lactation. - <<set $slaves[$i].induceLactation += 2>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if $slaves[$i].devotion > 20>> - <<if $slaves[$i].fetish == "boobs">> - $He puts $his breasts to work when you humor $his tastes, easily keeping $his lactation from diminishing. - <<else>> - You find ways to put $his milk to good use, and when you can't, see to it yourself that $he is kept drained and comfortable. - <</if>> - <<elseif $slaves[$i].devotion >= -20>> - <<if $slaves[$i].fetish == "boobs">> - $He responds positively to breast play in bed, assuring $his milk production isn't going anywhere. - <<else>> - You focus on $his breasts during foreplay to make sure $he keeps producing milk for you. - <</if>> - <<else>> - You make sure to see to it that $he keeps on lactating. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<case "live with your Head Girl">> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off, not that _S.HeadGirl.slaveName cares. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off, though it doesn't stop _S.HeadGirl.slaveName. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off with _S.HeadGirl.slaveName despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<set $slaves[$i].need -= 20>> - <<elseif (_release.masturbation === 0)>> - gets off with _S.HeadGirl.slaveName, so being forbidden to masturbate doesn't affect $him seriously. - <<set $slaves[$i].need -= 20>> - <<else>> - gets off with _S.HeadGirl.slaveName, so $he doesn't feel the need for release that often. - <<set $slaves[$i].need -= 20>> - <</if>> - <<else>> - either gets off with _S.HeadGirl.slaveName or gets to put up with sexual frustration. - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if ($slaves[$i].devotion <= 20)>> - $He shares a room, and sometimes bed, with _S.HeadGirl.slaveName. Your Head Girl keeps it from going to $his head, however. - <<else>> - $He loves sharing a room, and sometimes bed, with _S.HeadGirl.slaveName. - <</if>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he spends time with your Head Girl, analyzing $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - <<if _S.HeadGirl.fetish == "boobs">> - Your Head Girl enjoys playing with $his tits, making it an inevitability that $he'll begin lactating. - <<else>> - $He carries out $his daily tasks with a pair of automatic breast pumps attached to $his chest to help bring in $his lactation. - <</if>> - <<set $slaves[$i].induceLactation += 4>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain">> - <<if _S.HeadGirl.fetish == "boobs">> - Your Head Girl enjoys playing with $his tits, thoroughly draining $him of milk and encouraging $his continued lactation. - <<else>> - $He utilizes $his lactation as your Head Girl demands, and if it should not be needed, spends the evenings with a pair of automatic breast pumps. - <</if>> - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<default>> - <<if $slaves[$i].devotion < -50>> - is so unhappy that $he has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].energy <= 20>> - is frigid and has little interest in getting off<<if App.Utils.releaseRestricted($slaves[$i])>>, making the rule restricting $his sexual outlets superfluous<</if>>. - <<set $slaves[$i].need = 0>> - <<elseif $slaves[$i].need < $slaves[$i].needCap*0.5>> - <<if ($slaves[$i].devotion <= 20)>> - gets off at work despite $his reluctance, @@.hotpink;habituating $him to sexual slavery.@@ - <<set $slaves[$i].devotion += 1>> - <<if ($slaves[$i].trust >= -20) && ($slaves[$i].devotion <= 20)>> - $He hates $himself for climaxing, and knows the mild aphrodisiacs in the food are forcing $his arousal, @@.gold;frightening $him.@@ - <<set $slaves[$i].trust -= 1>> - <</if>> - <<elseif (_release.masturbation === 0)>> - gets off at work, so being forbidden to masturbate doesn't affect $him seriously. - <<else>> - gets off at work, so $he doesn't feel the need to masturbate frequently. - <</if>> - <<set $slaves[$i].need -= 20>> - <<else>> - <<includeDOM App.SlaveAssignment.nonAssignmentRelease($slaves[$i])>> - <</if>> - - <<= App.EndWeek.Rules.speechRules($slaves[$i])>> - - <<if $slaves[$i].assignment != "be your Head Girl" && $slaves[$i].assignment != "guard you">> - <<if $roomsPopulation > $rooms>> - <<if $slaves[$i].rules.living == "luxurious">> - There are @@.yellow;too many slaves for the penthouse's individual rooms,@@ so $he moves out into the dormitory. - <<set $slaves[$i].rules.living = "normal">> - <<run penthouseCensus()>> - <</if>> - <</if>> - <</if>> - - <<if ($slaves[$i].devotion <= 20)>> - <<if ($slaves[$i].rules.living == "spare")>> - The spare living conditions @@.hotpink;get $him used@@ to the routine of - <<if ($slaves[$i].trust > 20)>> - slavery and @@.gold;keep $him aware of $his lowly place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - slavery. - <</if>> - <<set $slaves[$i].devotion += 1>> - <<elseif ($slaves[$i].rules.living == "normal")>> - The reasonable living conditions allow $him to @@.mediumaquamarine;feel self-reliant.@@ - <<set $slaves[$i].trust += 1>> - <<else>> - The luxurious living conditions encourage $him to @@.mediumaquamarine;feel respectable.@@ - <<set $slaves[$i].trust += 2>> - <</if>> - <<else>> - <<if ($slaves[$i].ID == $HeadGirlID) && ($HGSuite == 1)>> - $He is @@.hotpink;very happy@@ with $his suite and @@.mediumaquamarine;trusts@@ you a bit more for providing it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - <<elseif ($slaves[$i].ID == $BodyguardID) && ($dojo <= 1)>> - $He rarely leaves your company enough to make use of $his living area. - <<elseif ($slaves[$i].rules.living == "luxurious")>> - $He is @@.hotpink;very happy@@ with $his little room and @@.mediumaquamarine;trusts@@ you a bit more for providing it. - <<set $slaves[$i].devotion += 1, $slaves[$i].trust += 1>> - <<elseif ($slaves[$i].rules.living == "normal")>> - $He likes $his personal space in the dormitory. - <<elseif ($slaves[$i].trust > 40)>> - The spare living conditions @@.gold;remind $him not to get too comfortable@@ with $his life. - <<set $slaves[$i].trust -= 2>> - <<elseif ($slaves[$i].trust > 10)>> - The spare living conditions @@.gold;keep $him aware of $his place.@@ - <<set $slaves[$i].trust -= 1>> - <<else>> - $He's used to having only the bare minimum in terms of living conditions, so $he's not bothered by them. - <</if>> - <</if>> - <<if ["be a servant", "get milked", "please you", "serve the public", "whore", "work as a farmhand", "work a glory hole"].includes($slaves[$i].assignment)>> - <<if $slaves[$i].rules.living == "luxurious">> - <<if ($slaves[$i].devotion <= 20)>>They provide<<else>>It provides a<</if>> @@.green;satisfying rest@@ every time $he drifts off to sleep. - <<elseif $slaves[$i].rules.living == "spare">> - <<if $slaves[$i].devotion > 20 && $slaves[$i].trust <= 10>> - They don't provide much rest, however. - <<else>> - They provide meager rest, if anything, however. - <</if>> - <<else>> - <<if ($slaves[$i].devotion <= 20)>>They provide<<else>>It provides<</if>> - <<if $slaves[$i].devotion > 20>> - @@.green;adequate rest@@ for a $girl that knows how to manage $his time. - <<else>> - @@.green;adequate rest,@@ but not enough for a slave lacking time management. - <</if>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.living != "luxurious">> - <<if $dormitoryPopulation > $dormitory>> - <<set _dormPop = $dormitoryPopulation - $dormitory>> - The slave dormitory is - <<if _dormPop <= 5>> - @@.yellow;somewhat overcrowded.@@ The mild inconvenience - <<if $slaves[$i].trust > 20>> - @@.gold;reduces $his trust@@ in you a little. - <<set $slaves[$i].trust -= 2>> - <<else>> - @@.mediumorchid;lowers you@@ a little in $his opinion. - <<set $slaves[$i].devotion -= 2>> - <</if>> - <<elseif _dormPop <= 10>> - @@.yellow;badly overcrowded.@@ The constant difficulties - <<if $slaves[$i].trust > 20>> - @@.gold;reduces $his trust@@ in you - <<set $slaves[$i].trust -= 3>> - <<else>> - @@.mediumorchid;lowers you@@ in $his opinion - <<set $slaves[$i].devotion -= 3>> - <</if>> - and is @@.red;not good for $him,@@ since it's difficult to rest there. - <<run healthDamage($slaves[$i], 2)>> - <<else>> - @@.yellow;extremely overcrowded.@@ The unpleasant situation - <<if $slaves[$i].trust > 20>> - seriously @@.gold;reduces $his trust@@ in you - <<set $slaves[$i].trust -= 5>> - <<else>> - seriously @@.mediumorchid;lowers you@@ in $his opinion - <<set $slaves[$i].devotion -= 5>> - <</if>> - and is @@.red;bad for $his health.@@ - <<run healthDamage($slaves[$i], 4)>> - <</if>> - <</if>> - <</if>> - - <<if ["be a servant", "get milked", "please you", "serve the public", "whore", "work a glory hole"].includes($slaves[$i].assignment)>> - <<if $slaves[$i].rules.rest == "mandatory">> - <<if ($slaves[$i].devotion <= 20)>> - Getting a day off each week @@.mediumaquamarine;builds feelings of liberty@@ a slave shouldn't have. - <<set $slaves[$i].trust += 3>> - <<else>> - $He appreciates having a weekly day off and takes it as a sign that $he has a @@.mediumaquamarine;caring <<= getWrittenTitle($slaves[$i])>>.@@ - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaveUsedRest>> - <<if $slaves[$i].rules.rest == "permissive">> - <<if ($slaves[$i].devotion <= 20)>> - $He's permitted to rest whenever $he feels even the slightest bit tired; @@.mediumaquamarine;a privilege not lost on $him.@@ - <<set $slaves[$i].trust += 2>> - <<else>> - $He @@.hotpink;likes@@ that you @@.mediumaquamarine;care enough@@ to let him rest when he gets tired. - <<set $slaves[$i].devotion += 1>> - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "restrictive">> - <<if ($slaves[$i].devotion <= -20)>> - $He's permitted to rest when fatigue sets in, but not enough to shake $his tiredness; $he feels this @@.gold;deprivation@@ is intentional. - <<set $slaves[$i].trust -= 1>> - <<elseif ($slaves[$i].devotion <= 20)>> - $He's permitted to rest when fatigue sets in, and @@.hotpink;understands@@ this is less for $his wellbeing and more to prevent $him from become unproductive. - <<set $slaves[$i].devotion += 1>> - <<else>> - $He's permitted to rest when fatigue sets in and is @@.mediumaquamarine;thankful@@ you would allow $him the privilege so that $he may serve you better. - <<set $slaves[$i].trust += 1>> - <</if>> - <<elseif $slaves[$i].rules.rest == "cruel">> - <<if ($slaves[$i].devotion <= -20)>> - $He's @@.gold;terrified@@ that the only reason $he is given any time to rest at all is just to prolong your torment of $him. - <<set $slaves[$i].trust -= 3>> - <<elseif ($slaves[$i].devotion <= 20)>> - You work $him to the bone and only allow $him rest when on the verge of collapsing. $He @@.gold;fears@@ this @@.mediumorchid;cruelty@@ is just the beginning. - <<set $slaves[$i].trust -= 3>> - <<set $slaves[$i].devotion -= 3>> - <<else>> - Only being allowed rest when on the verge of collapsing @@.mediumorchid;shakes $his faith@@ in you a little. - <<set $slaves[$i].devotion -= 2>> - <</if>> - <</if>> - <<unset $slaveUsedRest>> - <</if>> - <</if>> - - <<= App.EndWeek.Rules.consentRules($slaves[$i])>> - - <<if ($slaves[$i].attrKnown == 0)>> - <<if ($week-$slaves[$i].weekAcquired > 4) && $slaves[$i].energy > 20>> - <<set $slaves[$i].attrKnown = 1>> - <<= capFirstChar($assistant.name)>> has been monitoring $him as $he gets off, analyzing $his sexuality. It seems $he is - <<includeDOM App.EndWeek.Rules.attractionDiscovery($slaves[$i])>> - <</if>> - <</if>> - - <<if $slaves[$i].rules.lactation == "induce">> - <<if (canHold($slaves[$i]))>> - $He is required to vigorously massage $his breasts and nipples in an effort to induce lactation. - <<else>> - $He spends $his nights with a pair of automatic breast pumps attached to $his chest in order bring in $his lactation. - <</if>> - <<set $slaves[$i].induceLactation += 4>> - <<= induceLactation($slaves[$i])>> - <<if $slaves[$i].lactation == 1>><<set $slaves[$i].rules.lactation = "maintain">><</if>> - <<elseif $slaves[$i].rules.lactation == "maintain" && ($servantMilkers != 1 || !setup.servantMilkersJobs.includes($slaves[$i].assignment))>> - $He utilizes $his lactation during $his daily tasks as needed, and when $he isn't drained well enough, spends the evenings with a pair of automatic breast pumps. - <<set $slaves[$i].lactationDuration = 2, $slaves[$i].boobs -= $slaves[$i].boobsMilk, $slaves[$i].boobsMilk = 0>> - <</if>> - - <<= App.SlaveAssignment.rewardAndPunishment($slaves[$i])>> - <<if $subSlaves > 0 && _release.slaves == 1 && $slaves[$i].assignment != "serve your other slaves">> - <<set $slaves[$i].need -= (20*$subSlaves)>> /* make those serve your other slaves do some work for once */ - <</if>> - <</switch>> - <</if>> /* closes mindbreak exemption */ - -<</if>> /* closes Fuckdoll exemption */ diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw index f69d0b9b270e61f92db4435af8cbb620c6fbd35b..2215d712e8f84beb117a5155e9c48bebc0f01608 100644 --- a/src/uncategorized/seExpiration.tw +++ b/src/uncategorized/seExpiration.tw @@ -206,5 +206,5 @@ <<print getSlave($expiree).assignment>>. <</if>> </div> - <<includeDOM slaveImpactLongTerm(V.activeSlave)>> + <<includeDOM slaveImpactLongTerm(getSlave($expiree))>> </div> \ No newline at end of file diff --git a/src/uncategorized/seRetirement.tw b/src/uncategorized/seRetirement.tw index 96f68f037187a071883f4656bc63b2d1760ad67f..d325986e62ec881627bad8d4125c287663d0fd35 100644 --- a/src/uncategorized/seRetirement.tw +++ b/src/uncategorized/seRetirement.tw @@ -60,7 +60,7 @@ <<else>> $He is glad $he no longer has to be your slave $wife, as $he never wanted to be in the first place. $He understands that marriages between slaves and slaveowners are predicated on the slave relationship. $He knows that $his retirement has come, meaning that $his slave relationship to you is ending. $He's had a long time to get used to the idea, and gets through the process dutifully, doing $his best to avoid embarrassing you. <</if>> - <<elseif $activeSlave.fetish == "mindbroken">> + <<elseif $activeSlave.fetish == "mindbroken" || $activeSlave.actualAge < 3>> Sadly, $he is not mentally equipped to look after $himself, but the arcology hosts several fine institutions capable of caring for $him. They'll have someone check in on $him daily. <<elseif $activeSlave.devotion > 95>> $He desperately wishes $he could continue to be your sex slave, but $he understands that $his retirement has come. More importantly, $he's had a long time to get used to the idea, and gets through the process with resolution, doing $his best to avoid embarrassing $himself or you. diff --git a/src/uncategorized/spaReport.tw b/src/uncategorized/spaReport.tw index 19d64cce398f7e4b015c77a060a1277f1ab8c5b5..0ea1ed2eaaefe49c2f8cfe4fc76b5d65296e5c6d 100644 --- a/src/uncategorized/spaReport.tw +++ b/src/uncategorized/spaReport.tw @@ -233,7 +233,7 @@ <br> <<= App.SlaveAssignment.choosesOwnClothes(_S.Attendant)>> <<run tired(_S.Attendant)>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_S.Attendant)>> <<= App.SlaveAssignment.diet(_S.Attendant)>> <<includeDOM App.SlaveAssignment.longTermEffects(_S.Attendant)>> <<= App.SlaveAssignment.drugs(_S.Attendant)>> @@ -241,17 +241,15 @@ <<= App.SlaveAssignment.rivalries(_S.Attendant)>> <br> <<= App.SlaveAssignment.devotion(_S.Attendant)>> <<else>> - <<silently>> <<run App.SlaveAssignment.choosesOwnClothes(_S.Attendant)>> <<run tired(_S.Attendant)>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules()>> <<run App.SlaveAssignment.diet(_S.Attendant)>> <<run App.SlaveAssignment.longTermEffects(_S.Attendant)>> <<run App.SlaveAssignment.drugs(_S.Attendant)>> <<run App.SlaveAssignment.relationships(_S.Attendant)>> <<run App.SlaveAssignment.rivalries(_S.Attendant)>> <<run App.SlaveAssignment.devotion(_S.Attendant)>> - <</silently>> <</if>> <</if>> @@ -342,7 +340,7 @@ <</if>> <br> <<= App.SlaveAssignment.choosesOwnClothes(_slave)>> - <<include "SA rules">> + <<includeDOM App.SlaveAssignment.rules(_slave)>> <<= App.SlaveAssignment.diet(_slave)>> <<includeDOM App.SlaveAssignment.longTermEffects(_slave)>> <<= App.SlaveAssignment.drugs(_slave)>> @@ -350,18 +348,16 @@ <<= App.SlaveAssignment.rivalries(_slave)>> <br> <<= App.SlaveAssignment.devotion(_slave)>> <<else>> - <<silently>> <<run App.SlaveAssignment.choosesOwnJob(_slave)>> <<run App.SlaveAssignment.choosesOwnClothes(_slave)>> <<run App.SlaveAssignment.rest(_slave)>> - <<include "SA rules">> + <<run App.SlaveAssignment.rules(_slave)>> <<run App.SlaveAssignment.diet(_slave)>> <<run App.SlaveAssignment.longTermEffects(_slave)>> <<run App.SlaveAssignment.drugs(_slave)>> <<run App.SlaveAssignment.relationships(_slave)>> <<run App.SlaveAssignment.rivalries(_slave)>> <<run App.SlaveAssignment.devotion(_slave)>> - <</silently>> <</if>> <</for>> <<if (_restedSlaves > 0)>> diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw index 15ed4e9180c0eb2f03289fab97e25bde68c60db6..ce4713c9bacbc6e244683358f8df44eef89e0212 100644 --- a/src/uncategorized/surgeryDegradation.tw +++ b/src/uncategorized/surgeryDegradation.tw @@ -881,15 +881,56 @@ As the remote surgery's long recovery cycle completes, <<if getSlave($AS).fetish == "mindbroken">> $He notices almost immediately that $his breasts feel fuller, gasping as milk begins to leak from $his nipples. As with all surgery @@.red;$his health has been slightly affected.@@ <<elseif (getSlave($AS).devotion > 50)>> - <<if hasAnyArms(getSlave($AS))>>$He hefts $his swollen breasts experimentally and turns to you with a smile to show them off. As $he does, a drop of milk drips from a nipple and $he gasps in surprise. $He's shocked, but after <<if canTaste(getSlave($AS))>>tasting<<else>>licking up<</if>> $his own milk experimentally $he <<if canSee(getSlave($AS))>>looks<<else>>smiles<</if>> at you shyly and gently teases some more milk out of $himself. The resulting stream of cream is bountiful and $he giggles happily.<<else>>As you carry $him out of the surgery, droplets of milk begin to bud from $his nipples, and $he giggles giddily.<</if>> @@.hotpink;$He's happy with your changes to $his boobs.@@ As with all surgery @@.red;$his health has been slightly affected.@@ + <<if hasAnyArms(getSlave($AS))>> + $He hefts $his swollen breasts experimentally and turns to you with a smile to show them off. + <<if getSlave($AS).lactation == 1>> + $His milk begins to flow as $he does, but instead of a slight dribble, it keeps coming. + <<else>> + As $he does, a drop of milk drips from a nipple and $he gasps in surprise. + <</if>> + $He's shocked, but after <<if canTaste(getSlave($AS))>>tasting<<else>>licking up<</if>> $his own milk experimentally $he <<if canSee(getSlave($AS))>>looks<<else>>smiles<</if>> at you shyly and gently teases some more milk out of $himself. The resulting stream of cream is bountiful and $he giggles happily. + <<else>> + As you carry $him out of the surgery, droplets of milk begin to bud from $his nipples, and $he giggles giddily. + <</if>> + @@.hotpink;$He's happy with your changes to $his boobs.@@ As with all surgery @@.red;$his health has been slightly affected.@@ <<set getSlave($AS).devotion += 4>> <<elseif (getSlave($AS).devotion >= -20)>> - <<if hasAnyArms(getSlave($AS))>><<if canSee(getSlave($AS))>>$He eyes $his swollen breasts skeptically<<else>>$He is skeptical of the how swollen $his breasts feel<</if>>. $He's still sore, so $he doesn't touch them. Even so, a drop of milk drips from a nipple and $he gasps in surprise. $He's shocked, but after a few experimental pokes and rubs at $himself $he seems to understand that $he's a lactation slave now, and that's how it is.<<else>>As you carry $him out of the surgery, droplets of milk begin to bud from $his nipples. $He's shocked, but $he seems to understand that $he's a lactation slave now, and that's how it is.<</if>> $He isn't much affected mentally. As with all surgery @@.red;$his health has been slightly affected.@@ $He is @@.gold;sensibly fearful@@ of your total power over $his body. + <<if hasAnyArms(getSlave($AS))>> + <<if canSee(getSlave($AS))>> + $He eyes $his swollen breasts skeptically. + <<else>> + $He is skeptical of the how swollen $his breasts feel. + <</if>> + $He's still sore, so $he doesn't touch them. Even so, a drop of milk drips from a nipple and $he gasps in surprise. + <<if getSlave($AS).lactation == 1>> + While $he was already lactating, it never just flowed freely like this. After + <<else>> + $He's shocked, but after + <</if>> + a few experimental pokes and rubs at $himself $he seems to understand that $he's a lactation slave now, and that's how it is. + <<else>> + As you carry $him out of the surgery, droplets of milk begin to bud from $his + <<if getSlave($AS).lactation == 1>> + nipples; $he was already lactating, but it never just flowed freely like this. + <<else>> + nipples. + <</if>> + $He's shocked, but $he seems to understand that $he's a lactation slave now, and that's how it is. + <</if>> + $He isn't much affected mentally. As with all surgery @@.red;$his health has been slightly affected.@@ $He is @@.gold;sensibly fearful@@ of your total power over $his body. <<set getSlave($AS).trust -= 5>> <<else>> - <<if canSee(getSlave($AS))>>$He eyes $his swollen breasts<<else>>As $he feels the fullness in $his breasts, $his face fills<</if>> with resentment. $He still thinks of $himself as a person, so $he isn't used to the idea of being surgically altered to suit your every whim. When $he finally figures out $he's lactating, $he breaks down in rage and unhappiness, dripping milk and bitter tears. For now, @@.mediumorchid;$he seems to view being a lactation slave as a cruel hardship.@@ As with all surgery @@.red;$his health has been slightly affected.@@ $He is now @@.gold;terribly afraid@@ of your total power over $his body. + <<if canSee(getSlave($AS))>>$He eyes $his swollen breasts<<else>>As $he feels the fullness in $his breasts, $his face fills<</if>> with resentment. $He still thinks of $himself as a person, so $he isn't used to the idea of being surgically altered to suit your every whim. + <<if getSlave($AS).lactation == 1>> + As milk begins to bead at $his nipples, $he breaks down in rage and unhappiness, dripping bitter tears as the flow steadily increases past what $he was used to. + <<else>> + When $he finally figures out $he's lactating, $he breaks down in rage and unhappiness, dripping milk and bitter tears. + <</if>> + For now, @@.mediumorchid;$he seems to view being a lactation slave as a cruel hardship.@@ As with all surgery @@.red;$his health has been slightly affected.@@ $He is now @@.gold;terribly afraid@@ of your total power over $his body. <<set getSlave($AS).trust -= 10, getSlave($AS).devotion -= 5>> <</if>> + /* Done here to allow for natural lactation into artificial lactation text */ + <<set getSlave($AS).lactation = 2>> <<case "endlac">> $He notices almost immediately that the soreness that used to tell $him $he needed to be milked has gone. $He bounces $his breasts idly; it looks like $he doesn't know what to think about having $his lactation dry up. As with all surgery @@.red;$his health has been slightly affected.@@