diff --git a/devTools/types/assistant.d.ts b/devTools/types/assistant.d.ts index 717f871a2552d985ba393272e9484065b3dd2163..96908bd520cb5ff31d162d07a501f68bc2dd0b1a 100644 --- a/devTools/types/assistant.d.ts +++ b/devTools/types/assistant.d.ts @@ -11,6 +11,8 @@ interface assistant { aggressiveness: number; }; main: number; + Extra1: 1 | 0; + Extra2: 1 | 0; } interface appearance { diff --git a/src/facilities/nursery/nurseryDatatypeCleanup.js b/src/facilities/nursery/nurseryDatatypeCleanup.js index 7aa10f1ed660db95517cf025b6402315e2a2ffd3..6521f32e9daa8649e77424cfc61dbb1aaf8b2bd7 100644 --- a/src/facilities/nursery/nurseryDatatypeCleanup.js +++ b/src/facilities/nursery/nurseryDatatypeCleanup.js @@ -26,10 +26,10 @@ App.Facilities.Nursery.ChildDatatypeCleanup = function(child) { function childAgeDatatypeCleanup(child) { child.birthWeek = Math.clamp(+child.birthWeek, 0, 51) || 0; if (child.age > 0) { - child.actualAge = Math.clamp(+child.actualAge, V.minimumChildAge, Infinity) || child.age; /* if undefined, this sets to child.age */ + child.actualAge = Math.clamp(+child.actualAge, 0, Infinity) || child.age; /* if undefined, this sets to child.age */ delete child.age; } else { - child.actualAge = Math.clamp(+child.actualAge, V.minimumChildAge, Infinity) || 3; + child.actualAge = Math.clamp(+child.actualAge, 0, Infinity) || 3; } child.visualAge = Math.max(+child.visualAge, 0) || child.actualAge; child.physicalAge = Math.max(+child.physicalAge, 0) || child.actualAge; @@ -39,8 +39,8 @@ App.Facilities.Nursery.ChildDatatypeCleanup = function(child) { } function childPhysicalDatatypeCleanup(child) { - if (typeof child.nationality !== "string") { - child.nationality = "child"; + if (typeof child.nationality !== "string" || child.nationality === "child") { + child.nationality = "slave"; } if (typeof child.race !== "string") { nationalityToRace(child); @@ -526,6 +526,9 @@ App.Facilities.Nursery.InfantDatatypeCleanup = function(child) { originDatatypeCleanup(child); generatePronouns(child); + child.premature = Math.clamp(+child.premature, 0, 1) || 0; + child.addict = Math.max(+child.addict, 0) || 0; + // old versions of FC assign overlapping IDs to infants and other slaves, which needs to be fixed // deconflict IDs between infants and older children/tank babies/adults by reassigning the infant's ID if (V.cribs.find((s) => s.ID === child.ID && (s.birthWeek !== child.birthWeek || s.actualAge !== child.actualAge)) !== undefined @@ -535,12 +538,12 @@ App.Facilities.Nursery.InfantDatatypeCleanup = function(child) { function ageDatatypeCleanup(child) { child.birthWeek = Math.clamp(+child.birthWeek, 0, 51) || 0; - child.actualAge = Math.clamp(+child.actualAge, V.minimumChildAge, Infinity) || 0; + child.actualAge = Math.clamp(+child.actualAge, 0, Infinity) || 0; } function physicalDatatypeCleanup(child) { - if (typeof child.nationality !== "string") { - child.nationality = "child"; + if (typeof child.nationality !== "string" || child.nationality === "child") { + child.nationality = "slave"; } if (typeof child.race !== "string") { nationalityToRace(child); @@ -573,6 +576,7 @@ App.Facilities.Nursery.InfantDatatypeCleanup = function(child) { function relationDatatypeCleanup(child) { child.mother = +child.mother || 0; child.father = +child.father || 0; + child.cloneID = +child.cloneID || 0; } function originDatatypeCleanup(child) { diff --git a/src/facilities/nursery/utils/nurseryUtils.js b/src/facilities/nursery/utils/nurseryUtils.js index 0e6fd6b14352ee5473d0f77d1517769f79d749e2..65fdb9233beec8fc2e2260fc779f8e66cc3b5c92 100644 --- a/src/facilities/nursery/utils/nurseryUtils.js +++ b/src/facilities/nursery/utils/nurseryUtils.js @@ -70,7 +70,6 @@ App.Facilities.Nursery.childList = function childList() { App.Facilities.Nursery.infantToChild = function infantToChild(child) { child.abortionTat = -1; child.accent = 0; - child.addict = 0; child.ageImplant = 0; child.arm = { left: new App.Entity.LimbState(), @@ -129,7 +128,6 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) { child.choosesOwnClothes = 0; child.clit = jsRandom(0, 2); child.clitPiercing = 0; - child.clone = 0; child.clothes = "no clothing"; child.collar = "none"; child.corsetPiercing = 0; @@ -289,7 +287,6 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) { child.pregSource = 0; child.pregType = 0; child.pregWeek = 0; - child.premature = 0; child.prematureBirth = 0; child.prestige = 0; child.prostate = 0; @@ -343,12 +340,11 @@ App.Facilities.Nursery.infantToChild = function infantToChild(child) { child.rules.punishment = "situational"; child.rules.reward = "situational"; if (child.race !== "catgirl") { - child.tailColor = "none"; - child.tailShape = "none"; - } - if (child.race === "catgirl") { - child.tailColor = child.hColor; - child.tailShape = "neko"; + child.tailColor = "none"; + child.tailShape = "none"; + } else { + child.tailColor = child.hColor; + child.tailShape = "neko"; } child.tastes = 0; child.teeth = "baby"; diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index a9dd7a345efed957a09f1cdbce41699880c9783b..2f1b28b3721f0a80e6d318d0a78824fad418cf85 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -973,7 +973,6 @@ App.Entity.SlaveState = class SlaveState { /** * nipple are pierced * @type {FC.PiercingType} - * @default 0 * 0: none; 1: yes; 2: heavily */ this.nipplesPiercing = 0; /** what accessory, if any, or on her nipples */ @@ -984,7 +983,6 @@ App.Entity.SlaveState = class SlaveState { this.areolae = 0; /** edge of areolae are pierced * @type {FC.PiercingType} - * @default 0 * 0: none; 1: yes; 2: heavy */ this.areolaePiercing = 0; /** slave areolae shape ("heart"; "star"; "circle") */ @@ -2085,7 +2083,8 @@ App.Entity.SlaveState = class SlaveState { * *if energy > 95 and either attrXX or attrXY > 95, slave will be nymphomaniac* */ this.attrXY = 0; - /** 0: no; 1: yes */ + /** 0: no; 1: yes + * @type {FC.Bool} */ this.attrKnown = 0; /** * * "none" diff --git a/src/npc/children/ChildState.js b/src/npc/children/ChildState.js index 9c4a77803e2ad830bf5f883e98fbb59a0daf034d..edcbb7ec0b58e1a9f5798007286290734cc169f4 100644 --- a/src/npc/children/ChildState.js +++ b/src/npc/children/ChildState.js @@ -7,14 +7,15 @@ App.Facilities.Nursery.ChildState = class ChildState { /** Child's current name */ this.slaveName = "blank"; /** Child's current surname - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.slaveSurname = 0; /** Child's original name */ this.birthName = "blank"; /** Child's original surname - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.birthSurname = 0; - /** Slave sex ("XX", "XY") */ + /** Slave sex ("XX", "XY") + * @type {FC.GenderGenes} */ this.genes = "XX"; /** @type {number} */ this.pronoun = App.Data.Pronouns.Kind.female; @@ -23,10 +24,10 @@ App.Facilities.Nursery.ChildState = class ChildState { * _0: Obtained prior to game start / at game start_ */ this.weekAcquired = 0; /** Child's origin - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.origin = "$He was born and raised in your arcology."; /** Career prior to enslavement - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.career = 0; /** Child's ID */ this.ID = 0; @@ -42,6 +43,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * 3: friends with benefits with relationshipTarget * * 4: lover with relationshipTarget * * 5: relationshipTarget 's slave wife + * @type {FC.RelationShipKind} */ this.relationship = 0; /** Target of relationship (ID) */ @@ -52,6 +54,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * 1: dislikes rivalryTarget * * 2: rival of rivalryTarget * * 3: bitterly hates rivalryTarget + * @type {FC.RivalryType} */ this.rivalry = 0; /** Target of rival (ID) */ @@ -86,7 +89,8 @@ App.Facilities.Nursery.ChildState = class ChildState { 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 */ + /** Has had facial surgery to reduce age. 0: no, 1: yes + * @type {FC.Bool} */ this.ageImplant = 0; this.health = { /** @@ -126,7 +130,7 @@ App.Facilities.Nursery.ChildState = class ChildState { }; /** * slave has a minor injury ("black eye", "bruise", "split lip") - * @type {number | string} + * @type {FC.MinorInjury} */ this.minorInjury = 0; /** @@ -193,9 +197,11 @@ App.Facilities.Nursery.ChildState = class ChildState { this.heightImplant = 0; /** Child's nationality */ this.nationality = "slave"; - /** Child's race */ + /** Child's race + * @type {FC.Race} */ this.race = "white"; - /** Child's original race */ + /** Child's original race + * @type {FC.Race} */ this.origRace = "white"; /** * slave markings @@ -203,6 +209,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "birthmark" * * "freckles" * * "heavily freckled" + * @type {FC.Markings} */ this.markings = "none"; /** @@ -213,7 +220,7 @@ App.Facilities.Nursery.ChildState = class ChildState { /** "none", "glasses", "blurring glasses", "corrective glasses", "blurring contacts", "corrective contacts" */ this.eyewear = "none"; /** Slave hearing - * + * @type {FC.Hearing} * -2: deaf; -1: hard of hearing; 0: normal */ this.hears = 0; /** "none", "hearing aids", "muffling ear plugs", "deafening ear plugs" */ @@ -248,6 +255,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * Does she have a tail interface installed * * 0: no * * 1: yes + * @type {FC.Bool} */ this.PTail = 0; /** The current shape of their modular tail @@ -287,6 +295,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "tapered" * * "thick" * * "bushy" + * @type {FC.EyebrowThickness} */ this.eyebrowFullness = "natural"; /** Hair style */ @@ -308,7 +317,8 @@ App.Facilities.Nursery.ChildState = class ChildState { * * -96-: absurd */ this.waist = 0; - /** Series of rings up the back that can be tied together. 0: no, 1: yes */ + /** Series of rings up the back that can be tied together. 0: no, 1: yes + * @type {FC.Bool} */ this.corsetPiercing = 0; /** * What level of prosthetic interface she has installed @@ -358,7 +368,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * 0: no; 1: yes, high; -1: yes, low */ this.voiceImplant = 0; /** Has cybernetic voicebox - * + * @type {FC.Bool} * 0: no; 1: yes */ this.electrolarynx = 0; /** @@ -442,6 +452,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "fillable" * * "advanced fillable" * * "hyper fillable" + * @type {FC.SizingImplantType} */ this.boobsImplantType = "none"; /** @@ -452,6 +463,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "torpedo-shaped" * * "downward-facing" * * "wide-set" + * @type {FC.BreastShape} */ this.boobShape = "normal"; /** @@ -463,11 +475,12 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "cute" * * "partially inverted" * * "fuckable" + * @type {FC.NippleShape} */ this.nipples = "cute"; /** * nipple are pierced - * @default 0 + * @type {FC.PiercingType} * 0: none; 1: yes; 2: heavily */ this.nipplesPiercing = 0; /** What accessory, if any, or on her nipples */ @@ -477,7 +490,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * 0: normal; 1: large; 2: unusually wide; 3: huge, 4: massive */ this.areolae = 0; /** Edge of areolae are pierced - * @default 0 + * @type {FC.PiercingType} * 0: none; 1: yes; 2: heavy */ this.areolaePiercing = 0; /** Slave areolae shape ("heart"; "star"; "circle") */ @@ -497,7 +510,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string | number} + * @type {FC.Zeroable<string>} */ this.boobsTat = 0; /** Slave lactation @@ -566,6 +579,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "fillable" * * "advanced fillable" * * "hyper fillable" + * @type {FC.SizingImplantType} */ this.buttImplantType = "none"; /** @@ -585,7 +599,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.buttTat = 0; /** * face attractiveness @@ -637,7 +651,7 @@ App.Facilities.Nursery.ChildState = class ChildState { this.lipsImplant = 0; /** * lips pierced - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.lipsPiercing = 0; /** @@ -656,7 +670,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.lipsTat = 0; /** * teeth type @@ -668,11 +682,12 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "pointy" * * "baby" * * "mixed" + * @type {FC.TeethType} */ this.teeth = "normal"; /** * has tongue piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.tonguePiercing = 0; /** @@ -691,7 +706,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * 0: dry; 1: wet; 2: soaking wet */ this.vaginaLube = 0; /** Has vagina piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.vaginaPiercing = 0; /** @@ -711,7 +726,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.vaginaTat = 0; /** * pregnancy time or state.See Pregnancy Control section for more. @@ -773,7 +788,7 @@ App.Facilities.Nursery.ChildState = class ChildState { this.wombImplant = "none"; /** * Menstrual cycle known variable. To be used for fert cycle discover and things like pregnancy without a first period - * + * @type {FC.Bool} * * 0: no * * 1: yes */ @@ -857,6 +872,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * 1: yes * * 2: heavy * * 3: smart + * @type {FC.ClitoralPiercingType} */ this.clitPiercing = 0; /** @@ -877,6 +893,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "dom" * * "masochist" * * "sadist" + * @type {FC.SmartPiercingSetting} */ this.clitSetting = "vanilla"; /** 0: circumcised; 1+:uncut, also affects foreskin size */ @@ -913,6 +930,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * 0: no * * 1: yes * * 2: heavy + * @type {FC.PiercingType} */ this.dickPiercing = 0; /** @@ -932,7 +950,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.dickTat = 0; /** * does the slave have a prostate? @@ -967,11 +985,11 @@ App.Facilities.Nursery.ChildState = class ChildState { */ this.scrotum = 0; /** Has ovaries - * + * @type {FC.Bool} * 0: no; 1: yes */ this.ovaries = 0; /** Has anus piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.anusPiercing = 0; /** @@ -990,7 +1008,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.anusTat = 0; /** * has makeup @@ -1024,19 +1042,19 @@ App.Facilities.Nursery.ChildState = class ChildState { * @type {Object.<string, string>} */ this.brand = {}; /** Has pierced ears - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.earPiercing = 0; /** Has pierced nose - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.nosePiercing = 0; /** Has eyebrow piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.eyebrowPiercing = 0; /** Has navel piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.navelPiercing = 0; /** @@ -1056,7 +1074,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.shouldersTat = 0; /** * arm tattoo @@ -1075,7 +1093,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.armsTat = 0; /** * leg tattoo @@ -1094,7 +1112,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.legsTat = 0; /** * back tattoo @@ -1113,7 +1131,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.backTat = 0; /** * tramp stamp @@ -1132,12 +1150,12 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.stampTat = 0; /** rules */ this.rules = new App.Entity.RuleState(); /** Follows rules or is exempt from them - * + * @type {FC.Bool} * 0: exempt; 1: obeys */ this.useRulesAssistant = 1; /** @@ -1152,6 +1170,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "cum production" * * "cleansing" * * "fertility" + * @type {FC.Diet} */ this.diet = "healthy"; /** How much of her diet is cum @@ -1202,6 +1221,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "butt redistributors" * * "sag-B-gone" * * "growth stimulants" + * @type {FC.Drug} */ this.drugs = "no drugs"; /** @@ -1220,15 +1240,15 @@ App.Facilities.Nursery.ChildState = class ChildState { */ this.aphrodisiacs = "none"; /** - * TODO: - * how addict to aphrodisiacs slave is + * how addicted to aphrodisiacs slave is - inherited at birth * * 0: not * * 1-2: new addict * * 3-9: confirmed addict * * 10+: dependent */ this.addict = 0; - /** 0: no; 1: yes */ + /** 0: no; 1: yes + * @type {FC.Bool} */ this.choosesOwnClothes = 0; /** * may accept strings, use at own risk @@ -1313,18 +1333,21 @@ App.Facilities.Nursery.ChildState = class ChildState { * whether the slave has a chastity device on their anus * 0 - no * 1 - yes + * @type {FC.Bool} */ this.chastityAnus = 0; /** * whether the slave has a chastity device on their penis * 0 - no * 1 - yes + * @type {FC.Bool} */ this.chastityPenis = 0; /** * whether the slave has a chastity device on their vagina * 0 - no * 1 - yes + * @type {FC.Bool} */ this.chastityVagina = 0; /** @@ -1435,7 +1458,8 @@ App.Facilities.Nursery.ChildState = class ChildState { * *if energy > 95 and either attrXX or attrXY > 95, slave will be nymphomaniac* */ this.attrXY = 0; - /** 0: no; 1: yes */ + /** 0: no; 1: yes + * @type {FC.Bool} */ this.attrKnown = 0; /** * * "none" @@ -1449,6 +1473,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "masochist" * * "dom" * * "pregnancy" + * @type {FC.Fetish} */ this.fetish = "none"; /** How strong her fetish is (10-100) @@ -1456,7 +1481,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * 10+: enjoys fetish; 60+: likes fetish; 95+: loves fetish */ this.fetishStrength = 70; /** Is fetish known to player - * + * @type {FC.Bool} * 0: no; 1: yes */ this.fetishKnown = 0; /** @@ -1470,6 +1495,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "anorexic": dislikes eating and being forced to eat, loses weight * * "devout": resistance through religious faith * * "liberated": believes slavery is wrong + * @type {FC.BehavioralFlaw} */ this.behavioralFlaw = "none"; /** @@ -1483,6 +1509,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "insecure": defines herself on the thoughts of others * * "sinful": breaks cultural norms * * "advocate": advocates slavery + * @type {FC.BehavioralQuirk} */ this.behavioralQuirk = "none"; /** @@ -1505,6 +1532,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "malicious": loves causing pain and suffering * * "self hating": hates herself * * "breeder": addicted to being pregnant + * @type {FC.SexualFlaw} */ this.sexualFlaw = "none"; /** @@ -1518,10 +1546,12 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "caring": enjoys bring her partners to orgasm * * "unflinching": willing to do anything * * "size queen": prefers big cocks + * @type {FC.SexualQuirk} */ this.sexualQuirk = "none"; /** 0: does not have; 1: carrier; 2: active * * heterochromia is an exception. String = active + * @type {FC.GeneticQuirks} */ this.geneticQuirks = { /** Oversized breasts. Increased growth rate, reduced shrink rate. Breasts try to return to oversized state if reduced. */ @@ -1538,12 +1568,23 @@ App.Facilities.Nursery.ChildState = class ChildState { hyperFertility: 0, /** Pregnancy does not block ovulation, slave can become pregnant even while pregnant */ superfetation: 0, + /** abnormal production of amniotic fluid + * only affects fetuses */ + polyhydramnios: 0, /** Pleasurable pregnancy and orgasmic birth. Wider hips, looser and wetter vagina. High pregadaptation and low birth damage. */ uterineHypersensitivity: 0, + /** inappropriate lactation*/ + galactorrhea: 0, /** Is abnormally tall. gigantism + dwarfism - is very average*/ gigantism: 0, /** Is abnormally short. gigantism + dwarfism - is very average*/ dwarfism: 0, + /** retains childlike characteristics*/ + neoteny: 0, + /** rapid aging + * + * **neoteny + progeria** - progeria wins, not that she'll make it to the point that neoteny really kicks in */ + progeria: 0, /** Has a flawless face. pFace + uFace - Depends on carrier status, may swing between average and above/below depending on it */ pFace: 0, /** Has a hideous face. pFace + uFace - Depends on carrier status, may swing between average and above/below depending on it */ @@ -1576,7 +1617,7 @@ App.Facilities.Nursery.ChildState = class ChildState { /** Values provided by players */ this.custom = new App.Entity.ChildCustomAddonsState(); /** Does this slave refer to you rudely? - * + * @type {FC.Bool} * 0: not being rude; 1: insists on calling you a rude title */ this.rudeTitle = 0; /** @type {string[]} */ @@ -1586,7 +1627,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "a heart" * * "a star" * * "a butterfly" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.bellyTat = 0; /** * Child has a series of tattoos to denote how many abortions she has had. @@ -1625,6 +1666,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "curative" * * "tightener" * * "urine" + * @type {FC.InflationLiquid} */ this.inflationType = "none"; /** @@ -1640,11 +1682,11 @@ App.Facilities.Nursery.ChildState = class ChildState { /** If inflationMethod 3, ID of the slave filling her with cum. */ this.cumSource = 0; /** Child's internals have ruptured. Used with poor health and overinflation. - * + * @type {FC.Bool} * 1: true; 0: false */ this.burst = 0; /** Do you and the slave know she is pregnant. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.pregKnown = 0; /** How long she has been pregnant @@ -1743,13 +1785,13 @@ App.Facilities.Nursery.ChildState = class ChildState { /** Target .physicalAge for female puberty to occur. */ this.pubertyAgeXX = 13; /** Has the slave gone through female puberty. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.pubertyXX = 0; /** Target .physicalAge for male puberty to occur. */ this.pubertyAgeXY = 13; /** Has the slave gone through male puberty. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.pubertyXY = 0; /** @@ -1765,15 +1807,15 @@ App.Facilities.Nursery.ChildState = class ChildState { this.scars = 0; /** * In a eugenics society, this slave is a designated breeder. - * + * @type {FC.Bool} * 1: yes; 0: no */ this.breedingMark = 0; /** Is the PC permitted to fuck this slave pregnant. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.PCExclude = 0; /** Is the Head Girl permitted to fuck this slave pregnant. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.HGExclude = 0; /** @@ -1784,6 +1826,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "pig" * * "horse" * * "cow" + * @type {FC.SpermType} */ this.ballType = "human"; /** @@ -1793,6 +1836,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "pig" * * "horse" * * "cow" + * @type {FC.AnimalKind} */ this.eggType = "human"; /** Eugenics variable. Is the slave allowed to choose to wear chastity. @@ -1805,6 +1849,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * * "slow gestation" * * "speed up" * * "labor suppressors" + * @type {FC.WithNone<FC.GestationDrug>} */ this.pregControl = "none"; /** @@ -1817,7 +1862,7 @@ App.Facilities.Nursery.ChildState = class ChildState { /** */ this.ageAdjust = 0; /** Child has undergone hair removal surgery - * + * @type {FC.Bool} * 0: no; 1: yes */ this.bald = 0; /** Child is in original body. @@ -1849,31 +1894,31 @@ App.Facilities.Nursery.ChildState = class ChildState { */ this.hormoneBalance = 0; /** Whether a slave is permitted to eat Hedonistic Decadence's specialized slave food. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.onDiet = 0; /** Does the slave have the breast shape maintaining mesh implant. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.breastMesh = 0; /** Used to denote a slave giving birth prematurely. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.prematureBirth = 0; /** Was the slave born prematurely? - * + * @type {FC.Bool} * 0: no; 1: yes */ this.premature = 0; /** Has the slave had a vasectomy? - * + * @type {FC.Bool} * 0: no; 1: yes */ this.vasectomy = 0; /** Is the Child's hair under constant maintenance? - * + * @type {FC.Bool} * 0: no; 1: yes */ this.haircuts = 0; /** Used to tell if the slave is from this game or a previous. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.newGamePlus = 0; /** Her skills */ @@ -1882,18 +1927,26 @@ App.Facilities.Nursery.ChildState = class ChildState { * * 0: no; 1: yes, comforting; 2: yes, terrifying */ this.tankBaby = 0; - /** */ + /** Is the slave a clone? If so, what is the original slave's name? + * @type {FC.Zeroable<string>} + * 0: no; 1: yes */ this.clone = 0; + /** ID she was cloned from */ + this.cloneID = 0; /** */ this.geneMods = { /** Does slave have induced NCS? - * + * @type {FC.Bool} * 0: no; 1: yes */ NCS: 0, /** Has the slave undergone the elasticity (plasticity) treatment? - * + * @type {FC.Bool} + * 0: no; 1: yes */ + rapidCellGrowth: 0, + /** Is the slave immortal? + * @type {FC.Bool} * 0: no; 1: yes */ - rapidCellGrowth: 0 + immortality: 0 }; /* eslint-disable camelcase*/ this.NCSyouthening = 0; diff --git a/src/npc/generate/generateGenetics.js b/src/npc/generate/generateGenetics.js index 2d08e8ada9e42fe362c112eb67a5c16a9b8dce31..ac091e37ab16e4f9d619e15e2c83b8afb5e94f59 100644 --- a/src/npc/generate/generateGenetics.js +++ b/src/npc/generate/generateGenetics.js @@ -1246,8 +1246,7 @@ globalThis.generateChild = function(mother, ovum, incubator=false) { child.earTColor = "hairless"; child.tailColor = "none"; child.tailShape = "none"; - } - else { + } else { child.earImplant = 1; child.earShape = "none"; child.earT = "neko"; @@ -1319,8 +1318,7 @@ globalThis.generateChild = function(mother, ovum, incubator=false) { child.earTColor = "hairless"; child.tailColor = "none"; child.tailShape = "none"; - } - else { + } else { child.earImplant = 1; child.earShape = "none"; child.earT = "neko"; diff --git a/src/npc/infants/InfantState.js b/src/npc/infants/InfantState.js index 59c599c4ef890e0b9cc10efca5585196b13634ba..01f76e0fd2f99f4ec17a72acd8ee97366c509f5b 100644 --- a/src/npc/infants/InfantState.js +++ b/src/npc/infants/InfantState.js @@ -4,17 +4,21 @@ */ App.Facilities.Nursery.InfantState = class InfantState { constructor() { - /** Child's current name */ + /** Child's current name + * @type {FC.Zeroable<string>} */ this.slaveName = "blank"; /** Child's current surname - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.slaveSurname = 0; + /** @type {FC.GenderGenes} */ this.genes = "XX"; this.pronoun = App.Data.Pronouns.Kind.female; /** game week child was acquired. * * _0: Obtained prior to game start / at game start_ */ this.weekAcquired = 0; + /** Child's ID */ + this.ID = 0; this.father = 0; this.mother = 0; this.daughters = 0; @@ -27,16 +31,18 @@ App.Facilities.Nursery.InfantState = class InfantState { this.visualAge = 18; /** How old her body is. */ this.physicalAge = 18; - /** child's race */ + /** child's race + * @type {FC.Race} */ this.race = "white"; /** child's nationality */ - this.nationality = "Stateless"; + this.nationality = "slave"; /** * child markings * * "beauty mark" * * "birthmark" * * "freckles" * * "heavily freckled" + * @type {FC.Markings} */ this.markings = "none"; /** @@ -81,6 +87,14 @@ App.Facilities.Nursery.InfantState = class InfantState { * * "feline" (catmod exclusive content) */ this.faceShape = "normal"; + /** + * how addicted to aphrodisiacs slave is - inherited at birth + * * 0: not + * * 1-2: new addict + * * 3-9: confirmed addict + * * 10+: dependent + */ + this.addict = 0; /** * child intelligence * * -100 - -96: borderline retarded @@ -104,6 +118,7 @@ App.Facilities.Nursery.InfantState = class InfantState { * * "masochist" * * "dom" * * "pregnancy" + * @type {FC.Fetish} */ this.fetish = "none"; /** @@ -117,6 +132,7 @@ App.Facilities.Nursery.InfantState = class InfantState { * * "anorexic": dislikes eating and being forced to eat, loses weight * * "devout": resistance through religious faith * * "liberated": believes slavery is wrong + * @type {FC.BehavioralFlaw} */ this.behavioralFlaw = "none"; /** @@ -139,10 +155,12 @@ App.Facilities.Nursery.InfantState = class InfantState { * * "malicious": loves causing pain and suffering * * "self hating": hates herself * * "breeder": addicted to being pregnant + * @type {FC.SexualFlaw} */ this.sexualFlaw = "none"; /** 0: does not have; 1: carrier; 2: active * * heterochromia is an exception. String = active + * @type {FC.GeneticQuirks} */ this.geneticQuirks = { /** Oversized breasts. Increased growth rate, reduced shrink rate. Breasts try to return to oversized state if reduced. */ @@ -159,12 +177,23 @@ App.Facilities.Nursery.InfantState = class InfantState { hyperFertility: 0, /** pregnancy does not block ovulation, child can become pregnant even while pregnant */ superfetation: 0, + /** abnormal production of amniotic fluid + * only affects fetuses */ + polyhydramnios: 0, /** Pleasurable pregnancy and orgasmic birth. Wider hips, looser and wetter vagina. High pregadaptation and low birth damage. */ uterineHypersensitivity: 0, - /** is abnormally tall. gigantism + dwarfism - is very average*/ + /** inappropriate lactation*/ + galactorrhea: 0, + /** Is abnormally tall. gigantism + dwarfism - is very average*/ gigantism: 0, - /** is abnormally short. gigantism + dwarfism - is very average*/ + /** Is abnormally short. gigantism + dwarfism - is very average*/ dwarfism: 0, + /** retains childlike characteristics*/ + neoteny: 0, + /** rapid aging + * + * **neoteny + progeria** - progeria wins, not that she'll make it to the point that neoteny really kicks in */ + progeria: 0, /** has a flawless face. pFace + uFace - Depends on carrier status, may swing between average and above/below depending on it */ pFace: 0, /** has a hideous face. pFace + uFace - Depends on carrier status, may swing between average and above/below depending on it */ @@ -183,6 +212,10 @@ App.Facilities.Nursery.InfantState = class InfantState { wLoss: 0, /** body attempts to normalize to an androgynous state */ androgyny: 0, + /** Constantly gains muscle mass, easier to gain muscle. mGain + mLoss - muscle gain/loss amplified, passively lose muscle unless building */ + mGain: 0, + /** Constantly loses muscle mass, easier to gain muscle. mGain + mLoss - muscle gain/loss amplified, passively lose muscle unless building */ + mLoss: 0, /** child can only ever birth girls */ girlsOnly: 0 }; @@ -190,6 +223,18 @@ App.Facilities.Nursery.InfantState = class InfantState { this.spermY = 50; /** how many weeks until the child is ready for release */ this.growTime = 156; + /** Was the slave born prematurely? + * @type {FC.Bool} + * 0: no; 1: yes */ + this.premature = 0; + /** Is the slave a clone? If so, what is the original slave's name? + * @type {FC.Zeroable<string>} + * 0: no; 1: yes */ + this.clone = 0; + /** ID she was cloned from */ + this.cloneID = 0; + /** @type {{skin:string, eyeColor:string, hColor:string}} */ + this.albinismOverride = null; /** Slave's inbreeding coefficient */ this.inbreedingCoeff = 0; } diff --git a/src/player/js/PlayerState.js b/src/player/js/PlayerState.js index 37909030c9ef0ab37613e3559b2a58bc5692b25a..19771fff92a825753109e9dad2715b193360cb49 100644 --- a/src/player/js/PlayerState.js +++ b/src/player/js/PlayerState.js @@ -246,12 +246,12 @@ App.Entity.PlayerState = class PlayerState { /** Player's current name */ this.slaveName = "Anonymous"; /** Player's current surname - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.slaveSurname = 0; /** Player's original name */ this.birthName = "Anonymous"; /** Player's original surname - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.birthSurname = ""; /** Player sex ("XX", "XY") * @type {FC.GenderGenes} */ @@ -323,7 +323,7 @@ App.Entity.PlayerState = class PlayerState { /** Player's prestige */ this.prestige = 0; /** reason for prestige - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.prestigeDesc = 0; this.relationships = new App.Entity.PlayerRelationshipsState(); this.father = 0; @@ -340,7 +340,8 @@ App.Entity.PlayerState = class PlayerState { this.physicalAge = 35; /** How old your ovaries are. (used to trick menopause) */ this.ovaryAge = 35; - /** has had facial surgery to reduce age. 0: no, 1: yes */ + /** has had facial surgery to reduce age. 0: no, 1: yes + * @type {FC.Bool} */ this.ageImplant = 0; /** compatibility **/ this.devotion = 0; @@ -382,7 +383,7 @@ App.Entity.PlayerState = class PlayerState { }; /** * you have a minor injury ("black eye", "bruise", "split lip") - * @type {number | string} + * @type {FC.MinorInjury} */ this.minorInjury = 0; /** @@ -439,6 +440,7 @@ App.Entity.PlayerState = class PlayerState { * * "birthmark" * * "freckles" * * "heavily freckled" + * @type {FC.Markings} */ this.markings = "none"; /** "none", "glasses", "corrective glasses", "corrective contacts" */ @@ -448,12 +450,13 @@ App.Entity.PlayerState = class PlayerState { */ this.eye = new App.Entity.PlayerEyeState(); /** your hearing - * + * @type {FC.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 + * @type {FC.Bool} * 0: no; 1: yes */ this.earImplant = 0; /** the shape of your outer ears @@ -522,6 +525,7 @@ App.Entity.PlayerState = class PlayerState { * * "tapered" * * "thick" * * "bushy" + * @type {FC.EyebrowThickness} */ this.eyebrowFullness = "natural"; /** hair style */ @@ -543,7 +547,8 @@ App.Entity.PlayerState = class PlayerState { * * -96-: absurd */ this.waist = 0; - /** series of rings up the back that can be tied together. 0: no, 1: yes */ + /** series of rings up the back that can be tied together. 0: no, 1: yes + * @type {FC.Bool} */ this.corsetPiercing = 0; /** * What level of prosthetic interface you have installed @@ -567,7 +572,7 @@ App.Entity.PlayerState = class PlayerState { right: new App.Entity.LimbState() }; /** are your heels clipped - * + * @type {FC.Bool} * 0: no, 1: yes */ this.heels = 0; /** your voice @@ -579,7 +584,7 @@ App.Entity.PlayerState = class PlayerState { * 0: no; 1: yes, high; -1: yes, low */ this.voiceImplant = 0; /** have cybernetic voicebox - * + * @type {FC.Bool} * 0: no; 1: yes */ this.electrolarynx = 0; /** @@ -665,6 +670,7 @@ App.Entity.PlayerState = class PlayerState { * * "fillable" * * "advanced fillable" * * "hyper fillable" + * @type {FC.SizingImplantType} */ this.boobsImplantType = "none"; /** @@ -675,6 +681,7 @@ App.Entity.PlayerState = class PlayerState { * * "torpedo-shaped" * * "downward-facing" * * "wide-set" + * @type {FC.BreastShape} */ this.boobShape = "perky"; /** @@ -686,11 +693,12 @@ App.Entity.PlayerState = class PlayerState { * * "cute" * * "partially inverted" * * "fuckable" + * @type {FC.NippleShape} */ this.nipples = "cute"; /** * nipple are pierced - * @default 0 + * @type {FC.PiercingType} * 0: none; 1: yes; 2: heavily */ this.nipplesPiercing = 0; /** what accessory, if any, are on your nipples */ @@ -700,7 +708,7 @@ App.Entity.PlayerState = class PlayerState { * 0: normal; 1: large; 2: unusually wide; 3: huge, 4: massive */ this.areolae = 0; /** edge of areolae are pierced - * @default 0 + * @type {FC.PiercingType} * 0: none; 1: yes; 2: heavy */ this.areolaePiercing = 0; /** your areolae shape ("heart"; "star"; "circle") */ @@ -720,7 +728,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string | number} + * @type {FC.Zeroable<string>} */ this.boobsTat = 0; /** your lactation @@ -789,7 +797,8 @@ App.Entity.PlayerState = class PlayerState { * * "fillable" * * "advanced fillable" * * "hyper fillable" - */ + * @type {FC.SizingImplantType} + */ this.buttImplantType = "none"; /** * butt tattoo @@ -808,7 +817,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.buttTat = 0; /** * face attractiveness @@ -859,7 +868,7 @@ App.Entity.PlayerState = class PlayerState { this.lipsImplant = 0; /** * lips pierced - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.lipsPiercing = 0; /** @@ -878,7 +887,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.lipsTat = 0; /** * teeth type @@ -890,11 +899,12 @@ App.Entity.PlayerState = class PlayerState { * * "pointy" * * "baby" * * "mixed" + * @type {FC.TeethType} */ this.teeth = "normal"; /** * have tongue piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.tonguePiercing = 0; /** @@ -909,7 +919,7 @@ App.Entity.PlayerState = class PlayerState { */ this.vagina = -1; /** have has your vagina improved - * + * @type {FC.Bool} * 0: no; 1: yes; */ this.newVag = 0; /** exclusive variable @@ -918,7 +928,7 @@ App.Entity.PlayerState = class PlayerState { * 0: dry; 1: wet; 2: soaking wet */ this.vaginaLube = 0; /** have vagina piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.vaginaPiercing = 0; /** @@ -938,7 +948,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.vaginaTat = 0; /** * pregnancy time or state.See Pregnancy Control section for more. @@ -1012,7 +1022,7 @@ App.Entity.PlayerState = class PlayerState { this.wombImplant = "none"; /** * Menstrual cycle known variable. To be used for fert cycle discover and things like pregnancy without a first period - * + * @type {FC.Bool} * * 0: no * * 1: yes */ @@ -1097,6 +1107,7 @@ App.Entity.PlayerState = class PlayerState { * * 1: yes * * 2: heavy * * 3: smart + * @type {FC.ClitoralPiercingType} */ this.clitPiercing = 0; /** 0: circumcised; 1+:uncut, also affects foreskin size */ @@ -1133,6 +1144,7 @@ App.Entity.PlayerState = class PlayerState { * * 0: no * * 1: yes * * 2: heavy + * @type {FC.PiercingType} */ this.dickPiercing = 0; /** @@ -1152,7 +1164,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.dickTat = 0; /** * does the slave have a prostate? @@ -1192,11 +1204,11 @@ App.Entity.PlayerState = class PlayerState { */ this.scrotum = 4; /** has ovaries - * + * @type {FC.Bool} * 0: no; 1: yes */ this.ovaries = 0; /** has anus piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.anusPiercing = 0; /** @@ -1215,7 +1227,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.anusTat = 0; /** * has makeup @@ -1250,19 +1262,19 @@ App.Entity.PlayerState = class PlayerState { * @type {Object.<string, string>} */ this.brand = {}; /** has pierced ears - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.earPiercing = 0; /** has pierced nose - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.nosePiercing = 0; /** has eyebrow piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.eyebrowPiercing = 0; /** has navel piercing - * + * @type {FC.PiercingType} * 0: no; 1: yes; 2: heavy */ this.navelPiercing = 0; /** @@ -1282,7 +1294,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.shouldersTat = 0; /** * arm tattoo @@ -1301,7 +1313,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.armsTat = 0; /** * leg tattoo @@ -1320,7 +1332,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.legsTat = 0; /** * back tattoo @@ -1339,7 +1351,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.backTat = 0; /** * tramp stamp @@ -1358,7 +1370,7 @@ App.Entity.PlayerState = class PlayerState { * * "Sacrilege" * * "Possessive" * * "Paternalist" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.stampTat = 0; /** * * "healthy" @@ -1372,6 +1384,7 @@ App.Entity.PlayerState = class PlayerState { * * "cum production" * * "cleansing" * * "fertility" + * @type {FC.Diet} */ this.diet = "healthy"; /** @@ -1450,18 +1463,21 @@ App.Entity.PlayerState = class PlayerState { * whether the slave has a chastity device on their anus * 0 - no * 1 - yes + * @type {FC.Bool} */ this.chastityAnus = 0; /** * whether the slave has a chastity device on their penis * 0 - no * 1 - yes + * @type {FC.Bool} */ this.chastityPenis = 0; /** * whether the slave has a chastity device on their vagina * 0 - no * 1 - yes + * @type {FC.Bool} */ this.chastityVagina = 0; /** @@ -1601,6 +1617,7 @@ App.Entity.PlayerState = class PlayerState { * * "masochist" * * "dom" * * "pregnancy" + * @type {FC.Fetish} */ this.fetish = "none"; /** how strong your fetish is (10-100) @@ -1618,6 +1635,7 @@ App.Entity.PlayerState = class PlayerState { * * "anorexic": dislikes eating and being forced to eat, loses weight * * "devout": resistance through religious faith * * "liberated": believes slavery is wrong + * @type {FC.BehavioralFlaw} */ this.behavioralFlaw = "none"; /** @@ -1631,6 +1649,7 @@ App.Entity.PlayerState = class PlayerState { * * "insecure": defines herself on the thoughts of others * * "sinful": breaks cultural norms * * "advocate": advocates slavery + * @type {FC.BehavioralQuirk} */ this.behavioralQuirk = "none"; /** @@ -1653,6 +1672,7 @@ App.Entity.PlayerState = class PlayerState { * * "malicious": loves causing pain and suffering * * "self hating": hates herself * * "breeder": addicted to being pregnant + * @type {FC.SexualFlaw} */ this.sexualFlaw = "none"; /** @@ -1666,6 +1686,7 @@ App.Entity.PlayerState = class PlayerState { * * "caring": enjoys bring her partners to orgasm * * "unflinching": willing to do anything * * "size queen": prefers big cocks + * @type {FC.SexualQuirk} */ this.sexualQuirk = "none"; /** 0: does not have; 1: carrier; 2: active @@ -1740,7 +1761,7 @@ App.Entity.PlayerState = class PlayerState { * * "a heart" * * "a star" * * "a butterfly" - * @type {string|number} */ + * @type {FC.Zeroable<string>} */ this.bellyTat = 0; /** * You have a series of tattoos to denote how many abortions you've had. @@ -1757,11 +1778,11 @@ App.Entity.PlayerState = class PlayerState { */ this.birthsTat = -1; /** You will give birth this week. - * + * @type {FC.Bool} * 1: true; 0: false */ this.induce = 0; /** You have an anal womb and can get pregnant. - * + * @type {FC.Bool} * 1: true; 0: false */ this.mpreg = 0; /** How much fluid is distending your middle. @@ -1794,11 +1815,11 @@ App.Entity.PlayerState = class PlayerState { /** If inflationMethod 3, ID of the slave filling you with cum. */ this.cumSource = 0; /** Your internals have ruptured. Used with poor health and overinflation. - * + * @type {FC.Bool} * 1: true; 0: false */ this.burst = 0; /** Do you know you are pregnant. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.pregKnown = 0; /** How long you have been pregnant @@ -1897,13 +1918,13 @@ App.Entity.PlayerState = class PlayerState { /** Target .physicalAge for female puberty to occur. */ this.pubertyAgeXX = 13; /** Have you gone through female puberty. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.pubertyXX = 1; /** Target .physicalAge for male puberty to occur. */ this.pubertyAgeXY = 13; /** Have you slave gone through male puberty. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.pubertyXY = 1; /** @@ -1915,7 +1936,7 @@ App.Entity.PlayerState = class PlayerState { this.scar = {}; /** * In a eugenics society, you are a designated breeder. - * + * @type {FC.Bool} * 1: yes; 0: no */ this.breedingMark = 0; /** @@ -1926,6 +1947,7 @@ App.Entity.PlayerState = class PlayerState { * * "pig" * * "horse" * * "cow" + * @type {FC.SpermType} */ this.ballType = "human"; /** @@ -1935,12 +1957,13 @@ App.Entity.PlayerState = class PlayerState { * * "pig" * * "horse" * * "cow" + * @type {FC.AnimalKind} */ this.eggType = "human"; /** */ this.ageAdjust = 0; /** You are bald - * + * @type {FC.Bool} * 0: no; 1: yes */ this.bald = 0; /** You are in your original body. @@ -1970,19 +1993,19 @@ App.Entity.PlayerState = class PlayerState { */ this.hormoneBalance = 0; /** Do you have the breast shape maintaining mesh implant. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.breastMesh = 0; /** Used to denote you are giving birth prematurely. - * + * @type {FC.Bool} * 0: no; 1: yes */ this.prematureBirth = 0; /** Were you born prematurely? - * + * @type {FC.Bool} * 0: no; 1: yes */ this.premature = 0; /** Have you had a vasectomy? - * + * @type {FC.Bool} * 0: no; 1: yes */ this.vasectomy = 0; /** Your skills */ @@ -1999,15 +2022,15 @@ App.Entity.PlayerState = class PlayerState { /** */ this.geneMods = { /** Do you have induced NCS? - * + * @type {FC.Bool} * 0: no; 1: yes */ NCS: 0, /** Have you undergone the elasticity (plasticity) treatment? - * + * @type {FC.Bool} * 0: no; 1: yes */ rapidCellGrowth: 0, /** Are you immortal? - * + * @type {FC.Bool} * 0: no; 1: yes */ immortality: 0 };