Skip to content
Snippets Groups Projects
rulesAssistantOptions.js 102 KiB
Newer Older
  • Learn to ignore specific revisions
  • vas's avatar
    vas committed
    				["Weak", -20]
    
    vas's avatar
    vas committed
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Muscles", pairs, -20, 100, true);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.muscles);
    			this.onchange = (value) => current_rule.set.muscles = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class BraceList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", "none"],
    				["Straighten", "straighten"],
    				["Universal", "universal"]
    			];
    			super("Braces", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.teeth);
    			this.onchange = (value) => current_rule.set.teeth = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class LivingStandardList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["Luxurious", "luxurious"],
    				["Normal", "normal"],
    				["Spare", "spare"]
    			];
    			super("Living standard", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.livingRules);
    			this.onchange = (value) => current_rule.set.livingRules = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class PunishmentList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["Confinement", "confinement"],
    				["Whipping", "whipping"],
    				["Chastity", "chastity"],
    				["Situational", "situational"]
    			];
    			super("Typical punishment", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.standardPunishment);
    			this.onchange = (value) => current_rule.set.standardPunishment = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class RewardList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["Relaxation", "relaxation"],
    				["Drugs", "drugs"],
    				["Orgasm", "orgasm"],
    				["Situational", "situational"]
    			];
    			super("Typical reward", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.standardReward);
    			this.onchange = (value) => current_rule.set.standardReward = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class ReleaseList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["Permissive", "permissive"],
    				["Sapphic", "sapphic"],
    				["Masturbation", "masturbation"],
    
    				["Restrictive", "restrictive"],
    				["Chastity", "chastity"]
    
    vas's avatar
    vas committed
    			];
    			super("Release rules", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.releaseRules);
    			this.onchange = (value) => current_rule.set.releaseRules = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    Pregmodder's avatar
    Pregmodder committed
    	class ToyHoleList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["All her holes", "all her holes"],
    				["Mouth", "mouth"],
    				["Boobs", "boobs"],
    				["Pussy", "pussy"],
    				["Ass", "ass"],
    				["Dick", "dick"]
    			];
    			super("Fucktoy use preference", pairs);
    			this.setValue(current_rule.set.toyHole);
    			this.onchange = (value) => current_rule.set.toyHole = value;
    		}
    	}
    
    
    vas's avatar
    vas committed
    	class SmartFetishList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["Vanilla", "vanilla"],
    				["Oral", "oral"],
    				["Anal", "anal"],
    				["Boobs", "boobs"],
    				["Sub", "submissive"],
    				["Dom", "dom"],
    				["Humiliation", "humiliation"],
    				["Preg", "pregnancy"],
    				["Pain", "masochist"],
    				["Sadism", "sadist"]
    			];
    			super("Smart piercing fetish target", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.clitSetting);
    			this.onchange = (value) => current_rule.set.clitSetting = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    	class SmartXYAttractionList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    
    vas's avatar
    vas committed
    				["Passionate", 100],
    				["Attracted", 75],
    				["Indifferent", 45],
    				["None", 0]
    
    vas's avatar
    vas committed
    			];
    			super("Smart piercing XY attraction target", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.clitSettingXY);
    			this.onchange = (value) => current_rule.set.clitSettingXY = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class SmartXXAttractionList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    
    vas's avatar
    vas committed
    				["Passionate", 100],
    				["Attracted", 75],
    				["Indifferent", 45],
    				["None", 0]
    
    vas's avatar
    vas committed
    			];
    			super("Smart piercing XX attraction target", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.clitSettingXX);
    			this.onchange = (value) => current_rule.set.clitSettingXX = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class SmartEnergyList extends List {
    		constructor() {
    			const pairs = [
    
    kopareigns's avatar
    kopareigns committed
    				["No default setting", "no default setting"],
    
    vas's avatar
    vas committed
    				["Nympho", 100],
    				["Sex Addict", 85],
    				["Powerful", 65],
    				["Healthy", 45],
    				["Weak", 25],
    				["Frigid", 0]
    
    vas's avatar
    vas committed
    			];
    			super("Smart piercing sex drive target", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.clitSettingEnergy);
    			this.onchange = (value) => current_rule.set.clitSettingEnergy = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class SpeechList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["Permissive", "permissive"],
    				["Suppress accents", "accent elimination"],
    				["Restrictive", "restrictive"]
    			];
    			super("Speech rules", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.speechRules);
    			this.onchange = (value) => current_rule.set.speechRules = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class RelationshipList extends List {
    		constructor() {
    			const pairs =[
    				["No default setting", "no default setting"],
    				["Permissive", "permissive"],
    				["Just friends", "just friends"],
    				["Restrictive", "restrictive"]
    			];
    			super("Relationship rules", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.relationshipRules);
    			this.onchange = (value) => current_rule.set.relationshipRules = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    kopareigns's avatar
    kopareigns committed
    	class PornBroadcastStatus extends List {
    
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["Disabled", 0],
    				["Enabled", 1]
    			];
    			super("Porn Broadcasting Status", pairs);
    			this.setValue(current_rule.set.pornFeed);
    			this.onchange = (value) => current_rule.set.pornFeed = value;
    		}
    	}
    
    
    vas's avatar
    vas committed
    	class PornList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    
    Pregmodder's avatar
    Pregmodder committed
    				/*["No broadcasting", -1], **This has changed, it would now use .pornFeed** */
    
    vas's avatar
    vas committed
    				["No subsidy", 0],
    				["1000", 1000],
    				["2000", 2000],
    				["3000", 3000],
    				["4000", 4000],
    				["5000", 5000]
    
    vas's avatar
    vas committed
    			];
    			super("Weekly porn publicity subsidy", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.pornFameSpending);
    			this.onchange = (value) => current_rule.set.pornFameSpending = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    	class EyewearList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    
    				["correct with glasses"],
    
    vas's avatar
    vas committed
    				["correct with contacts"],
    				["universal glasses"],
    				["blur with glasses"],
    				["blur with contacts"]
    			];
    			super("Eyewear", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.eyewear);
    			this.onchange = (value) => current_rule.set.eyewear = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class LensesList extends Element {
    		constructor() {
    
    vas's avatar
    vas committed
    			super(current_rule.set.eyeColor);
    
    klorpa's avatar
    klorpa committed
    			this.appendChild(new OptionsItem("No default setting", () => this.setValue("no default setting")));
    
    klorpa's avatar
    klorpa committed
    			this.colorlist = new LensesColorList();
    
    vas's avatar
    vas committed
    			this.shapelist = new LensesShapeList();
    
    klorpa's avatar
    klorpa committed
    			this.appendChild(this.colorlist);
    
    vas's avatar
    vas committed
    			this.appendChild(this.shapelist);
    		}
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    		render(color) {
    			const elem = document.createElement("div");
    
    vas's avatar
    vas committed
    			elem.innerHTML = "Eye coloring: ";
    
    vas's avatar
    vas committed
    			this.label = document.createElement("strong");
    
    vas's avatar
    vas committed
    			this.label.innerText = color;
    
    vas's avatar
    vas committed
    			elem.appendChild(this.label);
    
    vas's avatar
    vas committed
    			return elem;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    		combine() {
    			const lst = [];
    
    klorpa's avatar
    klorpa committed
    			if (this.colorlist.value !== "no default setting")
    				lst.push(this.colorlist.value);
    
    vas's avatar
    vas committed
    			if (this.shapelist.value !== "no default setting")
    
    vas's avatar
    vas committed
    				lst.push(this.shapelist.value);
    
    kopareigns's avatar
    kopareigns committed
    			if (lst.length === 0) return "no default setting";
    
    vas's avatar
    vas committed
    			else return lst.join(" ");
    		}
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    		setValue(val) {
    			if (val === undefined) val = this.combine();
    
    Skriv's avatar
    Skriv committed
    			this.label.innerText = `${val} `;
    
    vas's avatar
    vas committed
    			current_rule.set.eyeColor = val;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    klorpa's avatar
    klorpa committed
    	class LensesColorList extends Options {
    
    vas's avatar
    vas committed
    		constructor() {
    
    vas's avatar
    vas committed
    			const items = [];
    
    vas's avatar
    vas committed
    			[
    
    vas's avatar
    vas committed
    				"no default setting",
    				"blue",
    				"black",
    				"brown",
    				"green",
    				"turquoise",
    				"sky-blue",
    				"hazel",
    				"pale-grey",
    				"white",
    				"pink",
    
    vas's avatar
    vas committed
    				"amber",
    				"red"
    
    vas's avatar
    vas committed
    			].forEach(i => items.push(new OptionsItem(i, item => {
    
    vas's avatar
    vas committed
    				this.value = item.label;
    
    vas's avatar
    vas committed
    				this.parent.setValue();
    
    vas's avatar
    vas committed
    			})));
    
    vas's avatar
    vas committed
    			super(items);
    
    vas's avatar
    vas committed
    		}
    	}
    
    	class LensesShapeList extends Options {
    		constructor() {
    
    vas's avatar
    vas committed
    			const items = [];
    
    vas's avatar
    vas committed
    			[
    
    vas's avatar
    vas committed
    				"no default setting",
    				"catlike",
    				"serpent-like",
    
    vas's avatar
    vas committed
    				"devilish",
    				"demonic",
    				"hypnotic",
    				"heart-shaped",
    
    vas's avatar
    vas committed
    				"wide-eyed",
    				"almond-shaped",
    				"bright",
    				"teary",
    				"vacant"
    
    vas's avatar
    vas committed
    			].forEach(i => items.push(new OptionsItem(i, item => {
    
    vas's avatar
    vas committed
    				this.value = item.label;
    
    vas's avatar
    vas committed
    				this.parent.setValue();
    
    vas's avatar
    vas committed
    			})));
    
    vas's avatar
    vas committed
    			super(items);
    
    vas's avatar
    vas committed
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    klorpa's avatar
    klorpa committed
    	class EarwearList extends List {
    		constructor() {
    			const pairs = [
    
    kopareigns's avatar
    kopareigns committed
    				["no default setting"],
    
    klorpa's avatar
    klorpa committed
    				["correct with hearing aids"],
    				["muffle with ear plugs"],
    				["deafen with ear plugs"]
    			];
    			super("Earwear", pairs);
    			this.setValue(current_rule.set.earwear);
    			this.onchange = (value) => current_rule.set.earwear = value;
    		}
    	}
    
    vas's avatar
    vas committed
    
    	class MakeupList extends List {
    		constructor() {
    			super("Makeup");
    			[
    				["no default setting"],
    
    vas's avatar
    vas committed
    				["makeup-free", 0],
    				["nice", 1],
    				["gorgeous", 2],
    				["color-coordinate with hair", 3],
    				["slutty", 4]
    
    vas's avatar
    vas committed
    			].forEach(pair => this.appendChild(new ListItem(...pair)));
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.makeup);
    			this.onchange = (value) => current_rule.set.makeup = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class NailsList extends List {
    		constructor() {
    			super("Nails");
    			[
    				["no default setting"],
    
    vas's avatar
    vas committed
    				["clipped", 0],
    				["extended", 1],
    				["color-coordinate with hair", 2],
    				["sharp and claw-like", 3],
    				["bright and glittery", 4],
    
    				["hooker nails", 5],
    				["neon colored", 6],
    				["neon color-coordinate with hair", 7],
    				["metallic painted", 8],
    				["metallic color-coordinate with hair", 9]
    
    vas's avatar
    vas committed
    			].forEach(pair => this.appendChild(new ListItem(...pair)));
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.nails);
    			this.onchange = (value) => current_rule.set.nails = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class HairLengthList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    
    vas's avatar
    vas committed
    				["very short", 5],
    				["short", 10],
    				["shoulder length", 30],
    				["long", 60],
    				["very long", 100],
    				["floor length", 150]
    
    vas's avatar
    vas committed
    			];
    			super("Hair length", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.hLength);
    			this.onchange = (value) => current_rule.set.hLength = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    2hu4u's avatar
    2hu4u committed
    
    	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;
    		}
    	}
    
    
    klorpa's avatar
    klorpa committed
    	class HairColorList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["blonde"],
    				["golden"],
    				["platinum blonde"],
    
    klorpa's avatar
    klorpa committed
    				["strawberry-blonde"],
    
    vas's avatar
    vas committed
    				["copper"],
    				["ginger"],
    				["red"],
    
    vas's avatar
    vas committed
    				["green"],
    				["blue"],
    				["pink"],
    				["dark brown"],
    				["brown"],
    				["auburn"],
    				["burgundy"],
    				["chocolate"],
    				["chestnut"],
    				["hazel"],
    
    deepmurk's avatar
    deepmurk committed
    				["jet black"],
    
    vas's avatar
    vas committed
    				["black"],
    				["grey"],
    				["silver"],
    				["white"],
    
    vas's avatar
    vas committed
    				["blue-violet"],
    
    deepmurk's avatar
    deepmurk committed
    				["purple"],
    				["dark orchid"],
    				["sea green"],
    				["green-yellow"],
    				["dark blue"],
    
    vas's avatar
    vas committed
    				["blazing red"],
    				["neon green"],
    				["neon blue"],
    				["neon pink"]
    			];
    			super("Hair color", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.hColor);
    			this.onchange = (value) => current_rule.set.hColor = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    	class HairStyleList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["neat"],
    				["shaved"],
    				["trimmed"],
    				["buzzcut"],
    				["up"],
    				["ponytail"],
    				["bun"],
    
    vas's avatar
    vas committed
    				["messy bun"],
    
    vas's avatar
    vas committed
    				["curled"],
    				["permed"],
    				["luxurious"],
    				["dreadlocks"],
    				["cornrows"],
    				["braided"],
    				["tails"],
    
    vas's avatar
    vas committed
    				["afro"],
    				["strip"]
    			];
    			super("Hair style", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.hStyle);
    			this.onchange = (value) => current_rule.set.hStyle = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class EyebrowColorList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["blonde"],
    				["golden"],
    				["platinum blonde"],
    
    klorpa's avatar
    klorpa committed
    				["strawberry-blonde"],
    
    				["copper"],
    				["ginger"],
    				["red"],
    				["deep red"],
    				["green"],
    				["blue"],
    				["pink"],
    				["dark brown"],
    				["brown"],
    				["auburn"],
    				["burgundy"],
    				["chocolate"],
    				["chestnut"],
    				["hazel"],
    
    deepmurk's avatar
    deepmurk committed
    				["jet black"],
    
    				["black"],
    				["grey"],
    				["silver"],
    				["white"],
    				["blue-violet"],
    
    deepmurk's avatar
    deepmurk committed
    				["purple"],
    				["dark orchid"],
    				["sea green"],
    				["green-yellow"],
    				["dark blue"],
    
    				["blazing red"],
    				["neon green"],
    				["neon blue"],
    				["neon pink"]
    			];
    			super("Eyebrow hair color, when present", pairs);
    			this.setValue(current_rule.set.eyebrowHColor);
    			this.onchange = (value) => current_rule.set.eyebrowHColor = value;
    		}
    	}
    
    	class EyebrowStyleList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["shaved"],
    				["straight"],
    				["rounded"],
    				["natural"],
    				["slanted inwards"],
    				["slanted outwards"],
    				["high-arched"],
    				["elongated"],
    				["shortened"],
    				["curved"]
    			];
    			super("Eyebrow style", pairs);
    			this.setValue(current_rule.set.eyebrowHStyle);
    			this.onchange = (value) => current_rule.set.eyebrowHStyle = value;
    		}
    	}
    
    	class EyebrowFullnessList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["pencil-thin"],
    				["thin"],
    				["threaded"],
    				["natural"],
    				["tapered"],
    				["thick"],
    				["bushy"]
    			];
    			super("Eyebrow fullness", pairs);
    			this.setValue(current_rule.set.eyebrowFullness);
    			this.onchange = (value) => current_rule.set.eyebrowFullness = value;
    		}
    	}
    
    
    	class MarkingsList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["remove beauty marks"],
    				["remove birthmarks"],
    				["remove both"]
    			];
    			super("Facial markings", pairs);
    			this.setValue(current_rule.set.markings);
    			this.onchange = (value) => current_rule.set.markings = value;
    		}
    	}
    
    
    klorpa's avatar
    klorpa committed
    	class PubicHairColorList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["blonde"],
    				["golden"],
    				["platinum blonde"],
    
    klorpa's avatar
    klorpa committed
    				["strawberry-blonde"],
    
    vas's avatar
    vas committed
    				["copper"],
    				["ginger"],
    				["red"],
    
    vas's avatar
    vas committed
    				["green"],
    				["blue"],
    				["pink"],
    				["dark brown"],
    				["brown"],
    				["auburn"],
    				["burgundy"],
    				["chocolate"],
    				["chestnut"],
    				["hazel"],
    
    deepmurk's avatar
    deepmurk committed
    				["jet black"],
    
    vas's avatar
    vas committed
    				["black"],
    				["grey"],
    				["silver"],
    				["white"],
    
    vas's avatar
    vas committed
    				["blue-violet"],
    
    deepmurk's avatar
    deepmurk committed
    				["purple"],
    				["dark orchid"],
    				["sea green"],
    				["green-yellow"],
    				["dark blue"],
    
    vas's avatar
    vas committed
    				["blazing red"],
    				["neon green"],
    				["neon blue"],
    				["neon pink"]
    			];
    			super("Pubic hair color, when present", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.pubicHColor);
    			this.onchange = (value) => current_rule.set.pubicHColor = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    	class PubicHairStyleList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["waxed"],
    				["in a strip"],
    				["neat"],
    				["bushy"],
    				["bushy in the front and neat in the rear"],
    				["very bushy"]
    			];
    			super("Pubic hairstyle", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.pubicHStyle);
    			this.onchange = (value) => current_rule.set.pubicHStyle = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    klorpa's avatar
    klorpa committed
    	class ArmpitHairColorList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["blonde"],
    				["golden"],
    				["platinum blonde"],
    				["strawberry-blonde"],
    				["copper"],
    				["ginger"],
    				["red"],
    
    vas's avatar
    vas committed
    				["green"],
    				["blue"],
    				["pink"],
    				["dark brown"],
    				["brown"],
    				["auburn"],
    
    klorpa's avatar
    klorpa committed
    				["burgundy"],
    
    vas's avatar
    vas committed
    				["chocolate"],
    				["chestnut"],
    				["hazel"],
    
    deepmurk's avatar
    deepmurk committed
    				["jet black"],
    
    vas's avatar
    vas committed
    				["black"],
    				["grey"],
    				["silver"],
    
    vas's avatar
    vas committed
    				["white"],
    				["blue-violet"],
    
    deepmurk's avatar
    deepmurk committed
    				["purple"],
    				["dark orchid"],
    				["sea green"],
    				["green-yellow"],
    				["dark blue"],
    
    				["blazing red"],
    				["neon green"],
    				["neon blue"],
    				["neon pink"]
    
    vas's avatar
    vas committed
    			];
    			super("Underarm hair color, when present", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.underArmHColor);
    			this.onchange = (value) => current_rule.set.underArmHColor = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    	class ArmpitHairStyleList extends List {
    		constructor() {
    			const pairs = [
    				["no default setting"],
    				["waxed"],
    				["shaved"],
    				["neat"],
    				["bushy"]
    			];
    			super("Underarm hair style", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.underArmHStyle);
    			this.onchange = (value) => current_rule.set.underArmHStyle = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class EarPiercingList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Ear piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.earPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.earPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class NosePiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Nasal piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.nosePiercing);
    
    			this.onchange = (value) => current_rule.set.nosePiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class EyebrowPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Eyebrow piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.eyebrowPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.eyebrowPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class NavelPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Navel piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.navelPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.navelPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class NipplePiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Nipple piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.nipplesPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.nipplesPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class AreolaPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Studded", 1]
    			];
    			super("Areola studs", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.areolaePiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.areolaePiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class LipPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Lip piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.lipsPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.lipsPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class TonguePiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Tongue piercing", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.tonguePiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.tonguePiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class ClitPiercingList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2],
    
    				["Smart (expensive)", 3]
    
    vas's avatar
    vas committed
    			];
    			super("Clit piercing", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.clitPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.clitPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class LabiaPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Pussylips piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.vaginaPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.vaginaPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class ShaftPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Shaft piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.dickPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.dickPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class PerineumPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Light", 1],
    				["Heavy", 2]
    			];
    			super("Perianal piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.anusPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.anusPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class CorsetPiercingList extends List {
    		constructor() {
    			const pairs = [
    				["No default setting", "no default setting"],
    				["None", 0],
    				["Apply", 1]
    			];
    			super("Corset piercings", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.corsetPiercing);
    
    vas's avatar
    vas committed
    			this.onchange = (value) => current_rule.set.corsetPiercing = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class AutoBrandingList extends List {
    		constructor() {
    			const pairs = [
    				["Activate", 1],
    				["Off", 0],
    			];
    			super("Automatic branding", pairs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.autoBrand);
    			this.onchange = (value) => current_rule.set.autoBrand = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class BrandingLocationList extends List {
    		constructor() {
    			super("Your preferred location for brands is", []);
    
    
    vas's avatar
    vas committed
    			const ears = new ListSubSection(this, "Ears", [
    
    vas's avatar
    vas committed
    				["Left", "left ear"],
    				["Right", "right ear"],
    				["Both", "ears"]
    			]);
    			this.appendChild(ears);
    
    
    vas's avatar
    vas committed
    			const cheeks = new ListSubSection(this, "Cheeks", [
    
    vas's avatar
    vas committed
    				["Left", "left cheek"],
    				["Right", "right cheek"],
    				["Both", "cheeks"]
    			]);
    			this.appendChild(cheeks);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const shoulders = new ListSubSection(this, "Shoulders", [
    
    vas's avatar
    vas committed
    				["Left", "left shoulder"],
    				["Right", "right shoulder"],
    				["Both", "shoulders"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(shoulders);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const breasts = new ListSubSection(this, "Breasts", [
    
    vas's avatar
    vas committed
    				["Left", "right breast"],
    				["Right", "left breast"],
    				["Both", "breasts"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(breasts);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const upper_arms = new ListSubSection(this, "Arms, upper", [
    
    vas's avatar
    vas committed
    				["Left", "left upper arm"],
    				["Right", "right upper arm"],
    				["Both", "upper arms"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(upper_arms);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const lower_arms = new ListSubSection(this, "Arms, lower", [
    
    vas's avatar
    vas committed
    				["Left", "left lower arm"],
    				["Right", "right lower arm"],
    				["Both", "lower arms"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(lower_arms);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const wrist = new ListSubSection(this, "Wrist", [
    
    vas's avatar
    vas committed
    				["Left", "left wrist"],
    				["Right", "right wrist"],
    				["Both", "wrists"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(wrist);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const hand = new ListSubSection(this, "Hand", [
    
    vas's avatar
    vas committed
    				["Left", "left hand"],
    				["Right", "right hand"],
    				["Both", "hands"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(hand);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const buttocks = new ListSubSection(this, "Buttocks", [
    
    vas's avatar
    vas committed
    				["Left", "left buttock"],
    				["Right", "right buttock"],
    				["Both", "buttocks"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(buttocks);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const thigh = new ListSubSection(this, "Thigh", [
    
    vas's avatar
    vas committed
    				["Left", "left thigh"],
    				["Right", "right thigh"],
    				["Both", "thighs"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(thigh);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const calf = new ListSubSection(this, "Calf", [
    
    vas's avatar
    vas committed
    				["Left", "left calf"],
    				["Right", "right calf"],
    				["Both", "calves"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(calf);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const ankle = new ListSubSection(this, "Ankle", [
    
    vas's avatar
    vas committed
    				["Left", "left ankle"],
    				["Right", "right ankle"],
    				["Both", "ankles"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(ankle);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const feet = new ListSubSection(this, "Feet", [
    
    vas's avatar
    vas committed
    				["Left", "left foot"],
    				["Right", "right foot"],
    				["Both", "feet"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(feet);
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    			const other = new ListSubSection(this, "Other", [
    
    vas's avatar
    vas committed
    				["Neck", "neck"],
    				["Chest", "chest"],
    				["Belly", "belly"],
    				["Pubic mound", "pubic mound"],
    				["Back", "back"],
    				["Lower Back", "lower back"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(other);