diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw index 9e89d02cb1ffb8758fb6ac7719dfae83b7ffc0fd..47b6f0806c8d92508db510e8516ad7afae250cc0 100644 --- a/src/events/intro/introSummary.tw +++ b/src/events/intro/introSummary.tw @@ -219,7 +219,7 @@ __''General slave settings''__ <<option 1 "Enable distant relatives">> Distant relatives ''will'' be tracked. <</options>> - + <br> <<options $inbreeding>> <<option 0 "Disable inbreeding damage">> diff --git a/src/js/datatypeCleanupJS.js b/src/js/datatypeCleanupJS.js index 502086521a4b20e603f73a0d36efcf497978bab0..1d0e4c00bca0dc6896a46c455bce5f9635440818 100644 --- a/src/js/datatypeCleanupJS.js +++ b/src/js/datatypeCleanupJS.js @@ -2,7 +2,7 @@ /** * Applies data scheme updates to the slave object * - * This function only handles data scheme changes (attribute renaming, other reorganzations) + * This function only handles data scheme changes (attribute renaming, other reorganizations) * and in general pays no attention to the property values unless they need to be changed due * to the schema change. */ @@ -1756,4 +1756,4 @@ App.Entity.Utils.GenePoolRecordCleanup = (function () { "slaveCost" ].forEach((s) => delete slave[s]); } -})(); +})(); \ No newline at end of file diff --git a/src/js/generateGenetics.js b/src/js/generateGenetics.js index cc979783579901b24eb889397fc990a1d8e850c8..4a70966ee50d48ab66f8c5dde9bcdbc811f2021d 100644 --- a/src/js/generateGenetics.js +++ b/src/js/generateGenetics.js @@ -65,7 +65,7 @@ window.generateGenetics = (function() { genes.fatherName = setFatherName(father, activeFather, actor2); genes.nationality = setNationality(father, mother); genes.geneticQuirks = setGeneticQuirks(father, mother, genes.gender); - genes.skin = setSkin(father, mother); + genes.skin = setSkin(father, mother, actor2); genes.race = setRace(father, mother, actor2); genes.intelligence = setIntelligence(father, mother, activeMother, actor2); genes.face = setFace(father, mother, activeMother, actor2, genes.geneticQuirks); @@ -185,29 +185,33 @@ window.generateGenetics = (function() { // race function setRace(father, mother, actor2) { let race; + let fatherRace = 0; if (father !== 0) { race = (mother.origRace === father.origRace) ? mother.origRace : (jsRandom(1, 4)) === 4 ? jsEither([father.origRace, mother.origRace]) : "mixed race"; - } else if (actor2 === -2 || actor2 === -5) { - if (V.arcologies[0].FSSupremacist !== "unset") { - race = jsEither([mother.origRace, V.arcologies[0].FSSupremacistRace, V.arcologies[0].FSSupremacistRace]); - if (mother.origRace !== V.arcologies[0].FSSupremacistRace) { - if (jsRandom(1, 100) > 50) { - race = "mixed race"; - } - } + } else { + if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSupremacistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSupremacist !== "unset")) { + fatherRace = V.arcologies[0].FSSupremacistRace; + } else if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSubjugationistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSubjugationist !== "unset")) { + let racesList = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace); + fatherRace = racesList.random(); + } + if (fatherRace !== 0) { + race = (mother.origRace === fatherRace) ? mother.origRace + : (jsRandom(1,4)) === 4 ? jsEither([fatherRace, mother.origRace]) + : "mixed race"; } else { race = mother.origRace; } - } else { - race = mother.origRace; } return race; } //skin - function setSkin(father, mother) { + function setSkin(father, mother, actor2) { + let fatherSkin = 0; + let dadSkinIndex; let skinToMelanin = { "pure black": 21, "ebony": 20, @@ -230,8 +234,18 @@ window.generateGenetics = (function() { "extremely pale": 2, "pure white": 1 }; - let momSkinIndex = mother ? (skinToMelanin[mother.origSkin] || 11) : 8; - let dadSkinIndex = father !== 0 ? (skinToMelanin[father.origSkin] || 11) : 8; + let momSkinIndex = mother ? (skinToMelanin[mother.origSkin] || 13) : 8; + if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSupremacistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSupremacist !== "unset")) { + fatherSkin = randomRaceSkin(V.arcologies[0].FSSupremacistRace); + } else if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSubjugationistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSubjugationist !== "unset")) { + let racesList = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace); + fatherSkin = randomRaceSkin(racesList.random()); + } + if (fatherSkin !== 0) { + dadSkinIndex = father !== 0 ? (skinToMelanin[fatherSkin] || 13) : 8; + } else { + dadSkinIndex = father !== 0 ? (skinToMelanin[father.origSkin] || 13) : 8; + } let skinIndex = Math.round(Math.random() * (dadSkinIndex - momSkinIndex) + momSkinIndex); let prop = ""; @@ -245,6 +259,7 @@ window.generateGenetics = (function() { // eyeColor function setEyeColor(father, mother, actor2) { let eyeColor; + let fatherEye = 0; if (father !== 0) { if (mother.origEye === father.origEye) { eyeColor = mother.origEye; @@ -267,10 +282,36 @@ window.generateGenetics = (function() { } else { eyeColor = jsEither([father.origEye, mother.origEye]); } - } else if (actor2 === -2 || actor2 === 0 || actor2 === -5) { - eyeColor = jsEither(["blue", "brown", "brown", "green", "green", "hazel", mother.origEye]); } else { - eyeColor = mother.origEye; + if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSupremacistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSupremacist !== "unset")) { + fatherEye = randomRaceEye(V.arcologies[0].FSSupremacistRace); + } else if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSubjugationistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSubjugationist !== "unset")) { + let racesList = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace); + fatherEye = randomRaceEye(racesList.random()); + } + if (fatherEye !== 0) { + if (mother.origEye === fatherEye) { + eyeColor = mother.origEye; + } else if (mother.origEye === "red" || mother.origEye === "pale red" || mother.origEye === "light red" || mother.origEye === "pale gray" || mother.origEye === "milky white") { + eyeColor = fatherEye; + } else if (fatherEye === "blue") { + if (jsRandom(1,4) === 2) { + eyeColor = mother.origEye; + } else { + eyeColor = fatherEye; + } + } else if (fatherEye === "blue") { + if (jsRandom(1,4) === 2) { + eyeColor = fatherEye; + } else { + eyeColor = mother.origEye; + } + } else { + eyeColor = jsEither([fatherEye, mother.origEye]); + } + } else { + eyeColor = mother.origEye; + } } //just in case something wrong gets through switch (eyeColor) { @@ -287,6 +328,7 @@ window.generateGenetics = (function() { function setHeterochromaticEyeColor(father, mother, actor2) { let hEyeColor; + let fatherHEye = 0; let eyeColorArray = []; if (father !== 0) { eyeColorArray.push(mother.origEye); @@ -294,16 +336,19 @@ window.generateGenetics = (function() { if (father.geneticQuirks.heterochromia !== 0 && father.geneticQuirks.heterochromia !== 1) { eyeColorArray.push(father.geneticQuirks.heterochromia); } - } else if (actor2 === -2 || actor2 === 0 || actor2 === -5) { - eyeColorArray.push(mother.origEye); - eyeColorArray.push("brown"); - eyeColorArray.push("brown"); - eyeColorArray.push("blue"); - eyeColorArray.push("green"); - eyeColorArray.push("green"); - eyeColorArray.push("hazel"); } else { - eyeColorArray.push(mother.origEye); + if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSupremacistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSupremacist !== "unset")) { + fatherHEye = randomRaceEye(V.arcologies[0].FSSupremacistRace); + } else if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSubjugationistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSubjugationist !== "unset")) { + let racesList = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace); + fatherHEye = randomRaceEye(racesList.random()); + } + if (fatherHEye !== 0) { + eyeColorArray.push(fatherHEye); + eyeColorArray.push(mother.origEye); + } else { + eyeColorArray.push(mother.origEye); + } } if (mother.geneticQuirks.heterochromia !== 0 && mother.geneticQuirks.heterochromia !== 1) { eyeColorArray.push(mother.geneticQuirks.heterochromia); @@ -324,6 +369,7 @@ window.generateGenetics = (function() { // hColor function setHColor(father, mother, actor2) { let hairColor; + let fatherHair = 0; if (father !== 0) { if (mother.origHColor === father.origHColor) { hairColor = mother.origHColor; @@ -342,10 +388,32 @@ window.generateGenetics = (function() { } else { hairColor = jsEither([father.origHColor, mother.origHColor]); } - } else if (actor2 === -2 || actor2 === 0 || actor2 === -5) { - hairColor = jsEither(["black", "black", "black", "blonde", "brown", "brown", "brown", mother.origHColor]); } else { - hairColor = mother.origHColor; + if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSupremacistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSupremacist !== "unset")) { + fatherHair = randomRaceHair(V.arcologies[0].FSSupremacistRace); + } else if (((actor2 === -2 || actor2 === -5) && V.arcologies[0].FSSubjugationistLawME === 1) || (actor2 === -6 && V.arcologies[0].FSSubjugationist !== "unset")) { + let racesList = setup.filterRacesLowercase.filter(race => race !== V.arcologies[0].FSSubjugationistRace); + fatherHair = randomRaceHair(racesList.random()); + } + if (fatherHair !== 0) { + if (mother.origHColor === fatherHair) { + hairColor = mother.origHColor; + } else if (mother.origHColor === "white") { + hairColor = jsRandom(1,100) === 69 ? mother.origHColor : fatherHair; + } else if (mother.origHColor === "black") { + hairColor = jsEither([fatherHair, mother.origHColor, mother.origHColor, mother.origHColor, mother.origHColor, mother.origHColor, mother.origHColor, mother.origHColor]); + } else if (fatherHair === "black") { + hairColor = jsEither([fatherHair, fatherHair, fatherHair, fatherHair, fatherHair, fatherHair, fatherHair, mother.origHColor]); + } else if (mother.origHColor === "brown") { + hairColor = jsEither([fatherHair, mother.origHColor, mother.origHColor, mother.origHColor]); + } else if (fatherHair === "brown") { + hairColor = jsEither([fatherHair, fatherHair, fatherHair, mother.origHColor]); + } else { + hairColor = jsEither([fatherHair, mother.origHColor]); + } + } else { + hairColor = mother.origHColor; + } } return hairColor; } diff --git a/src/js/utilJS.js b/src/js/utilJS.js index deedca55f559b66216d993e3a2ba5765d362f75d..94932dfa7c52b781b92d72ce10fe6ff42a3d822c 100644 --- a/src/js/utilJS.js +++ b/src/js/utilJS.js @@ -1529,4 +1529,136 @@ window.IncreasePCSkills = function(input, increase) { return ` <span class='green'> <br>You have mastered ${input}.</span>`; } } +}; + +window.randomRaceSkin = function(raceName) +{ + let skin; + switch (raceName) { + case "asian": + skin = jsEither(["dark olive", "light olive", "light"]); + break; + case "amerindian": + skin = jsEither(["dark", "light"]); + break; + case "black": + skin = jsEither(["black", "brown", "dark brown"]); + break; + case "indo-aryan": + skin = jsEither(["dark", "light"]); + break; + case "latina": + skin = jsEither(["brown", "dark brown", "dark olive", "light olive", "tanned"]); + break; + case "malay": + skin = jsEither(["dark", "light"]); + break; + case "middle eastern": + skin = jsEither(["fair", "light olive", "light", "tanned"]); + break; + case "pacific islander": + skin = jsEither(["dark", "light"]); + break; + case "semitic": + skin = jsEither(["fair", "light olive", "light", "tanned"]); + break; + case "southern european": + skin = jsEither(["fair", "light olive", "light", "tanned"]); + break; + case "white": + skin = jsEither(["fair", "light", "pale"]); + break; + default: + skin = jsEither(["dark", "light", "pale"]); + break; + } + return skin; +}; + +window.randomRaceEye = function(raceName) +{ + let eye; + switch (raceName) { + case "asian": + eye = jsEither(["brown"]); + break; + case "amerindian": + eye = jsEither(["brown", "green"]); + break; + case "black": + eye = jsEither(["brown",]); + break; + case "indo-aryan": + eye = jsEither(["brown"]); + break; + case "latina": + eye = jsEither(["brown", "green"]); + break; + case "malay": + eye = jsEither(["blue", "brown", "green"]); + break; + case "middle eastern": + eye = jsEither(["brown"]); + break; + case "pacific islander": + eye = jsEither(["brown"]); + break; + case "semitic": + eye = jsEither(["brown", "green"]); + break; + case "southern european": + eye = jsEither(["brown", "green"]); + break; + case "white": + eye = jsEither(["blue", "brown", "green"]); + break; + default: + eye = jsEither(["brown", "green"]); + break; + } + return eye; +}; + +window.randomRaceHair = function(raceName) +{ + let hair; + switch (raceName) { + case "asian": + hair = jsEither(["black"]); + break; + case "amerindian": + hair = jsEither(["black"]); + break; + case "black": + hair = jsEither(["black", "black", "black", "brown"]); + break; + case "indo-aryan": + hair = jsEither(["black"]); + break; + case "latina": + hair = jsEither(["black", "black", "brown", "brown"]); + break; + case "malay": + hair = jsEither(["black"]); + break; + case "middle eastern": + hair = jsEither(["black"]); + break; + case "pacific islander": + hair = jsEither(["black"]); + break; + case "semitic": + hair = jsEither(["black"]); + break; + case "southern european": + hair = jsEither(["black"]); + break; + case "white": + hair = jsEither(["black", "blonde", "brown", "red"]); + break; + default: + hair = jsEither(["black", "black", "black", "black", "blonde", "brown", "brown", "red"]); + break; + } + return hair; }; \ No newline at end of file diff --git a/src/js/wombJS.js b/src/js/wombJS.js index af9057a22e1a663214d6ee2b5cf0cd44e156d530..46663f1bbcd3f43b9fcb2747add54457a7d1a8bd 100644 --- a/src/js/wombJS.js +++ b/src/js/wombJS.js @@ -561,7 +561,7 @@ window.WombRemoveFetus = function(actor, fetusNum) return null; }; -/*to add fetus object in the womb. Be warned - you can add one single fetus to many wombs, or even add it many times to one womb. It's will not show error, but behavior become strange, as fetus object will be the same - it's reference, not full copies. If this not desired - use clone() on fetus before adding.*/ +/*to add fetus object in the womb. Be warned - you can add one single fetus to many wombs, or even add it many times to one womb. It will not show error, but behavior becomes strange, as fetus object will be the same - it's reference, not full copies. If this is not desired - use clone() on fetus before adding.*/ window.WombAddFetus = function(actor, fetus) { WombInit(actor); @@ -583,6 +583,18 @@ window.WombChangeGene = function(actor, geneName, newValue) actor.womb.forEach(ft => ft.genetics[geneName] = newValue); }; +// change genetic property of all fetuses based on race +window.WombFatherRace = function(actor, raceName) +{ + let skinColor = randomRaceSkin(raceName); + let eyeColor = randomRaceEye(raceName); + let hairColor = randomRaceHair(raceName); + WombChangeGene(actor, "race", raceName); + WombChangeGene(actor, "skin", skinColor); + WombChangeGene(actor, "eyeColor", eyeColor); + WombChangeGene(actor, "hColor", hairColor); +}; + // replaces untraceable fatherIDs with missingParentID. Required for concurrent pregnancy to differentiate between siblings. window.MissingParentIDCorrection = function(actor) { WombInit(actor); diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw index 901db2ddd2f2876c87de5fef961da3b66e0a6175..1f4601ebf2824a386c4d1161719fef9c9fd6935d 100644 --- a/src/uncategorized/genericPlotEvents.tw +++ b/src/uncategorized/genericPlotEvents.tw @@ -518,11 +518,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u <<set _missLeader.pregKnown = 1>> <<set _missLeader.pregWeek = _missLeader.preg>> <<run SetBellySize(_missLeader)>> - <<run WombChangeGene(_missLeader, "race", "black")>> - <<set _skinTone = either("brown", "dark brown", "light brown")>> - <<run WombChangeGene(_missLeader, "skin", _skinTone)>> - <<run WombChangeGene(_missLeader, "hColor", "black")>> - <<run WombChangeGene(_missLeader, "eyeColor", "brown")>> + <<run WombFatherRace(_missLeader, "black")>> <<set _missLeader.birthsTotal = 3>> <<set _missLeader.bellySag = 5>> <<set _missLeader.bellySagPreg = 5>> @@ -567,11 +563,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u <<set $activeSlave.pregKnown = 1>> <<set $activeSlave.pregWeek = $activeSlave.preg>> <<run SetBellySize($activeSlave)>> - <<run WombChangeGene($activeSlave, "race", "black")>> - <<set _skinTone = either("brown", "dark brown", "light brown")>> - <<run WombChangeGene($activeSlave, "skin", "black")>> - <<run WombChangeGene($activeSlave, "hColor", "black")>> - <<run WombChangeGene($activeSlave, "eyeColor", "brown")>> + <<run WombFatherRace($activeSlave, "black")>> <<set $activeSlave.birthsTotal = 3>> <<set $activeSlave.bellySag = 5>> <<set $activeSlave.bellySagPreg = 5>> @@ -668,11 +660,7 @@ When the aircraft lands at your penthouse pad, the would-be escapees are still u <<set _missLoli.pregKnown = 1>> <<set _missLoli.pregWeek = _missLoli.preg>> <<run SetBellySize(_missLoli)>> - <<run WombChangeGene(_missLoli, "race", "black")>> - <<set _skinTone = either("black", "ebony", "pure black")>> - <<run WombChangeGene(_missLoli, "skin", "black")>> - <<run WombChangeGene(_missLoli, "hColor", "black")>> - <<run WombChangeGene(_missLoli, "eyeColor", "brown")>> + <<run WombChangeGene(_missLoli, "black")>> <<set _missLoli.birthsTotal = 0>> <<set _missLoli.bellySag = 5>> <<set _missLoli.bellySagPreg = 5>> diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw index 3f7c0683b599f7819cf04078f0cf6e12e19f79ae..b87cc31eb6b17899601ecd4475a936079ced245d 100644 --- a/src/uncategorized/newSlaveIntro.tw +++ b/src/uncategorized/newSlaveIntro.tw @@ -1187,7 +1187,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << @@.green;$He's a breast fetishist!@@ <<set $activeSlave.fetishKnown = 1>> <<else>> - You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple, and the intense sensation of relief and stimulation overwhelms $him. It doesn’t take long for $him to reach the first of a series of orgasms, leaving $him exhausted. + You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple, and the intense sensation of relief and stimulation overwhelms $him. It doesn't take long for $him to reach the first of a series of orgasms, leaving $him exhausted. @@.green;$He's a breast fetishist!@@ <<set $activeSlave.fetishKnown = 1>> <</if>> @@ -1198,7 +1198,7 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple. $His breast fetish makes the experience comparable to sex for $him, and the resulting series of orgasms leaves $him exhausted. <</if>> <</if>> - After allowing $him to rest for a bit you instruct $him to report for $his first assignment. As $he leaves your office $he can already feel the pressure returning to $his chest. @@.hotpink;As far as $he’s concerned $his next milking can’t come soon enough.@@ + After allowing $him to rest for a bit you instruct $him to report for $his first assignment. As $he leaves your office $he can already feel the pressure returning to $his chest. @@.hotpink;As far as $he's concerned $his next milking can't come soon enough.@@ <<set $activeSlave.devotion += 5>> <<else>> <<if $servantMilkers == 1>> @@ -1206,18 +1206,18 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <<else>> You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple, and the sensation of relief is pleasant for $him. $He moans softly as you proceed to drain $his swollen breasts. <</if>> - Once drained, you instruct $him to report for $his first assignment. As $he leaves your office $he can already feel the pressure returning to $his chest. $He appreciates that $his next milking will be a nice break from $his regular duties. @@.hotpink;It doesn’t hurt that these breaks are both profitable for you, and pleasurable for $him.@@ + Once drained, you instruct $him to report for $his first assignment. As $he leaves your office $he can already feel the pressure returning to $his chest. $He appreciates that $his next milking will be a nice break from $his regular duties. @@.hotpink;It doesn't hurt that these breaks are both profitable for you, and pleasurable for $him.@@ <<set $activeSlave.devotion += 4>> <</if>> <<else>> <<if $activeSlave.fetish == "boobs">> <<if $activeSlave.fetishKnown == 0>> <<if $servantMilkers == 1>> - You escort $him to one of the many milkers installed in the penthouse and attach $him to the device, leaving $his restraints in place. $He is still struggling when you activate the device, and the sudden sensation of relief catches $him off guard. A primal moan erupts from the bottom of $his throat, and it’s obvious to both of you that $he’s enjoying this in spite of $himself. $He spends the rest of $his milking trying and failing to hide the obvious pleasure $he’s deriving from $his predicament. + You escort $him to one of the many milkers installed in the penthouse and attach $him to the device, leaving $his restraints in place. $He is still struggling when you activate the device, and the sudden sensation of relief catches $him off guard. A primal moan erupts from the bottom of $his throat, and it's obvious to both of you that $he's enjoying this in spite of $himself. $He spends the rest of $his milking trying and failing to hide the obvious pleasure $he's deriving from $his predicament. @@.green;$He's a breast fetishist!@@ <<set $activeSlave.fetishKnown = 1>> <<else>> - You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple. The sensation overwhelms $him almost immediately, and $his arms struggle against $his restraints as $he fights an impending orgasm. It’s an amusing sight that goes on until $he is fully drained. + You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple. The sensation overwhelms $him almost immediately, and $his arms struggle against $his restraints as $he fights an impending orgasm. It's an amusing sight that goes on until $he is fully drained. @@.green;$He's a breast fetishist!@@ <<set $activeSlave.fetishKnown = 1>> <</if>> @@ -1234,9 +1234,9 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <<if $servantMilkers == 1>> You escort $him to one of the many milkers installed in the penthouse and attach $him to the device. $He struggles against $his restraints as you activate the device, drawing a brief pause and a look of confusion as $his breasts begin to drain. This only lasts a moment before $he returns to $his futile struggle, but $his milking continues regardless. <<else>> - You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple as a look of confusion washes over $his features. $He then closes $his eyes tight and does $his best to ignore what’s happening in a futile attempt to deny $his new reality, but you continue $his milking until $he is drained. + You kneel behind $him and begin to gently massage $his swollen breasts. A steady stream of milk begins to erupt from each nipple as a look of confusion washes over $his features. $He then closes $his eyes tight and does $his best to ignore what's happening in a futile attempt to deny $his new reality, but you continue $his milking until $he is drained. <</if>> - As you summon <<if $HeadGirl != 0>>your Head Girl<<else>>another slave<</if>> to escort the $girl to $his first assignment $he glares at you with disgust. $His resentment at the new burden you’ve saddled $him with is evident, and the regular milkings $he’ll require will serve to remind $him of the @@.gold;disturbing fact that $he is little more than livestock to you.@@ + As you summon <<if $HeadGirl != 0>>your Head Girl<<else>>another slave<</if>> to escort the $girl to $his first assignment $he glares at you with disgust. $His resentment at the new burden you've saddled $him with is evident, and the regular milkings $he'll require will serve to remind $him of the @@.gold;disturbing fact that $he is little more than livestock to you.@@ <<set $activeSlave.devotion -= 4>> <</if>> <</if>> diff --git a/src/uncategorized/randomIndividualEvent.tw b/src/uncategorized/randomIndividualEvent.tw index 82bdd1fdd28db77d2e1e4d8a1e45d7c6d4d46612..307ae1e49705b50c288fe34e1f1756e924c5d0c6 100644 --- a/src/uncategorized/randomIndividualEvent.tw +++ b/src/uncategorized/randomIndividualEvent.tw @@ -4,7 +4,7 @@ <<if $eventSlave == 0>> <<if $cheatMode == 1>> <<set $nextButton = "Refresh", $nextLink = "Random Individual Event", $returnTo = "Random Individual Event">> - + <<link "Skip week-end events" "Next Week">><</link>> <br><br> diff --git a/src/utility/descriptionWidgetsStyle.tw b/src/utility/descriptionWidgetsStyle.tw index 791f60d7c6833a98fcd597d2594e8f019eb0e3bc..90d53b5f61a55f76d9f22bfe0272e7264414e3fa 100644 --- a/src/utility/descriptionWidgetsStyle.tw +++ b/src/utility/descriptionWidgetsStyle.tw @@ -3757,7 +3757,7 @@ $His <<default>> bare cowpoke feet. <</switch>> - + <<case "overalls">> <<switch $activeSlave.shoes>> <<case "flats">>