From 713ac8b912a2fdfed62ded1b7a2b6f92a443cc11 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Sat, 14 Sep 2019 17:43:44 -0400 Subject: [PATCH] FS work --- src/endWeek/saServeThePublic.js | 50 +++++++- src/endWeek/saWhore.js | 50 +++++++- src/endWeek/saWorkAGloryHole.js | 12 ++ src/endWeek/saWorkTheFarm.js | 12 ++ src/js/economyJS.js | 4 + src/js/itemAvailability.js | 8 ++ src/js/slaveCostJS.js | 33 ++++- src/js/slaveStatsChecker.js | 48 ++++++- src/js/slaveSummaryWidgets.js | 8 +- src/js/vignettes.js | 150 ++++++++++++++++++++++ src/uncategorized/costsReport.tw | 8 +- src/uncategorized/costsWidgets.tw | 8 +- src/uncategorized/longSlaveDescription.tw | 21 +++ src/uncategorized/saGetMilked.tw | 8 ++ src/uncategorized/saLongTermEffects.tw | 64 +++++++++ 15 files changed, 470 insertions(+), 14 deletions(-) diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js index 75eaf26d173..017b6639779 100644 --- a/src/endWeek/saServeThePublic.js +++ b/src/endWeek/saServeThePublic.js @@ -619,7 +619,9 @@ window.saServeThePublic = (function saServeThePublic() { } if (canTalk(slave)) { - if (slave.voice > 2) { + if (arcology.FSSlaveProfessionalism !== "unset" && slave.accent > 1) { + r += ` ${His} butchery of the local tongue drives away curious citizens.`; + } else if (slave.voice > 2) { if (slave.voiceImplant > 0) { r += ` ${His} high-pitched bimbo voice improves ${his} come-ons.`; } else { @@ -690,6 +692,20 @@ window.saServeThePublic = (function saServeThePublic() { } } + if (arcology.FSPetiteAdmiration !== "unset") { + if (heightPass(slave)) { + r += ` ${His} adorably petite stature catches and holds the public's eye.`; + } else if (slave.height >= 170) { + r += ` ${His} tall stature turns off most citizens.`; + } + } else if (arcology.FSStatuesqueGlorification !== "unset") { + if (heightPass(slave)) { + r += ` ${His} gloriously tall stature catches and holds the public's eye.`; + } else { + r += ` ${His} short stature turns off most citizens.`; + } + } + if (slave.visualAge >= 30) { if (arcology.FSMaturityPreferentialist !== "unset") { r += ` ${His} mature body is very fashionable.`; @@ -766,6 +782,12 @@ window.saServeThePublic = (function saServeThePublic() { } } + if (arcology.FSIntellectualDependencyLawBeauty === 1) { + if (bimboScore(slave) >= 6) { + r += ` Citizens flock to spend time with a complete bimbo like ${him}.`; + } + } + if (slave.boobsImplant === 0 && slave.buttImplant === 0 && slave.waist >= -95 && slave.bellyImplant === -1 && slave.lipsImplant === 0 && slave.faceImplant < 30) { if (arcology.FSBodyPurist !== "unset") { r += ` With ${his} all-natural, implant free appearance, ${he}'s very popular.`; @@ -878,7 +900,19 @@ window.saServeThePublic = (function saServeThePublic() { } } - if (slave.intelligence + slave.intelligenceImplant > 15) { + if (arcology.FSSlaveProfessionalism !== "unset") { + if (slave.intelligence + slave.intelligenceImplant > 50) { + r += ` ${His} intelligence satisfies citizens looking for something more than just a hole.`; + } else if (slave.intelligence + slave.intelligenceImplant < -10) { + r += ` ${His} stupidity gives aggravates citizens looking for something more than just a cum dump.`; + } + } else if (arcology.FSIntellectualDependency !== "unset") { + if (slave.intelligence + slave.intelligenceImplant > 10) { + r += ` ${His} intellectual baggage is more than most citizens wish to deal with.`; + } else if (slave.intelligence + slave.intelligenceImplant < -50) { + r += ` ${His} simplicity makes ${him} pliable and ready to do or try anything.`; + } + } else if (slave.intelligence + slave.intelligenceImplant > 15) { r += ` ${His} intelligence helps ${him} discern everyone's needs.`; } else if (slave.intelligence + slave.intelligenceImplant < -15) { r += ` ${He} has trouble figuring out what everyone needs.`; @@ -1279,6 +1313,18 @@ window.saServeThePublic = (function saServeThePublic() { case "Slimness Enthusiast": arcology.FSSlimnessEnthusiast += fsBeauty; break; + case "Slave Professionalism": + arcology.FSSlaveProfessionalism += fsBeauty; + break; + case "Intellectual Dependency": + arcology.FSIntellectualDependency += fsBeauty; + break; + case "Petite Admiration": + arcology.FSPetiteAdmiration += fsBeauty; + break; + case "Statuesque Glorification": + arcology.FSStatuesqueGlorification += fsBeauty; + break; } } diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js index 5e9978dc9bd..59f0b260f1b 100644 --- a/src/endWeek/saWhore.js +++ b/src/endWeek/saWhore.js @@ -815,7 +815,9 @@ window.saWhore = (function saWhore() { } if (canTalk(slave)) { - if (slave.voice > 2) { + if (arcology.FSSlaveProfessionalism !== "unset" && slave.accent > 1) { + r += ` ${His} butchery of the local tongue drives away potential customers.`; + } else if (slave.voice > 2) { if (slave.voiceImplant > 0) { r += ` ${His} high-pitched bimbo voice makes it easier for ${him} to entice potential customers.`; } else { @@ -886,6 +888,20 @@ window.saWhore = (function saWhore() { } } + if (arcology.FSPetiteAdmiration !== "unset") { + if (heightPass(slave)) { + r += ` ${His} adorably petite stature attracts additional customers.`; + } else if (slave.height >= 170) { + r += ` ${His} tall stature turns off potential costumers.`; + } + } else if (arcology.FSStatuesqueGlorification !== "unset") { + if (heightPass(slave)) { + r += ` ${His} gloriously tall stature attracts additional customers.`; + } else { + r += ` ${His} short stature turns off potential costumers.`; + } + } + if (slave.visualAge >= 30) { if (arcology.FSMaturityPreferentialist !== "unset") { r += ` ${His} mature body is very fashionable.`; @@ -962,6 +978,12 @@ window.saWhore = (function saWhore() { } } + if (arcology.FSIntellectualDependencyLawBeauty === 1) { + if (bimboScore(slave) >= 6) { + r += ` Clients are more than willing to pay extra ¤ to spend time with a complete bimbo like ${him}.`; + } + } + if (slave.boobsImplant === 0 && slave.buttImplant === 0 && slave.waist >= -95 && slave.bellyImplant === -1 && slave.lipsImplant === 0 && slave.faceImplant < 30) { if (arcology.FSBodyPurist !== "unset") { r += ` With ${his} all-natural, implant free appearance, ${he}'s very profitable.`; @@ -1074,7 +1096,19 @@ window.saWhore = (function saWhore() { } } - if (slave.intelligence + slave.intelligenceImplant > 15) { + if (arcology.FSSlaveProfessionalism !== "unset") { + if (slave.intelligence + slave.intelligenceImplant > 50) { + r += ` ${His} intelligence satisfies customers looking for more than just a hole to fuck.`; + } else if (slave.intelligence + slave.intelligenceImplant < -10) { + r += ` ${His} stupidity gives aggravates customers looking for more than just a hole to fuck.`; + } + } else if (arcology.FSIntellectualDependency !== "unset") { + if (slave.intelligence + slave.intelligenceImplant > 10) { + r += ` ${His} intellectual baggage annoys customers looking for a simple fuck.`; + } else if (slave.intelligence + slave.intelligenceImplant < -50) { + r += ` ${His} simplicity makes ${him} pliable and ready to try anything with a customer.`; + } + } else if (slave.intelligence + slave.intelligenceImplant > 15) { r += ` ${His} intelligence gives ${him} an advantage at the business of selling ${his} body.`; } else if (slave.intelligence + slave.intelligenceImplant < -15) { r += ` ${His} stupidity gives ${him} a handicap at the business of selling ${his} body.`; @@ -1475,6 +1509,18 @@ window.saWhore = (function saWhore() { case "Slimness Enthusiast": arcology.FSSlimnessEnthusiast += fsBeauty; break; + case "Slave Professionalism": + arcology.FSSlaveProfessionalism += fsBeauty; + break; + case "Intellectual Dependency": + arcology.FSIntellectualDependency += fsBeauty; + break; + case "Petite Admiration": + arcology.FSPetiteAdmiration += fsBeauty; + break; + case "Statuesque Glorification": + arcology.FSStatuesqueGlorification += fsBeauty; + break; } } diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js index ad5d9156601..7b558c50a80 100644 --- a/src/endWeek/saWorkAGloryHole.js +++ b/src/endWeek/saWorkAGloryHole.js @@ -323,6 +323,18 @@ window.saWorkAGloryHole = (function saWorkAGloryHole() { case "Slimness Enthusiast": V.arcologies[0].FSSlimnessEnthusiast += impact; break; + case "Slave Professionalism": + arcology.FSSlaveProfessionalism += impact; + break; + case "Intellectual Dependency": + arcology.FSIntellectualDependency += impact; + break; + case "Petite Admiration": + arcology.FSPetiteAdmiration += impact; + break; + case "Statuesque Glorification": + arcology.FSStatuesqueGlorification += impact; + break; } } } diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js index d8b0cb4e2b7..3ef28f6270e 100644 --- a/src/endWeek/saWorkTheFarm.js +++ b/src/endWeek/saWorkTheFarm.js @@ -592,6 +592,18 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) { case "Slimness Enthusiast": arcology.FSSlimnessEnthusiast = Math.clamp(arcology.FSSlimnessEnthusiast += fsGain, 0, 100); break; + case "Slave Professionalism": + arcology.FSSlaveProfessionalism = Math.clamp(arcology.FSSlaveProfessionalism += fsGain, 0, 100); + break; + case "Intellectual Dependency": + arcology.FSIntellectualDependency = Math.clamp(arcology.FSIntellectualDependency += fsGain, 0, 100); + break; + case "Petite Admiration": + arcology.FSPetiteAdmiration = Math.clamp(arcology.FSPetiteAdmiration += fsGain, 0, 100); + break; + case "Statuesque Glorification": + arcology.FSStatuesqueGlorification = Math.clamp(arcology.FSStatuesqueGlorification += fsGain, 0, 100); + break; } } diff --git a/src/js/economyJS.js b/src/js/economyJS.js index 2dce41bbaa0..0318d91146b 100644 --- a/src/js/economyJS.js +++ b/src/js/economyJS.js @@ -856,6 +856,10 @@ window.getSlaveCost = function(s) { if (s.preg === -1 && isFertile(s)) { cost += Math.trunc((drugsCost * 0.5)); } + + if ((Job.CONCUBINE === s.assignment || s.relationship === -3) && State.variables.arcologies[0].FSPetiteAdmirationLaw === 1) { + cost -= 200; + } // Promotion costs if (State.variables.studio === 1) { diff --git a/src/js/itemAvailability.js b/src/js/itemAvailability.js index 7fc1eef370a..745ab63bda8 100644 --- a/src/js/itemAvailability.js +++ b/src/js/itemAvailability.js @@ -43,6 +43,12 @@ window.isItemAccessible = function(string) { return (V.arcologies[0].FSRomanRevivalist > 0 || V.clothesBoughtToga === 1); case "Western clothing": return (V.arcologies[0].FSPastoralist > 0 || V.clothesBoughtWestern === 1); + case "a courtesan dress": + return (V.arcologies[0].FSSlaveProfessionalism > 0 || V.clothesBoughtCourtesan === 1); + case "a bimbo outfit": + return (V.arcologies[0].FSIntellectualDependency > 0 || V.clothesBoughtBimbo === 1); + case "petite admi outfit": + return (V.arcologies[0].FSPetiteAdmiration > 0 || V.clothesBoughtPetite === 1); case "battlearmor": case "a military uniform": case "a red army uniform": @@ -129,6 +135,8 @@ window.isItemAccessible = function(string) { case "striped panties": case "striped underwear": return (V.clothesBoughtPantsu === 1 || V.continent === "Japan"); + case "tall shoes": + return (V.arcologies[0].FSStatuesqueGlorification > 0 || V.shoesBoughtHeels === 1); case "bowtie": return (V.arcologies[0].FSGenderFundamentalist > 0 || V.clothesBoughtBunny === 1); case "ancient Egyptian": diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js index 54d5bdc5cb6..40678dccd52 100644 --- a/src/js/slaveCostJS.js +++ b/src/js/slaveCostJS.js @@ -109,7 +109,38 @@ window.Beauty = (function() { * @param {App.Entity.SlaveState} slave */ function calcHeightBeauty(slave) { - beauty += (slave.height - 160) / 10; + if (arcology.FSPetiteAdmiration !== "unset") { + if (arcology.FSPetiteAdmirationLaw2 === 1) { + if (heightPass(slave)) { + beauty += (Height.mean(slave) - slave.height) * (arcology.FSPetiteAdmiration / 50); + } else { + beauty -= (slave.height - Height.mean(slave)) * (arcology.FSPetiteAdmiration / 50); + } + } else { + if (heightPass(slave)) { + let ageDiv = (slave.physicalAge >= 16) ? 1 : (16 - slave.physicalAge); // this could probably be better, but bad at math. Intent is for younger, and thus naturally shorter than the threshold, slaves receive a weaker bonus. + beauty += (161 - slave.height) * ((arcology.FSPetiteAdmiration / 50) + 0.5) / ageDiv; + } else if (slave.height >= 170) { + beauty -= (slave.height - 169) * (arcology.FSPetiteAdmiration / 50); + } + } + } else if (arcology.FSStatuesqueGlorification !== "unset") { + if (arcology.FSStatuesqueGlorificationLaw2 === 1) { + if (heightPass(slave)) { + beauty += (slave.height - Height.mean(slave)) * (arcology.FSStatuesqueGlorification / 50); + } else { + beauty -= (Height.mean(slave) - slave.height) * (arcology.FSStatuesqueGlorification / 50); + } + } else { + if (heightPass(slave)) { + beauty += (slave.height + heelLength(slave) - 169) * ((arcology.FSStatuesqueGlorification / 50) + 0.5); + } else { + beauty -= ((arcology.FSStatuesqueGlorification / 10) + (170 - slave.height + heelLength(slave))) * 2; + } + } + } else { + beauty += (slave.height - 160) / 10; + } } /** diff --git a/src/js/slaveStatsChecker.js b/src/js/slaveStatsChecker.js index e2f5ebc3269..7a007677bef 100644 --- a/src/js/slaveStatsChecker.js +++ b/src/js/slaveStatsChecker.js @@ -308,9 +308,51 @@ window.slimLawPass = function(slave) { * @returns {boolean} */ window.heightPass = function(slave) { - let measuresUp = false; - // to make the other js that calls this unfinished function not meltdown - return measuresUp; + let V = State.variables; + let arcology = V.arcologies[0]; + + if (arcology.FSPetiteAdmiration !== "unset") { + if (arcology.FSPetiteAdmirationLaw2 === 1) { + if (slave.height < Height.mean(slave) - 5) { + return true; + } + } else { + if (slave.height < 160) { + return true; + } + } + } else if (arcology.FSStatuesqueGlorification !== "unset") { + if (arcology.FSStatuesqueGlorificationLaw2 === 1) { + if (slave.height + heelLength(slave) > Height.mean(slave) + 5) { + return true; + } + } else { + if (slave.height + heelLength(slave) >= 170) { + return true; + } + } + } + return false; +}; + +/** + * Returns the height, in cm, of a slave's heels + * @param {App.Entity.SlaveState} slave + * @returns {number} + */ +window.heelLength = function(slave) { + switch (slave.shoes) { + case "pumps": + // 2 inch heels + return 5; + case "heels": + // 5 inch heels + return 13; + case "extreme heels": + // 8 inch heels + return 21; + } + return 0; }; /** diff --git a/src/js/slaveSummaryWidgets.js b/src/js/slaveSummaryWidgets.js index cc3d2294842..5b91442304c 100644 --- a/src/js/slaveSummaryWidgets.js +++ b/src/js/slaveSummaryWidgets.js @@ -2365,11 +2365,11 @@ window.SlaveSummaryUncached = (function() { function long_hips(slave, c) { const styles = "red"; if (slave.hips < -1) { - if (slave.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) { + if (slave.butt > 2 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset") && (V.arcologies[0].FSIntellectualDependencyLawBeauty === 0)) { makeSpan(c, "Disproportionately big butt.", styles); } } else if (slave.hips < 0) { - if (slave.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) { + if (slave.butt > 4 && (V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset") && (V.arcologies[0].FSIntellectualDependencyLawBeauty === 0)) { makeSpan(c, "Disproportionately big butt.", styles); } } else if (slave.hips > 2) { @@ -2382,7 +2382,7 @@ window.SlaveSummaryUncached = (function() { } } else if (slave.hips > 0) { if (slave.butt > 8) { - if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) { + if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset") && (V.arcologies[0].FSIntellectualDependencyLawBeauty === 0)) { makeSpan(c, "Disproportionately big butt.", styles); } } else if (slave.butt <= 2 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (slave.boobs >= 500))) { @@ -2390,7 +2390,7 @@ window.SlaveSummaryUncached = (function() { } } else { if (slave.butt > 6) { - if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset")) { + if ((V.arcologies[0].FSTransformationFetishist < 20 || V.arcologies[0].FSTransformationFetishist === "unset") && (V.arcologies[0].FSHedonisticDecadence < 20 || V.arcologies[0].FSHedonisticDecadence === "unset") && (V.arcologies[0].FSAssetExpansionist < 20 || V.arcologies[0].FSAssetExpansionist === "unset") && (V.arcologies[0].FSIntellectualDependencyLawBeauty === 0)) { makeSpan(c, "Disproportionately big butt.", styles); } } else if (slave.butt <= 1 && ((V.arcologies[0].FSSlimnessEnthusiast === "unset") || (slave.boobs >= 500))) { diff --git a/src/js/vignettes.js b/src/js/vignettes.js index d63459b9cb4..e574104c044 100644 --- a/src/js/vignettes.js +++ b/src/js/vignettes.js @@ -1673,6 +1673,81 @@ window.GetVignette = function GetVignette(slave) { }); } } + if (V.arcologies[0].FSIntellectualDependency !== "unset") { + if (slave.energy < 70) { + vignettes.push({ + text: `${he} was called a dead fish by an irate customer unsatisfied by ${his} libido,`, + type: "trust", + effect: -1, + }); + } + if (slave.intelligence + slave.intelligenceImplant < -50) { + vignettes.push({ + text: `a gameshow host asked to hire ${him} for a taping so ${he} could provide comedic relief when compared to the actual contestants,`, + type: "cash", + effect: 2, + }); + } + } else if (V.arcologies[0].FSSlaveProfessionalism !== "unset") { + if (slave.intelligence + slave.intelligenceImplant > 95) { + vignettes.push({ + text: `${he} got repeat business from a customer that wanted to continue their post-coital conversation,`, + type: "cash", + effect: 2, + }); + } else if (slave.intelligence + slave.intelligenceImplant <= 10 && canTalk(slave)) { + vignettes.push({ + text: `a customer complained about the idiotic statements that kept leaving ${his} mouth,`, + type: "rep", + effect: -1, + }); + } + if (canTalk(slave) && slave.accent > 1) { + vignettes.push({ + text: `${he} was publicly ridiculed for not being able to properly speak,`, + type: "rep", + effect: -1, + }); + } + } + if (V.arcologies[0].FSStatuesqueGlorification !== "unset") { + if (!heightPass(slave)) { + vignettes.push({ + text: `${he} lost a customer who refused to be seen with such a short bitch,`, + type: "cash", + effect: -1, + }); + vignettes.push({ + text: `${he} got repeat business from a hungry customer with a taste for short ${boy}s,`, + type: "cash", + effect: 2, + }); + } else if (slave.height >= 230) { + vignettes.push({ + text: `${he} lost a customer who was so intimidated by ${his} height that they couldn't get aroused,`, + type: "cash", + effect: -1, + }); + vignettes.push({ + text: `${he} got repeat business from a customer ecstatic to finally fuck someone taller than themself,`, + type: "cash", + effect: 1, + }); + } + } else if (V.arcologies[0].FSPetiteAdmiration !== "unset") { + if (heightPass(slave)) { + vignettes.push({ + text: `${he} got repeat business from a customer whose crotch was the perfect height for ${his} mouth,`, + type: "cash", + effect: 1, + }); + vignettes.push({ + text: `${he} got used as a foot rest by a customer while they enjoyed taller fair,`, + type: "health", + effect: -1, + }); + } + } if (V.arcologies[0].FSChattelReligionist !== "unset") { if (slave.behavioralFlaw === "devout") { vignettes.push({ @@ -3566,6 +3641,81 @@ window.GetVignette = function GetVignette(slave) { }); } } + if (V.arcologies[0].FSIntellectualDependency !== "unset") { + if (slave.energy < 70) { + vignettes.push({ + text: `${he} was called a dead fish by an irate citizen unsatisfied by ${his} libido,`, + type: "trust", + effect: -1, + }); + } + if (slave.intelligence + slave.intelligenceImplant < -50) { + vignettes.push({ + text: `${he} was asked to compete in a trivia contest with several other airheads, ${he} was a hit with ${his} audience,`, + type: "rep", + effect: 1, + }); + } + } else if (V.arcologies[0].FSSlaveProfessionalism !== "unset") { + if (slave.intelligence + slave.intelligenceImplant > 95) { + vignettes.push({ + text: `${he} spent a lot of time with a citizen that wanted a follow-up on their post-coital conversation,`, + type: "rep", + effect: 2, + }); + } else if (slave.intelligence + slave.intelligenceImplant <= 10 && canTalk(slave)) { + vignettes.push({ + text: `a citizen loudly complained about the idiotic statements that kept leaving ${his} mouth,`, + type: "rep", + effect: -1, + }); + } + if (canTalk(slave) && slave.accent > 1) { + vignettes.push({ + text: `${he} was publicly ridiculed for not being able to properly speak,`, + type: "rep", + effect: -1, + }); + } + } + if (V.arcologies[0].FSStatuesqueGlorification !== "unset") { + if (!heightPass(slave)) { + vignettes.push({ + text: `${he} upset a citizen who refused to be seen with such a short bitch,`, + type: "rep", + effect: -1, + }); + vignettes.push({ + text: `${he} gratified a citizen with a secret fetish for short ${boy}s,`, + type: "rep", + effect: 1, + }); + } else if (slave.height >= 230) { + vignettes.push({ + text: `${he} terrified a young citizen to the brink of tears with ${his} staggering height,`, + type: "rep", + effect: -1, + }); + vignettes.push({ + text: `${he} gratified a citizen ecstatic to finally fuck someone taller than themself,`, + type: "rep", + effect: 1, + }); + } + } else if (V.arcologies[0].FSPetiteAdmiration !== "unset") { + if (heightPass(slave)) { + vignettes.push({ + text: `${he} gratified a citizen whose crotch was the perfect height for ${his} mouth,`, + type: "rep", + effect: 1, + }); + vignettes.push({ + text: `a short customer used ${him} as a footstool to steal a kiss from a taller slut,`, + type: "health", + effect: -1, + }); + } + } if (V.arcologies[0].FSChattelReligionist !== "unset") { if (slave.behavioralFlaw === "devout") { vignettes.push({ diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw index 8d78b14c051..30bf3bc0aca 100644 --- a/src/uncategorized/costsReport.tw +++ b/src/uncategorized/costsReport.tw @@ -860,7 +860,13 @@ $researchLab.level > 0>> @@.yellowgreen;<<print cashFormat($slaves[$i].pornFameSpending/$PCSlutContacts)>>@@ <<set _individualCosts += ($slaves[$i].pornFameSpending/$PCSlutContacts)>> <</if>> - <</if>> <<set _total += Math.trunc(_individualCosts)>> + <</if>> + <<if (($slaves[$i].assignment == "be your Concubine" ||$slaves[$i].relationship == -3) && $arcologies[0].FSPetiteAdmirationLaw == 1)>> + <br> <i>Big & Small Subsidy:</i> + @@.yellowgreen;<<print cashFormat(-200)>>@@ + <<set _individualCosts -= 200>> + <</if>> + <<set _total += Math.trunc(_individualCosts)>> <br> __Total__: @@.yellowgreen;<<print cashFormat(Math.trunc(_individualCosts))>>@@ <br> diff --git a/src/uncategorized/costsWidgets.tw b/src/uncategorized/costsWidgets.tw index f1176bc20ff..7a5bb8e29e9 100644 --- a/src/uncategorized/costsWidgets.tw +++ b/src/uncategorized/costsWidgets.tw @@ -400,7 +400,13 @@ @@.yellowgreen;<<print cashFormat($args[0].pornFameSpending/$PCSlutContacts)>>@@ <<set _individualCosts += ($args[0].pornFameSpending/$PCSlutContacts)>> <</if>> - <</if>> <<set _total += Math.trunc(_individualCosts)>> + <</if>> + <<if (($args[0].assignment == "be your Concubine" ||$args[0].relationship == -3) && $arcologies[0].FSPetiteAdmirationLaw == 1)>> + <br> <i>Big & Small Subsidy:</i> + @@.yellowgreen;<<print cashFormat(-200)>>@@ + <<set _individualCosts -= 200>> + <</if>> + <<set _total += Math.trunc(_individualCosts)>> <br> __Predicted expense__: @@.red;<<print cashFormat(Math.trunc(_individualCosts))>>@@ <<if $assistantPower > 0>> <<if $args[0].lastWeeksCashIncome > 0>> diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index 18b20ea4964..b6ed59e170e 100644 --- a/src/uncategorized/longSlaveDescription.tw +++ b/src/uncategorized/longSlaveDescription.tw @@ -1675,6 +1675,27 @@ is $His body is a perfect example of a subhuman who has accepted their place in society. <</if>> +<<if $arcologies[0].FSIntellectualDependencyLawBeauty == 1>> + $He currently is graded + <<switch bimboScore($activeSlave)>> + <<case 6>> + an S-class + <<case 5>> + an A-class + <<case 4>> + a B-class + <<case 3>> + a C-class + <<case 2>> + a D-class + <<case 1>> + an E-class + <<default>> + an F-class + <</switch>> + bimbo by societal trends. +<</if>> + <<if ($showScores != 0)>> <<set $FResult = FResult($activeSlave)>> Currently, $he has an @@.pink;''attractiveness score'' of __''$beauty''__@@ and a @@.lightcoral;''sexual score'' of __''$FResult''__.@@ diff --git a/src/uncategorized/saGetMilked.tw b/src/uncategorized/saGetMilked.tw index c2a93bfa688..1606670832d 100644 --- a/src/uncategorized/saGetMilked.tw +++ b/src/uncategorized/saGetMilked.tw @@ -668,6 +668,14 @@ gets milked this week. <<set $arcologies[0].FSBodyPurist = Math.clamp($arcologies[0].FSBodyPurist += _fsGain,0,100)>> <<case "Slimness Enthusiast">> <<set $arcologies[0].FSSlimnessEnthusiast = Math.clamp($arcologies[0].FSSlimnessEnthusiast += _fsGain,0,100)>> + <<case "Slave Professionalism">> + <<set $arcologies[0].FSSlaveProfessionalism = Math.clamp($arcologies[0].FSSlaveProfessionalism += _fsGain,0,100)>> + <<case "Intellectual Dependency">> + <<set $arcologies[0].FSIntellectualDependency = Math.clamp($arcologies[0].FSIntellectualDependency += _fsGain,0,100)>> + <<case "Petite Admiration">> + <<set $arcologies[0].FSPetiteAdmiration = Math.clamp($arcologies[0].FSPetiteAdmiration += _fsGain,0,100)>> + <<case "Statuesque Glorification">> + <<set $arcologies[0].FSStatuesqueGlorification = Math.clamp($arcologies[0].FSStatuesqueGlorification += _fsGain,0,100)>> <</switch>> <</if>> <</if>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 08bcb29cfe6..1af1ddcd8f7 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -5313,6 +5313,24 @@ <</if>> <</if>> + <<if $arcologies[0].FSPetiteAdmiration != "unset">> + <<if heightPass($slaves[$i])>> + Society @@.green;approves@@ of keeping a slave as short as $slaves[$i].slaveName is; $he furthers the fashion for shorter slaves. + <<= FutureSocieties.ChangePorn("PetiteAdmiration", 1)>> + <<elseif $slaves[$i].height >= 170>> + Society @@.red;frowns@@ at keeping a slave as tall as $slaves[$i].slaveName; $he hinders the fashion for shorter slaves. + <<= FutureSocieties.ChangePorn("PetiteAdmiration", -1)>> + <</if>> + <<elseif $arcologies[0].FSStatuesqueGlorification != "unset">> + <<if heightPass($slaves[$i])>> + Society @@.green;approves@@ of keeping a slave as tall as $slaves[$i].slaveName is; $he furthers the fashion for taller slaves. + <<= FutureSocieties.ChangePorn("StatuesqueGlorification", 1)>> + <<else>> + Society @@.red;frowns@@ at keeping someone as embarrassingly short as $slaves[$i].slaveName; $he hinders the fashion for taller slaves. + <<= FutureSocieties.ChangePorn("StatuesqueGlorification", -1)>> + <</if>> + <</if>> + <<if $arcologies[0].FSGenderRadicalist != "unset">> <<if ($slaves[$i].balls > 0) && ($slaves[$i].dick > 0) && ($slaves[$i].hormoneBalance >= 100)>> Society @@.green;approves@@ of your heavy hormonal feminization of $slaves[$i].slaveName; this advances public interest in <<= $girl>>s with soft little dicks. @@ -5645,6 +5663,52 @@ <</for>> <</if>> + <<if $arcologies[0].FSIntellectualDependency != "unset">> + <<if $arcologies[0].FSIntellectualDependencyLawBeauty == 1>> + <<if bimboScore($slaves[$i]) == 6>> + Society @@.green;is delighted@@ by $slaves[$i].slaveName's perfect bimbo appearance. + <<= FutureSocieties.ChangePorn("IntellectualDependency", 1)>> + <</if>> + <</if>> + <<if ($slaves[$i].intelligence+$slaves[$i].intelligenceImplant < -10)>> + Society @@.green;approves@@ of $slaves[$i].slaveName's dimwitted mind; this supports the idea that slaves should be entirely dependent on their owner. + <<= FutureSocieties.ChangePorn("IntellectualDependency", 1)>> + <<elseif ($slaves[$i].intelligence+$slaves[$i].intelligenceImplant > 10)>> + Society @@.red;disapproves@@ of $slaves[$i].slaveName's sharp mind; this holds back acceptance of the idea that slaves should be dumb and dependent. + <<= FutureSocieties.ChangePorn("IntellectualDependency", -1)>> + <</if>> + <<if ($slaves[$i].energy > 95)>> + Society @@.green;approves@@ of $slaves[$i].slaveName's bottomless lust, showing the public one more way a slave may be reliant on $his ownwer. + <<= FutureSocieties.ChangePorn("IntellectualDependency", 1)>> + <<elseif ($slaves[$i].energy <= 60)>> + Society @@.red;disapproves@@ of $slaves[$i].slaveName's restrained libido; to the public, this gives $him too much freedom to focus on things other than sex. + <<= FutureSocieties.ChangePorn("IntellectualDependency", -1)>> + <</if>> + <<elseif $arcologies[0].FSSlaveProfessionalism != "unset">> + <<if $slaves[$i].intelligence+$slaves[$i].intelligenceImplant > 95>> + Society @@.green;strongly approves@@ of $slaves[$i].slaveName's brilliance; $his sharp wit is the foundation of slave perfectionism. + <<= FutureSocieties.ChangePorn("SlaveProfessionalism", 1)>> + <<elseif $slaves[$i].intelligenceImplant >= 30>> + Society @@.green;approves@@ of $slaves[$i].slaveName's advanced education; this advances ideas about crafting the perfect slave. + <<= FutureSocieties.ChangePorn("SlaveProfessionalism", 1)>> + <<elseif $slaves[$i].intelligence < -10>> + Society @@.red;frowns@@ of keeping a slave as slow as $slaves[$i].slaveName; the lack of any effort to rectify $his lack of intelligence sets a bad example for other owners. + <<= FutureSocieties.ChangePorn("SlaveProfessionalism", -2)>> + <</if>> + <<if $slaves[$i].accent > 1 && canTalk($slaves[$i]) && ($slaves[$i].speechRules != "restrictive" || ($slaves[$i].speechRules == "restrictive" && $slaves[$i].devotion < 20 && $slaves[$i].trust >= -20))>> + Society @@.red;dislikes@@ $slaves[$i].slaveName's inability to properly speak $language or hold $his tongue; allowing such a flaw hinders the notion of proffesional slavery. + <<= FutureSocieties.ChangePorn("SlaveProfessionalism", -2)>> + <</if>> + <<if $slaves[$i].skill.entertainment + $slaves[$i].skill.whoring + $slaves[$i].skill.oral + $slaves[$i].skill.anal + $slaves[$i].skill.vaginal >= 400>> + Society @@.green;appreciates@@ a slave with skills of $slaves[$i].slaveName's caliber. + <<= FutureSocieties.ChangePorn("SlaveProfessionalism", 1)>> + <</if>> + <<if $slaves[$i].energy <= 40 && $slaves[$i].devotion > 50>> + Society @@.green;approves@@ of a $girl with a clear mind like $slaves[$i].slaveName; $he can pour all $his efforts into $his lover's pleasure without being lost in $his own. + <<= FutureSocieties.ChangePorn("SlaveProfessionalism", 1)>> + <</if>> + <</if>> + <<if $arcologies[0].FSBodyPurist != "unset">> <<if ($slaves[$i].boobsImplant == 0) && ($slaves[$i].buttImplant == 0) && ($slaves[$i].lipsImplant == 0) && ($slaves[$i].bellyImplant == -1)>> Society @@.green;approves@@ of $slaves[$i].slaveName's natural body; this supports the fashion for surgically untouched slaves. -- GitLab