diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index fc7288d1b90890c532ea7f94a508ef69171f005b..b30d6a50d7437588c04866f84fa997f7df4f94c4 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1961,33 +1961,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', - ]; + 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; - - function 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; - } - - for (const property of releaseProperties) { - if (processReleaseProp(property)) { - changed = true; } } - if (changed) { - r += `<br>${slave.slaveName}'s release rules have been set to: ${App.Utils.releaseSummaryLong(slave)}.`; - } + return changed; } } 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"; } };