code:
/* eslint-disable camelcase */
window.RevampedVectorArt = function(slave) {
	const V = State.variables;
	const T = State.temporary;
	let r;

	if (T.art_display_id > 0) {
		T.art_display_id++;
	} else {
		T.art_display_id = 1;
	}
	T.art_display_class = `ad${T.art_display_id}`;

	/* Using JS from vectorRevampedArtControl.tw*/
	T.revampedVectorArtControl = getVectorArtRevampedControl(T.art_display_class, slave, V.seeVectorArtHighlights, V.showBodyMods);

	r = `<style>${T.revampedVectorArtControl.StylesCss}</style>`;
	T.revampedArtLayers = T.revampedVectorArtControl.Layers;
	T.art_transform = T.revampedVectorArtControl.artTransform;
	T.boob_right_art_transform = T.revampedVectorArtControl.boobRightArtTransform;
	T.boob_left_art_transform = T.revampedVectorArtControl.boobLeftArtTransform;
	T.boob_outfit_art_transform = T.revampedVectorArtControl.boobOutfitArtTransform;
	T.art_pussy_tattoo_text = T.revampedVectorArtControl.pubicTattooText;

	T.revampedArtLayers.forEach(function(s) { r += jsInclude(s); });

	return r;
};

window.getVectorArtRevampedControl = function(artDisplayClass, artSlave, globalShowHighlights, globalShowBodyMods) {
	return new RevampedArtControl(artDisplayClass, artSlave, globalShowHighlights, globalShowBodyMods);
};

class ArtStyleEntry {
	constructor(name) {
		this.name = name;
	}

	toString() {
		let keys = Object.keys(this);
		let styleArray = [];
		if (keys !== null && keys !== undefined) {
			let styleObj = this;
			keys.forEach(function(key) {
				if (key !== "name") {
					let value = styleObj[key];
					styleArray.push(`${key}:${value}`);
				}
			});

			let styleValue = `${styleArray.join(";")};`;

			let cssDef = `{ ${styleValue} }`; // not sure if there should be padding here

			if (this.name.length > 0) { cssDef = `.${this.name}${cssDef}`; }

			return cssDef;
		}

		return "";
	}
}

class ArtStyleControl {
	constructor(artDisplayClass, artSlave) {
		this.artDisplayClass = artDisplayClass;
		this.artSlave = artSlave;
		this.styles = [];

		this.initDefaultValues();
		this.applyMakeup();
		this.applyCalcMuscleTone();
		this.applyEyeLensStyle();
	}

	applyMakeup() {
		let lipsColor = this.lips.fill;
		let lipsOpacity = this.lips["fill-opacity"];

		switch (this.artSlave.makeup) {
			case 1:
				// Nice
				lipsColor = "#ff69b4";
				lipsOpacity = 0.5;
				break;
			case 2:
				// Gorgeous
				lipsColor = "#8b008b";
				lipsOpacity = 0.7;
				break;
			case 3:
				// Hair coordinated
				lipsColor = this.hair.fill;
				lipsOpacity = 0.3;
				break;
			case 4:
				// Slutty
				lipsColor = "#ff0000";
				lipsOpacity = 1;
				break;
			case 5:
				// Neon
				lipsColor = "#DC143C";
				lipsOpacity = 1;
				break;
			case 6:
				// Neon hair coordinated
				lipsColor = this.hair.fill;
				lipsOpacity = 1;
				break;
			case 7:
				// Metallic
				lipsColor = "#b22222";
				lipsOpacity = 0.7;
				break;
			case 8:
				// Metallic hair coordinated
				lipsColor = this.hair.fill;
				lipsOpacity = 0.7;
				break;
			default:
		}

		this.lips.fill = lipsColor;
		this.lips["fill-opacity"] = lipsOpacity;
	}

	applyCalcMuscleTone() {
		let musclesValue = this.artSlave.muscles + 101;
		let musclesVisibility = 0.910239 * Math.log(0.02 * musclesValue);

		this.muscleTone["fill-opacity"] = musclesVisibility;
	}

	applyEyeLensStyle() {
		if (this.artSlave.eyeColor === null || this.artSlave.eyeColor === undefined) {
			return;
		}

		let eyeColorSplit = this.artSlave.eyeColor.split(" ");

		if (eyeColorSplit === 1) {
			return;
		}

		let eyeLens = eyeColorSplit[0];

		switch (eyeLens) {
			case "demonic":
				this.eyeball.fill = this.iris.fill;
				break;
			case "devilish":
				this.eyeball.fill = "#010101";
		}
	}

	/* currently unused, keeping for color reference - */
	parseSkinColorFromName(colorName) {
		// eslint-disable-next-line eqeqeq
		if (colorName == null) {
			return "#000000";
		}

		let skinPalette = [
			["light", "#feebe5"],
			["white", "#feebe5"],
			["fair", "#feebe5"],
			["lightened", "#feebe5"],
			["extremely pale", "#fff8f8"],
			["pale", "#f9ebf0"],
			["tanned", "#e8b693"],
			["natural", "#e8b693"],
			["olive", "#a46237"],
			["light olive", "#d4c6bb"],
			["dark", "#a46237"],
			["brown", "#845c44"],
			["dark brown", "#845c44"],
			["black", "#463a3a"],
			["camouflage patterned", "#78875a"],
			["dyed red", "#bc4949"],
			["dyed green", "#A6C373"],
			["dyed blue", "#5b8eb7"],
			["dyed pink", "#fe62b0"],
			["dyed gray", "#bdbdbd"],
			["tiger striped", "#e2d75d"]
		];

		let skinPaletteMap = new Map(skinPalette);
		colorName = colorName.toLowerCase();
		let colorValue = skinPaletteMap.get(colorName);
		if (!colorValue) {
			return this.parseColorFromName(colorName);
		}

		return colorValue;
	}
	/* - currently unused, keeping for color reference*/

	initDefaultValues() {
		let colorSlave = skinColorCatcher(this.artSlave);

		this.white = new ArtStyleEntry("white");
		this.white.fill = "#FFFFFF";

		this.skin = new ArtStyleEntry("skin");
		this.skin.fill = colorSlave.skinColor;

		this.arm = new ArtStyleEntry("arm.skin");
		this.arm.fill = this.skin.fill;

		this.head = new ArtStyleEntry("head");
		this.head.fill = this.skin.fill;

		this.torso = new ArtStyleEntry("torso");
		this.torso.fill = this.skin.fill;

		this.boob = new ArtStyleEntry("boob");
		this.boob.fill = this.skin.fill;

		this.penis = new ArtStyleEntry("penis");
		this.penis.fill = this.skin.fill;

		this.scrotum = new ArtStyleEntry("scrotum");
		this.scrotum.fill = this.skin.fill;

		this.areola = new ArtStyleEntry("areola");
		this.areola.fill = colorSlave.areolaColor;

		this.labia = new ArtStyleEntry("labia");
		this.labia.fill = colorSlave.labiaColor;

		this.hair = new ArtStyleEntry("hair");
		this.hair.fill = extractColor(this.artSlave.hColor);

		this.shoe = new ArtStyleEntry("shoe");
		this.shoe.fill = "#3E65B0";

		this.smartPiercing = new ArtStyleEntry("smart_piercing");
		this.smartPiercing.fill = "#4DB748";

		this.steelPiercing = new ArtStyleEntry("steel_piercing");
		this.steelPiercing.fill = "#c0c6c7";

		this.steelChastity = new ArtStyleEntry("steel_chastity");
		this.steelChastity.fill = "#c0c6c7";

		this.labiaSkin = new ArtStyleEntry("labia.skin");
		this.labiaSkin.fill = this.skin.fill;

		this.outfitBase = new ArtStyleEntry("outfit_base");
		this.outfitBase.fill = "#515351";

		this.shadow = new ArtStyleEntry("shadow");
		this.shadow.fill = "#010101";

		this.muscleTone = new ArtStyleEntry("muscle_tone");
		this.muscleTone.fill = "#010101";
		this.muscleTone["fill-opacity"] = 1;

		this.glasses = new ArtStyleEntry("glasses");
		this.glasses.fill = "#010101";

		this.lips = new ArtStyleEntry("lips");
		this.lips.fill = colorSlave.lipsColor;
		this.lips["fill-opacity"] = 0.6;

		this.eyeball = new ArtStyleEntry("eyeball");
		this.eyeball.fill = "#dfdfdf";

		this.iris = new ArtStyleEntry("iris");
		this.iris.fill = extractColor(this.artSlave.eyeColor, 1);

		this.highlight1 = new ArtStyleEntry("highlight1");
		this.highlight1.fill = "#ffffff";
		this.highlight1["fill-opacity"] = 0.9;
		this.highlight1["mix-blend-mode"] = "soft-light";

		this.highlight2 = new ArtStyleEntry("highlight2");
		this.highlight2.fill = "#ffffff";
		this.highlight2["fill-opacity"] = 0.9;
		this.highlight2["mix-blend-mode"] = "soft-light";

		this.highlightStrong = new ArtStyleEntry("highlightStrong");
		this.highlightStrong.fill = "#ffffff";

		this.armpitHair = new ArtStyleEntry("armpit_hair");
		this.armpitHair.fill = extractColor(this.artSlave.underArmHColor);

		this.pubicHair = new ArtStyleEntry("pubic_hair");
		this.pubicHair.fill = extractColor(this.artSlave.pubicHColor);

		this.bellyDetails = new ArtStyleEntry("belly_details");
		this.bellyDetails["fill-opacity"] = 1;

		this.bellySkin = new ArtStyleEntry("belly.skin");
		this.bellySkin.fill = this.skin.fill;

		this.bellyUpperSkin = new ArtStyleEntry("belly_upper.skin");
		this.bellyUpperSkin.fill = this.skin.fill;

		this.neckSkin = new ArtStyleEntry("neck.skin");
		this.neckSkin.fill = this.skin.fill;

		this.legsSkin = new ArtStyleEntry("legs.skin");
		this.legsSkin.fill = this.skin.fill;

		this.buttSkin = new ArtStyleEntry("butt.skin");
		this.buttSkin.fill = this.skin.fill;

		this.feetSkin = new ArtStyleEntry("feet.skin");
		this.feetSkin.fill = this.skin.fill;

		this.shadowBoobInnerLowerShadow = new ArtStyleEntry("shadow.boob_inner_lower_shadow");
		this.shadowBoobInnerLowerShadow["fill-opacity"] = 1;

		this.shadowBoobInnerUpperShadow = new ArtStyleEntry("shadow.boob_inner_upper_shadow");
		this.shadowBoobInnerUpperShadow["fill-opacity"] = 1;

		this.gag = new ArtStyleEntry("gag");
		this.gag.fill = "#bf2126";
	}

	get StylesCss() {
		let mainStyle = new ArtStyleEntry("");
		mainStyle.position = "absolute";
		mainStyle.height = "100%";
		mainStyle["margin-left"] = "auto";
		mainStyle["margin-right"] = "auto";
		mainStyle.left = "0";
		mainStyle.right = "0";

		this.styles.push(this.white);
		this.styles.push(this.arm);
		this.styles.push(this.skin);
		this.styles.push(this.head);
		this.styles.push(this.torso);
		this.styles.push(this.boob);
		this.styles.push(this.penis);
		this.styles.push(this.scrotum);
		this.styles.push(this.areola);
		this.styles.push(this.labia);
		this.styles.push(this.hair);
		this.styles.push(this.shoe);
		this.styles.push(this.smartPiercing);
		this.styles.push(this.steelPiercing);
		this.styles.push(this.steelChastity);
		this.styles.push(this.labiaSkin);
		this.styles.push(this.outfitBase);
		this.styles.push(this.shadow);
		this.styles.push(this.muscleTone);
		this.styles.push(this.glasses);
		this.styles.push(this.lips);
		this.styles.push(this.eyeball);
		this.styles.push(this.iris);
		this.styles.push(this.highlight1);
		this.styles.push(this.highlight2);
		this.styles.push(this.highlightStrong);
		this.styles.push(this.armpitHair);
		this.styles.push(this.pubicHair);
		this.styles.push(this.bellyDetails);
		this.styles.push(this.bellySkin);
		this.styles.push(this.bellyUpperSkin);
		this.styles.push(this.neckSkin);
		this.styles.push(this.legsSkin);
		this.styles.push(this.buttSkin);
		this.styles.push(this.feetSkin);
		this.styles.push(this.shadowBoobInnerLowerShadow);
		this.styles.push(this.shadowBoobInnerUpperShadow);
		this.styles.push(this.gag);
		let stylesValues = [];

		let artDisplayClass = this.artDisplayClass;

		stylesValues.push(`.${artDisplayClass} ${mainStyle.toString()}`);
		this.styles.forEach(function(style) {
			stylesValues.push(`.${artDisplayClass} ${style.toString()}`);
		});

		return stylesValues.join(" ");
	}
}

class ClothingControl {
	get fuckdoll() {
		let defaultOutfitColor = "#515351";
		let areolaColor = "#383838";
		return {
			bodySettings: {
				showEyes: false,
				showPubic: false,
				showArmHair: false,
				showHair: false,
				showLegHighlight: true,
				showTorsoHighlight: true,
				showBoobsHighlight: true,
				showHeadHighlight: true
			},
			styleSettings: {
				skin: {fill: defaultOutfitColor},
				arm: {fill: defaultOutfitColor},
				penis: {fill: defaultOutfitColor},
				legsSkin: {fill: defaultOutfitColor},
				feetSkin: {fill: defaultOutfitColor},
				torso: {fill: defaultOutfitColor},
				buttSkin: {fill: defaultOutfitColor},
				head: {fill: defaultOutfitColor},
				neckSkin: {fill: defaultOutfitColor},
				boob: {fill: defaultOutfitColor},
				areola: {fill: areolaColor},
				labia: {fill: areolaColor},
				bellySkin: {fill: defaultOutfitColor},
				bellyUpperSkin: {fill: defaultOutfitColor},
				shoe: {fill: defaultOutfitColor},
				labiaSkin: {fill: defaultOutfitColor},
				lips: {fill: areolaColor}
			}
		};
	}

	get niceMaid() {
		return {
			bodySettings: {
				showPubic: false,
				showBoobs: false,
				showNipples: false,
				showPenis: false,
				showBalls: false,
				showBellyPiercings: false,
				showNipplesPiercings: false
			},
			styleSettings: {
				bellySkin: {fill: "#FFFFFF"},
				bellyUpperSkin: {fill: "#FFFFFF"},
				bellyDetails: {"fill-opacity": 0}
			}
		};
	}

	get sluttyMaid() {
		return {
			bodySettings: {
				showBellyPiercings: false
			},
			styleSettings: {
				bellySkin: {fill: "#FFFFFF"},
				bellyDetails: {"fill-opacity": 0}
			}
		};
	}

	get restrictiveLatex() {
		let defaultOutfitColor = "#515351";
		let areolaColor = "#383838";	// FIXME: unused variable
		return {
			bodySettings: {
				showEyes: false,
				showPubic: false,
				showArmHair: false,
				showHair: false,
				showLegHighlight: true,
				showTorsoHighlight: true,
				showBoobsHighlight: true,
				showHeadHighlight: true,
				showHeadPiercings: false,
				showBellyPiercings: false
			},
			styleSettings: {
				skin: {fill: defaultOutfitColor},
				arm: {fill: defaultOutfitColor},
				legsSkin: {fill: defaultOutfitColor},
				feetSkin: {fill: defaultOutfitColor},
				torso: {fill: defaultOutfitColor},
				buttSkin: {fill: defaultOutfitColor},
				head: {fill: defaultOutfitColor},
				neckSkin: {fill: defaultOutfitColor},
				bellySkin: {fill: defaultOutfitColor},
				bellyUpperSkin: {fill: defaultOutfitColor},
				shoe: {fill: defaultOutfitColor}
			}
		};
	}

	get latexCatsuit() {
		let defaultOutfitColor = "#515351";
		let areolaColor = "#383838";
		return {
			bodySettings: {
				showPubic: false,
				showArmHair: false,
				showLegHighlight: true,
				showTorsoHighlight: true,
				showBoobsHighlight: true,
				showHeadHighlight: true,
				showPussyPiercings: false,
				showPenisPiercings: false,
				showBellyPiercings: false,
				showNipplesPiercings: false
			},
			styleSettings: {
				skin: {fill: defaultOutfitColor},
				scrotum: {fill: defaultOutfitColor},
				arm: {fill: defaultOutfitColor},
				penis: {fill: defaultOutfitColor},
				legsSkin: {fill: defaultOutfitColor},
				feetSkin: {fill: defaultOutfitColor},
				torso: {fill: defaultOutfitColor},
				buttSkin: {fill: defaultOutfitColor},

				neckSkin: {fill: defaultOutfitColor},
				boob: {fill: defaultOutfitColor},
				areola: {fill: areolaColor},
				labia: {fill: areolaColor},
				bellySkin: {fill: defaultOutfitColor},
				bellyUpperSkin: {fill: defaultOutfitColor},
				shoe: {fill: defaultOutfitColor},
				labiaSkin: {fill: defaultOutfitColor}
			}
		};
	}

	get bodyOil() {
		return {
			bodySettings: {
				showLegHighlight: true,
				showTorsoHighlight: true,
				showBoobsHighlight: true,
				showHeadHighlight: true,
			},
			styleSettings: {

			}
		};
	}

	get bodysuit() {
		let defaultOutfitColor = "#162d50";
		return {
			bodySettings: {
				showPubic: false,
				showArmHair: false,
				showPussy: false,
				showPussyPiercings: false,
				showPenisPiercings: false,
				showBellyPiercings: false,
				showNipplesPiercings: false
			},
			styleSettings: {
				skin: {fill: defaultOutfitColor},
				scrotum: {fill: defaultOutfitColor},
				arm: {fill: defaultOutfitColor},
				penis: {fill: defaultOutfitColor},
				legsSkin: {fill: defaultOutfitColor},
				feetSkin: {fill: defaultOutfitColor},
				torso: {fill: defaultOutfitColor},
				buttSkin: {fill: defaultOutfitColor},
				boob: {fill: defaultOutfitColor},
				areola: {fill: defaultOutfitColor},
				bellySkin: {fill: defaultOutfitColor},
				bellyUpperSkin: {fill: defaultOutfitColor},
				shoe: {fill: defaultOutfitColor},
				muscleTone: {"fill-opacity": 0},
				bellyDetails: {"fill-opacity": 0}
			}
		};
	}

	get leotard() {
		let defaultOutfitColor = "#d35f8d";
		return {
			bodySettings: {
				showPubic: false,
				showArmHair: false,
				showPussy: false,
				showPussyPiercings: false,
				showPenisPiercings: false,
				showBellyPiercings: false,
				showNipplesPiercings: false,
				showNipples: false
			},
			styleSettings: {
				skin: {fill: defaultOutfitColor},
				scrotum: {fill: defaultOutfitColor},
				penis: {fill: defaultOutfitColor},
				torso: {fill: defaultOutfitColor},
				boob: {fill: defaultOutfitColor},
				areola: {fill: defaultOutfitColor},
				bellySkin: {fill: defaultOutfitColor},
				bellyUpperSkin: {fill: defaultOutfitColor},
				muscleTone: {"fill-opacity": 0},
				bellyDetails: {"fill-opacity": 0}
			}
		};
	}
}

class RevampedArtControl {
	constructor(artDisplayClass, artSlave, globalShowHighlights, globalShowBodyMods) {
		this.artDisplayClass = artDisplayClass;
		this.artSlave = artSlave;
		this.styleControl = new ArtStyleControl(artDisplayClass, artSlave);
		this.clothingControl = new ClothingControl();
		this.artTransform = "";
		this.boobRightArtTransform = "";
		this.boobLeftArtTransform = "";
		this.boobOutfitArtTransform = "";

		this.showArmHair = true;
		this.showHair = true;
		this.showPussy = true;
		this.showPubic = true;
		this.showChastityVaginal = true;
		this.showChastityAnal = true;
		this.showBalls = true;
		this.showPenis = true;
		this.showNipples = true;
		this.showBoobs = true;
		this.showEyes = true;
		this.showMouth = true;

		this.leftArmType = this.getLeftArmPosition;
		this.rightArmType = this.getRightArmPosition;

		this.hairLength = this.getHairLength;
		this.torsoSize = this.getTorsoSize;
		this.bellyLevel = this.getBellyLevel;

		this.showLegHighlight = false;
		this.showTorsoHighlight = false;
		this.showBoobsHighlight = false;
		this.showHeadHighlight = false;

		this.showPussyPiercings = true;
		this.showBellyPiercings = true;
		this.showPenisPiercings = true;
		this.showNipplesPiercings = true;
		this.showHeadPiercings = true;

		this.pubicTattooText = "";

		let clothing = this.getClothing();
		if (clothing !== null) {
			if (clothing.bodySettings !== null) {
				this.applyClothingSettings(clothing.bodySettings);
			}
			if (clothing.styleSettings !== null) {
				this.applyClothingStyleSettings(clothing.styleSettings);
			}
		}

		if (!globalShowHighlights) {
			this.showLegHighlight = false;
			this.showTorsoHighlight = false;
			this.showBoobsHighlight = false;
			this.showHeadHighlight = false;
		}
		if (!globalShowBodyMods) {
			this.showPussyPiercings = false;
			this.showBellyPiercings = false;
			this.showPenisPiercings = false;
			this.showNipplesPiercings = false;
			this.showHeadPiercings = false;
		}
	}

	copyProperties(objTo, objFrom) {
		for (let attr in objFrom) {
			if (objFrom.hasOwnProperty(attr)) { objTo[attr] = objFrom[attr]; }
		}
	}

	applyClothingSettings(clothingSettings) {
		this.copyProperties(this, clothingSettings);
	}

	applyClothingStyleSettings(styleSettings) {
		for (let attr in styleSettings) {
			if (styleSettings.hasOwnProperty(attr)) {
				this.copyProperties(this.styleControl[attr], styleSettings[attr]);
			}
		}
	}

	getClothing() {
		if (this.artSlave.fuckdoll > 0) {
			return this.clothingControl.fuckdoll;
		}
		let clothing = null;
		switch (this.artSlave.clothes) {
			case "a nice maid outfit":
				clothing = this.clothingControl.niceMaid;
				break;
			case "a slutty maid outfit":
				clothing = this.clothingControl.sluttyMaid;
				break;
			case "restrictive latex":
				clothing = this.clothingControl.restrictiveLatex;
				break;
			case "a latex catsuit":
				clothing = this.clothingControl.latexCatsuit;
				break;
			case "body oil":
				clothing = this.clothingControl.bodyOil;
				break;
			case "a comfortable bodysuit":
				clothing = this.clothingControl.bodysuit;
				break;
			case "a leotard":
				/* return this.clothingControl.leotard;*/
				break;
		}
		return clothing;
	}

	get getHairLength() {
		let result = "Short";
		if (this.artSlave.hLength >= 80) {
			result = "Long";
		} else if (this.artSlave.hLength >= 40) {
			result = "Medium";
		} else {
			result = "Short";
		}

		return result;
	}

	get getTorsoSize() {
		let torsoSize = "Normal";

		if (this.artSlave.waist < -40) {
			torsoSize = this.artSlave.weight > 30 ? "Hourglass" : "Unnatural";
		} else if (this.artSlave.waist <= 10) {
			torsoSize = this.artSlave.weight > 30 ? "Normal" : "Hourglass";
		} else {
			torsoSize = "Normal";
		}

		return torsoSize;
	}

	get getLeftArmPosition() {
		let leftArmType = "Low";

		if (this.artSlave.devotion > 50) {
			leftArmType = "High";
		} else if (this.artSlave.trust >= -20) {
			if (this.artSlave.devotion <= 20) {
				leftArmType = "Low";
			} else {
				leftArmType = "Mid";
			}
		} else {
			leftArmType = "Mid";
		}

		return leftArmType;
	}

	get getRightArmPosition() {
		let rightArmType = "Low";

		if (this.artSlave.devotion > 50) {
			rightArmType = "High";
		} else if (this.artSlave.trust >= -20) {
			if (this.artSlave.devotion <= 20) {
				rightArmType = "Low";
			} else {
				rightArmType = "High";
			}
		} else {
			rightArmType = "Mid";
		}

		return rightArmType;
	}

	get getBellyLevel() {
		let bellyLevel = 0;
		if (this.artSlave.belly >= 120000) {
			bellyLevel = 9;
		} else if (this.artSlave.belly >= 90000) {
			bellyLevel = 8;
		} else if (this.artSlave.belly >= 50000) {
			bellyLevel = 7;
		} else if (this.artSlave.belly >= 30000) {
			bellyLevel = 6;
		} else if (this.artSlave.belly >= 15000) {
			bellyLevel = 5;
		} else if (this.artSlave.belly >= 10000) {
			bellyLevel = 4;
		} else if (this.artSlave.belly >= 5000) {
			bellyLevel = 3;
		} else if (this.artSlave.belly >= 1500) {
			bellyLevel = 2;
		} else if (this.artSlave.belly >= 500) {
			bellyLevel = 1;
		} else {
			bellyLevel = 0;
		}

		return bellyLevel;
	}

	get hairBackLayer() {
		let result = [];

		if (!this.showHair) {
			return result;
		}

		if (this.artSlave.hLength === 0) {
			return result;
		}

		switch (this.artSlave.hStyle) {
			case "neat":
				result.push(`Art_Vector_Revamp_Hair_Back_Neat_${this.hairLength}`);
				break;
			case "bun":
			case "up":
				result.push(`Art_Vector_Revamp_Hair_Back_Bun_${this.hairLength}`);
				break;
			case "tails":
				result.push(`Art_Vector_Revamp_Hair_Back_Tails_${this.hairLength}`);
				break;
			case "ponytail":
				result.push(`Art_Vector_Revamp_Hair_Back_Ponytail_${this.hairLength}`);
				break;
			case "braided":
				result.push(`Art_Vector_Revamp_Hair_Back_Braids_${this.hairLength}`);
				break;
			case "curled":
				result.push(`Art_Vector_Revamp_Hair_Back_Curled_${this.hairLength}`);
				break;
			case "cornrows":
				result.push(`Art_Vector_Revamp_Hair_Back_Cornrows_${this.hairLength}`);
				break;
			case "strip":
				result.push(`Art_Vector_Revamp_Hair_Back_Shaved_Sides_${this.hairLength}`);
				break;
			case "luxurious":
				result.push(`Art_Vector_Revamp_Hair_Back_Luxurious_${this.hairLength}`);
				break;
			case "afro":
				result.push(`Art_Vector_Revamp_Hair_Back_Afro_${this.hairLength}`);
				break;
			case "permed":
				result.push(`Art_Vector_Revamp_Hair_Back_Permed_${this.hairLength}`);
				break;
			case "dreadlocks":
				result.push(`Art_Vector_Revamp_Hair_Back_Dreadlocks_${this.hairLength}`);
				break;
			default:
				result.push(`Art_Vector_Revamp_Hair_Back_Messy_${this.hairLength}`);
		}

		return result;
	}

	get armLayer() {
		let result = [];

		let leftArmType = "";	// FIXME: unused variable
		let rightArmType = "";	// FIXME: unused variable

		if (this.artSlave.amp === 1) {
			result.push("Art_Vector_Revamp_Arm_Stump");
		} else {
			result.push(`Art_Vector_Revamp_Arm_Right_${this.rightArmType}`);
			result.push(`Art_Vector_Revamp_Arm_Left_${this.leftArmType}`);
		}

		if (this.showArmHair && (this.artSlave.amp === 1 || (this.leftArmType === "High" && this.artSlave.amp !== 1))) {
			switch (this.artSlave.underArmHStyle) {
				case "bushy":
					result.push("Art_Vector_Revamp_Arm_Up_Hair_Bushy");
					break;
				case "neat":
					result.push("Art_Vector_Revamp_Arm_Up_Hair_Neat");
					break;
				default:
			}
		}

		return result;
	}

	get buttLayer() {
		let result = [];
		let buttSize = 0;
		if (this.artSlave.amp) {
			return result;
		}

		if (this.artSlave.butt > 6) {
			buttSize = 3;
		} else if (this.artSlave.butt > 4) {
			buttSize = 2;
		} else if (this.artSlave.butt > 2) {
			buttSize = 1;
		} else {
			buttSize = 0;
		}

		result.push(`Art_Vector_Revamp_Butt_${buttSize}`);

		return result;
	}

	get legLayer() {
		let result = [];

		if (this.artSlave.amp === 1) {
			result.push("Art_Vector_Revamp_Stump");
		} else {
			let legSize = "Normal";

			if (this.artSlave.hips < 0) {
				legSize = this.artSlave.weight > 95 ? "Normal" : "Narrow";
			} else if (this.artSlave.hips === 0) {
				legSize = this.artSlave.weight > 95 ? "Wide" : "Normal";
			} else if (this.artSlave.hips > 0) {
				legSize = "Wide";
			}

			result.push(`Art_Vector_Revamp_Leg_${legSize}`);

			if (this.showLegHighlight) {
				result.push("Art_Vector_Revamp_Leg_Highlights2");
				result.push("Art_Vector_Revamp_Leg_Highlights1");
			}
		}

		return result;
	}

	get feetLayer() {
		let result = [];

		if (this.artSlave.amp === 1) {
			return result;
		}

		switch (this.artSlave.shoes) {
			case "heels":
				result.push("Art_Vector_Revamp_Shoes_Heel");
				break;
			case "extreme heels":
				result.push("Art_Vector_Revamp_Shoes_Exterme_Heel");
				break;
			case "boots":
				result.push("Art_Vector_Revamp_Shoes_Boot");
				break;
			case "flats":
				result.push("Art_Vector_Revamp_Shoes_Flat");
				break;
			default:
				result.push("Art_Vector_Revamp_Feet");
		}

		return result;
	}

	get torsoLayer() {
		let result = [];

		result.push(`Art_Vector_Revamp_Torso_${this.torsoSize}`);
		result.push("Art_Vector_Revamp_Clavicle");
		if (this.showTorsoHighlight) {
			result.push("Art_Vector_Revamp_Torso_Highlights2");
			result.push("Art_Vector_Revamp_Torso_Highlights1");
		}

		if (this.showArmHair && this.leftArmType !== "High" && this.artSlave.amp !== 1) {
			switch (this.artSlave.underArmHStyle) {
				case "bushy":
					result.push("Art_Vector_Revamp_Arm_Down_Hair_Bushy");
					break;
				case "neat":
					result.push("Art_Vector_Revamp_Arm_Down_Hair_Neat");
					break;
				default:
			}
		}

		return result;
	}

	get pussyLayer() {
		let result = [];

		if (this.showPussy && this.artSlave.vagina >= 0) {
			result.push("Art_Vector_Revamp_Pussy");
		}

		return result;
	}

	get pubicLayer() {
		let result = [];

		if (!this.showPubic) {
			return result;
		}

		if (this.artSlave.physicalAge < 12) {
			return result;
		}

		if (this.artSlave.vaginaTat === "rude words") {
			this.pubicTattooText = this.artSlave.dick !== 0 ? "Useless" : "Fucktoy";
			result.push("Art_Vector_Revamp_Pussy_Tattoo");
		}
		switch (this.artSlave.pubicHStyle) {
			case "strip":
			case "in a strip":
				result.push("Art_Vector_Revamp_Pubic_Hair_Strip");
				break;
			case "bushy":
			case "bushy in the front and neat in the rear":
			case "very bushy":
				result.push("Art_Vector_Revamp_Pubic_Hair_Bush");
				break;
			case "neat":
				result.push("Art_Vector_Revamp_Pubic_Hair_Neat");
				break;
			case "waxed":
				break;
			default:
		}

		return result;
	}

	get pussyPiercingsLayer() {
		let result = [];

		if (!this.showPussyPiercings) {
			return result;
		}

		if (this.artSlave.vaginaPiercing === 1) {
			result.push("Art_Vector_Revamp_Pussy_Piercing");
		} else if (this.artSlave.vaginaPiercing === 2) {
			result.push("Art_Vector_Revamp_Pussy_Piercing_Heavy");
		}

		if (this.artSlave.clitPiercing === 1) {
			result.push("Art_Vector_Revamp_Clit_Piercing");
		} else if (this.artSlave.clitPiercing === 2) {
			result.push("Art_Vector_Revamp_Clit_Piercing_Heavy");
		} else if (this.artSlave.clitPiercing === 3) {
			result.push("Art_Vector_Revamp_Clit_Piercing_Smart");
		}

		return result;
	}

	get chastityBeltLayer() {
		let result = [];

		let isChastityAnalWorn = this.artSlave.chastityAnus === 1;

		isChastityAnalWorn = isChastityAnalWorn && this.showChastityAnal;

		let isChastityVaginalWorn = this.artSlave.chastityVagina === 1;

		isChastityVaginalWorn = isChastityVaginalWorn && this.showChastityVaginal;

		if (isChastityAnalWorn) {
			result.push("Art_Vector_Revamp_Chastity_Anus");
		}

		if (isChastityVaginalWorn) {
			result.push("Art_Vector_Revamp_Chastity_Vagina");
		}

		if (isChastityAnalWorn || isChastityVaginalWorn) {
			result.push("Art_Vector_Revamp_Chastity_Base");
		}

		return result;
	}

	get torsoOutfitLayer() {
		let result = [];

		switch (this.artSlave.clothes) {
			case "uncomfortable straps":
				result.push(`Art_Vector_Revamp_Torso_Outfit_Straps_${this.torsoSize}`);
				break;
			case "a nice maid outfit":
				result.push(`Art_Vector_Revamp_Torso_Outfit_Maid_${this.torsoSize}`);
				break;
			case "a slutty maid outfit":
				result.push(`Art_Vector_Revamp_Torso_Outfit_Maid_Lewd_${this.torsoSize}`);
				break;
			default:
		}

		return result;
	}

	get ballsLayer() {
		let result = [];

		if (!this.showBalls || this.artSlave.scrotum <= 0 || this.artSlave.balls <= 0) {
			return result;
		}

		let ballsSize = 0;

		if (this.artSlave.scrotum >= 6) {
			ballsSize = 4;
		} else if (this.artSlave.scrotum >= 4) {
			ballsSize = 3;
		} else if (this.artSlave.scrotum >= 3) {
			ballsSize = 2;
		} else if (this.artSlave.scrotum >= 2) {
			ballsSize = 1;
		} else {
			ballsSize = 0;
		}

		result.push(`Art_Vector_Revamp_Balls_${ballsSize}`);

		return result;
	}

	get bellyLayer() {
		let result = [];

		if (this.bellyLevel > 0) {
			result.push(`Art_Vector_Revamp_Belly_${this.bellyLevel}`);

			if (this.showBellyPiercings) {
				if (this.artSlave.navelPiercing >= 1) {
					result.push(`Art_Vector_Revamp_Belly_${this.bellyLevel}_Piercing`);
				}

				if (this.artSlave.navelPiercing === 2) {
					result.push(`Art_Vector_Revamp_Belly_${this.bellyLevel}_Piercing_Heavy`);
				}
			}
		} else {
			if (this.showBellyPiercings) {
				if (this.artSlave.navelPiercing >= 1) {
					result.push("Art_Vector_Revamp_Navel_Piercing");
				}

				if (this.artSlave.navelPiercing === 2) {
					result.push("Art_Vector_Revamp_Navel_Piercing_Heavy");
				}
			}
		}

		return result;
	}

	get penisLayer() {
		let result = [];

		if (this.getBellyLevel >= 8) {
			return result;
		}

		let penisSize = -1;

		if (this.artSlave.dick >= 8) {
			penisSize = 6;
		} else if (this.artSlave.dick >= 7) {
			penisSize = 5;
		} else if (this.artSlave.dick >= 6) {
			penisSize = 4;
		} else if (this.artSlave.dick >= 5) {
			penisSize = 3;
		} else if (this.artSlave.dick >= 4) {
			penisSize = 2;
		} else if (this.artSlave.dick >= 2) {
			penisSize = 1;
		} else if (this.artSlave.dick >= 1) {
			penisSize = 0;
		} else {
			penisSize = -1;
		}

		if (!this.showPenis || penisSize < 0) {
			return result;
		}

		if (canAchieveErection(this.artSlave) && (this.artSlave.chastityPenis !== 1)) {
			result.push(`Art_Vector_Revamp_Penis_${penisSize}`);

			if (!this.showPenisPiercings) {
				return result;
			}

			if (this.artSlave.dickPiercing === 1) {
				result.push(`Art_Vector_Revamp_Penis_${penisSize}_Piercing`);
			} else if (this.artSlave.dickPiercing === 2) {
				result.push(`Art_Vector_Revamp_Penis_${penisSize}_Piercing_Heavy`);
			}
		} else {
			result.push(`Art_Vector_Revamp_Flaccid_${penisSize}`);

			if (this.artSlave.chastityPenis === 1) {
				result.push(`Art_Vector_Revamp_Chastity_Cage_${penisSize}`);
			}
		}

		return result;
	}

	get boobLayer() {
		let result = [];

		if (this.artSlave.boobs < 300) {
			if (this.showNipples) {
				let areolaeShape = "Normal";

				switch (this.artSlave.areolae) {
					case 0:
						areolaeShape = "Normal";
						break;
					case 1:
						areolaeShape = "Large";
						break;
					case 2:
						areolaeShape = "Wide";
						break;
					case 3:
						areolaeShape = "Huge";
						break;
					default:
				}
				switch (this.artSlave.areolaeShape) {
					case "heart":
						areolaeShape = "Heart";
						break;
					case "star":
						areolaeShape = "Star";
						break;
					default:
				}

				result.push(`Art_Vector_Revamp_Boob_None_Areola_${areolaeShape}`);
			}
		} else {
			let artScaleFactor = 0.804354 * Math.log(0.00577801 * this.artSlave.boobs);

			let boobRightArtTranslationX = 270 * ((-1 * artScaleFactor) + 1);
			let boobLeftArtTranslationX = 320 * ((-1 * artScaleFactor) + 1);
			let artTranslationX = -283.841 * artScaleFactor + 285.349;
			let artTranslationY = 198 * ((-1 * artScaleFactor) + 1);
			let artBoobTransform = `matrix(${artScaleFactor},0,0,${artScaleFactor},${artTranslationX},${artTranslationY})`;

			this.artTransform = artBoobTransform;

			if (!this.showBoobs) {
				return result;
			}

			let size = "Small";

			if (this.artSlave.boobs < 600) {
				artScaleFactor = 0.360674 * Math.log(0.0266667 * this.artSlave.boobs);

				boobRightArtTranslationX = 240 * ((-1 * artScaleFactor) + 1);
				boobLeftArtTranslationX = 300 * ((-1 * artScaleFactor) + 1);
				artTranslationY = 250 * ((-1 * artScaleFactor) + 1);
				size = "Small";
			} else if (this.artSlave.boobs < 15000) {
				size = "Medium";
			} else {
				size = "Huge";
				boobRightArtTranslationX = 252 * ((-1 * artScaleFactor) + 1);
				boobLeftArtTranslationX = 315 * ((-1 * artScaleFactor) + 1);
			}

			this.boobRightArtTransform = `matrix(${artScaleFactor},0,0,${artScaleFactor},${boobRightArtTranslationX},${artTranslationY})`;
			this.boobLeftArtTransform = `matrix(${artScaleFactor},0,0,${artScaleFactor},${boobLeftArtTranslationX},${artTranslationY})`;
			result.push(`Art_Vector_Revamp_Boob_${size}`);

			if (this.showNipples) {
				let areolaeShape = "Normal";

				switch (this.artSlave.areolae) {
					case 0:
						areolaeShape = "Normal";
						break;
					case 1:
						areolaeShape = "Large";
						break;
					case 2:
						areolaeShape = "Wide";
						break;
					case 3:
						areolaeShape = "Huge";
						break;
					default:
				}
				switch (this.artSlave.areolaeShape) {
					case "heart":
						areolaeShape = "Heart";
						break;
					case "star":
						areolaeShape = "Star";
						break;
					default:
				}

				result.push(`Art_Vector_Revamp_Boob_${size}_Areolae_${areolaeShape}`);
				result.push(`Art_Vector_Revamp_Boob_${size}_Nipples`);
			}
			if (this.showBoobsHighlight) {
				result.push(`Art_Vector_Revamp_Boob_${size}_Highlights2`);
				result.push(`Art_Vector_Revamp_Boob_${size}_Highlights1`);
			}
		}

		return result;
	}

	get boobAddonLayer() {
		let result = [];

		if (this.showNipplesPiercings) {
			let size = "Small";

			if (this.artSlave.boobs < 600) {
				size = "Small";
			} else if (this.artSlave.boobs < 15000) {
				size = "Medium";
			} else {
				size = "Huge";
			}

			if (this.artSlave.nipplesPiercing === 1) {
				if (this.artSlave.boobs < 300) {
					result.push("Art_Vector_Revamp_Boob_None_Piercing");
				} else {
					result.push(`Art_Vector_Revamp_Boob_${size}_Piercing`);
				}
			} else if (this.artSlave.nipplesPiercing === 2) {
				if (this.artSlave.boobs < 300) {
					result.push("Art_Vector_Revamp_Boob_None_Piercing_Heavy");
				} else {
					result.push(`Art_Vector_Revamp_Boob_${size}_Piercing_Heavy`);
				}
			}

			if (this.artSlave.areolaePiercing === 1) {
				if (this.artSlave.boobs < 300) {
					result.push("Art_Vector_Revamp_Boob_None_Areola_Piercing");
				} else {
					result.push(`Art_Vector_Revamp_Boob_${size}_Areola_Piercing`);
				}
			} else if (this.artSlave.areolaePiercing === 2) {
				if (this.artSlave.boobs < 300) {
					result.push("Art_Vector_Revamp_Boob_None_Areola_Piercing_Heavy");
				} else {
					result.push(`Art_Vector_Revamp_Boob_${size}_Areola_Piercing_Heavy`);
				}
			}
		}

		switch (this.artSlave.clothes) {
			case "uncomfortable straps":
				// if (this.artSlave.boobs >= 300)
				// result.push("Art_Vector_Revamp_Boob_Outfit_Straps");
				break;
			case "a nice maid outfit":
				if (this.artSlave.boobs >= 300) {
					if (this.artSlave.boobs < 600) {
						let artScaleFactor = 0.288539 * Math.log(0.106667 * this.artSlave.boobs);
						let artTranslationX = 270 * ((-1 * artScaleFactor) + 1);
						let artTranslationY = 198 * ((-1 * artScaleFactor) + 1); // -198.438*artScaleFactor+203.274;
						let artBoobTransform = `matrix(${artScaleFactor},0,0,${artScaleFactor},${artTranslationX},${artTranslationY})`;

						this.boobOutfitArtTransform = artBoobTransform;

						result.push("Art_Vector_Revamp_Boob_Small_Outfit_Maid");
					} else if (this.artSlave.boobs < 15000) {
						let artScaleFactor = 0.155334 * Math.log(1.04167 * this.artSlave.boobs);
						let artTranslationX = 270 * ((-1.25 * artScaleFactor) + 1.25);
						let artTranslationY = 198 * ((-0.8 * artScaleFactor) + 0.8); // -198.438*artScaleFactor+203.274;
						let artBoobTransform = `matrix(${artScaleFactor},0,0,${artScaleFactor},${artTranslationX},${artTranslationY})`;

						this.boobOutfitArtTransform = artBoobTransform;
						result.push("Art_Vector_Revamp_Boob_Medium_Outfit_Maid");
					} else {
						let artScaleFactor = 1.56609 * Math.log(0.00017373 * this.artSlave.boobs);
						let artTranslationX = 340 * ((-1 * artScaleFactor) + 1);
						let artTranslationY = 153 * ((-1 * artScaleFactor) + 1); // -198.438*artScaleFactor+203.274;
						let artBoobTransform = `matrix(${artScaleFactor},0,0,${artScaleFactor},${artTranslationX},${artTranslationY})`;

						this.boobOutfitArtTransform = artBoobTransform;
						result.push("Art_Vector_Revamp_Boob_Huge_Outfit_Maid");
					}
				}
				break;

			default:
		}

		return result;
	}

	get clavicleLayer() {
		let result = [];

		result.push("Art_Vector_Revamp_Clavicle");

		return result;
	}

	get collarLayer() {
		let result = [];

		switch (this.artSlave.collar) {
			case "leather with cowbell":
				result.push("Art_Vector_Revamp_Collar_Cowbell");
				break;
			case "heavy gold":
				result.push("Art_Vector_Revamp_Collar_Gold_Heavy");
				break;
			case "neck corset":
				result.push("Art_Vector_Revamp_Collar_Neck_Corset");
				break;
			case "pretty jewelry":
				result.push("Art_Vector_Revamp_Collar_Pretty_Jewelry");
				break;
			case "cruel retirement counter":
				result.push("Art_Vector_Revamp_Collar_Retirement_Cruel");
				break;
			case "nice retirement counter":
				result.push("Art_Vector_Revamp_Collar_Retirement_Nice");
				break;
			case "satin choker":
				result.push("Art_Vector_Revamp_Collar_Satin_Choker");
				break;
			case "shock punishment":
				result.push("Art_Vector_Revamp_Collar_Shock_Punishment");
				break;
			case "stylish leather":
				result.push("Art_Vector_Revamp_Collar_Stylish_Leather");
				break;
			case "tight steel":
				result.push("Art_Vector_Revamp_Collar_Tight_Steel");
				break;
			default:
		}

		return result;
	}

	get headLayer() {
		let result = [];

		result.push("Art_Vector_Revamp_Head");

		if (this.showHeadHighlight) {
			result.push("Art_Vector_Revamp_Face_Highlights");
		}

		if (!this.showHeadPiercings) {
			return result;
		}

		if (this.artSlave.earPiercing === 1) {
			result.push("Art_Vector_Revamp_Head_Ear_Piercing");
		} else if (this.artSlave.earPiercing === 2) {
			result.push("Art_Vector_Revamp_Head_Ear_Piercing_Heavy");
		}

		if (this.artSlave.nosePiercing === 1) {
			result.push("Art_Vector_Revamp_Head_Nose_Piercing");
		} else if (this.artSlave.nosePiercing === 2) {
			result.push("Art_Vector_Revamp_Head_Nose_Piercing_Heavy");
		}

		return result;
	}

	get eyesLayer() {
		let result = [];

		if (!this.showEyes) {
			return result;
		}

		if (this.artSlave.devotion > 50) {
			result.push("Art_Vector_Revamp_Eyes_Happy");
			result.push("Art_Vector_Revamp_Eyes_Happy_Highlights");

			if (this.showHeadPiercings) {
				if (this.artSlave.eyebrowPiercing === 1) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Happy_Piercing");
				} else if (this.artSlave.eyebrowPiercing === 2) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Happy_Piercing_Heavy");
				}
			}
		} else if (this.artSlave.devotion >= 0) {
			result.push("Art_Vector_Revamp_Eyes_Shy");
			result.push("Art_Vector_Revamp_Eyes_Shy_Highlights");

			if (this.showHeadPiercings) {
				if (this.artSlave.eyebrowPiercing === 1) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Shy_Piercing");
				} else if (this.artSlave.eyebrowPiercing === 2) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Shy_Piercing_Heavy");
				}
			}
		} else if (this.artSlave.devotion >= -50) {
			result.push("Art_Vector_Revamp_Eyes_Closed");

			if (this.showHeadPiercings) {
				if (this.artSlave.eyebrowPiercing === 1) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Closed_Piercing");
				} else if (this.artSlave.eyebrowPiercing === 2) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Closed_Piercing_Heavy");
				}
			}
		} else {
			result.push("Art_Vector_Revamp_Eyes_Angry");
			result.push("Art_Vector_Revamp_Eyes_Angry_Highlights");
			if (this.showHeadPiercings) {
				if (this.artSlave.eyebrowPiercing === 1) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Angry_Piercing");
				} else if (this.artSlave.eyebrowPiercing === 2) {
					result.push("Art_Vector_Revamp_Head_Eyebrow_Angry_Piercing_Heavy");
				}
			}
		}

		return result;
	}

	get mouthLayer() {
		let result = [];
		let lipsSize = "Normal";

		if (!this.showMouth) {
			return result;
		}

		if (this.artSlave.lips > 95) {
			lipsSize = "Enormous";
		} else if (this.artSlave.lips > 70) {
			lipsSize = "Huge";
		} else if (this.artSlave.lips > 50) {
			lipsSize = "Big";
		} else if (this.artSlave.lips > 30) {
			lipsSize = "Plush";
		} else if (this.artSlave.lips > 10) {
			lipsSize = "Normal";
		} else {
			lipsSize = "Thin";
		}

		if (this.artSlave.trust > 20) {
			result.push(`Art_Vector_Revamp_Makeup_Mouth_Happy_${lipsSize}`);
			result.push(`Art_Vector_Revamp_Mouth_Happy_${lipsSize}`);

			if (this.showHeadPiercings) {
				if (this.artSlave.lipsPiercing === 1) {
					result.push("Art_Vector_Revamp_Head_Mouth_Happy_Piercing");
				} else if (this.artSlave.lipsPiercing === 2) {
					result.push("Art_Vector_Revamp_Head_Mouth_Happy_Piercing_Heavy");
				}
			}
		} else {
			result.push(`Art_Vector_Revamp_Makeup_Mouth_Angry_${lipsSize}`);
			result.push(`Art_Vector_Revamp_Mouth_Angry_${lipsSize}`);

			if (this.showHeadPiercings) {
				if (this.artSlave.lipsPiercing === 1) {
					result.push("Art_Vector_Revamp_Head_Mouth_Angry_Piercing");
				} else if (this.artSlave.lipsPiercing === 2) {
					result.push("Art_Vector_Revamp_Head_Mouth_Angry_Piercing_Heavy");
				}
			}
		}

		return result;
	}
	get headAddonLayer() {
		let result = [];

		if (this.showEyes) {
			switch (this.artSlave.eyewear) {
				case "corrective glasses":
				case "glasses":
				case "blurring glasses":
					result.push("Art_Vector_Revamp_Glasses");
					break;
				default:
			}
		}

		if (this.showMouth) {
			switch (this.artSlave.collar) {
				case "dildo gag":
					result.push("Art_Vector_Revamp_Dildo_Gag");
					break;
				case "bit gag":
					result.push("Art_Vector_Revamp_Bit_Gag");
					break;
				case "ball gag":
					result.push("Art_Vector_Revamp_Ball_Gag");
					break;
				default:
			}
		}
		return result;
	}
	get hairForeLayer() {
		let result = [];

		if (!this.showHair) {
			return result;
		}

		if (this.artSlave.hLength === 0) {
			return result;
		}

		switch (this.artSlave.hStyle) {
			case "neat":
				result.push("Art_Vector_Revamp_Hair_Fore_Neat");
				break;
			case "bun":
			case "up":
			case "tails":
			case "ponytail":
				result.push("Art_Vector_Revamp_Hair_Fore_Bun");
				break;
			case "braided":
				result.push("Art_Vector_Revamp_Hair_Fore_Braids");
				break;
			case "curled":
				result.push("Art_Vector_Revamp_Hair_Fore_Curled");
				break;
			case "cornrows":
				result.push("Art_Vector_Revamp_Hair_Fore_Cornrows");
				break;
			case "strip":
				result.push("Art_Vector_Revamp_Hair_Fore_Shaved_Sides");
				break;
			case "luxurious":
				result.push("Art_Vector_Revamp_Hair_Fore_Luxurious");
				break;
			case "afro":
				result.push("Art_Vector_Revamp_Hair_Fore_Afro");
				break;
			case "permed":
				result.push("Art_Vector_Revamp_Hair_Fore_Permed");
				break;
			case "dreadlocks":
				result.push("Art_Vector_Revamp_Hair_Fore_Dreadlocks");
				break;
			default:
				result.push("Art_Vector_Revamp_Hair_Fore_Messy");
		}

		return result;
	}

	get StylesCss() {
		return this.styleControl.StylesCss;
	}

	get Layers() {
		let layers = [];

		Array.prototype.push.apply(layers, this.hairBackLayer);
		Array.prototype.push.apply(layers, this.armLayer);
		Array.prototype.push.apply(layers, this.buttLayer);
		Array.prototype.push.apply(layers, this.legLayer);
		Array.prototype.push.apply(layers, this.feetLayer);
		Array.prototype.push.apply(layers, this.torsoLayer);
		Array.prototype.push.apply(layers, this.clavicleLayer);
		Array.prototype.push.apply(layers, this.pussyLayer);
		Array.prototype.push.apply(layers, this.pubicLayer);
		Array.prototype.push.apply(layers, this.pussyPiercingsLayer);
		Array.prototype.push.apply(layers, this.chastityBeltLayer);
		Array.prototype.push.apply(layers, this.torsoOutfitLayer);
		Array.prototype.push.apply(layers, this.ballsLayer);
		Array.prototype.push.apply(layers, this.bellyLayer);
		Array.prototype.push.apply(layers, this.penisLayer);
		Array.prototype.push.apply(layers, this.boobLayer);
		Array.prototype.push.apply(layers, this.boobAddonLayer);
		Array.prototype.push.apply(layers, this.collarLayer);
		Array.prototype.push.apply(layers, this.headLayer);
		Array.prototype.push.apply(layers, this.eyesLayer);
		Array.prototype.push.apply(layers, this.mouthLayer);
		Array.prototype.push.apply(layers, this.headAddonLayer);
		Array.prototype.push.apply(layers, this.hairForeLayer);

		return layers;
	}
}


code:
:: PCCheatMenu [nobr]

<<set $showEncyclopedia = 0, $nextButton = "Apply", $nextLink = "PCCheatMenuCheatDatatypeCleanup">>
<<set $tempSlave = clone($PC)>>

''Cheat Editing Player Character'' <<link "[Cancel]" "Manage Personal Affairs">><<unset $tempSlave, $customEvalCode>><</link>>

Title: ''<<if $tempSlave.title == 1>>Master<<else>>Mistress<</if>>''

<<radiobutton "$tempSlave.title" 1>> Master
	<<radiobutton "$tempSlave.title" 0>> Mistress

Sex: ''$tempSlave.genes''

<<radiobutton "$tempSlave.genes" "XY">> XY
	<<radiobutton "$tempSlave.genes" "XX">> XX

''Name'': <<textbox "$tempSlave.name" $tempSlave.name>>

''Surname'': <<textbox "$tempSlave.surname" $tempSlave.surname>>

''Custom Title'': <<textbox "$tempSlave.custom.title" $tempSlave.custom.title>>

Nationality: ''$tempSlave.nationality''.
<<textbox "$tempSlave.nationality" $tempSlave.nationality>>

Career: ''$tempSlave.career''.

<<radiobutton "$tempSlave.career" "wealth">> Wealth
	<<radiobutton "$tempSlave.career" "capitalist">> Capitalist
	<<radiobutton "$tempSlave.career" "mercenary">> Mercenary
	<<radiobutton "$tempSlave.career" "slaver">> Slaver
	<<radiobutton "$tempSlave.career" "engineer">> Engineer
	<<radiobutton "$tempSlave.career" "medicine">> Medicine
	<<radiobutton "$tempSlave.career" "celebrity">> Celebrity

Method of acquiring the arcology: ''$tempSlave.rumor''.

<<radiobutton "$tempSlave.rumor" "wealth">> Wealth
	<<radiobutton "$tempSlave.rumor" "diligence">> Diligence
	<<radiobutton "$tempSlave.rumor" "force">> Force
	<<radiobutton "$tempSlave.rumor" "social engineering">> Social Engineering
	<<radiobutton "$tempSlave.rumor" "luck">> Luck

Preferred refreshment: <<textbox "$tempSlave.refreshment" $tempSlave.refreshment>>

<<radiobutton "$tempSlave.refreshment" "cigar">> Cigar
	<<radiobutton "$tempSlave.refreshment" "whiskey">> Whiskey

Preferred method of consumption: <<if $tempSlave.refreshmentType == 0>>Smoked<<elseif $tempSlave.refreshmentType == 1>>Drank<<elseif $tempSlave.refreshmentType == 2>>Eaten<<elseif $tempSlave.refreshmentType == 3>>Snorted<<elseif $tempSlave.refreshmentType == 4>>Injected<<elseif $tempSlave.refreshmentType == 5>>Popped<<else>>Orally Dissolved<</if>>

<<radiobutton "$tempSlave.refreshmentType" 0>> Smoked
	<<radiobutton "$tempSlave.refreshmentType" 1>> Drank
	<<radiobutton "$tempSlave.refreshmentType" 2>> Eaten
	<<radiobutton "$tempSlave.refreshmentType" 3>> Snorted
	<<radiobutton "$tempSlave.refreshmentType" 4>> Injected
	<<radiobutton "$tempSlave.refreshmentType" 5>> Popped
	<<radiobutton "$tempSlave.refreshmentType" 6>> Orally Dissolved

''Skin'': <<textbox "$tempSlave.skin" $tempSlave.skin>>

''Genetic Skin'': <<textbox "$tempSlave.origSkin" $tempSlave.origSkin>>

''Race'': <<textbox "$tempSlave.race" $tempSlave.race>>

''Genetic Race'': <<textbox "$tempSlave.origRace" $tempSlave.origRace>>

''Eye Color'': <<textbox "$tempSlave.eyeColor" $tempSlave.eyeColor>>

''Genetic Eye Color'': <<textbox "$tempSlave.origEye" $tempSlave.origEye>>

''Pupil Shape'': <<textbox "$tempSlave.pupil" $tempSlave.pupil>>

''Sclera Color'': <<textbox "$tempSlave.sclerae" $tempSlave.sclerae>>

''Hair Color'': <<textbox "$tempSlave.hColor" $tempSlave.hColor>>

''Genetic Hair Color'': <<textbox "$tempSlave.origHColor" $tempSlave.origHColor>>

''Boobs'': <<textbox "$tempSlave.boobs" $tempSlave.boobs>> //0: masculine chest (if title = 1) or flat chested (if title = 0)(WIP) 1: feminine bust//

''Boobs Bonus'': <<textbox "$tempSlave.boobsBonus" $tempSlave.boobsBonus>> //breast size - -3: B-cup, -2: C-cup, -1: D-cup, 0: DD-cup, 1: F-cup, 2: G-cup, 3: H-cup//

''Boobs Implant'': <<textbox "$tempSlave.boobsImplant" $tempSlave.boobsImplant>> //do you have breast implants - 0: no, 1: yes//

''Lactation'': <<textbox "$tempSlave.lactation" $tempSlave.lactation>> //are you lactating - 0: no, 1: yes//

''Butt Size'': <<textbox "$tempSlave.butt" $tempSlave.butt>> //0: normal, 1: big, 2: huge, 3: enormous//

''Butt Implant'': <<textbox "$tempSlave.buttImplant" $tempSlave.buttImplant>> //do you have butt implants - 0: no, 1: yes//

''Vagina'': <<textbox "$tempSlave.vagina" $tempSlave.vagina>>

''New Vagina'': <<textbox "$tempSlave.newVag" $tempSlave.newVag>> //0: no, 1: yes//

''Dick'': <<textbox "$tempSlave.dick" $tempSlave.dick>>

''Balls Size'': <<textbox "$tempSlave.balls" $tempSlave.balls>> //0: normal, 1: big, 2: huge//

''Balls Implant'': <<textbox "$tempSlave.ballsImplant" $tempSlave.ballsImplant>> //0: normal, 1: large, 2: huge, 3: enormous, 4: monstrous//

__Age__

''Actual Age'': <<textbox "$tempSlave.actualAge" $tempSlave.actualAge>>

''Physical Age'': <<textbox "$tempSlave.physicalAge" $tempSlave.physicalAge>>

''Visual Age'': <<textbox "$tempSlave.visualAge" $tempSlave.visualAge>>

''Ovary Age'': <<textbox "$tempSlave.ovaryAge" $tempSlave.ovaryAge>>

''Age Implant'': <<textbox "$tempSlave.ageImplant" $tempSlave.ageImplant>> //0: no surgery, 1: age altering surgery//

''Player Aging'': <<textbox "$playerAging" $playerAging>> //0: no aging, 1: no aging, but birthdays, 2: aging//

__Pregnancy__

''Pregnancy Length'': <<textbox "$tempSlave.preg" $tempSlave.preg>> //how far along your pregnancy is (pregMood kicks in at 24+ weeks) - -2: infertile, -1: contraceptives, 0: not pregnant, 1 - 42: pregnant, 43+: giving birth//

''Fetus Count'': <<textbox "$tempSlave.pregType" $tempSlave.pregType>> //how many you're having (1-8)//

''PregSource'': <<textbox "$tempSlave.pregSource" $tempSlave.pregSource>> //who knocked you up - 0: unknown, -1: self-impreg, -2: citizen, -3: former master, -4: male arc owner, -5: client, -6: Societal Elite, -7: designer baby, -9: Futanari Sister//

''PregMood'': <<textbox "$tempSlave.pregMood" $tempSlave.pregMood>> //how you act when heavily pregnant - 0: no change, 1: submissive and motherly, 2: aggressive and dominant//

''Skills:''

Trading:
''<<if $tempSlave.trading >= 100>>
	You are a master at economics and trading.
<<elseif $tempSlave.trading >= 80>>
	You are an expert at economics and trading.
<<elseif $tempSlave.trading >= 60>>
	You are skilled in economics and trading.
<<elseif $tempSlave.trading >= 40>>
	You know some things about economics and trading.
<<elseif $tempSlave.trading >= 20>>
	You are a beginner in economics.
<<elseif $tempSlave.trading >= 0>>
	You know only the basics of trading.
<<elseif $tempSlave.trading >= -20>>
	You know how to haggle a little.
<<elseif $tempSlave.trading >= -40>>
	You know how to shop around.
<<elseif $tempSlave.trading >= -60>>
	You know not to pay sticker price.
<<elseif $tempSlave.trading >= -80>>
	People always give you discounts, but you never save any money.
<<else>>
	They said it was a bear market, so where are the bears?
<</if>>''

<<radiobutton "$tempSlave.trading" 100>> Economics master
<<radiobutton "$tempSlave.trading" 90>> Economics expert
<<radiobutton "$tempSlave.trading" 70>> Skilled in economics
<<radiobutton "$tempSlave.trading" 50>> Amateur economist
<<radiobutton "$tempSlave.trading" 30>> Economics beginner
<<radiobutton "$tempSlave.trading" 0>> Basic trader
<<radiobutton "$tempSlave.trading" -10>> Haggler
<<radiobutton "$tempSlave.trading" -30>> Shopper
<<radiobutton "$tempSlave.trading" -50>> Weak saver
<<radiobutton "$tempSlave.trading" -70>> Money sieve
<<radiobutton "$tempSlave.trading" -90>> What's a trading?

Warfare:
''<<if $tempSlave.warfare >= 100>>
	You are a master of warfare.
<<elseif $tempSlave.warfare >= 80>>
	You are an expert at tactics and strategy.
<<elseif $tempSlave.warfare >= 60>>
	You are skilled in combat.
<<elseif $tempSlave.warfare >= 40>>
	You know some things about combat.
<<elseif $tempSlave.warfare >= 20>>
	You are a beginner in tactics and strategy.
<<elseif $tempSlave.warfare >= 0>>
	You know only the basics of fighting.
<<elseif $tempSlave.warfare >= -20>>
	You know how to hold a gun.
<<elseif $tempSlave.warfare >= -40>>
	You know how to stab with a knife.
<<elseif $tempSlave.warfare >= -60>>
	Go for the throat?
<<elseif $tempSlave.warfare >= -80>>
	Just kick them in the balls, right?
<<else>>
	People like you are usually the first raped in a war.
<</if>>''

<<radiobutton "$tempSlave.warfare" 100>> Warfare master
<<radiobutton "$tempSlave.warfare" 90>> Warfare expert
<<radiobutton "$tempSlave.warfare" 70>> Skilled in warfare
<<radiobutton "$tempSlave.warfare" 50>> Amateur combatant
<<radiobutton "$tempSlave.warfare" 30>> Combat beginner
<<radiobutton "$tempSlave.warfare" 0>> Basic fighter
<<radiobutton "$tempSlave.warfare" -10>> Gun haver
<<radiobutton "$tempSlave.warfare" -30>> Knife holder
<<radiobutton "$tempSlave.warfare" -50>> Throat puncher
<<radiobutton "$tempSlave.warfare" -70>> Groin kicker?
<<radiobutton "$tempSlave.warfare" -90>> Most likely to be raped

Slaving:
''<<if $tempSlave.slaving >= 100>>
	You are a master slaver.
<<elseif $tempSlave.slaving >= 80>>
	You are an expert at enslaving.
<<elseif $tempSlave.slaving >= 60>>
	You are skilled in slaving.
<<elseif $tempSlave.slaving >= 40>>
	You know some things about getting slaves.
<<elseif $tempSlave.slaving >= 20>>
	You are a beginner in slaving.
<<elseif $tempSlave.slaving >= 0>>
	You know only the basics of slaving.
<<elseif $tempSlave.slaving >= -20>>
	You know how to avoid becoming a slave.
<<elseif $tempSlave.slaving >= -40>>
	You know to read contracts before you sign them.
<<elseif $tempSlave.slaving >= -60>>
	You know to be careful.
<<elseif $tempSlave.slaving >= -80>>
	You know better than to trust anyone.
<<else>>
	It would be easy to enslave you.
<</if>>''

<<radiobutton "$tempSlave.slaving" 100>> Master slaver
<<radiobutton "$tempSlave.slaving" 90>> Expert slaver
<<radiobutton "$tempSlave.slaving" 70>> Skilled in slaving
<<radiobutton "$tempSlave.slaving" 50>> Amateur slaver
<<radiobutton "$tempSlave.slaving" 30>> Slaving beginner
<<radiobutton "$tempSlave.slaving" 0>> Basic slaver
<<radiobutton "$tempSlave.slaving" -10>> Can't make me a slave
<<radiobutton "$tempSlave.slaving" -30>> Can read contracts
<<radiobutton "$tempSlave.slaving" -50>> Careful now
<<radiobutton "$tempSlave.slaving" -70>> Don't trust that guy
<<radiobutton "$tempSlave.slaving" -90>> Potential slave

Engineering:
''<<if $tempSlave.engineering >= 100>>
	You are a master engineer.
<<elseif $tempSlave.engineering >= 80>>
	You are an expert at engineering.
<<elseif $tempSlave.engineering >= 60>>
	You are skilled in engineering.
<<elseif $tempSlave.engineering >= 40>>
	You know some things about engineering.
<<elseif $tempSlave.engineering >= 20>>
	You are a beginner in engineering.
<<elseif $tempSlave.engineering >= 0>>
	You know only the basics of engineering.
<<elseif $tempSlave.engineering >= -20>>
	You can build a gingerbread house that doesn't collapse.
<<elseif $tempSlave.engineering >= -40>>
	You can tie a tight knot, does that count?
<<elseif $tempSlave.engineering >= -60>>
	Glue is your friend; lots of it.
<<elseif $tempSlave.engineering >= -80>>
	You know better than to even try to build something.
<<else>>
	You can cook; that's sort of like building something, right?
<</if>>''

<<radiobutton "$tempSlave.engineering" 100>> Master engineer
<<radiobutton "$tempSlave.engineering" 90>> Expert engineer
<<radiobutton "$tempSlave.engineering" 70>> Skilled in engineering
<<radiobutton "$tempSlave.engineering" 50>> Amateur engineer
<<radiobutton "$tempSlave.engineering" 30>> Engineering beginner
<<radiobutton "$tempSlave.engineering" 0>> Basic engineer
<<radiobutton "$tempSlave.engineering" -10>> Gingerbread house
<<radiobutton "$tempSlave.engineering" -30>> Knot tyer
<<radiobutton "$tempSlave.engineering" -50>> You can use glue
<<radiobutton "$tempSlave.engineering" -70>> You aren't handy
<<radiobutton "$tempSlave.engineering" -90>> My hovercraft is full of eels

Medicine:
''<<if $tempSlave.medicine >= 100>>
	You are a master surgeon.
<<elseif $tempSlave.medicine >= 80>>
	You are an expert at medicine and surgery.
<<elseif $tempSlave.medicine >= 60>>
	You are skilled in surgery.
<<elseif $tempSlave.medicine >= 40>>
	You know some things about medicine.
<<elseif $tempSlave.medicine >= 20>>
	You are a beginner in medicine.
<<elseif $tempSlave.medicine >= 0>>
	You know the basics of treating injuries.
<<elseif $tempSlave.medicine >= -20>>
	You can stop a wound from getting infected.
<<elseif $tempSlave.medicine >= -40>>
	Gauze is your friend. Just keep wrapping.
<<elseif $tempSlave.medicine >= -60>>
	You know how to apply a band-aid.
<<elseif $tempSlave.medicine >= -80>>
	Cure-alls are wonderful. Why aren't they sold in stores, though?
<<else>>
	Alcohol makes pain go away, right?
<</if>>''

<<radiobutton "$tempSlave.medicine" 100>> Master surgeon
<<radiobutton "$tempSlave.medicine" 90>> Expert surgeon
<<radiobutton "$tempSlave.medicine" 70>> Skilled in medicine
<<radiobutton "$tempSlave.medicine" 50>> Amateur surgeon
<<radiobutton "$tempSlave.medicine" 30>> Medical beginner
<<radiobutton "$tempSlave.medicine" 0>> Basic medic
<<radiobutton "$tempSlave.medicine" -10>> Can treat wounds
<<radiobutton "$tempSlave.medicine" -30>> First-aid kit user
<<radiobutton "$tempSlave.medicine" -50>> Band-aid applier
<<radiobutton "$tempSlave.medicine" -70>> MEDIC!
<<radiobutton "$tempSlave.medicine" -90>> Give me another beer

Hacking:
''<<if $tempSlave.hacking >= 100>>
	You are a master of hacking.
<<elseif $tempSlave.hacking >= 80>>
	You are an expert at hacking.
<<elseif $tempSlave.hacking >= 60>>
	You are skilled in hacking.
<<elseif $tempSlave.hacking >= 40>>
	You know some things about hacking.
<<elseif $tempSlave.hacking >= 20>>
	You are a beginner in hacking.
<<elseif $tempSlave.hacking >= 0>>
	You know only the basics of hacking.
<<elseif $tempSlave.hacking >= -20>>
	You know how to click a mouse.
<<elseif $tempSlave.hacking >= -40>>
	Enter does something?
<<elseif $tempSlave.hacking >= -60>>
	Where is the "any" key?
<<elseif $tempSlave.hacking >= -80>>
	You can push the power button, good job.
<<else>>
	This black box thingy is magical.
<</if>>''

<<radiobutton "$tempSlave.hacking" 100>> Master hacker
<<radiobutton "$tempSlave.hacking" 90>> Expert hacker
<<radiobutton "$tempSlave.hacking" 70>> Skilled hacker
<<radiobutton "$tempSlave.hacking" 50>> Amateur hacker
<<radiobutton "$tempSlave.hacking" 30>> Hacking beginner
<<radiobutton "$tempSlave.hacking" 0>> Basic hacker
<<radiobutton "$tempSlave.hacking" -10>> Mouse clicker
<<radiobutton "$tempSlave.hacking" -30>> You can press Enter
<<radiobutton "$tempSlave.hacking" -50>> Where's the "any" key?
<<radiobutton "$tempSlave.hacking" -70>> Main screen turn on?
<<radiobutton "$tempSlave.hacking" -90>> Ooh, cool glowy thingy!

Your mother ID:
<<textbox "$tempSlave.mother" $tempSlave.mother>>

Your father ID:
<<textbox "$tempSlave.father" $tempSlave.father>>

''Sexual Energy'': <<textbox "$tempSlave.sexualEnergy" $tempSlave.sexualEnergy>>

''Cum Tap'': <<textbox "$tempSlave.cumTap" $tempSlave.cumTap>>

''Stored Cum'': <<textbox "$tempSlave.storedCum" $tempSlave.storedCum>>

''Fertility Drugs'': <<textbox "$tempSlave.fertDrugs" $tempSlave.fertDrugs>> //0: no, 1: yes//

''Forced Fertility Drugs'': <<textbox "$tempSlave.forcedFertDrugs" $tempSlave.forcedFertDrugs>> //time left in body system//

''Stamina Pills'': <<textbox "$tempSlave.staminaPills" $tempSlave.staminaPills>> //0: no, 1: yes//

Custom Cheat:

<<textarea "$customEvalCode" "">>

//Any JavaScript function will be automatically run using the PC as an argument when "Apply" is clicked. For example, entering "(PC) => PC.name = 'Fancy Name' " will change your name to "Fancy Name".//


code:
:: PCCheatMenuCheatDatatypeCleanup [nobr]

<<set $nextButton = "Continue", $nextLink = "Manage Personal Affairs">>
/* Cancel Option Check */
<<if $tempSlave == "unset">>
	<<unset $tempSlave>>
	<<goto "Manage Personal Affairs">>
<</if>>

<<if $customEvalCode>>
	<<if $customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */
		<<set $customEvalCode = "(" + $customEvalCode + ")">>
	<</if>>
	<<if typeof eval($customEvalCode) === "function">>
		<<run (eval($customEvalCode))($tempSlave)>>
	<</if>>
<</if>>
<<unset $customEvalCode>>

<<set $tempSlave.preg = Number($tempSlave.preg) || 0>>
<<set $tempSlave.pregSource = Number($tempSlave.pregSource) || 0>>
<<set $tempSlave.pregType = Number($tempSlave.pregType) || 0>>
<<set WombInit($tempSlave)>> /* just to make sure */
<<set $tempSlave.womb.length = 0>> /* simple way to delete all fetuses */
<<set WombImpregnate($tempSlave, $tempSlave.pregType, $tempSlave.pregSource, $tempSlave.preg)>> /* recreates fetuses */
<<if $tempSlave.preg > 0>>
	<<set $tempSlave.belly = WombGetVolume($tempSlave)>>
	<<set $tempSlave.pregWeek = $tempSlave.preg>>
<<else>>
	<<set $tempSlave.belly = 0>>
	<<set $tempSlave.pregWeek = 0>>
<</if>>
<<run PCDatatypeCleanup()>>
<<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>>
<<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>>
<<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>>
<<set $HackingSkillMultiplier = HackingSkillMultiplier()>>

<<if $tempSlave.boobs == 0>>
	<<set $tempSlave.boobsBonus = 0>>
	<<set $tempSlave.boobsImplant = 0>>
<</if>>
<<if $tempSlave.butt == 0>>
	<<set $tempSlave.buttImplant = 0>>
<</if>>
<<if $tempSlave.dick == 0>>
	<<set $tempSlave.balls = 0>>
	<<set $tempSlave.ballsImplant = 0>>
<</if>>
<<if $tempSlave.vagina == 0>>
	<<set $tempSlave.newVag = 0>>
<</if>>
<<if $tempSlave.lactation > 0 && $tempSlave.lactationDuration == 0>>
	<<set $tempSlave.lactationDuration = 2>>
<<elseif $tempSlave.lactation == 0 && $tempSlave.lactationDuration > 0>>
	<<set $tempSlave.lactationDuration = 0>>
<</if>>

You perform the dark rituals, pray to the dark gods, and sell your soul for the power to reshape your body and life at will. What a cheater!

<<set $PC = clone($tempSlave)>>
<<unset $tempSlave>>


code:
:: MOD_Edit Arcology Cheat [nobr]

<<set $nextButton = "Continue", $nextLink = "MOD_Edit Arcology Cheat Datatype Cleanup">>

''Cheating Edit Arcology''

<<if ($economy != 100) || ($seeDicks != 25) || ($continent != "North America") || ($internationalTrade != 1) || ($internationalVariety != 1) || ($seeRace != 1) || ($seeNationality != 1) || ($seeExtreme != 0) || ($plot != 1)>>
	//[[restore defaults|MOD_Edit Arcology Cheat][$seeDicks = 25,$economy = 100,$continent = "North America",$internationalTrade = 1,$internationalVariety = 1,$seeRace = 1,$seeNationality = 1,$seeExtreme = 0,$plot = 1]]//
<</if>>

The economic situation is
<<if $economy > 125>>
	''not truly dire. Not yet.'' //Very Easy//

[[Harder|MOD_Edit Arcology Cheat][$economy = 125]]
<<elseif $economy > 100>>
	''getting a touch dire.'' //Easy//

[[Harder|MOD_Edit Arcology Cheat][$economy = 100]] | [[Easier|MOD_Edit Arcology Cheat][$economy = 200]]
<<elseif $economy > 80>>
	''serious risks.'' //Default Difficulty//

[[Harder|MOD_Edit Arcology Cheat][$economy = 80]] | [[Easier|MOD_Edit Arcology Cheat][$economy = 125]]
<<elseif $economy > 67>>
	''ugly.'' //Hard//

[[Harder|MOD_Edit Arcology Cheat][$economy = 67]] | [[Easier|MOD_Edit Arcology Cheat][$economy = 100]]
<<else>>
	''this is the last dance.'' //Very Hard//

[[Easier|MOD_Edit Arcology Cheat][$economy = 80]]
<</if>>

The economy is forecasted to
<<if $difficultySwitch == 0>>
	''remain fairly stable.''
<<elseif $econRate == 1>>
	''slowly decline''. //Easy//

[[Harder|MOD_Edit Arcology Cheat][$econRate = 2]]
<<elseif $econRate == 2>>
	''noticeably deteriorate'' //Default Difficulty//

[[Harder|MOD_Edit Arcology Cheat][$econRate = 4]] | [[Easier|MOD_Edit Arcology Cheat][$econRate = 1]]
<<else>>
	''go to hell in a handbasket''. //Hard//

[[Easier|MOD_Edit Arcology Cheat][$econRate = 2]]
<</if>>

The arcology is located in ''$continent''.
[[North America|MOD_Edit Arcology Cheat][$continent = "North America", $language = "English"]] | [[South America|MOD_Edit Arcology Cheat][$continent = "South America", $language = "Spanish"]] | [[Europe|MOD_Edit Arcology Cheat][$continent = "Europe", $language = "English"]] | [[the Middle East|MOD_Edit Arcology Cheat][$continent = "the Middle East", $language = "Arabic"]] | [[Africa|MOD_Edit Arcology Cheat][$continent = "Africa", $language = "Arabic"]] | [[Asia|MOD_Edit Arcology Cheat][$continent = "Asia", $language = "Chinese"]] | [[Australia|MOD_Edit Arcology Cheat][$continent = "Australia", $language = "English"]] | [[Japan|MOD_Edit Arcology Cheat][$continent = "Japan", $language = "Japanese"]]

The lingua franca of the arcology is ''$language''.
<<if $language != "English">>
	[[English|MOD_Edit Arcology Cheat][$language = "English"]] |
<<else>>
	English |
<</if>>
<<if $language != "Spanish">>
	[[Spanish|MOD_Edit Arcology Cheat][$language = "Spanish"]] |
<<else>>
	Spanish |
<</if>>
<<if $language != "Arabic">>
	[[Arabic|MOD_Edit Arcology Cheat][$language = "Arabic"]] |
<<else>>
	Arabic |
<</if>>
<<if $language != "Chinese">>
	[[Chinese|MOD_Edit Arcology Cheat][$language = "Chinese"]] |
<<else>>
	Chinese |
<</if>>
Custom: <<textbox "$language" $language "MOD_Edit Arcology Cheat">>

The slave trade is
<<if $internationalTrade == 0>>
	''continental,'' so a narrower variety of slaves will be available.
	[[Allow intercontinental trade|MOD_Edit Arcology Cheat][$internationalTrade = 1]]
<<else>>
	''international,'' so a wider variety of slaves will be available.
	[[Restrict the trade to continental|MOD_Edit Arcology Cheat][$internationalTrade = 0]]
<</if>>

<<if $internationalTrade == 1>>
	International slave variety is
	<<if $internationalVariety == 0>>
		''semi-realistic,'' so more populous nations will be more common.
		[[Normalized national variety|MOD_Edit Arcology Cheat][$internationalVariety = 1]]
	<<else>>
		''normalized,'' so small nations will appear nearly as much as large ones.
		[[Semi-realistic national variety|MOD_Edit Arcology Cheat][$internationalVariety = 0]]
	<</if>>
<</if>>

Ethnicity will
<<if $seeRace == 1>>
	''occasionally'' be mentioned.
	[[Disable most mentions of race|MOD_Edit Arcology Cheat][$seeRace = 0]]
<<else>>
	''almost never'' be mentioned.
	[[Enable mentions of race|MOD_Edit Arcology Cheat][$seeRace = 1]]
<</if>>

Nationality will
<<if $seeNationality == 1>>
	''occasionally'' be mentioned.
	[[Disable most mentions of nationality|MOD_Edit Arcology Cheat][$seeNationality = 0]]
<<else>>
	''almost never'' be mentioned.
	[[Enable mentions of nationality|MOD_Edit Arcology Cheat][$seeNationality = 1]]
<</if>>

Extreme content like amputation is
<<if $seeExtreme == 1>>
	''enabled''.
	[[Disable|MOD_Edit Arcology Cheat][$seeExtreme = 0]]
<<else>>
	''disabled''.
	[[Enable|MOD_Edit Arcology Cheat][$seeExtreme = 1]]
<</if>>

Slave assets affected by weight is
<<if ($weightAffectsAssets != 0)>>
	''enabled''. [[Disable|MOD_Edit Arcology Cheat][$weightAffectsAssets = 0]]
<<else>>
	''disabled''. [[Enable|MOD_Edit Arcology Cheat][$weightAffectsAssets = 1]]
<</if>>
//If enabled, thin slaves will have large assets drop in size and vice versa at week end. (Diet still affects asset sizes).//

Curative side effects are
<<if ($curativeSideEffects != 0)>>
	''enabled''. [[Disable|MOD_Edit Arcology Cheat][$curativeSideEffects = 0]]
<<else>>
	''disabled''. [[Enable|MOD_Edit Arcology Cheat][$curativeSideEffects = 1]]
<</if>>
//If enabled, curatives have a chance to give slaves harmful side effects.//

Slave girls will
<<if $seeDicks >= 90>>
	''almost always'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	| [[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	| [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	| [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
<<elseif $seeDicks > 50>>
	''more likely than not'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	| [[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	| [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	| [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<<elseif $seeDicks > 25>>
	''occasionally'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	| [[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	| [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
	| [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<<elseif $seeDicks > 0>>
	''rarely'' have dicks.
	[[No chicks with dicks pls (0%)|MOD_Edit Arcology Cheat][$seeDicks = 0]]
	| [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	| [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
	| [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<<else>>
	''almost never'' have dicks.
	[[Side order of girl dick (25%)|MOD_Edit Arcology Cheat][$seeDicks = 25]]
	| [[Balanced dick chick diet (50%)|MOD_Edit Arcology Cheat][$seeDicks = 50]]
	| [[Dickgirl main course (75%)|MOD_Edit Arcology Cheat][$seeDicks = 75]]
	| [[All of the dicks (100%)|MOD_Edit Arcology Cheat][$seeDicks = 100]]
<</if>>

    Go your own dick way:
<<textbox "$seeDicks" $seeDicks>>
[[Apply|MOD_Edit Arcology Cheat][$seeDicks = ($seeDicks == 0 ? 0 : (Math.clamp(Number($seeDicks), 0, 100) || 25))]]

Game mode:
<<if $plot == 1>>
	''two-handed''. Includes non-erotic events concerning the changing world.
	[[Disable non-erotic events|MOD_Edit Arcology Cheat][$plot = 0]]
<<else>>
	''one-handed''. No non-erotic events concerning the changing world.
	[[Enable non-erotic events|MOD_Edit Arcology Cheat][$plot = 1]]
<</if>>

/*

<<nobr>>
<<if $normalizedEvents == 1>>
	Random events distribution: ''normalized''. Random events will happen with equal frequency.
	[[Realistic|MOD_Edit Arcology Cheat][$normalizedEvents = 0]]
<<else>>
	Random events distribution: ''realistic''. Events will happen more frequently if more slaves qualify for them.
	[[Normalize|MOD_Edit Arcology Cheat][$normalizedEvents = 1]]
<</if>>
<</nobr>>*/

Arcology sex slaves: <<print num($NPCSlaves)>>
<<textbox "$NPCSlaves" $NPCSlaves>>

Arcology prosperity: $arcologies[0].prosperity
<<textbox "$arcologies[0].prosperity" $arcologies[0].prosperity>>

Arcology prosperity cap: $AProsperityCap
<<textbox "$AProsperityCap" $AProsperityCap>>

Shelter Abuse Counter: $shelterAbuse
<<textbox "$shelterAbuse" $shelterAbuse>>

<<if ($seeDicks != 100)>>

''The Slavegirl School:''

TSS Students Bought: <<textbox "$TSS.studentsBought" $TSS.studentsBought>>

TSS Upgrades: ''$TSS.schoolUpgrade'' |
	<<radiobutton "$TSS.schoolUpgrade" 0>> 0
	| <<radiobutton "$TSS.schoolUpgrade" 1>> 1
	| <<radiobutton "$TSS.schoolUpgrade" 2>> 2

TSS Moved to Arcology: ''$TSS.schoolPresent'' |
	<<radiobutton "$TSS.schoolPresent" 0>> 0
	| <<radiobutton "$TSS.schoolPresent" 1>> 1 (Moved)

TSS Prosperity: <<textbox "$TSS.schoolProsperity" $TSS.schoolProsperity>>

TSS Failed: ''$TSS.schoolAnnexed'' |
	<<radiobutton "$TSS.schoolAnnexed" 0>> 0
	| <<radiobutton "$TSS.schoolAnnexed" 1>> 1 (Failed)

''The Growth Research Institute:''

GRI Students Bought: <<textbox "$GRI.studentsBought" $GRI.studentsBought>>

GRI Upgrades: ''$GRI.schoolUpgrade'' |
	<<radiobutton "$GRI.schoolUpgrade" 0>> 0
	| <<radiobutton "$GRI.schoolUpgrade" 1>> 1
	| <<radiobutton "$GRI.schoolUpgrade" 2>> 2

GRI Moved to Arcology: ''$GRI.schoolPresent'' |
	<<radiobutton "$GRI.schoolPresent" 0>> 0
	| <<radiobutton "$GRI.schoolPresent" 1>> 1 (Moved)

GRI Prosperity: <<textbox "$GRI.schoolProsperity" $GRI.schoolProsperity>>

GRI Failed: ''$GRI.schoolAnnexed'' |
	<<radiobutton "$GRI.schoolAnnexed" 0>> 0
	| <<radiobutton "$GRI.schoolAnnexed" 1>> 1 (Failed)

''St. Claver Preparatory:''

SCP Students Bought: <<textbox "$SCP.studentsBought" $SCP.studentsBought>>

SCP Upgrades: ''$SCP.schoolUpgrade'' |
	<<radiobutton "$SCP.schoolUpgrade" 0>> 0
	| <<radiobutton "$SCP.schoolUpgrade" 1>> 1
	| <<radiobutton "$SCP.schoolUpgrade" 2>> 2

SCP Moved to Arcology: ''$SCP.schoolPresent'' |
	<<radiobutton "$SCP.schoolPresent" 0>> 0
	| <<radiobutton "$SCP.schoolPresent" 1>> 1 (Moved)

SCP Prosperity: <<textbox "$SCP.schoolProsperity" $SCP.schoolProsperity>>

SCP Failed: ''$SCP.schoolAnnexed'' |
	<<radiobutton "$SCP.schoolAnnexed" 0>> 0
	| <<radiobutton "$SCP.schoolAnnexed" 1>> 1 (Failed)

''The Hippolyta Academy:''

HA Students Bought: <<textbox "$HA.studentsBought" $HA.studentsBought>>

HA Upgrades: ''$HA.schoolUpgrade''
	<<radiobutton "$HA.schoolUpgrade" 0>> 0
	| <<radiobutton "$HA.schoolUpgrade" 1>> 1
	| <<radiobutton "$HA.schoolUpgrade" 2>> 2

HA Moved to Arcology: ''$HA.schoolPresent'' |
	<<radiobutton "$HA.schoolPresent" 0>> 0
	| <<radiobutton "$HA.schoolPresent" 1>> 1 (Moved)

HA Prosperity: <<textbox "$HA.schoolProsperity" $HA.schoolProsperity>>

HA Failed: ''$HA.schoolAnnexed'' |
	<<radiobutton "$HA.schoolAnnexed" 0>> 0
	| <<radiobutton "$HA.schoolAnnexed" 1>> 1 (Failed)

	<<if $seePreg != 0>>

''The Cattle Ranch:''

TCR Students Bought: <<textbox "$TCR.studentsBought" $TCR.studentsBought>>

TCR Upgrades: ''$TCR.schoolUpgrade''
		<<radiobutton "$TCR.schoolUpgrade" 0>> 0
		| <<radiobutton "$TCR.schoolUpgrade" 1>> 1
		| <<radiobutton "$TCR.schoolUpgrade" 2>> 2

TCR Moved to Arcology: ''$TCR.schoolPresent'' |
		<<radiobutton "$TCR.schoolPresent" 0>> 0
		| <<radiobutton "$TCR.schoolPresent" 1>> 1 (Moved)

TCR Prosperity: <<textbox "$TCR.schoolProsperity" $TCR.schoolProsperity>>

TCR Failed: ''$TCR.schoolAnnexed'' |
		<<radiobutton "$TCR.schoolAnnexed" 0>> 0
		| <<radiobutton "$TCR.schoolAnnexed" 1>> 1 (Failed)
	<</if>>
<</if>>
<<if ($seeDicks != 0)>>

''L'École des Enculées:''

LDE Students Bought: <<textbox "$LDE.studentsBought" $LDE.studentsBought>>

LDE Upgrades: ''$LDE.schoolUpgrade'' |
	<<radiobutton "$LDE.schoolUpgrade" 0>> 0
	| <<radiobutton "$LDE.schoolUpgrade" 1>> 1
	| <<radiobutton "$LDE.schoolUpgrade" 2>> 2

LDE Moved to Arcology: ''$LDE.schoolPresent'' |
	<<radiobutton "$LDE.schoolPresent" 0>> 0
	| <<radiobutton "$LDE.schoolPresent" 1>> 1 (Moved)

LDE Prosperity: <<textbox "$LDE.schoolProsperity" $LDE.schoolProsperity>>

LDE Failed: ''$LDE.schoolAnnexed'' |
	<<radiobutton "$LDE.schoolAnnexed" 0>> 0
	| <<radiobutton "$LDE.schoolAnnexed" 1>> 1 (Failed)

''The Gymnasium-Academy:''

TGA Students Bought: <<textbox "$TGA.studentsBought" $TGA.studentsBought>>

TGA Upgrades: ''$TGA.schoolUpgrade''
	<<radiobutton "$TGA.schoolUpgrade" 0>> 0
	| <<radiobutton "$TGA.schoolUpgrade" 1>> 1
	| <<radiobutton "$TGA.schoolUpgrade" 2>> 2

TGA Moved to Arcology: ''$TGA.schoolPresent'' |
	<<radiobutton "$TGA.schoolPresent" 0>> 0
	| <<radiobutton "$TGA.schoolPresent" 1>> 1 (Moved)

TGA Prosperity: <<textbox "$TGA.schoolProsperity" $TGA.schoolProsperity>>

TGA Failed: ''$TGA.schoolAnnexed'' |
	<<radiobutton "$TGA.schoolAnnexed" 0>> 0
	| <<radiobutton "$TGA.schoolAnnexed" 1>> 1 (Failed)

''The Futanari Sisters:''

TFS Students Bought: <<textbox "$TFS.studentsBought" $TFS.studentsBought>>

TFS Upgrades: ''$TFS.schoolUpgrade'' |
	<<radiobutton "$TFS.schoolUpgrade" 0>> 0
	| <<radiobutton "$TFS.schoolUpgrade" 1>> 1
	| <<radiobutton "$TFS.schoolUpgrade" 2>> 2
	| <<radiobutton "$TFS.schoolUpgrade" 3>> 3

TFS Moved to Arcology: ''$TFS.schoolPresent'' |
	<<radiobutton "$TFS.schoolPresent" 0>> 0
	| <<radiobutton "$TFS.schoolPresent" 1>> 1 (Moved)

TFS Prosperity:<<textbox "$TFS.schoolProsperity" $TFS.schoolProsperity>>

TFS Failed: ''$TFS.schoolAnnexed'' |
	<<radiobutton "$TFS.schoolAnnexed" 0>> 0
	| <<radiobutton "$TFS.schoolAnnexed" 1>> 1 (Failed)
<</if>>

''Nueva Universidad de Libertad:''

NUL Students Bought: <<textbox "$NUL.studentsBought" $NUL.studentsBought>>

NUL Upgrades: ''$NUL.schoolUpgrade''
<<radiobutton "$NUL.schoolUpgrade" 0>> 0
| <<radiobutton "$NUL.schoolUpgrade" 1>> 1
| <<radiobutton "$NUL.schoolUpgrade" 2>> 2

NUL Moved to Arcology: ''$NUL.schoolPresent'' |
<<radiobutton "$NUL.schoolPresent" 0>> 0
| <<radiobutton "$NUL.schoolPresent" 1>> 1 (Moved)

NUL Prosperity: <<textbox "$NUL.schoolProsperity" $NUL.schoolProsperity>>

NUL Failed: ''$NUL.schoolAnnexed'' |
<<radiobutton "$NUL.schoolAnnexed" 0>> 0
| <<radiobutton "$NUL.schoolAnnexed" 1>> 1 (Failed)

__Arcologies:__

    __''$arcologies[0].name''__ is your arcology.

You own: ''$arcologies[0].ownership%'' of the arcology <<textbox "$arcologies[0].ownership" $arcologies[0].ownership>>

Other minority ownership: ''$arcologies[0].minority%'' <<textbox "$arcologies[0].minority" $arcologies[0].minority>>

$arcologies[0].name's GSP is @@.yellowgreen;<<print cashFormat(Math.trunc(0.1*$arcologies[0].prosperity))>>m@@.

''Custom Cheat''

<<textarea "$customEvalCode" "">>

//Any JavaScript function will be automatically run using your arcology as an argument when "Continue" is clicked. For example, entering "(arcology) => arcology.name = 'Fancy Name' " will change your arcology name to "Fancy Name".//


code:
:: MOD_Edit Arcology Cheat Datatype Cleanup [nobr]

<<set $nextButton = "Continue", $nextLink = "Manage Arcology">>

<<if $customEvalCode>>
	<<if $customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */
		<<set $customEvalCode = "(" + $customEvalCode + ")">>
	<</if>>
	<<if typeof eval($customEvalCode) === "function">>
		<<run (eval($customEvalCode))($arcologies[0])>>
	<</if>>
<</if>>
<<unset $customEvalCode>>

<<run ArcologyDatatypeCleanup()>>

The chanting grows louder and louder, CHEAT! CHEAT! CHEAT!

The Arcology morphs and changes shape, CHEAT! CHEAT! CHEAT!

The Arcology has been changed forever and you forfeit your CHEATING CHEATY SOUL!


code:
:: MOD_Edit Child Cheat Datatype Cleanup New [nobr]

<<set $nextButton = "Continue", $nextLink = "Child Interact">>
/* Cancel Option Check */
<<if $tempSlave == "unset">>
	<<unset $tempSlave>>
	<<goto "Child Interact">>
<</if>>

<<if $customEvalCode>>
	<<if $customEvalCode.charAt(0) != "(" || $nextLink == ")">> /* second condition is only there for sanityCheck */
		<<set $customEvalCode = "(" + $customEvalCode + ")">>
	<</if>>
	<<if typeof eval($customEvalCode) === "function">>
		<<run (eval($customEvalCode))($tempSlave)>>
	<</if>>
<</if>>
<<unset $customEvalCode>>

<<run SlaveDatatypeCleanup($tempSlave)>>
<<set $rep = Number($rep) || 0>>
<<set $cash = Number($cash) || 0>>
<<set $week = Number($week) || 1>>
<<set $tempSlave.preg = Number($tempSlave.preg) || 0>>
<<set $tempSlave.pregType = Number($tempSlave.pregType) || 0>>
<<if $tempSlave.broodmother == 0>>
	<<set WombInit($tempSlave)>> /* just to make sure */
	<<set $tempSlave.womb.length = 0>> /* simple way to delete all fetuses */
	<<set WombImpregnate($tempSlave, $tempSlave.pregType, $tempSlave.pregSource, $tempSlave.preg)>> /* recreates fetuses */
<<else>>
	<<set WombNormalizePreg($tempSlave)>>
<</if>>
<<set $tempSlave.pregWeek = Number($tempSlave.pregWeek) || Math.max($tempSlave.preg, 0)>>
<<if $tempSlave.preg <= 0>>
	<<set $tempSlave.pregKnown = 0>>
<<elseif $tempSlave.preg > 0>>
	<<set $tempSlave.pregKnown = 1>>
<</if>>

/* Dependency Check */

<<if $tempSlave.indenture == -1>>
	<<set $tempSlave.indentureRestrictions = 0>>
<<elseif $tempSlave.indenture < -1>>
	<<set $tempSlave.indenture = -1>>
	<<print "Indenture was smaller than -1, reset to Fulltime Slave">>

<<elseif $tempSlave.indentureRestrictions < 0>>
	<<set $tempSlave.indentureRestrictions = 0>>
	<<print "Indenture restriction was smaller than 0, reset to no restrictions">>

<<elseif $tempSlave.indentureRestrictions > 2>>
	<<set $tempSlave.indentureRestrictions = 2>>
	<<print "Indenture restrictions was larger than 2, reset to full restrictions">>

<</if>>
<<if $tempSlave.weekAcquired < 0>>
	<<set $tempSlave.weekAcquired = 0>>
	<<print "Week Acquired was negative reset to 0">>

<</if>>
<<if ($tempSlave.relationshipTarget == $tempSlave.ID) && ($tempSlave.relationship > 0)>>
	<<set $tempSlave.relationshipTarget = 0>>
	<<set $tempSlave.relationship = -1>>
	<<print "The Slave was in a relation with $himself, reset to emotional Slut">>

<</if>>
<<if ($tempSlave.rivalryTarget == $tempSlave.ID) && ($tempSlave.rivalry > 0)>>
	<<set $tempSlave.rivalryTarget = 0>>
	<<set $tempSlave.rivalry = 0>>
	<<print "Slave was $his own rival, reset to no rivalry">>

<</if>>
<<if $tempSlave.actualAge < 0>>
	<<print "Slave's actual age is set too low, reset to existing actual age">>

	<<set $tempSlave.actualAge = $activeSlave.actualAge>>
<</if>>
<<if $tempSlave.physicalAge < 0>>
	<<print "Slave's physical Age is set too low, reset to existing physical age">>

	<<set $tempSlave.physicalAge = $activeSlave.actualAge>>
<</if>>
<<if $tempSlave.visualAge < 0>>
	<<print "Slave's visual age is set too low, reset to existing visual age">>

	<<set $tempSlave.visualAge = $activeSlave.actualAge>>
<</if>>
<<if $tempSlave.ovaryAge < 0>>
	<<print "Slave's ovary age is set too low, reset to match physical age">>

	<<set $tempSlave.ovaryAge = $tempSlave.physicalAge>>
<</if>>
<<if $tempSlave.chem < 0>>
	<<print "Slave's DNA error is set too low, reset to 0">>

	<<set $tempSlave.chem = 0>>
<</if>>
<<if $tempSlave.face < -100>>
	<<print "Face Beauty was set too low, reset to -100">>

	<<set $tempSlave.face = -100>>
<<elseif $tempSlave.face > 100>>
	<<print "Face Beauty was set too high, reset to 100">>

	<<set $tempSlave.face = 100>>
<</if>>
<<if $tempSlave.hLength < 0>>
	<<print "Slaves Hair length was set too low, reset to 0">>

	<<set $tempSlave.hLength = 0>>
<</if>>
<<if $tempSlave.lips < 0>>
	<<print "Lips size too small, reset to 0">>

	<<set $tempSlave.lips = 0>>
<<elseif $tempSlave.lips > 100>>
	<<print "Lips size too high, reset to 100">>

	<<set $tempSlave.lips = 100>>
<</if>>
<<if $tempSlave.muscles < -100>>
	<<print "Muscle Value too low, reset to -100 (Frail)">>

	<<set $tempSlave.muscles = 0>>
<<elseif $tempSlave.muscles > 100>>
	<<print "Muscle Value too high, reset to 100 (Hugely Muscular)">>

	<<set $tempSlave.muscles = 100>>
<</if>>
<<if $tempSlave.weight < -100>>
	<<print "Weight Value too low, reset to -100 (Emaciated)">>

	<<set $tempSlave.weight = -100>>
<<elseif $tempSlave.weight > 200 >>
	<<print "Weight Value too high, reset to 200 (Extremely Obese)">>

	<<set $tempSlave.weight = 200>>
<</if>>
<<if $tempSlave.waist < -100>>
	<<print "Waist Value too low, reset to -100 (Absurd)">>

	<<set $tempSlave.waist = -100>>
<<elseif $tempSlave.waist > 100>>
	<<print "Waist Value too high, reset to 100 (Masculine)">>

	<<set $tempSlave.waist = 100>>
<</if>>
<<if $tempSlave.height < 1>>
	<<print "Height Value too low, reset to 140 (Seriously its still a Human Being)">>

	<<set $tempSlave.height = 140>>
<</if>>
<<if $tempSlave.bellySag < 0>>
	<<print "Bellysag Value too low, reset 0">>

	<<set $tempSlave.bellySag = 0>>
<</if>>
<<if $tempSlave.boobs < 0>>
	<<print "Breasts Value too low, reset to 200">>

	<<set $tempSlave.boobs = 200>>
<</if>>
<<if $tempSlave.boobsImplant < 0>>
	<<print "Breast Implant Value too low, reset to 0">>

	<<set $tempSlave.boobsImplant = 0>>
<</if>>
<<if $tempSlave.butt < 0>>
	<<print "Butt Value too low, reset to 0">>

	<<set $tempSlave.butt = 0>>
<</if>>
<<if (ndef $tempSlave.pubertyAgeXX) || ($tempSlave.pubertyAgeXX < 0)>>
	<<print "Puberty Age was not set or set too low, reset to Arcology fertility age">>

	<<set $tempSlave.pubertyAgeXX = $fertilityAge>>
<</if>>
<<if (ndef $tempSlave.pubertyXX) && ($tempSlave.physicalAge >= $tempSlave.pubertyAgeXX)>>
	<<set $tempSlave.pubertyXX = 1>>
<<elseif (ndef $tempSlave.pubertyXX) && ($tempSlave.physicalAge < $tempSlave.pubertyAgeXX)>>
	<<set $tempSlave.pubertyXX = 0>>
<</if>>
<<if $tempSlave.dick < 0>>
	<<print "Slave dick value set too low, reset to 0 (no dick)" >>

	<<set $tempSlave.dick = 0>>
<</if>>
<<if $tempSlave.dick == 0>>
	<<set $tempSlave.dickTat = 0>>
<</if>>
<<if ($tempSlave.vagina == -1) >>
	<<set $tempSlave.labia = 0>>
	<<set $tempSlave.clit = 0>>
	<<set $tempSlave.cervixImplant = 0>>
	<<set $tempSlave.ovaries = 0>>
<</if>>
<<if ($tempSlave.clit > 0) && ($tempSlave.dick > 0 )>>
	<<print "No giant clit when dick is present, reset clit to 0 (normal)" >>

	<<set $tempSlave.clit = 0>>
<</if>>
<<if ($tempSlave.ovaries == 0) && ($tempSlave.mpreg == 0) && ($tempSlave.preg > 0)>>
	<<print "Slave has no Ovaries and no Analwomb, Pregnancy reset to 0">>

	<<set $tempSlave.preg = 0>>
	<<set $tempSlave.pregType = 0>>
	<<set $tempSlave.pregSource = 0>>
	<<set $tempSlave.pregWeek = 0>>
<</if>>
<<if ($tempSlave.pubertyXX != 1) && ($tempSlave.physicalAge >= $tempSlave.pubertyAgeXX)>>
	<<print "Slaves physical Age is equal or higher than female Puberty Age, Puberty set to 1 (Post Puberty)" >>

	<<set $tempSlave.pubertyXX = 1>>
<</if>>
<<if ($tempSlave.ovaries == 1) && ($tempSlave.mpreg == 1)>>
	<<print "Slave has a working Vagina, Analwomb got removed" >>

	<<set $tempSlave.mpreg = 0>>
<</if>>
<<if ($tempSlave.pubertyXX == 0) && ($tempSlave.preg > 0)>>
	<<print "Slave is not fertile (Pre-Puberty) and has no Anal Womb, pregnancy aborted!">>

	<<set $tempSlave.preg = 0>>
	<<set $tempSlave.pregType = 0>>
	<<set $tempSlave.pregSource = 0>>
	<<set $tempSlave.pregWeek = 0>>
<</if>>
<<if $tempSlave.balls < 0>>
	<<print "Slave Balls Value set too low, reset to 0 (No Balls)">>

	<<set $tempSlave.balls = 0>>
<</if>>
<<if $tempSlave.foreskin < 0>>
	<<print "Slave Foreskin Value set too low, reset to 0 (None)">>

	<<set $tempSlave.foreskin = 0>>
<</if>>
<<if $tempSlave.scrotum < 0>>
	<<print "Slave Scrotum Value set too low, reset to 0 (No Scrotum)">>

	<<set $tempSlave.scrotum = 0>>
<</if>>
<<if (ndef $tempSlave.pubertyAgeXY) || ($tempSlave.pubertyAgeXY < 0)>>
	<<print "XY Puberty Age was not set or set too low, reset to Arcology Puberty Age">>

	<<set $tempSlave.pubertyAgeXY = $potencyAge>>
<</if>>
<<if (ndef $tempSlave.pubertyXY) && ($tempSlave.physicalAge >= $tempSlave.pubertyAgeXY)>>
	<<set $tempSlave.pubertyXY = 1>>
<<elseif (ndef $tempSlave.pubertyXY) && ($tempSlave.physicalAge < $tempSlave.pubertyAgeXY)>>
	<<set $tempSlave.pubertyXY = 0>>
<</if>>
<<if ($tempSlave.physicalAge >= $tempSlave.pubertyAgeXY) && ($tempSlave.pubertyXY != 1)>>
	<<print "Slaves physical Age is equal or higher than male Puberty Age, Puberty set to 1 (Post Puberty)" >>

	<<set $tempSlave.pubertyXY = 1>>
<</if>>
<<if $tempSlave.skill.oral < 0>>
	<<print "Oral Skill Value set too low, reset to 0">>

	<<set $tempSlave.skill.oral = 0>>
<<elseif $tempSlave.skill.oral > 100>>
	<<print "Oral Skill Value set too high, reset to 100">>

	<<set $tempSlave.skill.oral = 100>>
<</if>>
<<if $tempSlave.skill.vaginal < 0>>
	<<print "Vaginal Skill Value too low, reset to 0">>

	<<set $tempSlave.skill.vaginal = 0>>
<<elseif $tempSlave.skill.vaginal > 100>>
	<<print "Vaginal Skill Value too high, reset to 100">>

	<<set $tempSlave.skill.vaginal = 100>>
<</if>>
<<if $tempSlave.skill.anal < 0>>
	<<print "Anal Skill Value set too low, reset to 0">>

	<<set $tempSlave.skill.anal = 0>>
<<elseif $tempSlave.skill.anal > 100>>
	<<print "Anal Skill Value set too high, reset to 100">>

	<<set $tempSlave.skill.anal = 100>>
<</if>>
<<if $tempSlave.skill.whoring < 0>>
	<<print "Whoring Skill Value set too low, reset to 0">>

	<<set $tempSlave.skill.whoring = 0>>
<<elseif $tempSlave.skill.whoring > 100>>
	<<print "Whoring Skill Value set too high, reset to 100">>

	<<set $tempSlave.skill.whoring = 100>>
<</if>>
<<if $tempSlave.skill.entertainment < 0>>
	<<print "Entertainment Skill Value set too low, reset to 0">>

	<<set $tempSlave.skill.entertainment = 0>>
<<elseif $tempSlave.skill.entertainment > 100>>
	<<print "Entertainment Skill Value set too high, reset to 100">>

	<<set $tempSlave.skill.entertainment = 100>>
<</if>>
<<if $tempSlave.intelligence < -100>>
	<<print "Slave Intelligence Value set too low, reset to -100">>

	<<set $tempSlave.intelligence = -100>>
<<elseif $tempSlave.intelligence > 100>>
	<<print "Slave Intelligence Value set too high, reset to 100">>

	<<set $tempSlave.intelligence = 100>>
<</if>>
<<if $tempSlave.intelligenceImplant < 0>>
	<<print "Slave intelligenceImplant Value set too low, reset to 0">>

	<<set $tempSlave.intelligenceImplant = 0>>
<<elseif $tempSlave.intelligenceImplant > 30>>
	<<print "Slave intelligenceImplant Value set too high, reset to 30">>

	<<set $tempSlave.intelligenceImplant = 30>>
<</if>>
<<if $tempSlave.fetishStrength < 0>>
	<<print "Fetish Strength set too low, reset to 0">>

	<<set $tempSlave.fetishStrength = 0>>
<<elseif $tempSlave.fetishStrength > 100>>
	<<print "Fetish Strength set too high, reset to 100">>

	<<set $tempSlave.fetishStrength = 100>>
<</if>>
<<if $tempSlave.energy < 0>>
	<<print "Sex Drive was set too low, reset to 0">>

	<<set $tempSlave.energy = 0>>
<<elseif $tempSlave.energy > 100>>
	<<print "Sex Drive was set too high, reset to 100">>

	<<set $tempSlave.energy = 100>>
<</if>>
<<if $tempSlave.counter.penetrative < 0>>
	<<print "Penetrative sex Count was set too low, reset to 0">>

	<<set $tempSlave.counter.penetrative = 0>>
<</if>>
<<if $tempSlave.counter.oral < 0>>
	<<print "Oral sex Count set too low, reset to 0">>

	<<set $tempSlave.counter.oral = 0>>
<</if>>
<<if $tempSlave.counter.vaginal < 0>>
	<<print "Vaginal sex Count set too low, reset to 0">>

	<<set $tempSlave.counter.vaginal = 0>>
<</if>>
<<if $tempSlave.counter.anal < 0>>
	<<print "Anal sex Count set too low, reset to 0">>

	<<set $tempSlave.counter.anal = 0>>
<</if>>
<<if $tempSlave.counter.publicUse < 0>>
	<<print "Public sex Count set too low, reset 0">>

	<<set $tempSlave.counter.publicUse = 0>>
<</if>>
<<if $tempSlave.counter.mammary < 0>>
	<<print "Titjobs Count set too low, reset to 0">>

	<<set $tempSlave.counter.mammary = 0>>
<</if>>
<<if $tempSlave.counter.birthsTotal < 0>>
	<<print "Total birth Count set too low, reset to 0">>

	<<set $tempSlave.counter.birthsTotal = 0>>
<</if>>
<<if $tempSlave.prestige < 0>>
	<<print "Prestige set too low, reset to 0">>

	<<set $tempSlave.prestige = 0>>
<<elseif $tempSlave.prestige > 3>>
	<<print "Prestige set too high, reset to 3">>

	<<set $tempSlave.prestige = 3>>
<</if>>
<<if $tempSlave.lactation > 0 && $tempSlave.lactationDuration == 0>>
	<<set $tempSlave.lactationDuration = 2>>
<<elseif $tempSlave.lactation == 0 && $tempSlave.lactationDuration > 0>>
	<<set $tempSlave.lactationDuration = 0>>
<</if>>
<<run SetBellySize($tempSlave)>>

You perform the dark rituals, pray to the dark gods, and sell your soul for the power to change and mold slaves to your will.

This slave has been changed forever and you have lost a bit of your soul, YOU CHEATER!

<<set $activeSlave = clone($tempSlave)>>
<<unset $tempSlave>>
<<set _escn = $cribs.findIndex(function(s) { s.ID === $activeSlave.ID; })>>
<<if def _escn>>
	<<set $cribs[_escn] = clone($activeSlave)>>
<</if>>