Skip to content
Snippets Groups Projects
rulesAssistantOptions.js 103 KiB
Newer Older
  • Learn to ignore specific revisions
  • 			if (V.arcologies[0].FSAssetExpansionistResearch === 1) {
    				drugs.push(["hyper breast injections"]);
    				drugs.push(["hyper butt injections"]);
    				drugs.push(["hyper penis enhancement"]);
    				drugs.push(["hyper testicle enhancement"]);
    			}
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSYouthPreferentialistResearch === 1) {
    
    vas's avatar
    vas committed
    				drugs.push(["Anti-aging cream (FS)", "anti-aging cream"]);
    
    DCoded's avatar
    DCoded committed
    			}
    			if (V.seeHyperPreg === 1 && V.superFertilityDrugs === 1) {
    
    vas's avatar
    vas committed
    				drugs.push(["Super fertility drugs", "super fertility drugs"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    			super("Other drugs", drugs);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.drug);
    			this.onchange = (value) => current_rule.set.drug = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    Pregmodder's avatar
    Pregmodder committed
    	class EnemaList extends List {
    		constructor() {
    			const enemas = [
    				["None", "none"],
    				["Water", "water"]
    			];
    			if (V.medicalEnema === 1) {
    				enemas.push(
    
    Skriv's avatar
    Skriv committed
    					["Aphrodisiac", "aphrodisiac"],
    					["Curative", "curative"],
    					["Tightener", "tightener"]
    
    Pregmodder's avatar
    Pregmodder committed
    				);
    			}
    			super("Enemas", enemas);
    			this.setValue(current_rule.set.inflationType);
    			this.onchange = (value) => current_rule.set.inflationType = value;
    		}
    	}
    
    
    vas's avatar
    vas committed
    	class DietList extends List {
    		constructor() {
    			const diets = [
    
    vas's avatar
    vas committed
    				["Healthy diet", "healthy"],
    
    vas's avatar
    vas committed
    				["Fix fat and skinny slaves", "attractive"],
    				["Curvy", 30],
    
    klorpa's avatar
    klorpa committed
    				["Average", 0],
    
    vas's avatar
    vas committed
    				["Thin", -30]
    
    vas's avatar
    vas committed
    			];
    			if (V.feeder === 1) {
    				diets.push(
    
    vas's avatar
    vas committed
    					["Feminine", "XX"],
    					["Masculine", "XY"]
    
    vas's avatar
    vas committed
    				);
    
    DCoded's avatar
    DCoded committed
    				if (V.dietXXY === 1) {
    
    vas's avatar
    vas committed
    					diets.push(["Futanari", "XXY"]);
    
    DCoded's avatar
    DCoded committed
    				}
    
    vas's avatar
    vas committed
    			}
    
    DCoded's avatar
    DCoded committed
    			if (V.dietCleanse === 1) {
    
    vas's avatar
    vas committed
    				diets.push(["Cleansing", "cleansing"]);
    
    DCoded's avatar
    DCoded committed
    			}
    			if (V.dietFertility === 1) {
    
    vas's avatar
    vas committed
    				diets.push(["Fertility", "fertility"]);
    
    DCoded's avatar
    DCoded committed
    			}
    			if (V.cumProDiet === 1) {
    
    vas's avatar
    vas committed
    				diets.push(["Cum production", "cum production"]);
    
    vas's avatar
    vas committed
    			}
    
    vas's avatar
    vas committed
    
    
    ezsh's avatar
    ezsh committed
    			super("Slave diets", diets, true, true);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.diet);
    			this.onchange = (value) => current_rule.set.diet = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class DietGrowthList extends List {
    		constructor() {
    			const pairs = [
    				["On", 1],
    				["Off", 0]
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Diet support for growth drugs", pairs, false);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.dietGrowthSupport);
    			this.onchange = (value) => current_rule.set.dietGrowthSupport = value;
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    vas's avatar
    vas committed
    	class DietBaseList extends List {
    		constructor() {
    			// TODO: better data structure?
    			const pairs = [
    
    ezsh's avatar
    ezsh committed
    				["No default setting", {cum: null, milk: null}],
    
    brickode's avatar
    brickode committed
    				["Normal Diet", {cum: 0, milk: 0}],
    				["Cum Added", {cum: 1, milk: 0}],
    				["Milk Added", {cum: 0, milk: 1}],
    				["Cum & Milk Added", {cum: 1, milk: 1}],
    				["Cum-Based", {cum: 2, milk: 0}],
    				["Milk-Based", {cum: 0, milk: 2}],
    
    vas's avatar
    vas committed
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Diet base", pairs, false);
    
    vas's avatar
    vas committed
    			this.setValue(this.value2string(current_rule.set.dietCum, current_rule.set.dietMilk));
    
    			this.onchange = (value) => {
    				current_rule.set.dietCum = value.cum;
    				current_rule.set.dietMilk = value.milk;
    
    kopareigns's avatar
    kopareigns committed
    				this.setValue(this.value2string(current_rule.set.dietCum, current_rule.set.dietMilk));
    
    vas's avatar
    vas committed
    			};
    		}
    
    klorpa's avatar
    klorpa committed
    
    
    vas's avatar
    vas committed
    		value2string(cum, milk) {
    			return `cum: ${cum}, milk: ${milk}`;
    		}
    
    vas's avatar
    vas committed
    	}
    
    
    Pregmodder's avatar
    Pregmodder committed
    	class DietSolidFoodList extends List {
    		constructor() {
    			const pairs = [
    
    				["Permitted", 0],
    				["Forbidden", 1],
    
    Pregmodder's avatar
    Pregmodder committed
    			];
    			super("Solid food access", pairs);
    			this.setValue(current_rule.set.onDiet);
    			this.onchange = (value) => current_rule.set.onDiet = value;
    		}
    	}
    
    
    ezsh's avatar
    ezsh committed
    	class MuscleList extends NumberRange {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    
    vas's avatar
    vas committed
    				["None", 0],
    				["Toned", 20],
    				["Ripped", 50],
    				["Massive", 100],
    				["Weak", -20]
    
    vas's avatar
    vas committed
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Muscles", pairs, true, -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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    
    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 = [
    
    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 = [
    
    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 = [
    				["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() {
    
    brickode's avatar
    brickode committed
    			const pairs = [
    
    vas's avatar
    vas committed
    				["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 = [
    				["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 = [
    
    brickode's avatar
    brickode 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 = [
    
    				["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);
    
    ezsh's avatar
    ezsh committed
    			this.appendChild(new OptionsItem("No default setting", () => this.setValue(null)));
    
    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 = [];
    
    ezsh's avatar
    ezsh committed
    			if (this.colorlist.value !== null)
    
    klorpa's avatar
    klorpa committed
    				lst.push(this.colorlist.value);
    
    ezsh's avatar
    ezsh committed
    			if (this.shapelist.value !== null)
    
    vas's avatar
    vas committed
    				lst.push(this.shapelist.value);
    
    ezsh's avatar
    ezsh committed
    			if (lst.length === 0) return null;
    			else return lst.join(" ");
    
    vas's avatar
    vas committed
    		}
    
    vas's avatar
    vas committed
    
    
    vas's avatar
    vas committed
    		setValue(val) {
    
    DCoded's avatar
    DCoded committed
    			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
    			[
    
    ezsh's avatar
    ezsh committed
    				null,
    
    vas's avatar
    vas committed
    				"blue",
    				"black",
    				"brown",
    				"green",
    				"turquoise",
    				"sky-blue",
    				"hazel",
    				"pale-grey",
    				"white",
    				"pink",
    
    vas's avatar
    vas committed
    				"amber",
    				"red"
    
    			].forEach(i => items.push(new OptionsItem(i, item => {
    				this.value = item.label;
    				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
    			[
    
    ezsh's avatar
    ezsh committed
    				null,
    
    vas's avatar
    vas committed
    				"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"
    
    			].forEach(i => items.push(new OptionsItem(i, item => {
    				this.value = item.label;
    				this.parent.setValue();
    			})));
    
    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 = [
    
    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() {
    
    ezsh's avatar
    ezsh committed
    			const pairs = [
    
    vas's avatar
    vas committed
    				["makeup-free", 0],
    				["nice", 1],
    				["gorgeous", 2],
    				["color-coordinate with hair", 3],
    				["slutty", 4]
    
    ezsh's avatar
    ezsh committed
    			];
    			super("Makeup", pairs);
    
    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() {
    
    ezsh's avatar
    ezsh committed
    			const pairs = [
    
    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]
    
    ezsh's avatar
    ezsh committed
    			];
    			super("Nails", pairs);
    
    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 = [
    
    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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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 = [
    				["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],
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Automatic branding", pairs, false);
    
    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);