Skip to content
Snippets Groups Projects
ChildState.js 48.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • /**
     * Contains a list of properties the child object has
     * Will need to be pared down
     */
    App.Facilities.Nursery.ChildState = class ChildState {
    	constructor() {
    		/** Child's current name */
    		this.slaveName = "blank";
    		/** Child's current surname
    		 * @type {string|number} */
    		this.slaveSurname = 0;
    		/** Child's original name */
    		this.birthName = "blank";
    		/** Child's original surname
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * @type {string|number} */
    
    		this.birthSurname = 0;
    		/** Slave sex ("XX", "XY") */
    		this.genes = "XX";
    		/** @type {number} */
    		this.pronoun = App.Data.Pronouns.Kind.female;
    		/** Game week slave was acquired.
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * _0: Obtained prior to game start / at game start_ */
    
    		this.weekAcquired = 0;
    		/** Child's origin
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * @type {string|number} */
    
    		this.origin = "$He was born and raised in your arcology.";
    		/** Career prior to enslavement
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * @type {string|number} */
    
    		this.career = 0;
    		/** Child's ID */
    		this.ID = 0;
    		/**
    		 * TODO:
    		 * Child's relationship
    		 * * -3: married to you
    		 * * -2: emotionally bound to you
    		 * * -1: emotional slut
    		 * * 0: none
    		 * * 1: friends with relationshipTarget
    		 * * 2: best friends with relationshipTarget
    		 * * 3: friends with benefits with relationshipTarget
    		 * * 4: lover with relationshipTarget
    		 * * 5: relationshipTarget 's slave wife
    		 */
    		this.relationship = 0;
    		/** Target of relationship (ID) */
    		this.relationshipTarget = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Child's rivalry
    		 * * 0: none
    		 * * 1: dislikes rivalryTarget
    		 * * 2: rival of rivalryTarget
    		 * * 3: bitterly hates rivalryTarget
    		 */
    
    		this.rivalry = 0;
    		/** Target of rival (ID) */
    		this.rivalryTarget = 0;
    		/** Slave will serve subTarget (ID) */
    		this.subTarget = 0;
    		this.father = 0;
    		this.mother = 0;
    		this.daughters = 0;
    		this.sisters = 0;
    		this.canRecruit = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * can slave choose own assignment
    		 *
    		 * 0: no; 1: yes */
    
    		this.choosesOwnAssignment = 0;
    		/** Child's assignment
    		 * TODO:
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 */
    
    		this.assignment = Job.REST;
    		/** How far along slave is with being trained (skills, flaws, quirks)
    		 * TODO:
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 */
    
    		this.training = 0;
    		/** Week she was born (int between 0-51) */
    		this.birthWeek = jsRandom(0, 51);
    		/** How old she really is. */
    		this.actualAge = 18;
    		/** How old her body looks. */
    		this.visualAge = 18;
    		/** How old her body is. */
    		this.physicalAge = 18;
    		/** How old her ovaries are. (used to trick menopause) */
    		this.ovaryAge = 18;
    		/** Has had facial surgery to reduce age. 0: no, 1: yes */
    		this.ageImplant = 0;
    		this.health = {
    			/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    			 * Child's health
    			 * * -90 - : On the edge of death
    			 * * -90 - -51: Extremely unhealthy
    			 * * -50 - -21: Unhealthy
    			 * * -20 -  20: Healthy
    			 * * 21  -  50: Very healthy
    			 * * 50  -  90: Extremely healthy
    			 * * 90  -  : Unnaturally healthy
    			 */
    
    			condition: 0,
    			/** Child's short term health damage */
    			shortDamage: 0,
    			/** Child's long term health damage */
    			longDamage: 0,
    			/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    			 * Child's current illness status
    			 * * 0 : Not ill
    			 * * 1 : A little under the weather
    			 * * 2 : Minor illness
    			 * * 3 : Ill
    			 * * 4 : serious illness
    			 * * 5 : dangerous illness
    			 */
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    			 * Child's current level of exhaustion
    			 * * 0  - 50 : Perfectly fine
    			 * * 50 - 80 : tired
    			 * * 80 - 100 : exhausted
    			 */
    
    			tired: 0,
    			/** Child's combined health (condition - short - long) */
    			health: 0
    		};
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave has a minor injury ("black eye", "bruise", "split lip")
    		 * @type {number | string}
    		 */
    
    		this.minorInjury = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave 's trust.
    		 * * -96-: abjectly terrified
    		 * * -95 - -51: terrified
    		 * * -50 - -21: frightened
    		 * * -20 - 20: fearful
    		 * * 21 - 50: careful
    		 * * 51 - 95: trusting
    		 * * 96+: profoundly trusting
    		 */
    
    		this.trust = 0;
    		/** Used to calculate trust loss/gain */
    		this.oldTrust = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave 's devotion
    		 * * -96 - : hate-filled
    		 * * -95 - -51: hateful
    		 * * -50 - -21: reluctant
    		 * * -20 - 20: careful
    		 * * 21 - 50: accepting
    		 * * 51 - 95: devoted
    		 * * 96+: worshipful */
    
    		this.devotion = 0;
    		/** Used to calculate devotion loss/gain */
    		this.oldDevotion = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave 's weight
    		 * * 191+: dangerously obese
    		 * * 190 - 161: super obese
    		 * * 160 - 131: obese
    		 * * 130 - 96: fat
    		 * * 95 - 31: overweight
    		 * * 30 - 11: curvy
    		 * * 10 - -10: neither too fat nor too skinny
    		 * * -11 - -30: thin
    		 * * -31 - -95: very thin
    		 * * -96 - : emaciated
    		 */
    
    		this.weight = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave 's muscles
    		 * * 96+ : extremely muscular
    		 * * 31 - 95: muscular
    		 * * 6 - 30: toned
    		 * * -5 - 5: none
    		 * * -30 - -6: weak
    		 * * -95 - -31: very weak
    		 * * -96- : frail
    		 */
    
    		this.muscles = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Child's height in cm
    		 * * < 150: petite
    		 * * 150 - 159: short
    		 * * 160 - 169: average
    		 * * 170 - 185: tall
    		 * * 186+ : very tall
    		 */
    
    		this.height = 170;
    		/** Slave has height implant
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * -1: -10 cm, 0: none, 1: +10 cm */
    
    		this.heightImplant = 0;
    		/** Child's nationality */
    		this.nationality = "slave";
    		/** Child's race */
    		this.race = "white";
    		/** Child's original race */
    		this.origRace = "white";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave markings
    		 * * "beauty mark"
    		 * * "birthmark"
    		 * * "freckles"
    		 * * "heavily freckled"
    		 */
    
    		this.markings = "none";
    		/**
    		 * Eyes of the slave.
    		 * @type {App.Entity.EyeState}
    		 */
    		this.eye = new App.Entity.EyeState();
    		/** "none", "glasses", "blurring glasses", "corrective glasses", "blurring contacts", "corrective contacts" */
    		this.eyewear = "none";
    		/** Slave hearing
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * -2: deaf; -1: hard of hearing; 0: normal */
    
    		this.hears = 0;
    		/** "none", "hearing aids", "muffling ear plugs", "deafening ear plugs" */
    		this.earwear = "none";
    		/** Is there an inner ear implant device
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * 0: no; 1: yes */
    
    		this.earImplant = 0;
    		/** The shape of their outer ears
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * "none", "damaged", "normal", "pointy", "elven", "ushi" */
    
    		this.earShape = "normal";
    		/** Type of kemonomimi ears if any
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * "neko", "inu", "kit", "tanuki", "usagi" */
    
    		this.earT = "none";
    		/** Kemonomimi ear color
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * "hairless" */
    
    		this.earTColor = "hairless";
    		/** Sense of smell
    		0 - yes, -1 - no */
    		this.smells = 0;
    		/** Sense of taste
    		0 - yes, -1 - no */
    		this.tastes = 0;
    		/** Horn type if any
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * "none", "curved succubus horns", "backswept horns", "cow horns", "one long oni horn", "two long oni horns", "small horns" */
    
    		this.horn = "none";
    		/** Horn color */
    		this.hornColor = "none";
    		/** Type of tail installed
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * "none", "mod", "combat", "sex"*/
    
    		this.tail = "none";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Does she have a tail interface installed
    		 * * 0: no
    		 * * 1: yes
    		 */
    
    		this.PTail = 0;
    		/** The current shape of their modular tail
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * "none", "neko", "inu", "kit", "kitsune", "tanuki", "ushi", "usagi", "risu", "uma" */
    
    		this.tailShape = "none";
    		/** Tail color */
    		this.tailColor = "none";
    		/** Child's original hair color, defaults to their initial hair color. */
    		this.origHColor = "brown";
    		/** Hair color */
    		this.hColor = "brown";
    		/** Pubic hair color */
    		this.pubicHColor = "brown";
    		/** Armpit hair style */
    		this.underArmHColor = "brown";
    		/** eyebrowHColor*/
    		this.eyebrowHColor = "brown";
    		/** Child's original skin color. */
    		this.origSkin = "light";
    		/** Skin color */
    		this.skin = "light";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * hair length
    		 * * 150: calf-length
    		 * * 149-100: ass-length
    		 * * 99-30: long
    		 * * 29-10: shoulder-length
    		 * * 9-0: short
    		 */
    
    		this.hLength = 60;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * eyebrow thickness
    		 * * "pencil-thin"
    		 * * "thin"
    		 * * "threaded"
    		 * * "natural"
    		 * * "tapered"
    		 * * "thick"
    		 * * "bushy"
    		 */
    
    		this.eyebrowFullness = "natural";
    		/** Hair style */
    		this.hStyle = "short";
    		/** Pubic hair style */
    		this.pubicHStyle = "neat";
    		/** Armpit hair style */
    		this.underArmHStyle = "neat";
    		/** EyebrowHStyle */
    		this.eyebrowHStyle = "natural";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave waist
    		 * * 96+: masculine
    		 * * 95 - 41: ugly
    		 * * 40 - 11: unattractive
    		 * * 10 - -10: average
    		 * * -11 - -40: feminine
    		 * * -40 - -95: hourglass
    		 * * -96-: absurd
    		 */
    
    		this.waist = 0;
    		/** Series of rings up the back that can be tied together. 0: no, 1: yes */
    		this.corsetPiercing = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * What level of prosthetic interface she has installed
    		 * * 0: no interface
    		 * * 1: basic interface
    		 * * 2: advanced interface
    		 */
    
    		this.PLimb = 0;
    		/*
    		 * legs of the slave
    		 * * type:0: no leg
    		 * * type:1: has leg
    		 * * 2: simple prosthetic
    		 * * 3: artificial leg - Sex
    		 * * 4: artificial leg - Beauty
    		 * * 5: artificial leg - Combat
    		 * * 6: swiss army leg
    		 */
    		this.leg = {
    			left: new App.Entity.LimbState(),
    			right: new App.Entity.LimbState()
    		};
    		/**
    		 * arms of the slave
    		 * * type:0: no arm
    		 * * type:1: has arm
    		 * * 2: simple prosthetic
    		 * * 3: artificial arm - Sex
    		 * * 4: artificial arm - Beauty
    		 * * 5: artificial arm - Combat
    		 * * 6: swiss army arm
    		 */
    		this.arm = {
    			left: new App.Entity.LimbState(),
    			right: new App.Entity.LimbState()
    		};
    		/** Are heels clipped
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: no, 1: yes */
    
    		this.heels = 0;
    		/** Slave voice
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: mute, 1: deep, 2: feminine, 3: high, girly */
    
    		this.voice = 2;
    		/** Has voice implant
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: no; 1: yes, high; -1: yes, low */
    
    		this.voiceImplant = 0;
    		/** Has cybernetic voicebox
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: no; 1: yes */
    
    		this.electrolarynx = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * slave accent
    		 * * 0: none
    		 * * 1: attractive
    		 * * 2: heavy
    		 * * 3: does not speak language
    		 */
    
    		this.accent = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * shoulder width
    		 * * -2: very narrow
    		 * * -1: narrow
    		 * * 0: feminine
    		 * * 1: broad
    		 * * 2: very broad
    		 */
    
    		this.shoulders = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * has shoulder implant
    		 *
    		 * * -1: shoulders -1
    		 * * 0: none
    		 * * 1: shoulders +1
    		 */
    
    		this.shouldersImplant = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *  slave boob size (in cc)
    		 * * 0-299	- flat;
    		 * * 300-399   - A-cup;
    		 * * 400-499   - B-cup
    		 * * 500-649   - C-cup
    		 * * 650-799   - D-cup
    		 * * 800-999   - DD-cup
    		 * * 1000-1199 - F-cup
    		 * * 1200-1399 - G-cup
    		 * * 1400-1599 - H-cup
    		 * * 1600-1799 - I-cup
    		 * * 1800-2049 - J-cup
    		 * * 2050-2299 - K-cup
    		 * * 2300-2599 - L-cup
    		 * * 2600-2899 - M-cup
    		 * * 2900-3249 - N-cup
    		 * * 3250-3599 - O-cup
    		 * * 3600-3949 - P-cup
    		 * * 3950-4299 - Q-cup
    		 * * 4300-4699 - R-cup
    		 * * 4700-5099 - S-cup
    		 * * 5100-5499 - T-cup
    		 * * 5500-6499 - U-cup
    		 * * 6500-6999 - V-cup
    		 * * 7000-7499 - X-cup
    		 * * 7500-7999 - Y-cup
    		 * * 8000-8499 - Z-cup
    		 * * 8500-14999 - obscenely massive
    		 * * 15000-24999 - arm filling
    		 * * 25000-39999 - figure dominating
    		 * * 40000-54999 - beanbag sized
    		 * * 55000-69999 - door jamming
    		 * * 70000-89999 - hall clearing
    		 * * 90000-100000 - hall jamming
    		 */
    
    		this.boobs = 0;
    		/** Breast engorgement from unmilked tits */
    		this.boobsMilk = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *  slave implant size
    		 * * 0: no implants;
    		 * * 1-199: small implants;
    		 * * 200-399: normal implants;
    		 * * 400-599: large implants;
    		 * * 600+: boobsImplant size fillable implants
    		 */
    
    		this.boobsImplant = 0;
    		/**
    		 * Implant type
    		 * * "none"
    		 * * "normal"
    		 * * "string"
    		 * * "fillable"
    		 * * "advanced fillable"
    		 * * "hyper fillable"
    		 */
    		this.boobsImplantType = "none";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * breast shape
    		 * * "normal"
    		 * * "perky"
    		 * * "saggy"
    		 * * "torpedo-shaped"
    		 * * "downward-facing"
    		 * * "wide-set"
    		 */
    
    		this.boobShape = "normal";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * nipple shape
    		 * * "huge"
    		 * * "puffy"
    		 * * "inverted"
    		 * * "tiny"
    		 * * "cute"
    		 * * "partially inverted"
    		 * * "fuckable"
    		 */
    
    		this.nipples = "cute";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * nipple are pierced
    		 * @default 0
    		 * 0: none; 1: yes; 2: heavily */
    
    		this.nipplesPiercing = 0;
    		/** What accessory, if any, or on her nipples */
    		this.nipplesAccessory = "none";
    		/** Slave areolae
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: normal; 1: large; 2: unusually wide; 3: huge, 4: massive */
    
    		this.areolae = 0;
    		/** Edge of areolae are pierced
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * @default 0
    		 * 0: none; 1: yes; 2: heavy */
    
    		this.areolaePiercing = 0;
    		/** Slave areolae shape ("heart"; "star"; "circle") */
    		this.areolaeShape = "circle";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * boobs tattoo
    		 * * "tribal patterns"
    		 * * "flowers"
    		 * * "scenes"
    		 * * "Asian art"
    		 * * "degradation"
    		 * * "counting"
    		 * * "advertisements"
    		 * * "rude words"
    		 * * "bovine patterns"
    		 * * "sacrament"
    		 * * "Sacrilege"
    		 * * "Possessive"
    		 * * "Paternalist"
    		 * @type {string | number}
    		 */
    
    		this.boobsTat = 0;
    		/** Slave lactation
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: none; 1: natural; 2: implant */
    
    		this.lactation = 0;
    		/** How many more weeks until lactation dries up
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * usually 2 as interactions and lactation implant reset it to 2 */
    
    		this.lactationDuration = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * odds of inducing lactation
    		 *
    		 * begins trying on breast play if over 10 */
    
    		this.induceLactation = 0;
    		/** 0: 10: not used to producing milk(no bonuses);
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * 11: 50: used to producing milk;
    		 * 51: 100: heavily adapted to producing milk(big bonus) */
    
    		this.lactationAdaptation = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *  hip size
    		 * * -2: very narrow
    		 * * -1: narrow
    		 * * 0: normal
    		 * * 1: wide hips
    		 * * 2: very wide hips
    		 * * 3: inhumanly wide hips
    		 */
    
    		this.hips = 0;
    		/** Slave has hip implant
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * -1: hips -1; 0: none; 1: hips +1 */
    
    		this.hipsImplant = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *  butt size
    		 * * 0	: flat
    		 * * 1	: small
    		 * * 2   : plump *
    		 * * 3	: big bubble butt
    		 * * 4	: huge
    		 * * 5	: enormous
    		 * * 6	: gigantic
    		 * * 7	: ridiculous
    		 * * 8 - 10: immense
    		 * * 11 - 20: inhuman
    		 *
    		 * _* Descriptions vary for just how big 2 is, as such, it may be better to just go with 3_
    		 */
    
    		this.butt = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * butt implant type and size
    		 *
    		 * * 0: none
    		 * * 1: butt implant
    		 * * 2: big butt implant
    		 * * 3: fillable butt implants
    		 * * 5 - 8: advanced fillable implants
    		 * * 9+: hyper fillable implants
    		 */
    
    		this.buttImplant = 0;
    		/**
    		 * Implant type
    		 * * "none"
    		 * * "normal"
    		 * * "string"
    		 * * "fillable"
    		 * * "advanced fillable"
    		 * * "hyper fillable"
    		 */
    		this.buttImplantType = "none";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * butt tattoo
    		 *
    		 * takes one of the following strings or 0
    		 * * "tribal patterns"
    		 * * "flowers"
    		 * * "scenes"
    		 * * "Asian art"
    		 * * "degradation"
    		 * * "counting"
    		 * * "advertisements"
    		 * * "rude words"
    		 * * "bovine patterns"
    		 * * "sacrament"
    		 * * "Sacrilege"
    		 * * "Possessive"
    		 * * "Paternalist"
    		 * @type {string|number} */
    
    		this.buttTat = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * face attractiveness
    		 *
    		 * * -96 - : very ugly
    		 * * -95 - -41: ugly
    		 * * -40 - -11: unattractive
    		 * * -10 - 10: attractive
    		 * * 11 - 40: very pretty
    		 * * 41 - 95: gorgeous
    		 * * 96+: mind blowing
    		 */
    
    		this.face = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * facial surgery degree
    		 *
    		 * * 0 - 14: none
    		 * * 15 - 34: Subtle Improvements
    		 * * 35 - 64: Noticeable Work
    		 * * 65 - 99: Heavily Reworked
    		 * * 100: Uncanny Valley
    		 */
    
    		this.faceImplant = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * accepts string (will be treated as "normal")
    		 * * "normal"
    		 * * "masculine"
    		 * * "androgynous"
    		 * * "cute"
    		 * * "sensual"
    		 * * "exotic"
    
    		 * * "feline" (catmod exclusive content)
    
    		this.faceShape = "normal";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * lip size (0 - 100)
    		 * * 0 - 10: thin
    		 * * 11 - 20: normal
    		 * * 21 - 40: pretty
    		 * * 41 - 70: plush
    		 * * 71 - 95: huge(lisps)
    		 * * 96 - 100: facepussy(mute)
    		 */
    
    		this.lips = 15;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * how large her lip implants are
    		 * @see lips
    		 */
    
    		this.lipsImplant = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * lips pierced
    		 *
    		 * 0: no; 1: yes; 2: heavy */
    
    		this.lipsPiercing = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * lip tattoo
    		 *
    		 * takes one of the following strings or 0
    		 * * "tribal patterns"
    		 * * "flowers"
    		 * * "permanent makeup"
    		 * * "degradation"
    		 * * "counting"
    		 * * "advertisements"
    		 * * "rude words"
    		 * * "bovine patterns"
    		 * * "sacrament"
    		 * * "Sacrilege"
    		 * * "Possessive"
    		 * * "Paternalist"
    		 * @type {string|number} */
    
    		this.lipsTat = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * teeth type
    		 * * "normal"
    		 * * "crooked"
    		 * * "straightening braces"
    		 * * "cosmetic braces"
    		 * * "removable"
    		 * * "pointy"
    		 * * "baby"
    		 * * "mixed"
    		 */
    
    		this.teeth = "normal";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * has tongue piercing
    		 *
    		 * 0: no; 1: yes; 2: heavy */
    
    		this.tonguePiercing = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * vagina type
    		 * * -1: no vagina
    		 * * 0: virgin
    		 * * 1: tight
    		 * * 2: reasonably tight
    		 * * 3: loose
    		 * * 4: cavernous
    		 * * 10: ruined
    		 */
    
    		this.vagina = 0;
    		/** How wet she is
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: dry; 1: wet; 2: soaking wet */
    
    		this.vaginaLube = 0;
    		/** Has vagina piercing
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: no; 1: yes; 2: heavy */
    
    		this.vaginaPiercing = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * vagina tattoo
    		 *
    		 * takes one of the following strings or 0
    		 * * "tribal patterns"
    		 * * "flowers"
    		 * * "scenes"
    		 * * "Asian art"
    		 * * "degradation"
    		 * * "counting"
    		 * * "advertisements"
    		 * * "rude words"
    		 * * "bovine patterns"
    		 * * "sacrament"
    		 * * "Sacrilege"
    		 * * "Possessive"
    		 * * "Paternalist"
    		 * @type {string|number} */
    
    		this.vaginaTat = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * pregnancy time or state.See Pregnancy Control section for more.
    		 * * -3: sterilized
    		 * * -2: sterile
    		 * * -1: contraceptives
    		 * * 0: fertile
    		 * * 1 - 10: pregnant, not showing
    		 * * 11 - 20: showing
    		 * * 21 - 30: pregnant
    		 * * 30 - 35: very pregnant
    		 */
    
    		this.preg = -1;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * accepts ID See Pregnancy Control section for more.
    		 *
    		 * Who sired her pregnancy
    		 * * -9: a futanari sister
    		 * * -8: an animal
    		 * * -7: designer baby
    		 * * -6: a member of the Societal Elite
    		 * * -5: one of your clients
    		 * * -4: another arcology owner
    		 * * -3: your former Master
    		 * * -2: citizen of your arcology
    		 * * -1: you
    		 * * 0: Unidentifiable
    		 */
    
    		this.pregSource = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Number of children.
    		 *
    		 * **Warning!** Should be not changed after initial impregnation setup.
    		 * See Pregnancy Control section for more.
    		 */
    
    		this.pregType = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Number of ready to be impregnated ova (override normal cases),
    		 *
    		 * For delayed impregnations with multiples.Used onetime on next call of the SetPregType
    		 * widget. After SetPregType use it to override .pregType, it set back to 0 automatically.
    		 */
    
    		this.pregAdaptation = 50;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Ovary implant type.
    		 *
    		 * * 0: no implants
    		 * * "fertility": higher chance of twins (or more)
    		 * * "sympathy": doubles eggs released
    		 * * "asexual": self-fertilizing
    		 */
    
    		this.ovaImplant = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Womb focused enhancements.
    		 *
    		 * * "none"
    		 * * "restraint": Provides structural support for extremely oversized pregnancies
    		 */
    
    		this.wombImplant = "none";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Menstrual cycle known variable. To be used for fert cycle discover and things like pregnancy without a first period
    		 *
    		 * * 0: no
    		 * * 1: yes
    		 */
    
    		this.fertKnown = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Menstrual cycle control variable.
    		 *
    		 * * 0: Danger week
    		 * * 1+: safe week
    		 */
    
    		this.fertPeak = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * has the slave been turned into a broodmother
    		 *
    		 * * 0: no
    		 * * 1: standard 1 birth / week
    		 * * 2: black market 12 births / week
    		 * * 3: black market upgrade for implant firmware, to allow change weekly number
    		 * of ova in range of 1 to 12 in remote surgery block. (broodmotherFetuses change
    		 * through remote surgery). (future usage)
    		 */
    
    		this.broodmother = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * count of ova that broodmother implant force to release.
    		 *
    		 * Should be set with "broodmother" property together. If broodmother === 0 has no meaning.
    		 */
    
    		this.broodmotherFetuses = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * If broodmother implant set to pause it 's work.
    		 *
    		 * 1: implant on pause !1: working.
    		 *
    		 * If broodmother birth her last baby and her implant is on pause, she will be in contraception like state.
    		 */
    
    		this.broodmotherOnHold = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * Number of weeks left until last baby will be birthed.
    		 *
    		 * Mainly informative only. Updated automatically at birth process based on remaining fetuses. 0 - 37
    		 */
    
    		this.broodmotherCountDown = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * variable used to set off the birth events
    		 *
    		 * 1: birth this week; 0: not time yet */
    
    		this.labor = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * may accept strings, use at own risk
    		 *
    		 * * "none"
    		 * * "a small empathy belly"
    		 * * "a medium empathy belly"
    		 * * "a large empathy belly"
    		 * * "a huge empathy belly"
    		 * * "a corset"
    		 * * "an extreme corset"
    		 */
    
    		this.bellyAccessory = "none";
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * labia type
    		 * * 0: minimal
    		 * * 1: big
    		 * * 2: huge
    		 * * 3: huge dangling
    		 */
    
    		this.labia = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * clit size
    		 * * 0: normal
    		 * * 1: large
    		 * * 2: huge
    		 * * 3: enormous
    		 * * 4: penis-like
    		 * * 5: like a massive penis
    		 */
    
    		this.clit = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * is clit pierced
    		 * * 0: no
    		 * * 1: yes
    		 * * 2: heavy
    		 * * 3: smart
    		 */
    
    		this.clitPiercing = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * smart piercing setting
    		 * * "off"
    		 * * "none"
    		 * * "all"
    		 * * "no default setting"
    		 * * "women"
    		 * * "men"
    		 * * "vanilla"
    		 * * "oral"
    		 * * "anal"
    		 * * "boobs"
    		 * * "submissive"
    		 * * "humiliation"
    		 * * "pregnancy"
    		 * * "dom"
    		 * * "masochist"
    		 * * "sadist"
    		 */
    
    		this.clitSetting = "vanilla";
    		/** 0: circumcised; 1+:uncut, also affects foreskin size */
    		this.foreskin = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * anus size
    		 * * 0: virgin
    		 * * 1: tight
    		 * * 2: loose
    		 * * 3: very loose
    		 * * 4: gaping
    		 */
    
    		this.anus = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * dick size
    		 * * 0: none
    		 * * 1: tiny
    		 * * 2: little
    		 * * 3: normal
    		 * * 4: big
    		 * * 5: huge
    		 * * 6: gigantic
    		 * * 7: massive/gigantic
    		 * * 8: truly imposing/titanic
    		 * * 9: monstrous/absurd
    		 * * 10: awe-inspiring/inhuman
    		 * * 11+: hypertrophied
    		 */
    
    		this.dick = 0;
    		/** Used to calculate size of area around anus. */
    		this.analArea = 1;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * is dick pierced
    		 * * 0: no
    		 * * 1: yes
    		 * * 2: heavy
    		 */
    
    		this.dickPiercing = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * dick tattoo
    		 *
    		 * takes one of the following strings or 0
    		 * * "tribal patterns"
    		 * * "flowers"
    		 * * "scenes"
    		 * * "Asian art"
    		 * * "degradation"
    		 * * "counting"
    		 * * "advertisements"
    		 * * "rude words"
    		 * * "bovine patterns"
    		 * * "sacrament"
    		 * * "Sacrilege"
    		 * * "Possessive"
    		 * * "Paternalist"
    		 * @type {string|number} */
    
    		this.dickTat = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * does the slave have a prostate?
    		 * * 0: no
    		 * * 1: normal
    		 * * 2: hyperstimulated +20%
    		 * * 3: modified hyperstimulated +50%
    		 */
    
    		this.prostate = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * ball size
    		 * * 0: none
    		 * * 1: vestigial
    		 * * 2: small
    		 * * 3: average
    		 * * 4: large
    		 * * 5: massive
    		 * * 6: huge
    		 * * 7: giant
    		 * * 8: enormous
    		 * * 9: monstrous
    		 * * 10: inhuman
    		 * * 11+: hypertrophied
    		 */
    
    		this.balls = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * scrotum size
    		 *
    		 * function relative to .balls
    		 *
    		 * *If .balls > 0 and .scrotum === 0, balls are internal*
    		 */
    
    		this.scrotum = 0;
    		/** Has ovaries
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: no; 1: yes */
    
    		this.ovaries = 0;
    		/** Has anus piercing
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 *
    		 * 0: no; 1: yes; 2: heavy */
    
    		this.anusPiercing = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * anus tattoo
    		 *
    		 * takes one of the following strings or 0
    		 * * "bleached"
    		 * * "tribal patterns"
    		 * * "flowers"
    		 * * "degradation"
    		 * * "counting"
    		 * * "advertisements"
    		 * * "rude words"
    		 * * "bovine patterns"
    		 * * "sacrament"
    		 * * "Sacrilege"
    		 * * "Possessive"
    		 * * "Paternalist"
    		 * @type {string|number} */
    
    		this.anusTat = 0;
    		/**
    
    lowercasedonkey's avatar
    lowercasedonkey committed
    		 * has makeup
    		 * * 0: none
    		 * * 1: minimal
    		 * * 2: expensive, luxurious
    		 * * 3: color-coordinated with hair