From f54301776a9e42d0a3f1b492f09e2e5b7956ab04 Mon Sep 17 00:00:00 2001 From: Pregmodder <pregmodder@gmail.com> Date: Sat, 2 Mar 2019 12:35:53 -0500 Subject: [PATCH] Albinism genetic quirk --- devNotes/VersionChangeLog-Premod+LoliMod.txt | 2 +- slave variables documentation - Pregmod.txt | 2 +- src/js/SlaveState.js | 1 + src/js/assayJS.js | 23 +++++- src/js/generateGenetics.js | 74 ++++++++++++++++++-- src/js/generateNewSlaveJS.js | 41 +++++++++++ src/js/slaveCostJS.js | 6 ++ src/npc/databases/dSlavesDatabase.tw | 2 +- src/uncategorized/prestigiousSlave.tw | 6 +- src/uncategorized/remoteSurgery.tw | 4 ++ src/uncategorized/sellSlave.tw | 4 ++ src/utility/descriptionWidgets.tw | 3 + 12 files changed, 156 insertions(+), 12 deletions(-) diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index 5b6b24408d5..9e6c1ba0246 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -13,7 +13,7 @@ Pregmod -RA can now manage basic abortions -added abortion tracking tattoos -added bulk incubator retrieval - -added "pFace" and "uFace" genetic traits + -added "albinism", "pFace" and "uFace" genetic traits -fixes 0.10.7.1-2.1.x diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt index c0df1367f61..f2b35ba2bc4 100644 --- a/slave variables documentation - Pregmod.txt +++ b/slave variables documentation - Pregmod.txt @@ -3563,7 +3563,7 @@ How to set up your own hero slave. -The default slave template used: -<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", pronoun: "she", possessive: "her", possessivePronoun: "hers", objectReflexive: "herself", object: "her", noun: "girl", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFeed: 0, pornFame: 0, pornFameSpending: 0, pornPrestige: 0, pornPrestigeDesc: 0, pornFameType: "none", pornFocus: "none", pornTypeGeneral: 0, pornTypeFuckdoll: 0, pornTypeRape: 0, pornTypePreggo: 0, pornTypeBBW: 0, pornTypeGainer: 0, pornTypeStud: 0, pornTypeLoli: 0, pornTypeDeepThroat: 0, pornTypeStruggleFuck: 0, pornTypePainal: 0, pornTypeTease: 0, pornTypeRomantic: 0, pornTypePervert: 0, pornTypeCaring: 0, pornTypeUnflinching: 0, pornTypeSizeQueen: 0, pornTypeNeglectful: 0, pornTypeCumAddict: 0, pornTypeAnalAddict: 0, pornTypeAttentionWhore: 0, pornTypeBreastGrowth: 0, pornTypeAbusive: 0, pornTypeMalicious: 0, pornTypeSelfHating: 0, pornTypeBreeder: 0, pornTypeSub: 0, pornTypeCumSlut: 0, pornTypeAnal: 0, pornTypeHumiliation: 0, pornTypeBoobs: 0, pornTypeDom: 0, pornTypeSadist: 0, pornTypeMasochist: 0, pornTypePregnancy: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", origRace: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", pupil: "circular", sclerae: "white", eyewear: "none", hears: 0, earwear: "none", earImplant: 0, origHColor: "brown", hColor: "brown", pubicHColor: "brown", underArmHColor: "brown", eyebrowHColor: "brown", origSkin: "light", skin: "light", hLength: 60, eyebrowFullness: "natural", hStyle: "short", pubicHStyle: "neat", underArmHStyle: "neat", eyebrowHStyle: "natural", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute", nipplesPiercing: 0, nipplesAccessory: 0, areolae: 0, areolaePiercing: 0, areolaeShape: "circle", boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, pregAdaptation: 50, superfetation: 0, ovaImplant: 0, wombImplant: "none", broodmother: 0, broodmotherFetuses: 0, broodmotherOnHold: 0, broodmotherCountDown: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", legAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, reservedChildrenNursery: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", origBodyOwnerID: 0, death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, prematureBirth: 0, premature: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillMT: 0, skillST: 0, skillMM: 0, skillFA: 0, skillWA: 0, skillS: 0, skillE: 0, skillW: 0, tankBaby: 0, geneMods: {NCS: 0, rapidCellGrowth: 0}, NCSyouthening: 0, override_Race: 0, override_Skin: 0, override_Eye_Color: 0, override_H_Color: 0, override_Pubic_H_Color: 0, override_Arm_H_Color: 0, override_Brow_H_Color: 0, missingEyes: 0, missingArms: 0, missingLegs: 0, slaveCost: 0, lifetimeCashExpenses: 0, lifetimeCashIncome: 0, lastWeeksCashIncome: 0, lifetimeRepExpenses: 0, lifetimeRepIncome: 0, lastWeeksRepIncome: 0}>> +<<set $activeSlave = {slaveName: "blank", slaveSurname: 0, birthName: "blank", birthSurname: 0, genes: "XX", pronoun: "she", possessive: "her", possessivePronoun: "hers", objectReflexive: "herself", object: "her", noun: "girl", weekAcquired: 0, origin: 0, career: 0, ID: 0, prestige: 0, pornFeed: 0, pornFame: 0, pornFameSpending: 0, pornPrestige: 0, pornPrestigeDesc: 0, pornFameType: "none", pornFocus: "none", pornTypeGeneral: 0, pornTypeFuckdoll: 0, pornTypeRape: 0, pornTypePreggo: 0, pornTypeBBW: 0, pornTypeGainer: 0, pornTypeStud: 0, pornTypeLoli: 0, pornTypeDeepThroat: 0, pornTypeStruggleFuck: 0, pornTypePainal: 0, pornTypeTease: 0, pornTypeRomantic: 0, pornTypePervert: 0, pornTypeCaring: 0, pornTypeUnflinching: 0, pornTypeSizeQueen: 0, pornTypeNeglectful: 0, pornTypeCumAddict: 0, pornTypeAnalAddict: 0, pornTypeAttentionWhore: 0, pornTypeBreastGrowth: 0, pornTypeAbusive: 0, pornTypeMalicious: 0, pornTypeSelfHating: 0, pornTypeBreeder: 0, pornTypeSub: 0, pornTypeCumSlut: 0, pornTypeAnal: 0, pornTypeHumiliation: 0, pornTypeBoobs: 0, pornTypeDom: 0, pornTypeSadist: 0, pornTypeMasochist: 0, pornTypePregnancy: 0, prestigeDesc: 0, recruiter: 0, relation: 0, relationTarget: 0, relationship: 0, relationshipTarget: 0, rivalry: 0, rivalryTarget: 0, subTarget: 0, father: 0, mother: 0, daughters: 0, sisters: 0, canRecruit: 0, choosesOwnAssignment: 0, assignment: "rest", assignmentVisible: 1, sentence: 0, training: 0, toyHole: "all her holes", indenture: -1, indentureRestrictions: 0, birthWeek: random(0,51), actualAge: 18, visualAge: 18, physicalAge: 18, ovaryAge: 18, ageImplant: 0, health: 0, minorInjury: 0, trust: 0, oldTrust: 0, devotion: 0, oldDevotion: 0, weight: 0, muscles: 0, height: 170, heightImplant: 0, nationality: "slave", race: "white", origRace: "white", markings: "none", eyes: 1, eyeColor: "brown", origEye: "brown", pupil: "circular", sclerae: "white", eyewear: "none", hears: 0, earwear: "none", earImplant: 0, origHColor: "brown", hColor: "brown", pubicHColor: "brown", underArmHColor: "brown", eyebrowHColor: "brown", origSkin: "light", skin: "light", hLength: 60, eyebrowFullness: "natural", hStyle: "short", pubicHStyle: "neat", underArmHStyle: "neat", eyebrowHStyle: "natural", waist: 0, corsetPiercing: 0, PLimb: 0, amp: 0, heels:0, voice: 2, voiceImplant: 0, accent: 0, shoulders: 0, shouldersImplant: 0, boobs: 0, boobsImplant: 0, boobsImplantType: 0, boobShape: "normal", nipples: "cute", nipplesPiercing: 0, nipplesAccessory: 0, areolae: 0, areolaePiercing: 0, areolaeShape: "circle", boobsTat: 0, lactation: 0, lactationAdaptation: 0, milk: 0, cum: 0, hips: 0, hipsImplant: 0, butt: 0, buttImplant: 0, buttImplantType: 0, buttTat: 0, face: 0, faceImplant: 0, faceShape: "normal", lips: 15, lipsImplant: 0, lipsPiercing: 0, lipsTat: 0, teeth: "normal", tonguePiercing: 0, vagina: 0, vaginaLube: 0, vaginaPiercing: 0, vaginaTat: 0, preg: -1, pregSource: 0, pregType: 0, pregAdaptation: 50, superfetation: 0, ovaImplant: 0, wombImplant: "none", broodmother: 0, broodmotherFetuses: 0, broodmotherOnHold: 0, broodmotherCountDown: 0, labor: 0, births: 0, cSec: 0, bellyAccessory: "none", labia: 0, clit: 0, clitPiercing: 0, clitSetting: "vanilla", foreskin: 0, anus: 0, dick: 0, analArea: 1, dickPiercing: 0, dickTat: 0, prostate: 0, balls: 0, scrotum: 0, ovaries: 0, anusPiercing: 0, anusTat: 0, makeup: 0, nails: 0, brand: 0, brandLocation: 0, earPiercing: 0, nosePiercing: 0, eyebrowPiercing: 0, navelPiercing: 0, shouldersTat: 0, armsTat: 0, legsTat: 0, backTat: 0, stampTat: 0, vaginalSkill: 0, oralSkill: 0, analSkill: 0, whoreSkill: 0, entertainSkill: 0, combatSkill: 0, livingRules: "spare", speechRules: "restrictive", releaseRules: "restrictive", relationshipRules: "restrictive", standardPunishment: "situational", standardReward: "situational", useRulesAssistant: 1, diet: "healthy", dietCum: 0, dietMilk: 0, tired: 0, hormones: 0, drugs: "no drugs", curatives: 0, chem: 0, aphrodisiacs: 0, addict: 0, fuckdoll: 0, choosesOwnClothes: 0, clothes: "no clothing", collar: "none", shoes: "none", vaginalAccessory: "none", dickAccessory: "none", legAccessory: "none", buttplug: "none", buttplugAttachment: "none", intelligence: 0, intelligenceImplant: 0, energy: 50, need: 0, attrXX: 0, attrXY: 0, attrKnown: 0, fetish: "none", fetishStrength: 70, fetishKnown: 0, behavioralFlaw: "none", behavioralQuirk: "none", sexualFlaw: "none", sexualQuirk: "none", oralCount: 0, vaginalCount: 0, analCount: 0, mammaryCount: 0, penetrativeCount: 0, publicCount: 0, pitKills: 0, customTat: "", customLabel: "", customDesc: "", customTitle: "", customTitleLisp: "", rudeTitle: 0, customImage: 0, currentRules: [], bellyTat: 0, induce: 0, mpreg: 0, inflation: 0, inflationType: "none", inflationMethod: 0, milkSource: 0, cumSource: 0, burst: 0, pregKnown: 0, pregWeek: 0, belly: 0, bellyPreg: 0, bellyFluid: 0, bellyImplant: -1, bellySag: 0, bellySagPreg: 0, bellyPain: 0, cervixImplant: 0, birthsTotal: 0, pubertyAgeXX: 13, pubertyAgeXY: 13, scars: 0, breedingMark: 0, bodySwap: 0, HGExclude: 0, ballType: "human", eggType: "human", reservedChildren: 0, reservedChildrenNursery: 0, choosesOwnChastity: 0, pregControl: "none", readyLimbs: [], ageAdjust: 0, bald: 0, origBodyOwner: "", origBodyOwnerID: 0, death: "", hormoneBalance: 0, onDiet: 0, breastMesh: 0, slavesFathered: 0, PCChildrenFathered: 0, slavesKnockedUp: 0, PCKnockedUp: 0, prematureBirth: 0, premature: 0, origSkin: "white", vasectomy: 0, haircuts: 0, newGamePlus: 0, skillHG: 0, skillRC: 0, skillBG: 0, skillMD: 0, skillDJ: 0, skillNU: 0, skillTE: 0, skillAT: 0, skillMT: 0, skillST: 0, skillMM: 0, skillFA: 0, skillWA: 0, skillS: 0, skillE: 0, skillW: 0, tankBaby: 0, geneMods: {NCS: 0, rapidCellGrowth: 0}, NCSyouthening: 0, override_Race: 0, override_Skin: 0, override_Eye_Color: 0, override_H_Color: 0, override_Pubic_H_Color: 0, override_Arm_H_Color: 0, override_Brow_H_Color: 0, albinismOverride: 0, missingEyes: 0, missingArms: 0, missingLegs: 0, slaveCost: 0, lifetimeCashExpenses: 0, lifetimeCashIncome: 0, lastWeeksCashIncome: 0, lifetimeRepExpenses: 0, lifetimeRepIncome: 0, lastWeeksRepIncome: 0}>> Making your slave; add their name to the following, then go down the documentation adding in your changes. -each variable must be separated from the last by a comma followed by a space diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 0fcfca780f9..aa66d0a24b2 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -2190,6 +2190,7 @@ App.Entity.SlaveState = class SlaveState { this.override_Pubic_H_Color = 0; this.override_Arm_H_Color = 0; this.override_Brow_H_Color = 0; + this.albinismOverride = 0; /** are eyes missing? * * 0: none; 1: yes, left; 2: yes, right; 3: yes, both */ diff --git a/src/js/assayJS.js b/src/js/assayJS.js index 8ad8b3d6e6f..b2395e08f2e 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -358,12 +358,23 @@ window.newSlave = /** @param {App.Entity.SlaveState} slave */ function newSlave( if (slave.origin !== "She was your slave, but you freed her, which she repaid by participating in a coup attempt against you. It failed, and she is again your chattel." && slave.ID !== V.boomerangSlave.ID) { V.genePool.push(slave); + /* Store non-albino stats in genePool */ + if (slave.geneticQuirks.albinism === 2) { + var albInd = V.genePool.findIndex(function(s) { return s.ID === slave.ID; }); + V.genePool.genePool[albInd].origSkin = slave.albinismOverride.skin; + V.genePool.genePool[albInd].origEye = slave.albinismOverride.eyeColor; + V.genePool.genePool[albInd].origHColor = slave.albinismOverride.hColor; + V.genePool.genePool[albInd].underArmHColor = slave.albinismOverride.hColor; + V.genePool.genePool[albInd].pubicHColor = slave.albinismOverride.hColor; + V.genePool.genePool[albInd].eyebrowHColor = slave.albinismOverride.hColor; + slave.albinismOverride = 0; + } } else { if (V.genePool.findIndex(function(s) { return s.ID === slave.ID; }) === -1) { V.genePool.push(slave); } } - + /* add to facilities array if needed */ if (slave.assignment !== "rest") { assignJob(slave, slave.assignment); @@ -1323,6 +1334,10 @@ window.SlaveTitle = /** @param {App.Entity.SlaveState} slave */ function SlaveTi r = "loli " + r; } } + + if (slave.geneticQuirks.albinism === 2) { + r = "albino " + r; + } if (slave.dick > 9 && slave.balls > 9 && slave.boobs > 12000) { r = "hyper " + r; @@ -1373,7 +1388,7 @@ window.SlaveTitle = /** @param {App.Entity.SlaveState} slave */ function SlaveTi } else if (slave.births >= 3) { r = r + " breeder"; } - + if (slave.indenture > -1) { r = "indentured " + r; } @@ -1585,6 +1600,10 @@ window.SlaveTitle = /** @param {App.Entity.SlaveState} slave */ function SlaveTi r = r + " breeder"; } + if (slave.geneticQuirks.albinism === 2) { + r = "albino " + r; + } + if (slave.indenture > -1) { r = "indentured " + r; } diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index 70947a096ed..e307acb3ee2 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -649,6 +649,38 @@ window.generateGenetics = (function() { } else if (mother.geneticQuirks.uFace === 2) { quirks.uFace = 1; } + + //albinism + if (father !== 0) { + // Add treatment to force albinism + if (mother.geneticQuirks.albinism === 2 && father.geneticQuirks.albinism === 2) { + if (jsRandom(1, 4) === 1) { + quirks.albinism = 2; + } else { + quirks.albinism = 1; + } + } else if (mother.geneticQuirks.albinism === 1 + father.geneticQuirks.albinism >= 3) { + chance = jsRandom(1, 4); + if (chance === 1) { + quirks.albinism = 2; + } else if (chance !== 4) { + quirks.albinism = 1; + } + } else if (mother.geneticQuirks.albinism === 1 && father.geneticQuirks.albinism === 1) { + if (jsRandom(1, 4) === 1) { + quirks.albinism = 2; + } + } + } else if (mother.geneticQuirks.albinism >= 1) { + if (jsRandom(0, 40000) >= 39500) { + chance = jsRandom(1, 4); + if (chance === 1) { + quirks.albinism = 2; + } else if (chance !== 4) { + quirks.albinism = 1; + } + } + } return clone(quirks); } @@ -850,7 +882,6 @@ window.generateChild = function (mother, ova, destination) { child.mother = genes.mother; child.father = genes.father; child.nationality = genes.nationality; - child.skin = genes.skin; child.race = genes.race; child.intelligence = genes.intelligence; if (mother.prematureBirth > 0) { @@ -860,8 +891,6 @@ window.generateChild = function (mother, ova, destination) { child.premature = 1; } child.face = genes.face; - child.eyeColor = genes.eyeColor; - child.hColor = genes.hColor; child.underArmHStyle = genes.underArmHStyle; child.pubicHStyle = genes.pubicHStyle; child.markings = genes.markings; @@ -869,9 +898,42 @@ window.generateChild = function (mother, ova, destination) { child.behavioralFlaw = genes.behavioralFlaw; child.fetish = genes.fetish; child.geneticQuirks = clone(genes.geneticQuirks); - child.pubicHColor = child.hColor; - child.underArmHColor = child.hColor; - child.eyebrowHColor = child.hColor; + if (child.geneticQuirks.albinism == 2) { + child.albinismOverride = {skin: genes.skin, eyeColor: genes.eyeColor, hColor: genes.hColor}; + child.hColor = "white"; + child.pubicHColor = child.hColor; + child.underArmHColor = child.hColor; + child.eyebrowHColor = child.hColor; + child.eyeColor = "red"; + switch (child.race) { + case "black": + case "indo-aryan": + case "malay": + case "pacific islander": + case "amerindian": + child.skin = "very fair"; + break; + case "latina": + child.skin = "extremely fair"; + break; + case "asian": + case "middle eastern": + case "semitic": + case "southern european": + case "white": + child.skin = "pure white"; + break; + default: + child.skin = "pure white"; + } + } else { + child.skin = genes.skin; + child.eyeColor = genes.eyeColor; + child.hColor = genes.hColor; + child.pubicHColor = child.hColor; + child.underArmHColor = child.hColor; + child.eyebrowHColor = child.hColor; + } child.birthWeek = 0; if (genes.faceShape !== undefined) { child.faceShape = genes.faceShape; diff --git a/src/js/generateNewSlaveJS.js b/src/js/generateNewSlaveJS.js index 95d513e927d..91d08e69e68 100644 --- a/src/js/generateNewSlaveJS.js +++ b/src/js/generateNewSlaveJS.js @@ -61,6 +61,7 @@ window.GenerateNewSlave = (function(){ generateBoobTweaks(); /* split this up for female vs. male? */ generateSkills(); generateDisabilities(); + generateGeneticQuirkTweaks(); generatePronouns(slave); slave.origRace = slave.race; slave.origEye = slave.eyeColor; @@ -1085,6 +1086,12 @@ window.GenerateNewSlave = (function(){ } else if (chance >= 9900) { slave.geneticQuirks.hyperFertility = 1; } + chance = jsRandom(1,20000); + if (chance == 777) { + slave.geneticQuirks.albinism = 2; + } else if (chance >= 19500) { + slave.geneticQuirks.albinism = 1; + } } function generateXYGeneticQuirks() { @@ -1102,6 +1109,11 @@ window.GenerateNewSlave = (function(){ if (chance >= 9900) { slave.geneticQuirks.hyperFertility = 1; } + if (chance == 777) { + slave.geneticQuirks.albinism = 2; + } else if (chance >= 19500) { + slave.geneticQuirks.albinism = 1; + } } function generateAge() { @@ -1400,6 +1412,35 @@ window.GenerateNewSlave = (function(){ V.oneTimeDisableDisability = 0; } } + + function generateGeneticQuirkTweaks() { + if (slave.geneticQuirks.albinism === 2) { + slave.albinismOverride = {skin: slave.skin, eyeColor: slave.eyeColor, hColor: slave.hColor}; + slave.hColor = "white"; + slave.eyeColor = "red"; + switch (slave.race) { + case "black": + case "indo-aryan": + case "malay": + case "pacific islander": + case "amerindian": + slave.skin = "very fair"; + break; + case "latina": + slave.skin = "extremely fair"; + break; + case "asian": + case "middle eastern": + case "semitic": + case "southern european": + case "white": + slave.skin = "pure white"; + break; + default: + slave.skin = "pure white"; + } + } + } return GenerateNewSlave; })(); diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js index 87c0ba6d7ef..bdf475fa920 100644 --- a/src/js/slaveCostJS.js +++ b/src/js/slaveCostJS.js @@ -1191,6 +1191,9 @@ window.Beauty = (function() { /** @param {App.Entity.SlaveState} slave */ function calcMultipliersBeauty(slave) { calcBellyBeauty(slave); + if (slave.geneticQuirks.albinism == 2) { + beauty += 0.1*beauty; + } if (slave.breedingMark === 1) { if (V.propOutcome === 1) { beauty = 2*beauty; @@ -1970,6 +1973,9 @@ window.slaveCost = (function() { if (slave.pubertyXY === 0 && slave.physicalAge >= V.potencyAge && slave.genes === "XY" && arcology.FSGenderRadicalist === "unset") { multiplier += 0.5; } + if (slave.geneticQuirks.albinism === 2) { + multiplier += 0.2; + } if (slave.brand !== 0) { if (V.rep > 10000) { multiplier += 0.1; diff --git a/src/npc/databases/dSlavesDatabase.tw b/src/npc/databases/dSlavesDatabase.tw index 53b5441959f..a359fb572bd 100644 --- a/src/npc/databases/dSlavesDatabase.tw +++ b/src/npc/databases/dSlavesDatabase.tw @@ -489,7 +489,7 @@ <<set $heroSlaves.push(_HS)>> <<set _HS = {}>> -<<set _HS.slaveName = "'Virago' Kissa", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "In spite of the great demand for her kind, she has apparently eluded enslavement until recently.", _HS.career = "a wanderer", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a natural albino.", _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Ugandan", _HS.race = "black", _HS.eyeColor = "pale grey", _HS.hColor = "white", _HS.pubicHColor = "white", _HS.skin = "extremely pale", _HS.hLength = 100, _HS.hStyle = "extremely long and bushy", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 600, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.oralSkill = 100, _HS.whoreSkill = 100, _HS.entertainSkill = 100, _HS.combatSkill = 3, _HS.livingRules = "luxurious", _HS.speechRules = "permissive", _HS.releaseRules = "permissive", _HS.collar = "pretty jewelry", _HS.shoes = "flats", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.customTat = "Her entire body is tattooed with a detailed map of her arteries which, combined with her albinism, gives her a quasi-translucent quality.", _HS.customDesc = "Her eyes are unsettling; though her irises are a pale grey color, in some lights the whole eye takes on a red cast.">> +<<set _HS.slaveName = "'Virago' Kissa", _HS.birthName = "", _HS.birthSurname = "", _HS.origin = "In spite of the great demand for her kind, she has apparently eluded enslavement until recently.", _HS.career = "a wanderer", _HS.ID = _i++, _HS.prestige = 1, _HS.prestigeDesc = "She is a natural albino.", _HS.birthWeek = random(0,51), _HS.health = 100, _HS.devotion = 100, _HS.muscles = 50, _HS.height = 190, _HS.nationality = "Ugandan", _HS.race = "black", _HS.eyeColor = "pale grey", _HS.hColor = "white", _HS.pubicHColor = "white", _HS.skin = "extremely pale", _HS.hLength = 100, _HS.hStyle = "extremely long and bushy", _HS.pubicHStyle = "bushy", _HS.waist = -55, _HS.boobs = 600, _HS.face = 55, _HS.lips = 35, _HS.vaginaLube = 1, _HS.clitPiercing = 3, _HS.clitSetting = "oral", _HS.ovaries = 1, _HS.anusTat = "bleached", _HS.oralSkill = 100, _HS.whoreSkill = 100, _HS.entertainSkill = 100, _HS.combatSkill = 3, _HS.livingRules = "luxurious", _HS.speechRules = "permissive", _HS.releaseRules = "permissive", _HS.collar = "pretty jewelry", _HS.shoes = "flats", _HS.intelligence = 100, _HS.intelligenceImplant = 30, _HS.attrXY = 40, _HS.fetish = "cumslut", _HS.fetishKnown = 1, _HS.behavioralFlaw = "odd", _HS.geneticQuirks.albinism == 2, _HS.customTat = "Her entire body is tattooed with a detailed map of her arteries which, combined with her albinism, gives her a quasi-translucent quality.", _HS.customDesc = "Her eyes are unsettling; though her irises are a pale grey color, in some lights the whole eye takes on a red cast.">> <<set $heroSlaves.push(_HS)>> <<set _HS = {}>> diff --git a/src/uncategorized/prestigiousSlave.tw b/src/uncategorized/prestigiousSlave.tw index 53450b58a32..c9dd8a5c57b 100644 --- a/src/uncategorized/prestigiousSlave.tw +++ b/src/uncategorized/prestigiousSlave.tw @@ -194,6 +194,8 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres <<set $activeSlave.origin = "You bought her at auction.">> <<set $activeSlave.prestige = 1>> <<set $activeSlave.prestigeDesc = "She is a natural albino, and was quickly enslaved due to the great demand for physically unusual specimens.">> + <<set $activeSlave.geneticQuirks.albinism == 2>> + <<set $activeSlave.albinismOverride = {skin: $activeSlave.skin, eyeColor: $activeSlave.eyeColor, hColor = $activeSlave.hColor}>> <<set $activeSlave.career = "a slave">> <<set $activeSlave.devotion = random(-90,-80)>> <<set $activeSlave.trust = random(-45,-25)>> @@ -666,6 +668,8 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres <<set $activeSlave.origin = "You bought her at auction.">> <<set $activeSlave.prestige = 1>> <<set $activeSlave.prestigeDesc = "She is a natural albino, and was quickly enslaved due to the great demand for physically unusual specimens.">> + <<set $activeSlave.geneticQuirks.albinism == 2>> + <<set $activeSlave.albinismOverride = {skin: $activeSlave.skin, eyeColor: $activeSlave.eyeColor, hColor = $activeSlave.hColor}>> <<set $activeSlave.devotion = random(-90,-80)>> <<set $activeSlave.trust = random(-45,-25)>> <<set $activeSlave.health = random(40,60)>> @@ -704,7 +708,7 @@ You check to see if any especially prestigious slaves are on auction. <<if $pres <<set $activeSlave.anus = 3>> <<set $activeSlave.dick = 1>> <<if $activeSlave.foreskin > 0>><<set $activeSlave.foreskin = $activeSlave.dick>><</if>> -<<if $activeSlave.balls > 0>><<set $activeSlave.scrotum = $activeSlave.balls>><</if>> + <<if $activeSlave.balls > 0>><<set $activeSlave.scrotum = $activeSlave.balls>><</if>> <<set $activeSlave.balls = 0>> <<set $activeSlave.weight = 0>> <<set $activeSlave.clitPiercing = 2>> diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 0ae78fc2bab..4c0f8dbc7d1 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -1325,6 +1325,10 @@ $He has //$He already has received the plasticity increasing elasticity treatment// <</if>> <</if>> + <<if $activeSlave.geneticQuirks.albinism == 2>> + <br> + [[Albinism prevention treamtment|Surgery Degradation][$activeSlave.geneticQuirks.albinism = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] + <</if>> <<if $activeSlave.geneticQuirks.pFace == 2>> <br> [[Prevent passing of perfect faces|Surgery Degradation][$activeSlave.geneticQuirks.pFace = 0,cashX(forceNeg($surgeryCost*4), "slaveSurgery", $activeSlave), $activeSlave.health -= 40, $activeSlave.chem += 100,$surgeryType = "gene treatment"]] diff --git a/src/uncategorized/sellSlave.tw b/src/uncategorized/sellSlave.tw index f01a5113996..8bb1d99c935 100644 --- a/src/uncategorized/sellSlave.tw +++ b/src/uncategorized/sellSlave.tw @@ -204,6 +204,10 @@ A reputable slave appraiser arrives promptly to inspect $him and certify $his qu $His blindness is an obvious issue. <</if>> +<<if $activeSlave.geneticQuirks.albinism == 2>> + $His albinism makes $him rather desirable. +<</if>> + <<if $activeSlave.career != 0>> <<if setup.bodyguardCareers.includes($activeSlave.career)>> $His background would help make $him a good Bodyguard; that's valuable. diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw index 35c9159533d..516038cc0fa 100644 --- a/src/utility/descriptionWidgets.tw +++ b/src/utility/descriptionWidgets.tw @@ -258,6 +258,9 @@ <<widget "geneticQuirkAssessment">> <<if $geneticMappingUpgrade == 1>> + <<if $activeSlave.geneticQuirks.albinism == 2>> + $He is an albino. + <</if>> <<if $activeSlave.geneticQuirks.pFace == 2>> $He has an exceedingly rare trait associated with perfect facial beauty. <<if $activeSlave.geneticQuirks.uFace == 2>> -- GitLab