diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index cf7161a16602f3e0b2af5a75d23cafc232cb9e33..c3547e8a06287d5539dca82ff52508f2405036cf 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -16,9 +16,10 @@ window.DefaultRules = (function() { if (slave.useRulesAssistant === 0) { return r; } // exempted r = ""; ({he, him, his} = getPronouns(slave)); - let slaveReadOnly = createReadonlyProxy(slave); - let rule = runWithReadonlyProxy(()=>MergeRules(slaveReadOnly)); - if (Object.keys(rule).length === 0) { return r; } // no rules apply + const slaveReadOnly = createReadonlyProxy(slave); + const {rule, ruleIds} = runWithReadonlyProxy(()=>ProcessSlaveRules(slaveReadOnly)); + if (ruleIds.length === 0) { return r; } // no rules apply + slave.currentRules = ruleIds; AssignJobToSlave(slave, rule); if (slave.fuckdoll === 0) { @@ -80,12 +81,17 @@ window.DefaultRules = (function() { * @param {App.Entity.SlaveState} slave * @returns {map} */ - function MergeRules(slave) { + function ProcessSlaveRules(slave) { // merge all rules applying on a slave into one big rule /** @type {App.RA.Rule[]} */ const rules = V.defaultRules.filter((x) => ruleAppliesP(x.condition, slave)); - slave.currentRules = rules.map((x) => x.ID); - return mergeRules(rules.map((x) => ProcessAssignments(slave, Object.assign({}, x.set)))); + const ruleIds = [], assignments = []; + for(const rule of rules) + { + ruleIds.push(rule.ID); + assignments.push(ProcessAssignments(slave, Object.assign({}, rule.set))); + } + return {ruleIds, rule: mergeRules(assignments)}; } /**