diff --git a/src/js/ageAdjustYoungRelative.js b/src/js/ageAdjustYoungRelative.js new file mode 100644 index 0000000000000000000000000000000000000000..35eefdb75eca66fd67f4ed43b4a01377c77707ac --- /dev/null +++ b/src/js/ageAdjustYoungRelative.js @@ -0,0 +1,101 @@ +/* When generating a younger relative by cloning an older one (for example, for Household Liquidators), + * clamp certain physical parameters of the younger relative appropriately for their physical age. + * Generally these adjustments should match the age limiters found in generateNewSlave.js. + */ + + window.AgeAdjustYoungRelative = function(slave) { + /* breast size */ + var origBoobs = slave.boobs; + if (slave.physicalAge <= 10) { + slave.boobs = Math.clamp(slave.boobs, 0, 100); + } else if (slave.physicalAge <= 12) { + slave.boobs = Math.clamp(slave.boobs, 0, 300); + } else if (slave.physicalAge <= 14) { + slave.boobs = Math.clamp(slave.boobs, 0, 400); + } else if (slave.physicalAge <= 15) { + slave.boobs = Math.clamp(slave.boobs, 0, 450); + } + + /* if we've reduced breast size because of age, reapply minimum weight modifiers */ + if (origBoobs > slave.boobs && State.variables.weightAffectsAssets !== 0) { + if (slave.weight > 190) { + slave.boobs += 300; + } else if (slave.weight > 160) { + slave.boobs += 200; + } else if (slave.weight > 30) { + slave.boobs += 100; + } + } + + /* if we've managed to *increase* breast size, just put it back */ + if (origBoobs < slave.boobs) { + slave.boobs = origBoobs; + } + + /* breast shape - preserve if it would have been valid, otherwise reset to normal (don't reroll) */ + const AllowedBoobShapes = []; + if (slave.boobs > 250 && slave.boobs < 800) { + AllowedBoobShapes.push("perky"); + AllowedBoobShapes.push("downward-facing"); + } + if (slave.boobs > 400 && slave.boobs < 1200) { + AllowedBoobShapes.push("torpedo-shaped"); + AllowedBoobShapes.push("wide-set"); + } + if (!AllowedBoobShapes.includes(slave.boobShape)) { + slave.boobShape = "normal"; + } + + /* voice */ + if (slave.physicalAge <= 16 && slave.voice <= 1) { + slave.voice = 2; + } + + /* XX genitals */ + if (slave.physicalAge < 20 && slave.vagina > 1) { + slave.vagina = 1; + } + + if (slave.physicalAge <= 13 && slave.clit > 1) { + slave.clit = 1; + } + + if (slave.physicalAge <= 13 && slave.labia > 1) { + slave.labia = 1; + } else if (slave.physicalAge <= 15 && slave.labia > 2) { + slave.labia = 2; + } + + /* XY genitals */ + if (slave.physicalAge <= 13) { + if (slave.geneticQuirks.wellHung === 2 && slave.physicalAge >= 8 && slave.dick > 4) { + slave.dick = 4; + } else if (slave.dick > 3) { + slave.dick = 3; + } + if (slave.balls > 3) { + slave.balls = 3 + slave.scrotum = slave.balls; + } + } else if (slave.physicalAge <= 15) { + if (slave.geneticQuirks.wellHung === 2 && slave.dick > 5) { + slave.dick = 5; + } else if (slave.dick > 3) { + slave.dick = 3; + } + if (slave.balls > 4) { + slave.balls = 4; + slave.scrotum = slave.balls; + } + } + + /* teeth */ + if (slave.physicalAge < 6) { + slave.teeth = "baby"; + } else if (slave.physicalAge < 12) { + slave.teeth = "mixed"; + } + + /* reset puberty status */ + generatePuberty(slave); +}; diff --git a/src/uncategorized/motherDaughterWorkaround.tw b/src/uncategorized/motherDaughterWorkaround.tw index e21e5f7e5b37ce00554ae068c13b8fad73d4e0b9..c0772a486e336d4fc1a68bb7699b8f5c71776d7f 100644 --- a/src/uncategorized/motherDaughterWorkaround.tw +++ b/src/uncategorized/motherDaughterWorkaround.tw @@ -69,4 +69,8 @@ Your new pair of slaves look frightened and uncertain, but seem encouraged by ea <<set _secondSlave.butt += random(-1, 1)>> <</if>> +<<if _secondSlave.physicalAge <= 15>> + <<run AgeAdjustYoungRelative(_secondSlave)>> +<</if>> + <<run newSlave(_secondSlave)>> diff --git a/src/uncategorized/siblingsWorkaround.tw b/src/uncategorized/siblingsWorkaround.tw index 3c3035f7774b971cc72bfcb0294a4861695a657b..6680ab134bde3d6cfc236b73f96c1b6fd6e55ecc 100644 --- a/src/uncategorized/siblingsWorkaround.tw +++ b/src/uncategorized/siblingsWorkaround.tw @@ -67,4 +67,8 @@ Your new pair of slaves look frightened and uncertain, but seem encouraged by ea <<set _secondSlave.butt += random (-1, 1)>> <</if>> +<<if _secondSlave.physicalAge <= 15>> + <<run AgeAdjustYoungRelative(_secondSlave)>> +<</if>> + <<run newSlave(_secondSlave)>>