From fbbd03241d8fed1a441e77ef71837244c9c8872a Mon Sep 17 00:00:00 2001 From: Trashman1138 <11461-Trashman1138@users.noreply.gitgud.io> Date: Wed, 3 Jul 2019 18:55:41 -0700 Subject: [PATCH] Reversion of sex-linked traits; well hung still needs to be modified --- src/js/generateGenetics.js | 200 ++++++++++++++++++++++--------------- 1 file changed, 121 insertions(+), 79 deletions(-) diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index 4ee8d25917a..58ed075e216 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -715,110 +715,152 @@ window.generateGenetics = (function() { // Normal male, carrier female: 50% of daughters carriers, 50% of sons carriers genetotal 1 // Carrier male, normal female: 100% of daughters carriers, sons normal genetotal 1 - // Do something similar to autosomal recessive, except: roll d64 instead of d16 - // Target for manifesting quirk is 4^(total gene level) - // Target for carrier is 11*4^(total gene level). Yes, 11. trust me. - // For wrong-sex children (i.e., for sons regarding female quirks), if result turns out to be a carrier, 1/3rd chance of dropping to normal. - // If result turns out to be manifesting, guaranteed drop to carrier. - // This gives 100% chance of manifesting for genetotal 3 daughters, 100% chance of carrier for sons - // 25% manifesting, 75% carrier for genetotal 2 daughters, 75% chance of carrier for sons. Average of the two genetotal 2 results. - // 6.25% manifesting, 62.5% carrier for genetotal 1 daughters, slightly less than 50% carriers for sons. Average for daughters slightly altered towards manifesting. + // Sex-linked traits (fertility-affecting, well-hung) left handled by the old method - // Applying this same logic for sex-linked male traits is, treated realistically, nonsensical - that's not how human sex chromosomes work. - // But it's more interesting than the more realistic take of "there are no carriers, sons always inherit the trait and daughters never do." - // fertility - if (father !== 0) { - fathergenes = father.geneticQuirks.fertility; - } - genetarget = Math.pow(4, mother.geneticQuirks.fertility + fathergenes); - if (genetarget >= 4) { - chance = jsRandom(1,64); - if (chance <= genetarget) { - quirks.fertility = 2; - } else if (chance <= 11*genetarget) { - quirks.fertility = 1; - } - - if ( sex === "XY") { - if ((quirks.fertility === 1) && (jsRandom(1,3) == 1)) { - quirks.fertility = 0; + if (mother.geneticQuirks.fertility === 2) { + if (sex === "XX") { + quirks.fertility = 2; + } else { + quirks.fertility = 1; + } + } else if (mother.geneticQuirks.fertility === 1) { + chance = jsRandom(0, 1000); + if (father !== 0) { + if (father.geneticQuirks.fertility >= 1) { + if (sex === "XX") { + if (chance > 500) { + quirks.fertility = 2; + } else if (chance > 50) { + quirks.fertility = 1; + } + } else { + if (chance > 500) { + quirks.fertility = 1; + } + } } - if (quirks.fertility === 2) { - quirks.fertility = 1; + } else { + if (sex === "XX") { + if (chance > 950) { + quirks.fertility = 2; + } else if (chance > 200) { + quirks.fertility = 1; + } + } else { + if (chance > 500) { + quirks.fertility = 1; + } } } } // hyper fertility - if (father !== 0) { - fathergenes = father.geneticQuirks.hyperFertility; - } - genetarget = Math.pow(4, mother.geneticQuirks.hyperFertility + fathergenes); - if (genetarget >= 4) { - chance = jsRandom(1,64); - if (chance <= genetarget) { - quirks.hyperFertility = 2; - } else if (chance <= 11*genetarget) { - quirks.hyperFertility = 1; - } - - if ( sex === "XY") { - if ((quirks.hyperFertility === 1) && (jsRandom(1,3) == 1)) { - quirks.hyperFertility = 0; + if (mother.geneticQuirks.hyperFertility === 2) { + if (sex === "XX") { + quirks.hyperFertility = 2; + } else { + quirks.hyperFertility = 1; + } + } else if (mother.geneticQuirks.hyperFertility === 1) { + chance = jsRandom(0, 1000); + if (father !== 0) { + if (father.geneticQuirks.hyperFertility >= 1) { + if (sex === "XX") { + if (chance > 750) { + quirks.hyperFertility = 2; + } else if (chance > 500) { + quirks.hyperFertility = 1; + } + } else { + if (chance > 500) { + quirks.hyperFertility = 1; + } + } } - if (quirks.hyperFertility === 2) { - quirks.hyperFertility = 1; + } else { + if (sex === "XX") { + if (chance > 950) { + quirks.hyperFertility = 2; + } else if (chance > 700) { + quirks.hyperFertility = 1; + } + } else { + if (chance > 700) { + quirks.hyperFertility = 1; + } } } } // superfetation - if (father !== 0) { - fathergenes = father.geneticQuirks.superfetation; - } - genetarget = Math.pow(4, mother.geneticQuirks.superfetation + fathergenes); - if (genetarget >= 4) { - chance = jsRandom(1,64); - if (chance <= genetarget) { - quirks.superfetation = 2; - } else if (chance <= 11*genetarget) { - quirks.superfetation = 1; - } - - if ( sex === "XY") { - if ((quirks.superfetation === 1) && (jsRandom(1,3) == 1)) { - quirks.superfetation = 0; + if (mother.geneticQuirks.superfetation === 2) { + if (sex === "XX") { + quirks.superfetation = 2; + } else { + quirks.superfetation = 1; + } + } else if (mother.geneticQuirks.superfetation === 1) { + chance = jsRandom(0, 1000); + if (father !== 0) { + if (father.geneticQuirks.superfetation >= 1) { + if (sex === "XX") { + if (chance > 750) { + quirks.superfetation = 2; + } else if (chance > 700) { + quirks.superfetation = 1; + } + } else { + if (chance > 700) { + quirks.superfetation = 1; + } + } } - if (quirks.superfetation === 2) { - quirks.superfetation = 1; + } else { + if (sex === "XX") { + if (chance > 950) { + quirks.superfetation = 2; + } else if (chance > 900) { + quirks.superfetation = 1; + } + } else { + if (chance > 900) { + quirks.superfetation = 1; + } } } } // well hung - if (father !== 0) { - fathergenes = father.geneticQuirks.wellHung; - } - genetarget = Math.pow(4, mother.geneticQuirks.wellHung + fathergenes); - if (genetarget >= 4) { - chance = jsRandom(1,64); - if (chance <= genetarget) { - quirks.wellHung = 2; - } else if (chance <= 11*genetarget) { - quirks.wellHung = 1; - } - - if ( sex === "XX") { - if ((quirks.wellHung === 1) && (jsRandom(1,3) == 1)) { - quirks.wellHung = 0; + if (father !== 0) { + if (mother.geneticQuirks.wellHung + father.geneticQuirks.wellHung >= 3) { + if (sex === "XY") { + quirks.wellHung = 2; + } else { + quirks.wellHung = 1; + } + } else if (mother.geneticQuirks.wellHung + father.geneticQuirks.wellHung >= 1) { + chance = jsRandom(0, 1000); + if (chance > 750) { + quirks.wellHung = 1; + } + } + } else if (mother.geneticQuirks.wellHung === 2) { + chance = jsRandom(0, 1000); + if (sex === "XY") { + if (chance > 900) { + quirks.wellHung = 2; + } else if (chance > 200) { + quirks.wellHung = 1; } - if (quirks.wellHung === 2) { - quirks.wellHung = 1; + } else { + if (chance > 500) { + quirks.wellHung = 1; } } } + // perfect face if (father !== 0) { fathergenes = father.geneticQuirks.pFace; -- GitLab