Skip to content
Snippets Groups Projects
rulesAssistantOptions.js 105 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	class NipplePiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Nipple piercings", piercingTypes());
    
    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
    	}
    
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    	class AreolaPiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    
    				["none", 0],
    				["studded", 1]
    
    vas's avatar
    vas committed
    			];
    
    			super("Areola studs", pairs, true, false, true);
    
    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
    	}
    
    
    	class LipPiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Lip piercings", piercingTypes());
    
    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
    	}
    
    
    	class TonguePiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Tongue piercing", piercingTypes());
    
    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
    	}
    
    
    	class ClitPiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Clit piercing", piercingTypes(true));
    
    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
    	}
    
    
    	class LabiaPiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Pussylips piercings", piercingTypes());
    
    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
    	}
    
    
    	class ShaftPiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Shaft piercings", piercingTypes());
    
    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
    	}
    
    
    	class PerineumPiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Perianal piercings", piercingTypes());
    
    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
    	}
    
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    	class CorsetPiercingList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    			const pairs = [
    
    				["none", 0],
    				["applied", 1]
    
    vas's avatar
    vas committed
    			];
    
    			super("Corset piercings", pairs, true, false, true);
    
    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
    	}
    
    
    	class AutoBrandingList extends BooleanSwitch {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Automatic branding", [0, 1]);
    
    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", []);
    
    
    klorpa's avatar
    klorpa committed
    			// I sorted this next section from top of body down, to make it easier to read for users. Hopefully when making similar lists elsewhere in the game, folks will use the same order. Makes it much easier to compare and make sure nothing is missing. And alphabetical is a poor choice for user facing lists.
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    
    
    vas's avatar
    vas committed
    			const cheeks = new ListSubSection(this, "Cheeks", [
    
    vas's avatar
    vas committed
    				["Left", "left cheek"],
    
    				["Right", "right cheek"],
    				["Both", "cheeks"]
    
    vas's avatar
    vas committed
    			]);
    			this.appendChild(cheeks);
    
    vas's avatar
    vas committed
    
    
    			const ears = new ListSubSection(this, "Ears", [
    				["Left", "left ear"],
    
    				["Right", "right ear"],
    				["Both", "ears"]
    
    
    			]);
    			this.appendChild(ears);
    
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    			// Torso
    			const breasts = new ListSubSection(this, "Breasts", [
    				["Left", "left breast"],
    
    				["Right", "right breast"],
    				["Both", "breasts"]
    
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    			]);
    			this.appendChild(breasts);
    
    
    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 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"],
    				["Back", "back"],
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    				["Lower Back", "lower back"],
    				["Belly", "belly"],
    				["Pubic mound", "pubic mound"]
    
    vas's avatar
    vas committed
    			]);
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    
    			// Ignoring testicles and penis for now, as not all slaves have them.
    
    
    vas's avatar
    vas committed
    			this.appendChild(other);
    
    vas's avatar
    vas committed
    
    
    			this.setValue(current_rule.set.brandTarget);
    			this.onchange = (value) => current_rule.set.brandTarget = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    vas's avatar
    vas committed
    
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    	class BrandDesignList extends StringEditor {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    
    klorpa's avatar
    klorpa committed
    				["Your slaving emblem", "your personal symbol"],
    
    vas's avatar
    vas committed
    				["Your initials", "your initials"],
    				["SLUT"],
    				["WHORE"],
    				["SLAVE"],
    				["COW"],
    				["MEAT"],
    				["CUMDUMP"],
    				["LOVER"],
    				["Pussy symbol", "a pussy symbol"],
    				["Anus symbol", "an anus symbol"],
    				["Penis symbol", "a penis symbol"],
    				["Lady", "a lady silhouette"],
    				["Princess", "a princess silhouette"],
    				["Queen", "a queen silhouette"],
    				["Angel", "an angel silhouette"],
    				["Devil", "a devil silhouette"]
    
    vas's avatar
    vas committed
    			];
    
    klorpa's avatar
    klorpa committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSSupremacist !== "unset" || V.arcologies[0].FSSubjugationist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Racial Slur", "a racial slur"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    klorpa's avatar
    klorpa committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSSupremacist !== "unset" && V.arcologies[0].FSSupremacistRace === "white") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Swastika", "a swastika"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    klorpa's avatar
    klorpa committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSSubjugationist !== "unset" && V.arcologies[0].FSSubjugationistRace === "semitic") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Star of David", "a Star of David"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSGenderRadicalist !== "unset" || V.arcologies.FSGenderFundamentalist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Gender Symbol", "a gender symbol"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSPaternalist !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Personal Symbol", "$his own personal symbol"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSDegradationist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Chain Symbol", "a chain symbol"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSBodyPurist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Vitruvian Man", "a Vitruvian man"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSTransformationFetishist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Most Desired Implants", "a shortlist of desired implants"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSYouthPreferentialist !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Virginity Status", "$his virginity status"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSMaturityPreferentialist !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Sexual Skill Info", "$his sexual skills"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Breast Ceiling", "$his absolute maximum breast size"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSAssetExpansionist !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Breast Floor", "$his absolute minimum breast size"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSPastoralist !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Product Quality", "$his body product quality"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Deadlift Info", "$his deadlift record"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Weight Record", "$his highest weigh-in"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSHedonisticDecadence && V.PC.refreshmentType === 2) {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Favorite Food", `a big helping of ${V.PC.refreshment}`]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSRepopulationFocus !== "unset") {
    
    klorpa's avatar
    klorpa committed
    				items.push(["(FS) Birth Count", "the number of children $he has birthed"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSChattelReligionist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Religious Symbol", "a religious symbol"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSRomanRevivalist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Republican Crest", "a small crest of your Republic"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSAztecRevivalist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Seven Serpents", "a small symbol of the Aztec gods"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Dynastic Sigil", "a small sigil of your Dynasty"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSEdoRevivalist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Mon", "a small image of the Shogunate's mon"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSArabianRevivalist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Caliphate Symbol", "a small symbol of the Caliphate"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    vas's avatar
    vas committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.arcologies[0].FSChineseRevivalist !== "unset") {
    
    vas's avatar
    vas committed
    				items.push(["(FS) Imperial Seal", "a small image of your Imperial Seal"]);
    
    DCoded's avatar
    DCoded committed
    			}
    
    klorpa's avatar
    klorpa committed
    
    
    			super("Your brand design is", items, true, true);
    
    			this.setValue(current_rule.set.brandDesign);
    			this.onchange = (value) => current_rule.set.brandDesign = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    vas's avatar
    vas committed
    
    
    	function commonTattoos() {
    		return [
    			["none", 0],
    			["tribal patterns"],
    			["flowers"],
    			["counting"],
    			["advertisements"],
    			["rude words"],
    			["degradation"],
    			["bovine patterns"],
    			["Asian art"],
    			["permanent makeup"],
    			["sacrament"],
    			["sacrilege"],
    			["possessive"],
    			["paternalist"]
    		];
    	}
    
    
    	class FaceTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Facial tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.lipsTat);
    			this.onchange = (value) => current_rule.set.lipsTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    	class ShoulderTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Shoulder tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.shouldersTat);
    			this.onchange = (value) => current_rule.set.shouldersTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class ChestTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Chest tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.boobsTat);
    			this.onchange = (value) => current_rule.set.boobsTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class ArmTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Arm tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.armsTat);
    			this.onchange = (value) => current_rule.set.armsTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class UpperBackTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Upper back tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.backTat);
    			this.onchange = (value) => current_rule.set.backTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class LowerBackTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Lower back tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.stampTat);
    			this.onchange = (value) => current_rule.set.stampTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class AbdomenTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Abdomen tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.vaginaTat);
    			this.onchange = (value) => current_rule.set.vaginaTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class DickTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Dick tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.dickTat);
    			this.onchange = (value) => current_rule.set.dickTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class ButtockTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Buttock tattoos:", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.buttTat);
    			this.onchange = (value) => current_rule.set.buttTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class AnalTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Anal tattoo or bleaching", commonTattoos().concat([['bleached']]));
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.anusTat);
    			this.onchange = (value) => current_rule.set.anusTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class LegTattooList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    
    			super("Leg tattoos", commonTattoos());
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.legsTat);
    			this.onchange = (value) => current_rule.set.legsTat = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class VisionSurgeryList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["fixed", 1],
    
    vas's avatar
    vas committed
    				["blurred", -1],
    
    vas's avatar
    vas committed
    			];
    
    			super("Vision correction", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.eyes);
    			this.onchange = (value) => current_rule.set.surgery.eyes = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class HearingSurgeryList extends List {
    
    klorpa's avatar
    klorpa committed
    		constructor() {
    			const items = [
    				["fixed", 0],
    				["muffled", -1],
    			];
    
    			super("Hearing correction", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.hears);
    			this.onchange = (value) => current_rule.set.surgery.hears = value;
    
    klorpa's avatar
    klorpa committed
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    	class SmellSurgeryList extends List {
    
    klorpa's avatar
    klorpa committed
    		constructor() {
    			const items = [
    				["fixed", 0],
    				["disabled", -1],
    			];
    
    			super("Olfactory correction", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.smells);
    			this.onchange = (value) => current_rule.set.surgery.smells = value;
    
    klorpa's avatar
    klorpa committed
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    	class TasteSurgeryList extends List {
    
    klorpa's avatar
    klorpa committed
    		constructor() {
    			const items = [
    				["fixed", 0],
    				["disabled", -1],
    			];
    
    			super("Gustatory correction", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.tastes);
    			this.onchange = (value) => current_rule.set.surgery.tastes = value;
    
    klorpa's avatar
    klorpa committed
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    	class LactationSurgeryList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["implanted", 1],
    
    vas's avatar
    vas committed
    				["removed", 0],
    
    vas's avatar
    vas committed
    			];
    
    			super("Lactation drug implants", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.lactation);
    			this.onchange = (value) => current_rule.set.surgery.lactation = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class SemenSurgeryList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["implanted", 1],
    
    vas's avatar
    vas committed
    				["removed", 0],
    
    vas's avatar
    vas committed
    			];
    
    			super("Prostate production enhancing drug implants", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.prostate);
    			this.onchange = (value) => current_rule.set.surgery.prostate = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class VasectomyList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["apply vasectomy", true],
    				["undo vasectomy", false],
    			];
    
    			super("Apply or undo vasectomy for slaves with testicles", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.vasectomy);
    			this.onchange = (value) => current_rule.set.surgery.vasectomy = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    	class CosmeticSurgeryList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["none", 0],
    				["subtle", 1],
    
    vas's avatar
    vas committed
    				["invasive", 2],
    			];
    
    			super("Cosmetic Surgery", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.cosmetic);
    			this.onchange = (value) => current_rule.set.surgery.cosmetic = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    ezsh's avatar
    ezsh committed
    	class LipSurgeryList extends NumberRange {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["removed", 0],
    				["plush", 20],
    				["big", 40],
    				["huge", 70],
    
    vas's avatar
    vas committed
    				["facepussy", 95],
    
    vas's avatar
    vas committed
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Lip implants", items, true, 0, 95, true);
    
    			this.setValue(current_rule.set.surgery.lips);
    			this.onchange = (value) => current_rule.set.surgery.lips = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    ezsh's avatar
    ezsh committed
    	class ButtSurgeryList extends NumberRange {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    
    vas's avatar
    vas committed
    				["removed", 0],
    
    vas's avatar
    vas committed
    				["slim", 2],
    				["stacked", 4],
    				["huge", 6],
    
    klorpa's avatar
    klorpa committed
    				["maximized", 9],
    
    vas's avatar
    vas committed
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Buttock implants", items, true, 0, 9, true);
    
    			this.setValue(current_rule.set.surgery.butt);
    			this.onchange = (value) => current_rule.set.surgery.butt = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    ezsh's avatar
    ezsh committed
    	class BreastSurgeryList extends NumberRange {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    
    vas's avatar
    vas committed
    				["removed", 0],
    
    vas's avatar
    vas committed
    				["slim", 400],
    				["stacked", 1000],
    				["huge", 2000],
    				["barely functional", 9000],
    
    klorpa's avatar
    klorpa committed
    				["maximized", 48000]
    
    vas's avatar
    vas committed
    			];
    
    ezsh's avatar
    ezsh committed
    			super("Breast implants", items, true, 0, 48000, true);
    
    			this.setValue(current_rule.set.surgery.boobs);
    			this.onchange = (value) => current_rule.set.surgery.boobs = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class TighteningSurgeryList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    
    vas's avatar
    vas committed
    				["tightening", 1],
    
    vas's avatar
    vas committed
    				["virginity restoration", 2],
    
    vas's avatar
    vas committed
    			];
    
    			super("Orifice Tightening", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.holes);
    			this.onchange = (value) => current_rule.set.surgery.holes = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    Skriv's avatar
    Skriv committed
    
    
    	class TummyTuckSurgeryList extends List {
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		constructor() {
    			const items = [
    				["tuck", 1],
    			];
    
    			super("Tummy Tuck", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.tummy);
    			this.onchange = (value) => current_rule.set.surgery.tummy = value;
    
    vas's avatar
    vas committed
    
    
    	class BodyHairSurgeryList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    
    vas's avatar
    vas committed
    				["keep", 1],
    				["removal", 2],
    			];
    
    			super("Body Hair", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.bodyhair);
    			this.onchange = (value) => current_rule.set.surgery.bodyhair = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    
    	class HairSurgeryList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    
    vas's avatar
    vas committed
    				["keep", 1],
    				["removal", 2],
    			];
    
    			super("Hair", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.hair);
    			this.onchange = (value) => current_rule.set.surgery.hair = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    	class AutomaticAssignmentList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["Rest", "rest"],
    				["Fucktoy", "please you"],
    				["Subordinate Slave", "be a subordinate slave"],
    				["House Servant", "be a servant"],
    				["Confined", "stay confined"],
    				["Whore", "whore"],
    
    vas's avatar
    vas committed
    				["Public Servant", "serve the public"],
    
    vas's avatar
    vas committed
    				["Classes", "take classes"],
    				["Milked", "get milked"],
    
    kopareigns's avatar
    kopareigns committed
    				["Gloryhole", "work a glory hole"],
    				["Choose Her Own", "choose her own job"]
    
    vas's avatar
    vas committed
    			];
    
    klorpa's avatar
    klorpa committed
    
    
    DCoded's avatar
    DCoded committed
    			if (V.HGSuite > 0) {
    				items.push(["Head Girl Suite", "live with your Head Girl"]);
    			}
    			if (V.brothel > 0) {
    				items.push(["Brothel", "work in the brothel"]);
    			}
    			if (V.club > 0) {
    				items.push(["Club", "serve in the club"]);
    			}
    			if (V.arcade > 0) {
    				items.push(["Arcade", "be confined in the arcade"]);
    			}
    			if (V.dairy > 0) {
    				items.push(["Dairy", "work in the dairy"]);
    			}
    			if (V.farmyard > 0) {
    				items.push(["Farmyard", "work as a farmhand"]);
    			}
    			if (V.servantsQuarters > 0) {
    				items.push(["Servant Quarters", "work as a servant"]);
    			}
    			if (V.masterSuite > 0) {
    				items.push(["Master Suite", "serve in the master suite"]);
    			}
    			if (V.schoolroom > 0) {
    				items.push(["Schoolroom", "learn in the schoolroom"]);
    			}
    			if (V.spa > 0) {
    				items.push(["Spa", "rest in the spa"]);
    			}
    			if (V.clinic > 0) {
    				items.push(["Clinic", "get treatment in the clinic"]);
    			}
    			if (V.cellblock > 0) {
    				items.push(["Cellblock", "be confined in the cellblock"]);
    			}
    
    klorpa's avatar
    klorpa committed
    
    
    vas's avatar
    vas committed
    			super("Automatically set assignment", items);
    			this.setValue(current_rule.set.setAssignment);
    			this.onchange = (value) => current_rule.set.setAssignment = value;
    		}
    
    vas's avatar
    vas committed
    	}
    
    vas's avatar
    vas committed
    
    
    	class BellyImplantList extends List {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    				["install", "install"],
    				["remove", "remove"],
    			];
    
    			super("Belly implant", items, true, false, true);
    
    			this.setValue(current_rule.set.surgery.bellyImplant);
    			this.onchange = (value) => current_rule.set.surgery.bellyImplant = value;
    
    vas's avatar
    vas committed
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    ezsh's avatar
    ezsh committed
    	class LabelList extends StringEditor {
    
    vas's avatar
    vas committed
    		constructor() {
    
    ezsh's avatar
    ezsh committed
    			super("Custom label", [], true, true);
    
    vas's avatar
    vas committed
    			this.setValue(current_rule.set.label);
    			this.onchange = (value) => current_rule.set.label = value;
    		}
    	}
    
    ezsh's avatar
    ezsh committed
    	class LabelRemoveList extends StringEditor {
    
    ezsh's avatar
    ezsh committed
    			super("Remove custom label", [], true, true);
    
    			this.setValue(current_rule.set.removeLabel);
    			this.onchange = (value) => current_rule.set.removeLabel = value;
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    	class SkinColorList extends ListSelector {
    
    vas's avatar
    vas committed
    		constructor() {
    			const items = [
    
    				["natural"],
    
    klorpa's avatar
    klorpa committed
    				["pure white"],
    				["ivory"],
    				["white"],
    				["extremely pale"],
    				["very pale"],
    
    vas's avatar
    vas committed
    				["pale"],
    
    klorpa's avatar
    klorpa committed
    				["extremely fair"],
    				["very fair"],
    				["fair"],
    				["light"],
    				["light olive"],
    				["tan"],
    				["olive"],
    				["bronze"],
    				["dark olive"],
    
    vas's avatar
    vas committed
    				["dark"],
    
    klorpa's avatar
    klorpa committed
    				["light beige"],
    				["beige"],
    				["dark beige"],
    				["light brown"],
    				["brown"],
    				["dark brown"],
    				["black"],
    				["ebony"],
    				["pure black"],
    
    klorpa's avatar
    klorpa committed
    				["sun tanned"],
    				["spray tanned"],
    
    vas's avatar
    vas committed
    				["dyed red"],
    				["dyed green"],
    				["dyed blue"],
    
    klorpa's avatar
    klorpa committed
    				["dyed pink"],
    
    klorpa's avatar
    klorpa committed
    				["dyed gray"],
    				["tiger striped"],
    
    vas's avatar
    vas committed
    				["camouflage patterned"],
    
    ezsh's avatar
    ezsh committed
    			];
    
    vas's avatar
    vas committed
    			super("Dye or tan skin", items);
    			this.setValue(current_rule.set.skinColor);
    			this.onchange = (x) => current_rule.set.skinColor = x;
    		}
    	}
    
    klorpa's avatar
    klorpa committed
    
    
    vas's avatar
    vas committed
    	return rulesAssistantOptions;
    
    vas's avatar
    vas committed
    })();