diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.tw index 029db52dbd097f97120ad237350cb3289c97adc4..2b7898375cc748996444775ba45d740cbae7d5b7 100644 --- a/src/js/DefaultRules.tw +++ b/src/js/DefaultRules.tw @@ -1769,6 +1769,18 @@ window.DefaultRules = (function() { } } + if (rule.haircuts !== undefined && (rule.haircuts !== "no default setting")) { + if (slave.bald != 1) { + if (rule.haircuts === 1 && slave.haircuts !== 1) { + r += `<br>${slave.slaveName}'s hair will now be maintained at ${lengthToEitherUnit(slave.hLength)} long.`; + slave.haircuts = 1; + } else if (rule.haircuts === 0 && slave.haircuts !== 0) { + r += `<br>${slave.slaveName}'s hair length will no longer be maintained.`; + slave.haircuts = 0; + } + } + } + if (rule.pubicHColor !== undefined && (rule.pubicHColor !== "no default setting")) { if (slave.pubicHStyle != "bald" && slave.pubicHStyle != "hairless") { if ((slave.pubicHColor !== rule.pubicHColor)) { diff --git a/src/js/rulesAssistant.tw b/src/js/rulesAssistant.tw index 3e0d87f0bdf7b998eebed3f43bfeb22f68b3fe88..c7fcfe7abf3e4eace950ebf7b9140f69f8c5c81e 100644 --- a/src/js/rulesAssistant.tw +++ b/src/js/rulesAssistant.tw @@ -208,6 +208,7 @@ window.emptyDefaultRule = function emptyDefaultRule() { nails: "no default setting", hColor: "no default setting", hLength: "no default setting", + haircuts: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.tw index 501d897b1bd3ef193f815cfa2d5feea2644a4e01..dd4a98aa105dc16bfd7224fd42bd2e9fc77bf06a 100644 --- a/src/js/rulesAssistantOptions.tw +++ b/src/js/rulesAssistantOptions.tw @@ -969,6 +969,7 @@ window.rulesAssistantOptions = (function() { this.appendChild(new MakeupList()); this.appendChild(new NailsList()); this.appendChild(new HairLengthList()); + this.appendChild(new HaircutsList()); this.appendChild(new HairColourList()); this.appendChild(new HairStyleList()); this.appendChild(new PubicHairColourList()); @@ -2076,6 +2077,20 @@ window.rulesAssistantOptions = (function() { this.onchange = (value) => current_rule.set.hLength = value; } } + + class HaircutsList extends List { + constructor() { + const pairs = [ + ["no default setting"], + ["maintain hair length", 1], + ["do not maintain hair length", 0] + ]; + super("Hair length maintenance", pairs); + this.setValue(current_rule.set.haircuts); + this.onchange = (value) => current_rule.set.haircuts = value; + } + } + class HairColourList extends List { constructor() { const pairs = [ diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 7ce96339b6c17c98706d1b3471f98afe8f377748..87c736cf6b95d1689b18f463c83c281344cb1d36 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -2945,3 +2945,7 @@ Done! if (x.set.preg === -1) x.set.preg = true; else x.set.preg = false; })>> + +<<run $defaultRules.filter(x => !([1, 0, "no default setting"].includes(x.set.haircuts))).forEach(x => { + x.set.haircuts = "no default setting"; +})>> diff --git a/src/uncategorized/initRules.tw b/src/uncategorized/initRules.tw index 2dc97f98aaeb64670811464707fb82fd24bea6c0..aaf8c51768ee4e10d5c1dc0409c37c5d5d6c9c96 100644 --- a/src/uncategorized/initRules.tw +++ b/src/uncategorized/initRules.tw @@ -47,6 +47,7 @@ nails: "no default setting", hColor: "no default setting", hLength: "no default setting", + haircuts: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting", @@ -169,6 +170,7 @@ nails: "no default setting", hColor: "no default setting", hLength: "no default setting", + haircuts: "no default setting", hStyle: "no default setting", pubicHColor: "no default setting", pubicHStyle: "no default setting",