From 363b3e2bd710e704e12bea774966375bc7cd6bbc Mon Sep 17 00:00:00 2001
From: Vasileios Pasialiokis <whiterocket@outlook.com>
Date: Sun, 1 Jul 2018 17:17:15 +0300
Subject: [PATCH] deprecate checkautorulesactivate, use collars from setup
 variables

---
 src/init/setupVars.tw                     | 65 ++++++++++++++++++++---
 src/js/DefaultRules.tw                    | 10 ++--
 src/js/rulesAssistant.tw                  | 31 -----------
 src/js/rulesAssistantOptions.tw           | 20 +++----
 src/pregmod/newChildIntro.tw              |  1 -
 src/uncategorized/main.tw                 |  2 +-
 src/uncategorized/newSlaveIntro.tw        |  1 -
 src/uncategorized/rulesAssistantReport.tw |  1 -
 src/uncategorized/slaveInteract.tw        |  1 -
 src/utility/miscWidgets.tw                |  1 -
 10 files changed, 71 insertions(+), 62 deletions(-)

diff --git a/src/init/setupVars.tw b/src/init/setupVars.tw
index 3c3044ea416..80497be70b3 100644
--- a/src/init/setupVars.tw
+++ b/src/init/setupVars.tw
@@ -1514,12 +1514,65 @@ Then pick _namePool.random(), or display those names as possible choices, or do
 
 <<set setup.badNames = ["Ass Kisser", "Ass Licker", "Ass", "Assfucker", "Asshole", "Bitch", "Cocksucker", "Creep", "Cunt", "Despoiler", "Dick", "Dicksucker", "Dipshit", "Douchebag", "Dumbass", "DumbFuck", "Fucker", "Fuckface", "Fuckhead", "Jackass", "Jerk", "Prick", "Pussy", "Rapist", "Retard", "Ruiner", "Slave", "Slaver", "Slut", "Sodomite", "Traitor", "Trash", "Whore"]>>
 
-<<set setup.harshCollars = [{name: "Tight steel", value: "tight steel"}, {name: "Cruel retirement counter", value: "cruel retirement counter", fs: "seeage"}, {name: "Uncomfortable leather", value: "uncomfortable leather"}, {name: "Pregnancy biometrics", value: "preg biometrics"}, {name: "Shock punishment", value: "shock punishment"}, {name: "Dildo gag", value: "dildo gag"}, {name: "Massive dildo gag", value: "massive dildo gag", rs: "buyGag"}, {name: "Ball gag", value: "ball gag"}, {name: "Bit gag", value: "bit gag"}, {name: "Neck corset", value: "neck corset"}, {name: "Porcelain mask", value: "porcelain mask"}]>>
-<<set setup.shoes = [{name: "No default footwear setting", value: "no default setting"}, {name: "Barefoot", value: "none"}, {name: "Flats", value: "flats"}, {name: "Heels", value: "heels"}, {name: "Pumps", value: "pumps"}, {name: "Thigh boots", value: "boots"}, {name: "Painfully extreme heels", value: "extreme heels"}]>>
-<<set setup.bellyAccessories = [{name: "No default setting", value: "no default setting"}, {name: "None", value: "none"}, {name: "Tight corset", value: "a corset"}, {name: "Extreme corset", value: "an extreme corset"}, {name: "1st Trimester belly", value: "a small empathy belly", fs: "repopulation", rs: "boughtBelly"}, {name: "2nd Trimester belly", value: "a medium empathy belly", fs: "repopulation", rs: "boughtBelly"}, {name: "3rd Trimester belly", value: "a large empathy belly", fs: "repopulation", rs: "boughtBelly"}, {name: "3rd Trimester twins belly", value: "a huge empathy belly", fs: "repopulation", rs: "boughtBelly"}]>>
-<<set setup.vaginalAccessories = [{name: "No default setting", value: "no default setting"}, {name: "None", value: "none"}, {name: "Dildo", value: "dildo"}, {name: "Long dildo", value: "long dildo", rs: "buyBigDildos"}, {name: "Large dildo", value: "large dildo"}, {name: "Long, large dildo", value: "long, large dildo", rs: "buyBigDildos"}, {name: "Huge dildo", value: "huge dildo"}, {name: "Long, huge dildo", value: "long, huge dildo", rs: "buyBigDildos"}, {name: "Chastity belt", value: "chastity belt"}, {name: "Anal chastity belt", value: "anal chastity"}, {name: "Combined chastity belt", value: "combined chastity"}]>>
-<<set setup.dickAccessories = [{name: "No default setting", value: "no default setting"}, {name: "None", value: "none"}, {name: "Chastity cage", value: "chastity"}, {name: "Anal chastity", value: "anal chastity"}, {name: "Combined chastity", value: "combined chastity"}]>>
-<<set setup.buttplugs = [{name: "No default setting", value: "no default setting"}, {name: "None", value: "none"}, {name: "Standard plug", value: "plug"}, {name: "Long plug", value: "long plug", rs: "buyBigPlugs"}, {name: "Large plug", value: "large plug"}, {name: "Long, large plug", value: "long, large plug", rs: "buyBigPlugs"}, {name: "Huge plug", value: "huge plug"}, {name: "Long, huge plug", value: "long, huge plug", rs: "buyBigPlugs"}]>>
+<<set setup.harshCollars = [
+	{name: "Tight steel", value: "tight steel"},
+	{name: "Cruel retirement counter", value: "cruel retirement counter", fs: "seeage"},
+	{name: "Uncomfortable leather", value: "uncomfortable leather"},
+	{name: "Pregnancy biometrics", value: "preg biometrics"},
+	{name: "Shock punishment", value: "shock punishment"},
+	{name: "Dildo gag", value: "dildo gag"},
+	{name: "Massive dildo gag", value: "massive dildo gag", rs: "buyGag"},
+	{name: "Ball gag", value: "ball gag"},
+	{name: "Bit gag", value: "bit gag"},
+	{name: "Neck corset", value: "neck corset"},
+	{name: "Porcelain mask", value: "porcelain mask"}]>>
+
+<<set setup.shoes = [
+	{name: "No default footwear setting", value: "no default setting"},
+	{name: "Barefoot", value: "none"},
+	{name: "Flats", value: "flats"},
+	{name: "Heels", value: "heels"},
+	{name: "Pumps", value: "pumps"},
+	{name: "Thigh boots", value: "boots"},
+	{name: "Painfully extreme heels", value: "extreme heels"}]>>
+
+<<set setup.bellyAccessories = [
+	{name: "No default setting", value: "no default setting"},
+	{name: "None", value: "none"},
+	{name: "Tight corset", value: "a corset"},
+	{name: "Extreme corset", value: "an extreme corset"},
+	{name: "1st Trimester belly", value: "a small empathy belly", fs: "repopulation", rs: "boughtBelly"},
+	{name: "2nd Trimester belly", value: "a medium empathy belly", fs: "repopulation", rs: "boughtBelly"},
+	{name: "3rd Trimester belly", value: "a large empathy belly", fs: "repopulation", rs: "boughtBelly"},
+	{name: "3rd Trimester twins belly", value: "a huge empathy belly", fs: "repopulation", rs: "boughtBelly"}]>>
+
+<<set setup.vaginalAccessories = [
+	{name: "No default setting", value: "no default setting"},
+	{name: "None", value: "none"},
+	{name: "Dildo", value: "dildo"},
+	{name: "Long dildo", value: "long dildo", rs: "buyBigDildos"},
+	{name: "Large dildo", value: "large dildo"},
+	{name: "Long, large dildo", value: "long, large dildo", rs: "buyBigDildos"},
+	{name: "Huge dildo", value: "huge dildo"},
+	{name: "Long, huge dildo", value: "long, huge dildo", rs: "buyBigDildos"},
+	{name: "Chastity belt", value: "chastity belt"},
+	{name: "Anal chastity belt", value: "anal chastity"},
+	{name: "Combined chastity belt", value: "combined chastity"}]>>
+
+<<set setup.dickAccessories = [
+	{name: "No default setting", value: "no default setting"},
+	{name: "None", value: "none"},
+	{name: "Chastity cage", value: "chastity"},
+	{name: "Anal chastity", value: "anal chastity"}, {name: "Combined chastity", value: "combined chastity"}]>>
+
+<<set setup.buttplugs = [
+	{name: "No default setting", value: "no default setting"},
+	{name: "None", value: "none"},
+	{name: "Standard plug", value: "plug"},
+	{name: "Long plug", value: "long plug", rs: "buyBigPlugs"},
+	{name: "Large plug", value: "large plug"},
+	{name: "Long, large plug", value: "long, large plug", rs: "buyBigPlugs"},
+	{name: "Huge plug", value: "huge plug"}, {name: "Long, huge plug", value: "long, huge plug", rs: "buyBigPlugs"}]>>
 
 <<set setup.facilityCareers = ["be confined in the arcade", "be confined in the cellblock", "be the Attendant", "be the DJ", "be the Madam", "be the Milkmaid", "be the Nurse", "be the Schoolteacher", "be the Stewardess", "be the Wardeness", "be your Concubine", "get treatment in the clinic", "learn in the schoolroom", "live with your Head Girl", "rest in the spa", "serve in the club", "serve in the master suite", "work as a servant", "work in the brothel", "work in the dairy"]>>
 
diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.tw
index d10e9313752..de4842da3e7 100644
--- a/src/js/DefaultRules.tw
+++ b/src/js/DefaultRules.tw
@@ -7,10 +7,11 @@ window.DefaultRules = (function() {
 	let r;
 
 	function DefaultRules(slave) {
+		if (slave.useRulesAssistant === 0) return r; //exempted
+		
 		V = State.variables;
 		r = "";
 		let rule = MergeRules(slave);
-
 		if (Object.keys(rule).length === 0) return r; // no rules apply
 
 		AssignJobToSlave(slave, rule);
@@ -57,10 +58,9 @@ window.DefaultRules = (function() {
 
 	function MergeRules(slave) {
 		// merge all rules applying on a slave into one big rule
-		const rules = V.defaultRules
-			.filter(rule => ruleAppliesP(rule.condition, slave))
-			.map(rule => ProcessAssignments(slave, Object.assign({}, rule.set)));
-		return mergeRules(rules);
+		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))));
 	}
 
 	function ProcessAssignments(slave, rule) {
diff --git a/src/js/rulesAssistant.tw b/src/js/rulesAssistant.tw
index 2b3d71b9414..90e368fc2ce 100644
--- a/src/js/rulesAssistant.tw
+++ b/src/js/rulesAssistant.tw
@@ -50,36 +50,6 @@ window.ruleApplied = function(slave, rule) {
 	return slave.currentRules.includes(rule.ID);
 };
 
-// checks if any rules apply on the slave, and applies them
-window.CheckAutoRulesActivate = function CheckAutoRulesActivate(slave) {
-	const V = State.variables;
-	let r = "";
-
-	V.defaultRules.forEach(rule => {
-		let applies = ruleAppliesP(rule.condition, slave);
-		if (applies) {
-			if (!ruleApplied(slave, rule)) {
-				slave.currentRules.push(rule.ID);
-				r += `<br><span class="tan">Rule "${rule.name}" now applies to ${slave.slaveName}, who is assigned to ${slave.assignment}.</span>\n`;
-			}
-		} else if (ruleApplied(slave, rule))
-			r += RARemoveRule(slave, rule);
-	});
-	return r;
-};
-
-// remove the RA rule from the slave
-window.RARemoveRule = function RARemoveRule(slave, rule) {
-	let r = "";
-	const index = slave.currentRules.findIndex(rule => rule.ID === rule);
-	if (index === -1) return r;
-	const slave_rule = slave.currentRules[index];
-	slave.currentRules.splice(index, 1);
-	r += `<br><span class="tan">Rule ${rule.ID} (${rule.name}) no longer applies to ${slave.slaveName}, who is assignmed to ${slave.assignment}</span>`;
-	r += RAFacilityRemove(slave, slave_rule.set);
-	return r;
-};
-
 // remove slave from the facility described by the rule
 window.RAFacilityRemove = function RAFacilityRemove(slave, rule) {
 	const V = State.variables;
@@ -327,7 +297,6 @@ window.emptyDefaultRule = function emptyDefaultRule() {
 // Call and then check potential change against $slaveAfterRA to see if the RA would revert it.
 window.RulesDeconfliction = function RulesDeconfliction(slave) {
 	const before = clone(slave);
-	CheckAutoRulesActivate(slave);
 	DefaultRules(slave);
 	V.slaveAfterRA = clone(slave);
 	slave = before;
diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.tw
index e0934caaa6b..6f2b561882f 100644
--- a/src/js/rulesAssistantOptions.tw
+++ b/src/js/rulesAssistantOptions.tw
@@ -1140,20 +1140,12 @@ window.rulesAssistantOptions = (function() {
 			const nice = new ListSubSection(this, "Nice", ncollars);
 			this.appendChild(nice);
 
-			const hcollars = [
-				["Tight steel", "tight steel"],
-				["Uncomfortable leather", "uncomfortable leather"],
-				["Pregnancy biometrics", "preg biometrics"],
-				["Shock punishment", "shock punishment"],
-				["Dildo gag", "dildo gag"],
-				["Ball gag", "ball gag"],
-				["Bit gag", "bit gag"],
-				["Neck corset", "neck corset"],
-			];
-			if (V.seeAge !== 0)
-				hcollars.push(["Cruel retirement counter", "cruel retirement counter"]);
-			if (V.toysBoughtGags === 1)
-				hcollars.push(["Massive dildo gag", "massive dildo gag"]);
+			const hcollars = [];
+			setup.harshCollars.forEach(item => {
+				if (collar.fs === "seeage" && V.seeAge === 0) return;
+				else if (collar.rs === "buyGag" && V.toysBoughtGags !== 1) return;
+				else hcollars.push([item.name, item.value]);
+			});
 			const harsh = new ListSubSection(this, "Harsh", hcollars);
 			this.appendChild(harsh);
 
diff --git a/src/pregmod/newChildIntro.tw b/src/pregmod/newChildIntro.tw
index ac8c44ebe5b..c2e4d79e1be 100644
--- a/src/pregmod/newChildIntro.tw
+++ b/src/pregmod/newChildIntro.tw
@@ -603,7 +603,6 @@ You slowly strip down, gauging her reactions to your show, until you are fully n
 	<span id="rules">
 	<<link "Apply default rules">>
 	<<replace "#rules">>
-		<<= CheckAutoRulesActivate($activeSlave)>>
 		<<= DefaultRules($activeSlave)>>
 	<</replace>>
 	<</link>>
diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw
index 29742ce6149..ff8988ca941 100644
--- a/src/uncategorized/main.tw
+++ b/src/uncategorized/main.tw
@@ -112,7 +112,7 @@ __''MAIN MENU''__&nbsp;&nbsp;&nbsp;&nbsp;//[[Summary Options]]//
 	<<else>>
 		| //<<link "Stop applying Rules Assistant at week end">><<set $rulesAssistantAuto = 0>><<goto "Main">><</link>>//
 	<</if>>
-	| //<<link "Re-apply Rules Assistant now (this will only check slaves in the Penthouse)">><<for _i = 0;_i < _SL;_i++>><<if $slaves[_i].assignmentVisible == 1 && $slaves[_i].useRulesAssistant == 1>><<= CheckAutoRulesActivate($slaves[_i])>><<= DefaultRules($slaves[_i])>><</if>><</for>><<goto "Main">><</link>>//
+	| //<<link "Re-apply Rules Assistant now (this will only check slaves in the Penthouse)">><<for _i = 0;_i < _SL;_i++>><<if $slaves[_i].assignmentVisible == 1 && $slaves[_i].useRulesAssistant == 1>><<= DefaultRules($slaves[_i])>><</if>><</for>><<goto "Main">><</link>>//
 <</if>>
 
 <<if $useSlaveSummaryTabs == 1>>
diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw
index e8b77164972..64a76c1d3fb 100644
--- a/src/uncategorized/newSlaveIntro.tw
+++ b/src/uncategorized/newSlaveIntro.tw
@@ -531,7 +531,6 @@ The legalities completed, ''__@@.pink;<<SlaveFullName $activeSlave>>@@__'' <<if
 	<span id="rules">
 	<<link "Apply default rules">>
 		<<replace "#rules">>
-			<<= CheckAutoRulesActivate($activeSlave)>>
 			<<= DefaultRules($activeSlave)>>
 		<</replace>>
 	<</link>>
diff --git a/src/uncategorized/rulesAssistantReport.tw b/src/uncategorized/rulesAssistantReport.tw
index cc9b7ec2646..541c6cb80d2 100644
--- a/src/uncategorized/rulesAssistantReport.tw
+++ b/src/uncategorized/rulesAssistantReport.tw
@@ -4,7 +4,6 @@
 
 <<for $i = 0; $i < _SL; $i++>>
 	<<if ($slaves[$i].useRulesAssistant == 1)>>
-		<<= CheckAutoRulesActivate($slaves[$i])>>
 		<<= DefaultRules($slaves[$i])>>
 	<</if>>
 <</for>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 84a0ba8f37c..0b9d366812e 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -392,7 +392,6 @@
 	<</if>>
 	<<link "//Apply rules//">>
 		<<silently>>
-		<<run CheckAutoRulesActivate($activeSlave)>>
 		<<run DefaultRules($activeSlave)>>
 		<</silently>>
 		<<goto "Slave Interact">>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index e634c816244..a6c87cf34b1 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -1636,7 +1636,6 @@
 <<if $universalRulesNewSlavesRA == 1>>
 <<if $rulesAssistantAuto != 0>>
 	<<silently>>
-	<<run CheckAutoRulesActivate($args[0])>>
 	<<run DefaultRules($args[0])>>
 	<</silently>>
 <</if>>
-- 
GitLab