Newer
Older
/**
* 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
this.birthSurname = 0;
/** Slave sex ("XX", "XY") */
this.genes = "XX";
/** @type {number} */
this.pronoun = App.Data.Pronouns.Kind.female;
/** Game week slave was acquired.
*
* _0: Obtained prior to game start / at game start_ */
this.weekAcquired = 0;
/** Child's origin
this.origin = "$He was born and raised in your arcology.";
/** Career prior to enslavement
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;
/**
* 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;
/**
* can slave choose own assignment
*
* 0: no; 1: yes */
this.choosesOwnAssignment = 0;
/** Child's assignment
* TODO:
this.assignment = Job.REST;
/** How far along slave is with being trained (skills, flaws, quirks)
* TODO:
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 = {
/**
* 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,
/**
* 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
*/
* 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
};
/**
* slave has a minor injury ("black eye", "bruise", "split lip")
* @type {number | string}
*/
* 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;
/**
* 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;
/**
* 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
*/
* slave 's muscles
* * 96+ : extremely muscular
* * 31 - 95: muscular
* * 6 - 30: toned
* * -5 - 5: none
* * -30 - -6: weak
* * -95 - -31: very weak
* * -96- : frail
*/
* 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
this.heightImplant = 0;
/** Child's nationality */
this.nationality = "slave";
/** Child's race */
this.race = "white";
/** Child's original race */
this.origRace = "white";
/**
* 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
*
* -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
this.earImplant = 0;
/** The shape of their outer ears
* "none", "damaged", "normal", "pointy", "elven", "ushi" */
this.earShape = "normal";
/** Type of kemonomimi ears if any
this.earT = "none";
/** Kemonomimi ear color
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
* "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
* Does she have a tail interface installed
* * 0: no
* * 1: yes
*/
this.PTail = 0;
/** The current shape of their modular tail
* "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";
/**
* hair length
* * 150: calf-length
* * 149-100: ass-length
* * 99-30: long
* * 29-10: shoulder-length
* * 9-0: short
*/
* 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";
/**
* 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;
/**
* What level of prosthetic interface she has installed
* * 0: no interface
* * 1: basic interface
* * 2: advanced interface
*/
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
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
this.heels = 0;
/** Slave voice
*
* 0: mute, 1: deep, 2: feminine, 3: high, girly */
this.voice = 2;
/** Has voice implant
this.voiceImplant = 0;
/** Has cybernetic voicebox
* slave accent
* * 0: none
* * 1: attractive
* * 2: heavy
* * 3: does not speak language
*/
* shoulder width
* * -2: very narrow
* * -1: narrow
* * 0: feminine
* * 1: broad
* * 2: very broad
*/
* has shoulder implant
*
* * -1: shoulders -1
* * 0: none
* * 1: shoulders +1
*/
this.shouldersImplant = 0;
/**
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
* 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;
/**
* 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";
/**
* breast shape
* * "normal"
* * "perky"
* * "saggy"
* * "torpedo-shaped"
* * "downward-facing"
* * "wide-set"
*/
this.boobShape = "normal";
/**
* nipple shape
* * "huge"
* * "puffy"
* * "inverted"
* * "tiny"
* * "cute"
* * "partially inverted"
* * "fuckable"
*/
* 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
*
* 0: normal; 1: large; 2: unusually wide; 3: huge, 4: massive */
this.areolae = 0;
/** Edge of areolae are pierced
this.areolaePiercing = 0;
/** Slave areolae shape ("heart"; "star"; "circle") */
this.areolaeShape = "circle";
/**
* 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
this.lactation = 0;
/** How many more weeks until lactation dries up
*
* usually 2 as interactions and lactation implant reset it to 2 */
this.lactationDuration = 0;
/**
* odds of inducing lactation
*
* begins trying on breast play if over 10 */
this.induceLactation = 0;
/** 0: 10: not used to producing milk(no bonuses);
* 11: 50: used to producing milk;
* 51: 100: heavily adapted to producing milk(big bonus) */
this.lactationAdaptation = 0;
/**
* 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
* 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_
*/
* 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";
/**
* 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} */
* face attractiveness
*
* * -96 - : very ugly
* * -95 - -41: ugly
* * -40 - -11: unattractive
* * -10 - 10: attractive
* * 11 - 40: very pretty
* * 41 - 95: gorgeous
* * 96+: mind blowing
*/
* facial surgery degree
*
* * 0 - 14: none
* * 15 - 34: Subtle Improvements
* * 35 - 64: Noticeable Work
* * 65 - 99: Heavily Reworked
* * 100: Uncanny Valley
*/
* accepts string (will be treated as "normal")
* * "normal"
* * "masculine"
* * "androgynous"
* * "cute"
* * "sensual"
* * "exotic"
* * "feline" (catmod exclusive content)
this.faceShape = "normal";
/**
* lip size (0 - 100)
* * 0 - 10: thin
* * 11 - 20: normal
* * 21 - 40: pretty
* * 41 - 70: plush
* * 71 - 95: huge(lisps)
* * 96 - 100: facepussy(mute)
*/
* how large her lip implants are
* @see lips
*/
* lips pierced
*
* 0: no; 1: yes; 2: heavy */
* 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} */
* teeth type
* * "normal"
* * "crooked"
* * "straightening braces"
* * "cosmetic braces"
* * "removable"
* * "pointy"
* * "baby"
* * "mixed"
*/
* has tongue piercing
*
* 0: no; 1: yes; 2: heavy */
* 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
this.vaginaLube = 0;
/** Has vagina piercing
* 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} */
* 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
*/
* 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
*/
* Number of children.
*
* **Warning!** Should be not changed after initial impregnation setup.
* See Pregnancy Control section for more.
*/
* 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;
/**
* Ovary implant type.
*
* * 0: no implants
* * "fertility": higher chance of twins (or more)
* * "sympathy": doubles eggs released
* * "asexual": self-fertilizing
*/
* Womb focused enhancements.
*
* * "none"
* * "restraint": Provides structural support for extremely oversized pregnancies
*/
this.wombImplant = "none";
/**
* Menstrual cycle known variable. To be used for fert cycle discover and things like pregnancy without a first period
*
* * 0: no
* * 1: yes
*/
* Menstrual cycle control variable.
*
* * 0: Danger week
* * 1+: safe week
*/
* 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)
*/
* 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;
/**
* 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;
/**
* 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;
/**
* variable used to set off the birth events
*
* 1: birth this week; 0: not time yet */
* 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";
/**
* labia type
* * 0: minimal
* * 1: big
* * 2: huge
* * 3: huge dangling
*/
* clit size
* * 0: normal
* * 1: large
* * 2: huge
* * 3: enormous
* * 4: penis-like
* * 5: like a massive penis
*/
* is clit pierced
* * 0: no
* * 1: yes
* * 2: heavy
* * 3: smart
*/
* 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;
/**
* anus size
* * 0: virgin
* * 1: tight
* * 2: loose
* * 3: very loose
* * 4: gaping
*/
* 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;
/**
* is dick pierced
* * 0: no
* * 1: yes
* * 2: heavy
*/
* 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} */
* does the slave have a prostate?
* * 0: no
* * 1: normal
* * 2: hyperstimulated +20%
* * 3: modified hyperstimulated +50%
*/
* 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
*/
* scrotum size
*
* function relative to .balls
*
* *If .balls > 0 and .scrotum === 0, balls are internal*
*/
this.scrotum = 0;
/** Has ovaries
this.ovaries = 0;
/** Has anus piercing
* 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} */
* has makeup
* * 0: none
* * 1: minimal
* * 2: expensive, luxurious
* * 3: color-coordinated with hair