From a912a36e29524f4f1e2c7cfc2baea9b4ba2cbe47 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Thu, 1 Sep 2022 09:39:39 -0400 Subject: [PATCH] SlimnessFS Policy Addition --- devTools/types/FC/arcology.d.ts | 2 +- js/003-data/policiesData.js | 21 +++++++++++++++++++++ src/endWeek/player/prDiet.js | 4 ++-- src/endWeek/player/prPregnancy.js | 2 ++ src/endWeek/saDiet.js | 4 ++-- src/endWeek/saHormonesEffects.js | 6 ++++-- src/endWeek/saPregnancy.js | 2 ++ src/js/economyJS.js | 6 ++++-- 8 files changed, 38 insertions(+), 9 deletions(-) diff --git a/devTools/types/FC/arcology.d.ts b/devTools/types/FC/arcology.d.ts index 1ce42f9e1bc..f116eae9487 100644 --- a/devTools/types/FC/arcology.d.ts +++ b/devTools/types/FC/arcology.d.ts @@ -50,7 +50,7 @@ declare namespace FC { }; FSSlimnessEnthusiast: { noun: "Slimness Enthusiasm", adj: "Slimness Enthusiast", deco: "Slimness Enthusiast", - research: true, SMR: true, policy: "Law", choice: undefined + research: true, SMR: true, policy: "Law" | "FoodLaw", choice: undefined }; FSAssetExpansionist: { noun: "Asset Expansionism", adj: "Asset Expansionist", deco: "Asset Expansionist", diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js index e5ad057b92a..cb4d218c4ad 100644 --- a/js/003-data/policiesData.js +++ b/js/003-data/policiesData.js @@ -1237,6 +1237,7 @@ App.Data.Policies.Selection = { V.seeDicks !== 0 && V.arcologies[0].FSGenderRadicalist > 60 && V.arcologies[0].FSSlimnessEnthusiastLaw === 0 && + V.arcologies[0].FSSlimnessFoodLaw === 0 && V.arcologies[0].FSGenderRadicalistLawFuta === 0 ); }, @@ -1583,6 +1584,25 @@ App.Data.Policies.Selection = { } ], }, + "arcologies[0].FSSlimnessFoodLaw": [ + { + title: "Asset Slimming Food", + titleClass: "lime", + text: "slave food production will be required to follow a recipe that keeps chattel nice and trim, reducing the growth of disgusting flesh on their T&A.", + activatedText: "you have standardized a slave food recipe to keep your chattel nice and trim, reducing the amount of oversized T&A in the arcology.", + get requirements() { + return ( + V.arcologies[0].FSGenderRadicalistLawBeauty === 0 && + V.arcologies[0].FSGenderFundamentalistLawBeauty === 0 && + V.arcologies[0].FSGenderRadicalistLawFuta !== 3 && + V.arcologies[0].FSHedonisticDecadenceLaw2 === 0 && + V.arcologies[0].FSPhysicalIdealistLaw === 0 && + V.arcologies[0].FSSlimnessEnthusiast > 20 + ); + }, + note: `Slaves will struggle to grow beyond the ideal amount of T&A. ` + } + ], FSAssetExpansionist: { "arcologies[0].FSAssetExpansionistSMR": [ { @@ -1693,6 +1713,7 @@ App.Data.Policies.Selection = { get requirements() { return ( V.arcologies[0].FSSlimnessEnthusiastLaw === 0 && + V.arcologies[0].FSSlimnessFoodLaw === 0 && V.arcologies[0].FSGenderRadicalistLawBeauty === 0 && V.arcologies[0].FSGenderFundamentalistLawBeauty === 0 && V.arcologies[0].FSPhysicalIdealistLaw === 0 && diff --git a/src/endWeek/player/prDiet.js b/src/endWeek/player/prDiet.js index dc428a71812..1cb3472e50f 100644 --- a/src/endWeek/player/prDiet.js +++ b/src/endWeek/player/prDiet.js @@ -827,7 +827,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) { roll = 75; target = Math.trunc(Math.clamp(weightMod * 2 - (boobSize - growthGoal) / 20, 0, 68)); } - if (PC.geneMods.NCS === 1) { + if (PC.geneMods.NCS === 1 || (V.arcologies[0].FSSlimnessFoodLaw === 1 && !canEatFood(PC))) { roll *= 2; } // PC food is not laced with hormones normally, so galactorrhea is not triggered here. @@ -844,7 +844,7 @@ App.EndWeek.Player.diet = function(PC = V.PC) { roll = 80000; target = Math.trunc(Math.clamp(weightMod * 1000 - (buttSize * 1000 - growthGoal) * 4, 0, 72000)); } - if (PC.geneMods.NCS === 1) { + if (PC.geneMods.NCS === 1 || (V.arcologies[0].FSSlimnessFoodLaw === 1 && !canEatFood(PC))) { roll *= 2; } if (random(1, roll) <= target) { diff --git a/src/endWeek/player/prPregnancy.js b/src/endWeek/player/prPregnancy.js index 40e78c80fe0..a3197867d82 100644 --- a/src/endWeek/player/prPregnancy.js +++ b/src/endWeek/player/prPregnancy.js @@ -269,6 +269,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { function pregnancyPhysicalEffects() { let boobTarget; + const slimnessFoodMod = (V.arcologies[0].FSSlimnessFoodLaw === 1 && !canEatFood(PC)) ? 0.5 : 1; if (PC.geneMods.NCS === 1) { // NCS: always working against secondary sexual characteristics even in pregnancies. boobTarget = 0; @@ -322,6 +323,7 @@ App.EndWeek.Player.pregnancy = function(PC = V.PC) { } } boobTarget *= gigantomastiaMod; + boobTarget *= slimnessFoodMod; if (PC.geneMods.NCS === 0) { if (PC.pregType >= 30) { if (PC.weight <= 65) { diff --git a/src/endWeek/saDiet.js b/src/endWeek/saDiet.js index 933a49ebb64..e3032f2ab03 100644 --- a/src/endWeek/saDiet.js +++ b/src/endWeek/saDiet.js @@ -1443,7 +1443,7 @@ App.SlaveAssignment.diet = function saDiet(slave) { roll = 75; target = Math.trunc(Math.clamp(weightGain * 2 - (boobSize - growthGoal) / 20, 0, 68)); } - if (slave.geneMods.NCS === 1) { + if (slave.geneMods.NCS === 1 || V.arcologies[0].FSSlimnessFoodLaw === 1) { roll *= 2; } if (random(1, roll) <= target) { @@ -1464,7 +1464,7 @@ App.SlaveAssignment.diet = function saDiet(slave) { roll = 80000; target = Math.trunc(Math.clamp(weightGain * 1000 - (buttSize * 1000 - growthGoal) * 4, 0, 72000)); } - if (slave.geneMods.NCS === 1) { + if (slave.geneMods.NCS === 1 || V.arcologies[0].FSSlimnessFoodLaw === 1) { roll *= 2; } if (random(1, roll) <= target) { diff --git a/src/endWeek/saHormonesEffects.js b/src/endWeek/saHormonesEffects.js index 053971b0012..d573416597f 100644 --- a/src/endWeek/saHormonesEffects.js +++ b/src/endWeek/saHormonesEffects.js @@ -318,9 +318,11 @@ App.SlaveAssignment.hormonesEffects = function saHormonesEffects(slave) { let normBreasts = 0; let normButt = 0; if (slave.hormoneBalance > 30 && slave.geneMods.NCS !== 1) { + const slimModBreasts = (V.arcologies[0].FSSlimnessFoodLaw === 1) ? 0.45 : 1; // 600 average breast target, 270 target, 475 @ 350 hormone + const slimModButts = (V.arcologies[0].FSSlimnessFoodLaw === 1) ? 0.6 : 1; // 2.5 average butt, 1.5 target /* 'Expected' breast size based on weight for feminine-bodied slaves */ - normBreasts = Math.trunc((100 + (slave.weight + 100) * 5 + 2 * slave.lactationAdaptation) * (0.85 + slave.hormoneBalance / 400) * gigantomastiaMod); - normButt = ((slave.weight + 100) * 0.025 * (0.9 + slave.hormoneBalance / 600) * (rearLipedemaMod / 2 + 1)); + normBreasts = Math.trunc((100 + (slave.weight + 100) * 5 + 2 * slave.lactationAdaptation) * (0.85 + slave.hormoneBalance / 400) * gigantomastiaMod * slimModBreasts); + normButt = ((slave.weight + 100) * 0.025 * (0.9 + slave.hormoneBalance / 600) * (rearLipedemaMod / 2 + 1) * slimModButts); } if (slave.hormoneBalance >= 350) { diff --git a/src/endWeek/saPregnancy.js b/src/endWeek/saPregnancy.js index 5be39258e40..fe68632c4ce 100644 --- a/src/endWeek/saPregnancy.js +++ b/src/endWeek/saPregnancy.js @@ -615,6 +615,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) { */ function pregnancyPhysicalEffects(slave) { let boobTarget; + const slimnessFoodMod = V.arcologies[0].FSSlimnessFoodLaw === 1 ? 0.5 : 1; if (slave.geneMods.NCS === 1) { // NCS: always working against secondary sexual characteristics even in pregnancies. boobTarget = 0; @@ -668,6 +669,7 @@ App.SlaveAssignment.pregnancy = function saPregnancy(slave) { } } boobTarget *= gigantomastiaMod; + boobTarget *= slimnessFoodMod; if (slave.geneMods.NCS === 0) { const boobSize = slave.boobs - slave.boobsImplant - slave.boobsMilk; const buttSize = slave.butt - slave.buttImplant; diff --git a/src/js/economyJS.js b/src/js/economyJS.js index 9911372e1d3..602cfc5b41f 100644 --- a/src/js/economyJS.js +++ b/src/js/economyJS.js @@ -806,7 +806,8 @@ globalThis.calculateCosts = (function() { } function getPCFoodCosts() { - const foodCost = V.mods.food.cost; + const slimnessFoodMod = V.arcologies[0].FSSlimnessFoodLaw === 1 && !canEatFood(V.PC) ? 1.15 : 1; + const foodCost = V.mods.food.cost * slimnessFoodMod; let costs = 0; // Well this ought to be a mess. // Basic food costs @@ -1124,8 +1125,9 @@ globalThis.getSlaveCostArray = function(s) { let cost = 0; let retval = []; let t = ""; + const slimnessFoodMod = V.arcologies[0].FSSlimnessFoodLaw === 1 ? 1.15 : 1; const rulesCost = V.rulesCost; - const foodCost = V.mods.food.cost; + const foodCost = V.mods.food.cost * slimnessFoodMod; const drugsCost = V.drugsCost; // Living expenses -- GitLab