diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 8443fa745d2952ee15f40a1d3013b6100c68c809..56da738728f10b29b4997d1ed7b022533c8fb455 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -18,9 +18,10 @@ window.DefaultRules = (function() { ({he, him, his} = getPronouns(slave)); const slaveReadOnly = createReadonlyProxy(slave); const {rule, ruleIds} = runWithReadonlyProxy(()=>ProcessSlaveRules(slaveReadOnly)); - slave.currentRules = ruleIds; if (ruleIds.length === 0) { return r; } // no rules apply + slave.currentRules = ruleIds; + AssignJobToSlave(slave, rule); if (slave.fuckdoll === 0) { ProcessClothing(slave, rule); @@ -36,6 +37,7 @@ window.DefaultRules = (function() { ProcessArmAccessory(slave, rule); ProcessLegAccessory(slave, rule); } + ProcessPit(slave,rule); ProcessBellyImplant(slave, rule); if (isFertile(slave) || slave.pregWeek < 0) { ProcessContraceptives(slave, rule); @@ -86,7 +88,8 @@ window.DefaultRules = (function() { /** @type {App.RA.Rule[]} */ const rules = V.defaultRules.filter((x) => ruleAppliesP(x.condition, slave)); const ruleIds = [], assignments = []; - for(const rule of rules) { + for(const rule of rules) + { ruleIds.push(rule.ID); assignments.push(ProcessAssignments(slave, Object.assign({}, rule.set))); } @@ -1333,12 +1336,12 @@ window.DefaultRules = (function() { } break; - case "psychostimulants": { + case "psychostimulants": let origIntel = V.genePool.find(s => s.ID === slave.ID).intelligence; if (!((slave.intelligence < 100) && (slave.intelligence < origIntel + 15))) { flag = false; } - } break; + break; case "breast injections": if (slave.boobs >= 48000) { @@ -1519,6 +1522,23 @@ window.DefaultRules = (function() { * @param {App.Entity.SlaveState} slave * @param {App.RA.RuleSetters} rule */ + function ProcessPit(slave,rule){ + if (rule.pitRules !== undefined && rule.pitRules !== null){ + if (V.pit > 0){ + + if (rule.pitRules==0){ + V.fighterIDs = V.fighterIDs.filter(e => e !== slave.ID); + r += `<br>${slave.slaveName} has been automatically unassigned from the pit.`; + }else{ + V.fighterIDs.push(slave.ID); + r += `<br>${slave.slaveName} has been automatically assigned to fight in the pit.`; + } + + } + + } + } + function ProcessDiet(slave, rule) { // Diet Setting if ((rule.diet !== undefined && rule.diet !== null) || rule.weight !== null) { @@ -2903,19 +2923,19 @@ window.DefaultRules = (function() { * @param {App.RA.RuleSetters} rule */ function ProcessLabel(slave, rule) { - // mass removal of old tags, variant from '*' mask. + //mass removal of old tags, variant from '*' mask. if (rule.removeLabel !== null && rule.removeLabel !== '' && rule.removeLabel === '*') { slave.custom.label = slave.custom.label.replace(/(?:\[.+\])+/, ""); r += `<br>All ${slave.slaveName}'s tags is removed.`; } - // mass removal of old tags, variant from GUI swith. + //mass removal of old tags, variant from GUI swith. if (rule.labelTagsClear === true) { slave.custom.label = slave.custom.label.replace(/(?:\[.+\])+/, ""); r += `<br>All ${slave.slaveName}'s tags is removed.`; } - // removing tags selected for removal. + //removing tags selected for removal. let tags = [], i; if (rule.removeLabel != null && rule.removeLabel !== '') { tags = rule.removeLabel.split("|"); @@ -2928,7 +2948,7 @@ window.DefaultRules = (function() { } } - // finally adding new tags. + //finally adding new tags. tags = []; if (rule.label != null && rule.label !== '') { tags = rule.label.split("|"); @@ -2945,13 +2965,14 @@ window.DefaultRules = (function() { const rxCheckEqual = /[^!=<>]=[^=<>]/gi; const compileCheck = function(code) { try { - // TODO: This should use a cached Function, which should be the same as below. + //TODO: This should use a cached Function, which should be the same as below. new Function(`return ${code}`); - } catch(e) { + } + catch(e) { return false; } return true; - }; + } window.RuleHasError = (rule) => rule.condition.function === "custom" &&(rule.condition.data.match(rxCheckEqual) || !compileCheck(rule.condition.data));