From 5cb28bb01ad3e338f028a39685c9b6ca64e094b3 Mon Sep 17 00:00:00 2001 From: _no0neman <no0nemane@protonmail.com> Date: Sat, 17 Oct 2020 06:55:07 -0400 Subject: [PATCH] WIP: Gumjob Fetishism, add separate fetish and SMR policies --- js/003-data/gameVariableData.js | 3 ++- js/003-data/policiesData.js | 12 ++++++++++ src/002-config/fc-version.js | 2 +- src/data/backwardsCompatibility/policiesBC.js | 6 ++++- src/endWeek/saChoosesOwnJob.js | 4 ++-- src/endWeek/saReleaseRules.js | 2 +- src/endWeek/saServant.js | 4 ++-- src/endWeek/saServeThePublic.js | 12 +++++----- src/endWeek/saWhore.js | 12 +++++----- src/endWeek/saWorkAGloryHole.js | 4 ++-- src/endWeek/slaveAssignmentReport.js | 6 ++--- .../masterSuite/masterSuiteFramework.js | 4 ++-- .../penthouse/penthouseFramework.js | 2 +- src/js/slaveCostJS.js | 22 +++++++++---------- src/npc/children/longChildDescription.js | 2 +- src/npc/descriptions/mouth.js | 2 +- src/npc/generate/lawCompliance.js | 6 ++--- 17 files changed, 61 insertions(+), 44 deletions(-) diff --git a/js/003-data/gameVariableData.js b/js/003-data/gameVariableData.js index 32d5d458ff0..5dab1917ec2 100644 --- a/js/003-data/gameVariableData.js +++ b/js/003-data/gameVariableData.js @@ -324,7 +324,8 @@ App.Data.resetOnNGPlus = { analAppeal: 0, sexualOpenness: 0, bestialityOpenness: 0, - gumjobFetishism: 0 + gumjobFetishism: 0, + gumjobFetishismSMR: 0 }, FCTV: { diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js index c960d6ef7e0..9bb4aa3e3c5 100644 --- a/js/003-data/policiesData.js +++ b/js/003-data/policiesData.js @@ -331,6 +331,18 @@ App.Data.Policies.Selection = { "policies.gumjobFetishism": [ { title: "Gumjob Fetishism", + text: "you will use your personal influence to make toothless slaves and gummy blowjobs more desirable than not.", + activatedText: "you are using your personal influence to make toothless slaves and gummy blowjobs more desirable than not.", + get requirements() { return ((V.arcologies[0].FSDegradationist != "unset" || + V.arcologies[0].FSTransformationFetishist != "unset" || + V.arcologies[0].FSMaturityPreferentialist != "unset") + && policies.gumjobFetishismSMR === 0) }, + note: `Will increase beauty of slaves without teeth, and decrease beauty and usage of slaves with teeth` + } + ], + "policies.gumjobFetishismSMR": [ + { + title: "Gumjob Fetishism SMR", text: "in order to be sold in your arcology, slaves will need to have their teeth removed.", activatedText: "in order to be sold in your arcology, slaves must have their teeth removed.", get requirements() { return ((V.arcologies[0].FSDegradationist >= 90 || diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js index fd159fd3a6d..b49a9d561d8 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: 1107 // When gettting close to 2000, please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js. + 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. }; diff --git a/src/data/backwardsCompatibility/policiesBC.js b/src/data/backwardsCompatibility/policiesBC.js index cdf19f275c4..d785f8f5284 100644 --- a/src/data/backwardsCompatibility/policiesBC.js +++ b/src/data/backwardsCompatibility/policiesBC.js @@ -15,7 +15,11 @@ App.Update.policies = function() { } if(V.policies.gumjobFetishism == null) { - V.policies.gumjobFetishism = 0 + V.policies.gumjobFetishism = 0; + } + + if(V.policies.gumjobFetishismSMR == null) { + V.policies.gumjobFetishismSMR = 0; } // Spelling fixes: diff --git a/src/endWeek/saChoosesOwnJob.js b/src/endWeek/saChoosesOwnJob.js index b30719ef237..61c2892a7f5 100644 --- a/src/endWeek/saChoosesOwnJob.js +++ b/src/endWeek/saChoosesOwnJob.js @@ -184,7 +184,7 @@ App.SlaveAssignment.choosesOwnJob = (function() { choice.push(assignJob(slave, "serve the public")); } slave.sexAmount = 10; - } else if (slave.energy > 60 && (V.policies.gumjobFetishism === 0 || (V.policies.gumjobFetishism === 1 && slave.teeth == "removable"))) { + } else if (slave.energy > 60 && ((V.policies.gumjobFetishism === 0 && V.policies.gumjobFetishismSMR === 0) || ((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth == "removable"))) { choice.push(`and ${he} thinks of little but sex with you,`); if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { choice.push(`so ${he} heads straight to ${V.masterSuiteName}.`); @@ -344,7 +344,7 @@ App.SlaveAssignment.choosesOwnJob = (function() { } slave.sexAmount = 10; } - } else if (slave.fetish === "pregnancy" && (V.policies.gumjobFetishism === 0 || (V.policies.gumjobFetishism === 1 && slave.teeth == "removable"))) { + } else if (slave.fetish === "pregnancy" && ((V.policies.gumjobFetishism === 0 && V.policies.gumjobFetishismSMR === 0) || ((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth == "removable"))) { if (V.PC.dick > 0 && isFertile(slave)) { if (V.universalRulesAssignsSelfFacility === 1 && V.masterSuite > masterSL) { choice.push(`decides to serve you in ${V.masterSuiteName}, hoping that you'll get ${him} pregnant.`); diff --git a/src/endWeek/saReleaseRules.js b/src/endWeek/saReleaseRules.js index f414b59cd01..06e392aae11 100644 --- a/src/endWeek/saReleaseRules.js +++ b/src/endWeek/saReleaseRules.js @@ -7,7 +7,7 @@ App.SlaveAssignment.nonAssignmentRelease = function(slave) { const release = slave.rules.release; const {he, his, him, himself} = getPronouns(slave); - if(V.policies.gumjobFetishism === 1 && slave.teeth != "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth != "removable") { release.master = 0; } diff --git a/src/endWeek/saServant.js b/src/endWeek/saServant.js index 67210b98232..f53bb954e3d 100644 --- a/src/endWeek/saServant.js +++ b/src/endWeek/saServant.js @@ -28,7 +28,7 @@ App.SlaveAssignment.servant = (function() { cash = 0; oralUse = jsRandom(5, 10); - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { if(slave.teeth == "fangs" || slave.teeth == "fang" || slave.teeth == "pointy") { oralUse = 0; } @@ -138,7 +138,7 @@ App.SlaveAssignment.servant = (function() { // is the current number of servants correct to accomplish this task? // why can't the player prevent this on-assignment sex while still getting the other benefits of having a servant? oralUse = Math.ceil(oralUse * restEffects(slave, 11)); - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { if(slave.teeth == "fangs" || slave.teeth == "fang" || slave.teeth == "pointy") { oralUse = 0; } diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js index a4f274c5732..4adc146451d 100644 --- a/src/endWeek/saServeThePublic.js +++ b/src/endWeek/saServeThePublic.js @@ -820,28 +820,28 @@ App.SlaveAssignment.serveThePublic = (function() { } if (slave.teeth === "removable") { - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` The majority of the public is quite pleased with ${his} ability to give toothless sucks, and uses ${his} mouth liberally.`; } else { r += ` The extra attention ${he} receives from ${his} ability to give toothless sucks is about balanced out by the citizens who are disgusted by it.`; } } else if (slave.teeth === "pointy") { - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` The public completely detests ${his} horrific, sharp-toothed mouth and refuses to use it.` } else { r += ` The extra attention ${he} receives due to ${his} sharp teeth is balanced by the citizens who are scared off by them.`; } } else if (slave.teeth === "fangs") { - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` The public completely detests ${his} horrific, sharp-toothed mouth and refuses to use it.` } else { r += ` The extra attention ${he} receives due to ${his} fangs is balanced by the citizens who are scared off by them.`; } } else { - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` Most of the public is quite dissapointed in ${his} tooth-filled mouth.` } } @@ -1278,11 +1278,11 @@ App.SlaveAssignment.serveThePublic = (function() { */ function sexCounts(slave) { /* SEX ACT COUNTS AND SEXUAL SATISFACTION */ - if(V.policies.gumJobFetishism === 1 && slave.teeth == "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth == "removable") { V.oralUseWeight += 2; } oralUse = (V.oralUseWeight + (slave.skill.oral / 30) + (slave.lips / 20)); - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { if(slave.teeth == "fangs" || slave.teeth == "fang" || slave.teeth == "pointy") { oralUse = 0; } diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js index 3bb4d49c947..553a660fc84 100644 --- a/src/endWeek/saWhore.js +++ b/src/endWeek/saWhore.js @@ -893,28 +893,28 @@ App.SlaveAssignment.whore = (function() { } if (slave.teeth === "removable") { - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` The majority of the customers are quite pleased with ${his} ability to give toothless sucks, and purchase time in ${his} mouth liberally.`; } else { r += ` The extra attention ${he} receives from ${his} ability to give toothless sucks is about balanced out by the customers who are disgusted by it.`; } } else if (slave.teeth === "pointy") { - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` Customers completely detest ${his} horrific, sharp-toothed mouth and refuse to rent it.` } 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) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` Customers completely detest ${his} horrific, sharp-toothed mouth and refuse to rent it.` } 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) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { r += ` Most customers are quite dissapointed in ${his} tooth-filled mouth.` } } @@ -1351,11 +1351,11 @@ App.SlaveAssignment.whore = (function() { function sexCounts(slave) { /* SEX ACT COUNTS AND SEXUAL SATISFACTION */ - if(V.policies.gumJobFetishism === 1 && slave.teeth == "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth == "removable") { V.oralUseWeight += 2; } oralUse = (V.oralUseWeight + (slave.skill.oral / 30) + (slave.lips / 20)); - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { if(slave.teeth == "fangs" || slave.teeth == "fang" || slave.teeth == "pointy") { oralUse = 0; } diff --git a/src/endWeek/saWorkAGloryHole.js b/src/endWeek/saWorkAGloryHole.js index 73438cf9827..6bceb1b8a32 100644 --- a/src/endWeek/saWorkAGloryHole.js +++ b/src/endWeek/saWorkAGloryHole.js @@ -323,11 +323,11 @@ App.SlaveAssignment.workAGloryHole = (function() { */ function sexCounts(slave) { /* SEX ACT COUNTS AND SEXUAL SATISFACTION */ - if(V.policies.gumJobFetishism === 1 && slave.teeth == "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth == "removable") { V.oralUseWeight += 2; } oralUse = (V.oralUseWeight + (slave.lips / 20)); - if(V.policies.gumjobFetishism == 1) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { if(slave.teeth == "fangs" || slave.teeth == "fang" || slave.teeth == "pointy") { oralUse = 0; } diff --git a/src/endWeek/slaveAssignmentReport.js b/src/endWeek/slaveAssignmentReport.js index e2ad2fe9a6c..eddebde77d0 100644 --- a/src/endWeek/slaveAssignmentReport.js +++ b/src/endWeek/slaveAssignmentReport.js @@ -766,7 +766,7 @@ App.EndWeek.slaveAssignmentReport = function() { } case Job.CONCUBINE: { - if(V.policies.gumjobFetishism === 1 && slave.teeth != "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth != "removable") { _printSlaveUnassignedNote(slave, "cannot be your concubine without being able to give gumjobs"); removeJob(slave, Job.CONCUBINE); } @@ -774,14 +774,14 @@ App.EndWeek.slaveAssignmentReport = function() { break; case Job.FUCKTOY: { - if(V.policies.gumjobFetishism === 1 && slave.teeth != "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth != "removable") { _printSlaveUnassignedNote(slave, "cannot be your fucktoy without being able to give gumjobs"); removeJob(slave, Job.FUCKTOY); } } case Job.MASTERSUITE: { - if(V.policies.gumjobFetishism === 1 && slave.teeth != "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth != "removable") { _printSlaveUnassignedNote(slave, "cannot be your fucktoy without being able to give gumjobs"); removeJob(slave, Job.MASTERSUITE); } diff --git a/src/facilities/masterSuite/masterSuiteFramework.js b/src/facilities/masterSuite/masterSuiteFramework.js index a49e41e419c..54ad2d1352d 100644 --- a/src/facilities/masterSuite/masterSuiteFramework.js +++ b/src/facilities/masterSuite/masterSuiteFramework.js @@ -39,7 +39,7 @@ App.Entity.Facilities.MasterSuiteFuckToyJob = class extends App.Entity.Facilitie if (!App.Entity.Facilities.Job._isBrokenEnough(slave, 20, -51, -21, -50)) { r.push(`${slave.slaveName} is not sufficiently broken for ${this.facility.name}.`); } - else if (V.policies.gumjobFetishism === 1 && slave.teeth != "removable") { + else if ((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth != "removable") { r.push(`${slave.slaveName} does not have removable teeth and can't give gumjobs.`); } @@ -58,7 +58,7 @@ App.Entity.Facilities.ConcubineJob = class extends App.Entity.Facilities.Managin if (isAmputee(slave)) { r.push(`${slave.slaveName} can't serve as your Concubine without limbs.`); } - if (V.policies.gumjobFetishism === 1 && slave.teeth != "removable") { + if ((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth != "removable") { r.push(`${slave.slaveName} does not have removable teeth and can't give gumjobs.`); } return r; diff --git a/src/facilities/penthouse/penthouseFramework.js b/src/facilities/penthouse/penthouseFramework.js index 1410f568fbf..91e47ac46a7 100644 --- a/src/facilities/penthouse/penthouseFramework.js +++ b/src/facilities/penthouse/penthouseFramework.js @@ -158,7 +158,7 @@ App.Entity.Facilities.PenthouseJobs = { Fucktoy: class extends App.Entity.Facilities.Job { checkRequirements(slave) { let r = super.checkRequirements(slave); - if (V.policies.gumjobFetishism === 1 && slave.teeth != "removable") { + if ((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth != "removable") { r.push(`${slave.slaveName} does not have removable teeth and can't give gumjobs.`); } return r; diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js index 3e5d959bdaf..56ccd2c45a5 100644 --- a/src/js/slaveCostJS.js +++ b/src/js/slaveCostJS.js @@ -261,7 +261,7 @@ globalThis.BeautyArray = (function() { function calcTeethBeauty(slave) { switch (slave.teeth) { case "crooked": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(50)); } else { @@ -269,12 +269,12 @@ globalThis.BeautyArray = (function() { } break; case "gapped": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(50)); } break; case "fang": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(100)); } else { @@ -286,12 +286,12 @@ globalThis.BeautyArray = (function() { } break; case "straightening braces": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1){ adjustBeauty("Teeth: Gumjob Fetishism", -(100)); } break; case "cosmetic braces": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(100)); } else if (slave.visualAge > 14 && slave.visualAge < 18) { @@ -299,7 +299,7 @@ globalThis.BeautyArray = (function() { } break; case "removable": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", (15)); } else { @@ -307,22 +307,22 @@ globalThis.BeautyArray = (function() { } break; case "pointy": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(100)); } break; case "fangs": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(100)); } break; case "baby": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(50)); } break; case "mixed": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(50)); } else { @@ -330,7 +330,7 @@ globalThis.BeautyArray = (function() { } break; case "normal": - if(V.policies.gumjobFetishism) { + if(V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) { adjustBeauty("Teeth: Gumjob Fetishism", -(50)); } break; diff --git a/src/npc/children/longChildDescription.js b/src/npc/children/longChildDescription.js index ceb2fa26654..1cf071d575f 100644 --- a/src/npc/children/longChildDescription.js +++ b/src/npc/children/longChildDescription.js @@ -3944,7 +3944,7 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event r += `${He} is in the process of replacing ${his} baby teeth. `; } } - if(V.policies.gumjobFetishism === 1 && child.teeth !== "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && child.teeth !== "removable") { r += `${His} teeth have not yet been removed and replaced with high-quality dentures.`; } diff --git a/src/npc/descriptions/mouth.js b/src/npc/descriptions/mouth.js index f10234b8e9f..9962e492ba6 100644 --- a/src/npc/descriptions/mouth.js +++ b/src/npc/descriptions/mouth.js @@ -130,7 +130,7 @@ App.Desc.mouth = function(slave) { r.push(`${He} is in the process of replacing ${his} baby teeth.`); } } - if(V.policies.gumjobFetishism === 1 && slave.teeth !== "removable") { + if((V.policies.gumjobFetishism === 1 || V.policies.gumjobFetishismSMR === 1) && slave.teeth !== "removable") { r.push(`${His} teeth have not yet been removed and replaced with high-quality dentures.`); } } diff --git a/src/npc/generate/lawCompliance.js b/src/npc/generate/lawCompliance.js index ffa1d826310..c99f2830c36 100644 --- a/src/npc/generate/lawCompliance.js +++ b/src/npc/generate/lawCompliance.js @@ -40,8 +40,8 @@ App.Desc.lawCompliance = function(slave, market = 0) { if (V.arcologies[0].FSDegradationistSMR === 1) { r.push(FSDegradationistSMR()); } - if (V.policies.gumjobFetishism === 1) { - r.push(gumjobFetishism()); + if (V.policies.gumjobFetishismSMR === 1) { + r.push(gumjobFetishismSMR()); } if (V.arcologies[0].FSPetiteAdmirationSMR === 1) { r.push(FSPetiteAdmirationSMR()); @@ -304,7 +304,7 @@ App.Desc.lawCompliance = function(slave, market = 0) { return `${His} current owners <span class="gold">brutalized ${him}</span> before putting ${him} on sale, using clever methods to produce agony without seriously damaging ${his} health.`; } - function gumjobFetishism() { + function gumjobFetishismSMR() { slave.teeth = "removable"; if(slave.devotion <= 50) { slave.trust -= 10; -- GitLab