diff --git a/devTools/types/FC/gameState.d.ts b/devTools/types/FC/gameState.d.ts index 748bce5e5d823197620ee8a2d6a21eae3fea1dad..7226eeb1442ceba8177858fd7c32d68225308b7f 100644 --- a/devTools/types/FC/gameState.d.ts +++ b/devTools/types/FC/gameState.d.ts @@ -34,7 +34,7 @@ declare namespace FC { ID?: number; FS: { name: string; - race?: FC.Race; + race?: FC.Race; adopted?: number; } /** @@ -103,7 +103,6 @@ declare namespace FC { interface TemporaryVariablesInTheGameState { gameover?: string; sortQuickList?: string; - slaveAfterRA?: SlaveState; /** @deprecated */ returnTo: string; diff --git a/js/rulesAssistant/conditionEvaluation.js b/js/rulesAssistant/conditionEvaluation.js index 3b4e493d3be02e445383bb638640abe472965337..c2c2afca4d6ece627ba74ed9480857c2667875c4 100644 --- a/js/rulesAssistant/conditionEvaluation.js +++ b/js/rulesAssistant/conditionEvaluation.js @@ -257,7 +257,7 @@ App.RA.Activation.populateGetters = function() { }); gm.addBoolean("isunmodded", { name: "Is Unmodded?", description: "If the slave is (relatively) unmodded.", - val: c => SlaveStatsChecker.isModded(c.slave) + val: c => SlaveStatsChecker.isUnmodded(c.slave) }); gm.addBoolean("canmove", { name: "Can Move?", description: "Can the slave move at all?", diff --git a/src/data/backwardsCompatibility/backwardsCompatibility.js b/src/data/backwardsCompatibility/backwardsCompatibility.js index d661272f9ebc9389193d576fd44f3db9c3b56848..8daf86d9e8cf24d7956123b175692927de7cb00d 100644 --- a/src/data/backwardsCompatibility/backwardsCompatibility.js +++ b/src/data/backwardsCompatibility/backwardsCompatibility.js @@ -141,7 +141,7 @@ App.Update.globalVariables = function(node) { if (V.hostageAnnounced && !V.slaves.find(s => s.origin.includes("You were acquainted with $him before you were an arcology owner") && s.newGamePlus === 0)) { V.rival.hostageState = 1; } - V.rival.hostageState = V.rival.hostageState || 0; + V.rival.hostageState = V.rival.hostageState || 0; V.rival.state = V.rival.state || 0; V.rival.prosperity = V.rival.prosperity || 0; @@ -1459,7 +1459,6 @@ App.Update.slaveIndices = function(node) { App.Update.slaveRecords = function(node) { const detachedSlaves = [ V.hostage, - V.slaveAfterRA, V.boomerangSlave, V.traitor, V.shelterSlave diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js index f2dc91c5624554929312c3bf835cb573c66e2dd7..33a654b76494797f3f4f1b537c3019f1387c3d0d 100644 --- a/src/endWeek/reports/penthouseReport.js +++ b/src/endWeek/reports/penthouseReport.js @@ -518,6 +518,19 @@ App.EndWeek.penthouseReport = function() { App.Events.addNode(el, r, "div", "indent"); return el; + /** + * Gives a back a clone with RA applied to it. The original is not modified. + * Call and then check potential change against it to see if the RA would revert it. + * + * @param {FC.SlaveState} slave + * @returns {FC.SlaveState} + */ + function slaveAfterRA(slave) { + const after = clone(slave); + DefaultRules(after); + return after; + } + function piercingCheck() { let piercingForbidden = 0; if (slave.piercing.ear.weight === 0 && slave.earShape !== "none") { @@ -526,8 +539,7 @@ App.EndWeek.penthouseReport = function() { } else { slave.piercing.ear.weight = 1; } - RulesDeconfliction(slave); - if (slave.piercing.ear.weight !== V.slaveAfterRA.piercing.ear.weight) { + if (slave.piercing.ear.weight !== slaveAfterRA(slave).piercing.ear.weight) { piercingForbidden = 1; slave.piercing.ear.weight = 0; } else { @@ -546,8 +558,7 @@ App.EndWeek.penthouseReport = function() { } else { slave.piercing.nose.weight = 1; } - RulesDeconfliction(slave); - if (slave.piercing.nose.weight !== V.slaveAfterRA.piercing.nose.weight) { + if (slave.piercing.nose.weight !== slaveAfterRA(slave).piercing.nose.weight) { piercingForbidden = 1; slave.piercing.nose.weight = 0; } else { @@ -566,8 +577,7 @@ App.EndWeek.penthouseReport = function() { } else { slave.piercing.eyebrow.weight = 1; } - RulesDeconfliction(slave); - if (slave.piercing.eyebrow.weight !== V.slaveAfterRA.piercing.eyebrow.weight) { + if (slave.piercing.eyebrow.weight !== slaveAfterRA(slave).piercing.eyebrow.weight) { piercingForbidden = 1; slave.piercing.eyebrow.weight = 0; } else { @@ -586,8 +596,7 @@ App.EndWeek.penthouseReport = function() { } else { slave.piercing.lips.weight = 1; } - RulesDeconfliction(slave); - if (slave.piercing.lips.weight !== V.slaveAfterRA.piercing.lips.weight) { + if (slave.piercing.lips.weight !== slaveAfterRA(slave).piercing.lips.weight) { piercingForbidden = 1; slave.piercing.lips.weight = 0; } else { @@ -606,8 +615,7 @@ App.EndWeek.penthouseReport = function() { } else { slave.piercing.navel.weight = 1; } - RulesDeconfliction(slave); - if (slave.piercing.navel.weight !== V.slaveAfterRA.piercing.navel.weight) { + if (slave.piercing.navel.weight !== slaveAfterRA(slave).piercing.navel.weight) { piercingForbidden = 1; slave.piercing.navel.weight = 0; } else { diff --git a/src/endWeek/saClothes.js b/src/endWeek/saClothes.js index edaca0092b6e0e7f584412eddd16181b1f7389d5..1a1c9d315334dad028f42102343a933c030f3235 100644 --- a/src/endWeek/saClothes.js +++ b/src/endWeek/saClothes.js @@ -670,7 +670,7 @@ App.SlaveAssignment.clothes = function saClothes(slave) { } else if (slave.bellyPreg >= 1500) { r.push(`The tight corseting has <span class="orange">caused ${him} to miscarry,</span> which <span class="health dec">damages ${his} health.</span>`); healthDamage(slave, 20); - if (lastPregRule(slave, V.defaultRules)) { + if (rulesDemandContraceptives(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; @@ -1105,7 +1105,7 @@ App.SlaveAssignment.clothes = function saClothes(slave) { if (jsRandom(1, 100) > 50) { r.push(`The dildo penetrating ${his} womb <span class="orange">caused ${him} to miscarry,</span> which <span class="health dec">damages ${his} health.</span>`); healthDamage(slave, 20); - if (lastPregRule(slave, V.defaultRules)) { + if (rulesDemandContraceptives(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; diff --git a/src/endWeek/saDrugs.js b/src/endWeek/saDrugs.js index 4d318157ab68b5454414d7fafca66d7f7fa3d7be..6ff47053c6fd702764fbeed5c88a5fc7879ec440 100644 --- a/src/endWeek/saDrugs.js +++ b/src/endWeek/saDrugs.js @@ -1572,7 +1572,7 @@ App.SlaveAssignment.drugs = function saDrugs(slave) { healthDamage(slave, (slave.preg + slave.pregType - slave.bellySag)); if (slave.health.condition < -90) { r += ` ${His} critically poor health <span class="orange">caused ${him} to miscarry.</span>`; - if (lastPregRule(slave, V.defaultRules)) { + if (rulesDemandContraceptives(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; diff --git a/src/endWeek/saLongTermEffects.js b/src/endWeek/saLongTermEffects.js index 4887fe53fe2b55f68fa093d19e8f82724c6b7211..04b70afe184d7369f03873bc0bcf9eb52ac21b0a 100644 --- a/src/endWeek/saLongTermEffects.js +++ b/src/endWeek/saLongTermEffects.js @@ -2368,7 +2368,7 @@ App.SlaveAssignment.longTermEffects = function saLongTermEffects(slave) { miscarriage = 1; } else { r.push(`${His} overwhelmed body has <span class="miscarriage">forced ${him} to miscarry,</span> possibly saving ${his} life.`); - slave.preg = (lastPregRule(slave, V.defaultRules)) ? -1 : 0; + slave.preg = rulesDemandContraceptives(slave, V.defaultRules) ? -1 : 0; if (slave.fuckdoll === 0 && slave.fetish !== "mindbroken") { if (slave.sexualFlaw === "breeder") { r.push(`${He} is <span class="devotion dec">filled with violent, all-consuming hatred</span> at ${himself} for failing to carry to term and you for allowing this to happen.`); diff --git a/src/facilities/surgery/remoteSurgery.js b/src/facilities/surgery/remoteSurgery.js index a6b6cde22d1fcb3eb289ec9468022a0d7ee39656..eff295b49c18c09f910cd3111e6f1ecb9905cf6d 100644 --- a/src/facilities/surgery/remoteSurgery.js +++ b/src/facilities/surgery/remoteSurgery.js @@ -29,20 +29,9 @@ App.UI.SlaveInteract.remoteSurgery = function(slave) { App.UI.DOM.appendNewElement("p", el, `${His} indenture forbids elective surgery`, ["yellow", "note"]); } - const tabBar = new App.UI.Tabs.TabBar("RemoteSurgery"); - const f = new DocumentFragment(); - App.Events.drawEventArt(f, slave); - tabBar.customNode = f; - - tabBar.addTab("Hair and Face", "hairAndFace", App.UI.surgeryPassageHairAndFace(slave, refresh)); - tabBar.addTab("Upper", "upper", App.UI.surgeryPassageUpper(slave, refresh)); - tabBar.addTab("Lower", "lower", App.UI.surgeryPassageLower(slave, refresh)); - tabBar.addTab("Structural", "structural", App.UI.surgeryPassageStructural(slave, refresh)); - tabBar.addTab("Exotic", "exotic", App.UI.surgeryPassageExotic(slave, refresh)); - if (V.seeExtreme) { - tabBar.addTab("Extreme", "extreme", App.UI.surgeryPassageExtreme(slave, refresh)); - } - el.append(tabBar.render()); + const tabsDiv = document.createElement("div"); + tabsDiv.append(renderTabs()); + el.append(tabsDiv); return el; @@ -69,8 +58,29 @@ App.UI.SlaveInteract.remoteSurgery = function(slave) { return r; } + /** + * @returns {DocumentFragment} + */ + function renderTabs() { + const tabBar = new App.UI.Tabs.TabBar("RemoteSurgery"); + const f = new DocumentFragment(); + App.Events.drawEventArt(f, slave); + tabBar.customNode = f; + + tabBar.addTab("Hair and Face", "hairAndFace", App.UI.surgeryPassageHairAndFace(slave, refresh)); + tabBar.addTab("Upper", "upper", App.UI.surgeryPassageUpper(slave, refresh)); + tabBar.addTab("Lower", "lower", App.UI.surgeryPassageLower(slave, refresh)); + tabBar.addTab("Structural", "structural", App.UI.surgeryPassageStructural(slave, refresh)); + tabBar.addTab("Exotic", "exotic", App.UI.surgeryPassageExotic(slave, refresh)); + if (V.seeExtreme) { + tabBar.addTab("Extreme", "extreme", App.UI.surgeryPassageExtreme(slave, refresh)); + } + return tabBar.render(); + } + function refresh() { $(introP).empty(); App.Events.addNode(introP, intro()); + App.UI.DOM.replace(tabsDiv, renderTabs()); } }; diff --git a/src/facilities/surgery/surgeryPassageExotic.js b/src/facilities/surgery/surgeryPassageExotic.js index 2d4f38eb683fbbbf7f46992cf66d3884366401f5..a2f853ad513d1ee847d05fc7f5f68477edcc51f7 100644 --- a/src/facilities/surgery/surgeryPassageExotic.js +++ b/src/facilities/surgery/surgeryPassageExotic.js @@ -1,12 +1,12 @@ /** * UI for performing surgery. Refreshes without refreshing the passage. * @param {App.Entity.SlaveState} slave - * @param {()=>void} refreshParent + * @param {()=>void} refresh * @param {boolean} [cheat=false] * @returns {HTMLElement} */ -App.UI.surgeryPassageExotic = function(slave, refreshParent, cheat = false) { +App.UI.surgeryPassageExotic = function(slave, refresh, cheat = false) { const container = document.createElement("span"); container.append(content()); return container; @@ -253,11 +253,5 @@ App.UI.surgeryPassageExotic = function(slave, refreshParent, cheat = false) { App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray), "choices"); return el; } - - function refresh() { - jQuery(container).empty().append(content()); - App.Events.refreshEventArt(slave); - refreshParent(); - } } }; diff --git a/src/facilities/surgery/surgeryPassageExtreme.js b/src/facilities/surgery/surgeryPassageExtreme.js index 899c19869bf118d3c0f9ded6b0c4e74da6c53a79..fbee2aeb4083f48b16ebe8a500d5ef91f1d117e9 100644 --- a/src/facilities/surgery/surgeryPassageExtreme.js +++ b/src/facilities/surgery/surgeryPassageExtreme.js @@ -1,11 +1,11 @@ /** * UI for performing surgery. Refreshes without refreshing the passage. * @param {App.Entity.SlaveState} slave - * @param {()=>void} refreshParent + * @param {()=>void} refresh * @param {boolean} [cheat=false] * @returns {HTMLElement} */ -App.UI.surgeryPassageExtreme = function(slave, refreshParent, cheat = false) { +App.UI.surgeryPassageExtreme = function(slave, refresh, cheat = false) { const container = document.createElement("span"); container.append(content()); return container; @@ -66,10 +66,4 @@ App.UI.surgeryPassageExtreme = function(slave, refreshParent, cheat = false) { return el; } } - - function refresh() { - jQuery(container).empty().append(content()); - App.Events.refreshEventArt(slave); - refreshParent(); - } }; diff --git a/src/facilities/surgery/surgeryPassageFaceAndHair.js b/src/facilities/surgery/surgeryPassageFaceAndHair.js index ffe425dfae92be8ac31495c5557e25616daad15c..b5cd4822cb6808f556e277446c6b2fee1187f64e 100644 --- a/src/facilities/surgery/surgeryPassageFaceAndHair.js +++ b/src/facilities/surgery/surgeryPassageFaceAndHair.js @@ -1,12 +1,12 @@ /** * UI for performing surgery. Refreshes without refreshing the passage. * @param {App.Entity.SlaveState} slave - * @param {function():void} refreshParent + * @param {function():void} refresh * @param {boolean} [cheat=false] * @returns {HTMLElement} */ -App.UI.surgeryPassageHairAndFace = function(slave, refreshParent, cheat = false) { +App.UI.surgeryPassageHairAndFace = function(slave, refresh, cheat = false) { const container = document.createElement("span"); container.append(content()); return container; @@ -846,10 +846,4 @@ App.UI.surgeryPassageHairAndFace = function(slave, refreshParent, cheat = false) return el; } } - - function refresh() { - jQuery(container).empty().append(content()); - App.Events.refreshEventArt(slave); - refreshParent(); - } }; diff --git a/src/facilities/surgery/surgeryPassageLower.js b/src/facilities/surgery/surgeryPassageLower.js index 84266906226a03e80093651930429f702a7c710e..7250ecafaa210c6fc98b8588c94d753ecce2ad48 100644 --- a/src/facilities/surgery/surgeryPassageLower.js +++ b/src/facilities/surgery/surgeryPassageLower.js @@ -1,11 +1,11 @@ /** * UI for performing surgery. Refreshes without refreshing the passage. * @param {App.Entity.SlaveState} slave - * @param {()=>void} refreshParent + * @param {()=>void} refresh * @param {boolean} [cheat=false] * @returns {HTMLElement} */ -App.UI.surgeryPassageLower = function(slave, refreshParent, cheat = false) { +App.UI.surgeryPassageLower = function(slave, refresh, cheat = false) { const container = document.createElement("span"); container.append(content()); return container; @@ -664,10 +664,4 @@ App.UI.surgeryPassageLower = function(slave, refreshParent, cheat = false) { return el; } } - - function refresh() { - jQuery(container).empty().append(content()); - App.Events.refreshEventArt(slave); - refreshParent(); - } }; diff --git a/src/facilities/surgery/surgeryPassageStructural.js b/src/facilities/surgery/surgeryPassageStructural.js index 9abd966edd24f1441a85d66d0b0f660077a5f52b..18e97fdfbe237501650fc9af8b93623112ae049c 100644 --- a/src/facilities/surgery/surgeryPassageStructural.js +++ b/src/facilities/surgery/surgeryPassageStructural.js @@ -1,12 +1,12 @@ /** * UI for performing surgery. Refreshes without refreshing the passage. * @param {App.Entity.SlaveState} slave - * @param {function():void} refreshParent + * @param {function():void} refresh * @param {boolean} [cheat=false] * @returns {HTMLElement} */ -App.UI.surgeryPassageStructural = function(slave, refreshParent, cheat = false) { +App.UI.surgeryPassageStructural = function(slave, refresh, cheat = false) { const container = document.createElement("span"); container.append(content()); return container; @@ -422,10 +422,4 @@ App.UI.surgeryPassageStructural = function(slave, refreshParent, cheat = false) return el; } } - - function refresh() { - jQuery(container).empty().append(content()); - App.Events.refreshEventArt(slave); - refreshParent(); - } }; diff --git a/src/facilities/surgery/surgeryPassageUpper.js b/src/facilities/surgery/surgeryPassageUpper.js index 6f8bbec972dc53a5e821306d247661d8c6177033..811c0249da2e76a40fab53a3ada312314ba23a07 100644 --- a/src/facilities/surgery/surgeryPassageUpper.js +++ b/src/facilities/surgery/surgeryPassageUpper.js @@ -1,11 +1,11 @@ /** * UI for performing surgery. Refreshes without refreshing the passage. * @param {App.Entity.SlaveState} slave - * @param {()=>void} refreshParent + * @param {()=>void} refresh * @param {boolean} [cheat=false] * @returns {HTMLElement} */ -App.UI.surgeryPassageUpper = function(slave, refreshParent, cheat = false) { +App.UI.surgeryPassageUpper = function(slave, refresh, cheat = false) { const container = document.createElement("span"); container.append(content()); return container; @@ -564,10 +564,4 @@ App.UI.surgeryPassageUpper = function(slave, refreshParent, cheat = false) { return el; } } - - function refresh() { - jQuery(container).empty().append(content()); - App.Events.refreshEventArt(slave); - refreshParent(); - } }; diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 92f422a9a0f3d135a5e5ba67d946e034d70d5f80..5a6583e19a1b76a369589b2597495138eea550f9 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1137,7 +1137,7 @@ globalThis.DefaultRules = (function() { } } - if (lastPregRule(slave, V.defaultRules)) { + if (rulesDemandContraceptives(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; @@ -1510,7 +1510,7 @@ globalThis.DefaultRules = (function() { break; case "appetite suppressors": - if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.weight > -95) { + if (V.arcologies[0].FSSlimnessEnthusiastResearch !== 1 || slave.weight <= -95) { flag = false; } break; @@ -1621,6 +1621,7 @@ globalThis.DefaultRules = (function() { } } else if (["restricted", "fattening"].includes(slave.diet)) { r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; + slave.diet = "healthy"; dietPills(slave); muscleRule(slave, rule); } else { @@ -1641,6 +1642,7 @@ globalThis.DefaultRules = (function() { } } else if (["restricted", "fattening"].includes(slave.diet)) { r += `<br>${slave.slaveName} is at the target weight, so ${his} diet has been normalized.`; + slave.diet = "healthy"; dietPills(slave); muscleRule(slave, rule); } else { @@ -1760,7 +1762,7 @@ globalThis.DefaultRules = (function() { 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.`; + r += `<br>${slave.slaveName} needs to lose weight, so ${he} will be given weight loss pills.`; } } } diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js index 2843267c2dd1ebbe454c10ba895d2ee5ae2c8178..a72cb6f6c69ab1757c1505142ac97f65d3818bd4 100644 --- a/src/js/birth/birth.js +++ b/src/js/birth/birth.js @@ -941,7 +941,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false, artRen } healthDamage(slave, 80); } else { - if (lastPregRule(slave, V.defaultRules)) { + if (rulesDemandContraceptives(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; @@ -2056,8 +2056,7 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false, artRen slave.preg = WombMaxPreg(slave); // now we use most advanced remained fetus as base. slave.pregSource = slave.womb[0].fatherID; // in such case it's good chance that there is different father also. } else { - const tmp = lastPregRule(slave, V.defaultRules); - if ((!assignmentVisible(slave)) && (tmp !== null)) { + if (!assignmentVisible(slave) && rulesDemandContraceptives(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; diff --git a/src/js/rulesAssistant.js b/src/js/rulesAssistant.js index 8c41de45b58d4b562c664f84536b179cd08893d6..66be45512f37b12852935668bed9da7d7b17b256 100644 --- a/src/js/rulesAssistant.js +++ b/src/js/rulesAssistant.js @@ -47,14 +47,21 @@ globalThis.hasEyeColorRule = function(slave, rules) { }; /** - * return if a rule is applied on a slave + * True, if the slave should be on contraceptives based on applied rules. + * * @param {App.Entity.SlaveState} slave * @param {FC.RA.Rule[]} rules * @returns {boolean} */ -globalThis.lastPregRule = function(slave, rules) { - return rules.some(rule => - ruleApplied(slave, rule) && rule.set.preg === -1); +globalThis.rulesDemandContraceptives = function(slave, rules) { + // iterate over rules backwards, as the last rule has the highest priority + for (let i = 0; i < rules.length; i++) { + const rule = rules[rules.length - i - 1]; + if (ruleApplied(slave, rule) && rule.set.preg != null) { + return rule.set.preg; + } + } + return false; }; /** @@ -98,6 +105,7 @@ globalThis.RAFacilityRemove = function(slave, rule) { r += `<br>${slave.slaveName} has been removed from ${facilityName} and has been assigned to ${rule.removalAssignment}.`; assignJob(slave, rule.removalAssignment); } + return r; }; /** @@ -162,7 +170,6 @@ App.RA.newRule = function() { ID: id, name: `Rule ${id}`, condition: emptyConditions(), - // TODO: rename properties in snake_case to camelCase? set: emptySetters() }; } @@ -262,6 +269,7 @@ App.RA.newRule = function() { preg: null, abortion: null, growth: emptyGrowth(), + // TODO: rename snake_case to camelCase? // eslint-disable-next-line camelcase hyper_drugs: 0, aphrodisiacs: null, @@ -357,21 +365,10 @@ App.RA.newRule = function() { */ globalThis.emptyDefaultRule = App.RA.newRule.rule; -/** - * Saves the slave, silently fires the RA, saves the slave's after-RA state, and then reverts the slave. - * Call and then check potential change against V.slaveAfterRA to see if the RA would revert it. - * @param {App.Entity.SlaveState} slave - */ -globalThis.RulesDeconfliction = function(slave) { - const before = clone(slave); - DefaultRules(slave); - V.slaveAfterRA = clone(slave); - slave = before; -}; /** * Creates RA target object used in rules for body properties - * @param {string} condition comparison condition. One of '==', '>=', '<=', '>', '<' + * @param {"=="|">="|"<="|">"|"<"} condition comparison condition. * @param {number} val target value * @returns {FC.RA.NumericTarget} */ diff --git a/src/npc/interaction/passage/abort.js b/src/npc/interaction/passage/abort.js index 9e47f9de3650530fa297ce3d4973e1bd1668c961..11727043ce376ba38594f95d3ae0c05eabc6d211 100644 --- a/src/npc/interaction/passage/abort.js +++ b/src/npc/interaction/passage/abort.js @@ -55,7 +55,7 @@ App.Interact.abort = function(slave) { cashX(forceNeg(V.modCost), "slaveMod", slave); } - slave.preg = (lastPregRule(slave, V.defaultRules)) ? -1 : 0; + slave.preg = rulesDemandContraceptives(slave, V.defaultRules) ? -1 : 0; TerminatePregnancy(slave); actX(slave, "abortions");