diff --git a/devNotes/twine JS.txt b/devNotes/twine JS.txt index e4daabdbb07b086aac36a3064cf95bd7a69fadd8..5f20f3ef7dd20ebd0a9ef26a469f71ef40ea8163 100644 --- a/devNotes/twine JS.txt +++ b/devNotes/twine JS.txt @@ -1650,7 +1650,22 @@ window.setPregType = function(actor) { } ovum = Math.clamp(ovum, 0, 8); } else if(actor.pregType == 0) { - ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins + if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm + ovum += jsEither([1, 2, 2, 3]); + fertilityStack++; + fertilityStack++; + fertilityStack++; + fertilityStack++; + } else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples + ovum += jsEither([0, 1, 1, 2]); + fertilityStack++; + fertilityStack++; + } else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins + ovum += jsEither([0, 0, 0, 0, 1]); + fertilityStack++; + } else { + ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins + } if(actor.ovaImplant == "fertility") { ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); fertilityStack++; @@ -2502,6 +2517,9 @@ window.getSlaveCost = function(s) { cost -= foodCost; break; } + if(s.geneticQuirks.fertility == 2 && s.geneticQuirks.hyperFertility == 2) { + cost += foodCost * .5; + } if(s.weight > 130) { cost += foodCost * 2; } else if(s.weight > 50) { @@ -4339,6 +4357,21 @@ window.removeDuplicates = function removeDuplicates(array) { return [...new Set(array)]; }; +window.induceLactation = function induceLactation(slave) { + let pronouns = getPronouns(slave); + let His = capFirstChar(pronouns.possessive); + let r = ``; + if (slave.induceLactation >= 10) { + if (jsRandom(1,100) < slave.induceLactation) { + r += `${His} breasts have been stimulated often enough to @@.lime;induce lactation.@@` + slave.induceLactation = 0; + slave.lactationDuration = 2; + slave.lactation = 1; + } + } + return r; +}; + window.ResearchLabStockPile = function() { V = State.variables; return `__Stockpile__ @@ -4358,22 +4391,81 @@ window.ResearchLabStockPile = function() { Electrolarynx: $stockpile.electrolarynx`; }; -window.ResearchLabStockPile = function() { - return `__Stockpile__ - Prosthetics interfaces: ${commaNum($stockpile.basicPLimbInterface + $stockpile.advPLimbInterface)} - Basic : $stockpile.basicPLimbInterface - Advanced: $stockpile.advPLimbInterface - Limbs: ${commaNum($stockpile.basicPLimb + $stockpile.advSexPLimb + $stockpile.advGracePLimb + $stockpile.advCombatPLimb + $stockpile.cyberneticPLimb)} - Basic: $stockpile.basicPLimb - Sex: $stockpile.advSexPLimb - Beauty: $stockpile.advGracePLimb - Combat: $stockpile.advCombatPLimb - Cybernetic: $stockpile.cyberneticPLimb - Implants: ${commaNum($stockpile.ocularImplant + $stockpile.cochlearImplant + $stockpile.erectileImplant)} - Ocular: $stockpile.ocularImplant - Cochlear: $stockpile.cochlearImplant - // Erectile: $stockpile.erectileImplant// - Electrolarynx: $stockpile.electrolarynx`; +window.originPronounReplace = function(slave) { + let r = slave.origin; + switch (r) { + case "She was the result of unprotected sex with a client. Her mother tracked you down years after her birth to force her upon you.": + return `${capFirstChar(slave.pronoun)} was the result of unprotected sex with a client. ${capFirstChar(slave.possessive)} mother tracked you down years after ${slave.possessive} birth to force ${slave.object} upon you.`; + case "You kept her after her owner failed to pay your bill for performing surgery on her.": + return `You kept ${slave.object} after ${slave.possessive} owner failed to pay your bill for performing surgery on ${slave.object}.`; + case "She comes from old money and sold herself into slavery to satisfy her obsession with the practice, believing her family would buy her back out of slavery later.": + return `${capFirstChar(slave.pronoun)} comes from old money and sold herself into slavery to satisfy ${slave.possessive} obsession with the practice, believing ${slave.possessive} family would buy ${slave.object} back out of slavery later.`; + case "When you took her from her previous owner, she was locked into a beautiful rosewood box lined with red velvet, crying.": + return `When you took ${slave.object} from ${slave.possessive} previous owner, ${slave.pronoun} was locked into a beautiful rosewood box lined with red velvet, crying.`; + case "Her husband sold her into slavery to escape his debts.": + return `${capFirstChar(slave.possessive)} husband sold ${slave.object} into slavery to escape his debts.`; + case "She was voluntarily enslaved after she decided that your arcology was the best place for her to get the steroids that she'd allowed to define her life.": + return `${capFirstChar(slave.pronoun)} was voluntarily enslaved after ${slave.pronoun} decided that your arcology was the best place for ${slave.object} to get the steroids that ${slave.pronoun}'d allowed to define ${slave.possessive} life.`; + case "She came to you to escape being sold to a cruel master after her producer informed her of her debt.": + return `${capFirstChar(slave.pronoun)} came to you to escape being sold to a cruel master after ${slave.possessive} producer informed ${slave.object} of ${slave.possessive} debt.`; + case "You tricked her into enslavement, manipulating her based on her surgical addiction.": + return `You tricked ${slave.object} into enslavement, manipulating ${slave.object} based on ${slave.possessive} surgical addiction.`; + case "You helped free her from a POW camp after being abandoned by her country, leaving her deeply indebted to you.": + return `You helped free ${slave.object} from a POW camp after being abandoned by ${slave.possessive} country, leaving ${slave.object} deeply indebted to you.`; + case "You purchased her in order to pave the way for her brother to take the throne.": + return `You purchased ${slave.object} in order to pave the way for ${slave.possessive} brother to take the throne.`; + case "You purchased her as a favor to her father.": + return `You purchased ${slave.object} as a favor to ${slave.possessive} father.`; + case "You purchased her from a King after his son put an illegitimate heir in her womb.": + return `You purchased ${slave.object} from a King after his son put an illegitimate heir in ${slave.possessive} womb.`; + case "You acquired her in the last stages of your career as a successful venture capitalist.": + case "Drugs and alcohol can be a potent mix; the night that followed it can sometimes be hard to remember. Needless to say, once your belly began swelling with her, you had to temporarily switch to a desk job for your mercenary group.": + case "You acquired her in the last stages of your career as a noted private military contractor.": + case "You never thought you would be capable of impregnating yourself, but years of pleasuring yourself with yourself after missions managed to create her.": + case "A fresh capture once overpowered you and had his way with you. You kept her as a painful reminder to never lower your guard again.": + case "Your slaving troop kept several girls as fucktoys, you sired her in your favorite.": + case "You enslaved her personally during the last stages of your slaving career.": + case "You sired her in yourself after an arcology owner, impressed by your work, rewarded you with a night you'll never forget.": + case "You conceived her after a male arcology owner, impressed by your work, rewarded you with a night you'll never forget.": + case "You sired her after a female arcology owner, impressed by your work, rewarded you with a night you'll never forget.": + case "You received her as a gift from an arcology owner impressed by your work.": + case "You captured her during your transition to the arcology": + case "You won her at cards, a memento from your life as one of the idle rich before you became an arcology owner.": + case "You brought her into the arcology mindbroken, little more than a walking collection of fuckable holes.": + case "You brought her into the arcology mindbroken, little more than a human onahole.": + case "She grew up sheltered and submissive, making her an easy target for enslavement.": + case "She was fresh from the slave markets when you acquired her.": + case "She chose to be a slave because the romanticized view of it she had turns her on.": + case "She was previously owned by a creative sadist, who has left a variety of mental scars on her.": + case "She was taken as a slave by a Sultan, who presented her as a gift to a surveyor.": + case "She is the winner of a martial arts slave tournament. You won her in a bet.": + case "She was homeless and willing to do anything for food, which in the end resulted in her becoming a slave.": + case "She was sold to you by an anonymous person who wanted her to suffer.": + case "You received her from a surgeon who botched an implant operation on her and needed to get her out of sight.": + case "She offered herself to you for enslavement to escape having plastic surgery foisted on her.": + case "You turned her into a slave girl after she fell into debt to you.": + case "She was raised in a radical slave school that treated her with drugs and surgery from a very young age.": + case "She was raised in a radical slave school that treated her from a very young age, up to the point that she never experienced male puberty.": + case "She was a runaway slave captured by a gang outside your arcology. You bought her cheap after she was harshly used by them.": + case "She was the private slave of a con artist cult leader before he had to abandon her and flee.": + case "You helped her give birth, leaving her deeply indebted to you.": + case "You purchased her from a King after she expressed knowledge of the prince's affair with another servant.": + r = r.replace(/(?<=\s)herself(?=\s|,|\.|;|\?|!)/g, slave.objectReflexive); + r = r.replace(/(?<=\s|^)Herself(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.objectReflexive)); + r = r.replace(/(?<=\s)she(?=\s|,|\.|;|\?|!)/g, slave.pronoun); + r = r.replace(/(?<=\s|^)She(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.pronoun)); + r = r.replace(/(?<=\s)her(?=\s|,|\.|;|\?|!)/g, slave.object); + r = r.replace(/(?<=\s|^)Her(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.object)); + return r; + default: + r = r.replace(/(?<=\s)herself(?=\s|,|\.|;|\?|!)/g, slave.objectReflexive); + r = r.replace(/(?<=\s|^)Herself(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.objectReflexive)); + r = r.replace(/(?<=\s)she(?=\s|,|\.|;|\?|!)/g, slave.pronoun); + r = r.replace(/(?<=\s|^)She(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.pronoun)); + r = r.replace(/(?<=\s)her(?=\s|,|\.|;|\?|!)/g, slave.possessive); + r = r.replace(/(?<=\s|^)Her(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.possessive)); + return r; + } }; /*:: Span Macro JS [script]*/ @@ -39139,13 +39231,15 @@ window.Beauty = (function() { if (arcology.FSPhysicalIdealist === "unset" && arcology.FSHedonisticDecadenceStrongFat === 0 && slave.muscles > 30) { /*muscle check*/ V.genderLawPass = 0; - } else if (arcology.FSHedonisticDecadence !== "unset" || arcology.FSPhysicalIdealistStrongFat === 1) { /*weight check*/ + } + if (arcology.FSHedonisticDecadence !== "unset" || arcology.FSPhysicalIdealistStrongFat === 1) { /*weight check*/ if (slave.weight > 130 || slave.weight <= -30) { V.genderLawPass = 0; } } else if (Math.abs(slave.weight) > 30) { V.genderLawPass = 0; - } else if (arcology.FSAssetExpansionist !== "unset") { + } + if (arcology.FSAssetExpansionist !== "unset") { if (slave.boobs < 500 || slave.boobs > 1600 || slave.butt < 3 || slave.butt > 6) { V.genderLawPass = 0; } diff --git a/sanityCheck b/sanityCheck index 387055bf566a472b6309b4f03fcecb04fe9f787c..efd3d13c7d5ba865f4ff057b8e7fa6f281ec2281 100755 --- a/sanityCheck +++ b/sanityCheck @@ -94,8 +94,8 @@ $GREP 'if $ ' -- 'src/*' | myprint "missing ; before statement" $GREP 'elseif $ ' -- 'src/*' | myprint "missing ; before statement" # Check for a . inside a <<>> $GREP "<<[a-zA-Z]\([^\"'>]\|[^\"'>]>[^\"'>]\)*[a-zA-Z][.][^a-zA-Z]" | myprint "StrangeCharacterAfterDot" -# Check for @@. instead of .@@ TODO: get this to work -$GREP -e "@@(\.|,|;)\s" -- src/*.tw | myprint "WrongSelectorPunctuation" +# Check for @@. instead of .@@ +$GREP -E "@@(\.|,|;|:)\s" -- src/*.tw | myprint "WrongSelectorPunctuation" # Check that we do not have any variables that we use only once. e.g. $onlyUsedOnce # Ignore *Nationalities diff --git a/src/facilities/nursery/longChildDescription.tw b/src/facilities/nursery/longChildDescription.tw index d58b3cea300c0a6b409bcffc0ee564124952a61d..4442780ca75ec36392e1e0d1fe9fef3c3487af1e 100644 --- a/src/facilities/nursery/longChildDescription.tw +++ b/src/facilities/nursery/longChildDescription.tw @@ -605,11 +605,11 @@ $he's <</if>> <<case "sadist">> <<if ($activeChild.fetishStrength > 95)>> - $He is an @@.lightcoral;aggressive sadist@@; $he's constantly plotting to control, abuse, and hurt other slaves. + $He is an @@.lightcoral;aggressive sadist;@@ $he's constantly plotting to control, abuse, and hurt other slaves. <<elseif ($activeChild.fetishStrength > 60)>> - $He has @@.lightcoral;sadistic tendencies@@; $he enjoys watching other slaves in pain, but truly loves causing pain $himself. + $He has @@.lightcoral;sadistic tendencies;@@ $he enjoys watching other slaves in pain, but truly loves causing pain $himself. <<else>> - $He gets off on @@.lightcoral;the suffering of others@@; $he enjoys watching other slaves in pain. + $He gets off on @@.lightcoral;the suffering of others;@@ $he enjoys watching other slaves in pain. <</if>> <<case "masochist">> <<if ($activeChild.fetishStrength > 95)>> @@ -887,7 +887,7 @@ $he's <<if $saleDescription == 0>> <<if $activeChild.origin != 0>> - <<originDescription $activeChild>> + <<= originPronounReplace($activeChild)>> <</if>> <</if>> @@ -1229,7 +1229,7 @@ $He is <</if>> <<if $activeChild.combatSkill > 0>> - $He is @@.aquamarine;skilled at combat@@: $he is comfortable with the use of modern firearms and edged weapons, and $his hands <<if $activeChild.amp == -4>>would be deadly weapons even if they weren't full of deadly weapons already<<elseif $activeChild.amp > 0>>would be deadly weapons if $he had any<<else>>are deadly weapons<</if>>. + $He is @@.aquamarine;skilled at combat:@@ $he is comfortable with the use of modern firearms and edged weapons, and $his hands <<if $activeChild.amp == -4>>would be deadly weapons even if they weren't full of deadly weapons already<<elseif $activeChild.amp > 0>>would be deadly weapons if $he had any<<else>>are deadly weapons<</if>>. <</if>> <</if>> diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw index e928106cf1eb758424de7bd73dfd313ad14d1854..c05a40ff15a442b1ab94040a7cb25bc0b2fc52a6 100644 --- a/src/gui/Encyclopedia/encyclopedia.tw +++ b/src/gui/Encyclopedia/encyclopedia.tw @@ -403,7 +403,7 @@ SLAVES <<case "Trust">> ''Trust'' is a measure of a slave's expectations of the player character, and secondarily, how confident she is of her ability to do well. (Low trust is also referred to as fear.) Along with @@.hotpink;[[devotion|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]],@@ it is the main measure of a slave's mental state. A highly trusting slave is often more expensive to keep, but will do better in a leadership position and is more valuable. Slaves who are not intended for special assignments or resale can usually be kept terrified. - <br><br>This can become negative if a slave is not sufficiently @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@: in this case, she will not obey since she neither likes nor fears the player character. Many game mechanics can effect trust in some way: @@.mediumaquamarine;aquamarine text@@ text indicates a trust gain, while @@.gold;gold@@ indicates a trust loss. Maximized or minimized trust is somewhat sticky: lightly abusing a perfectly trusting slave will not damage trust, while minor confidence boosts will not affect an abjectly terrified slave. Extremely high trust will boost Devotion weekly, and any trust gains that push it over its maximum value will overflow into Devotion. If both are maximized, the slave's sex drive is increased. If she's already a nympho, Reputation is increased instead. + <br><br>This can become negative if a slave is not sufficiently @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]:@@ in this case, she will not obey since she neither likes nor fears the player character. Many game mechanics can effect trust in some way: @@.mediumaquamarine;aquamarine text@@ text indicates a trust gain, while @@.gold;gold@@ indicates a trust loss. Maximized or minimized trust is somewhat sticky: lightly abusing a perfectly trusting slave will not damage trust, while minor confidence boosts will not affect an abjectly terrified slave. Extremely high trust will boost Devotion weekly, and any trust gains that push it over its maximum value will overflow into Devotion. If both are maximized, the slave's sex drive is increased. If she's already a nympho, Reputation is increased instead. <<case "Drugs and Their Effects">> @@ -1941,7 +1941,7 @@ FUTURE SOCIETIES <<case "Edo Revivalism">> - ''Edo Revivalism'' is a future society model which approves of provision for the arcology's cultural development by providing a large number of public servants or club girls, which increases with @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@; disapproves of failure to do so. + ''Edo Revivalism'' is a future society model which approves of provision for the arcology's cultural development by providing a large number of public servants or club girls, which increases with @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]];@@ disapproves of failure to do so. <br> Improves efficiency of public servants and club girls. <br> Greatly improves beauty of Japanese slaves. <br> Can be developed to greatly improve the efficiency of direct spending on future societies. @@ -1950,7 +1950,7 @@ FUTURE SOCIETIES <<case "Arabian Revivalism">> - ''Arabian Revivalism'' is a future society model which approves of keeping a large number of fucktoys and slaves in the master suite, which increases with @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]]@@; disapproves of failure to do so. + ''Arabian Revivalism'' is a future society model which approves of keeping a large number of fucktoys and slaves in the master suite, which increases with @@.green;[[reputation|Encyclopedia][$encyclopedia = "Arcologies and Reputation"]];@@ disapproves of failure to do so. <br> Grants a bonus to the price received when selling slaves. <br> Can be developed to improve the efficiency of direct spending on future societies and moderately increase rents. <br> Provides demand for more @@.hotpink;[[devoted|Encyclopedia][$encyclopedia = "From Rebellious to Devoted"]]@@ slaves from [[the corporation|Encyclopedia][$encyclopedia = "The Corporation"]]. @@ -2887,7 +2887,7 @@ LORE: INTERVIEWS <dl> <dt>Childhood Fertility Induced NCS</dt> <dd> - This uses a designer retrograde virus to set the genetic markers for the Neotenic Complex Syndrome, a syndrome originally called Syndrome X discovered in the early 2000s. In layman's terms, it @@.gold;suppresses the growth and secondary sexual characteristics of slaves@@; both male and female. The original condition was usually fatal or dangerous. This modified version of the genetic flaw is not harmful (relatively speaking), and in addition to the growth blockage, it permits the slave to continue the @@.lime;development of gonads@@ at a slightly faster than normal pace. Secondary sexual characteristics are also reversed, though interestingly enough, pregnancy is still possible.Slaves put on this genetic engineered blend will be permanently changed and will no longer grow in stature or assets without severe chemical assistance, and even then at a reduced rate when compared to non-NCS-induced slaves, and should their ongoing growth treatments stop they will slowly regress back to the physicality of a child.<br><br> + This uses a designer retrograde virus to set the genetic markers for the Neotenic Complex Syndrome, a syndrome originally called Syndrome X discovered in the early 2000s. In layman's terms, it @@.gold;suppresses the growth and secondary sexual characteristics of slaves;@@ both male and female. The original condition was usually fatal or dangerous. This modified version of the genetic flaw is not harmful (relatively speaking), and in addition to the growth blockage, it permits the slave to continue the @@.lime;development of gonads@@ at a slightly faster than normal pace. Secondary sexual characteristics are also reversed, though interestingly enough, pregnancy is still possible.Slaves put on this genetic engineered blend will be permanently changed and will no longer grow in stature or assets without severe chemical assistance, and even then at a reduced rate when compared to non-NCS-induced slaves, and should their ongoing growth treatments stop they will slowly regress back to the physicality of a child.<br><br> @@.red;The genetic tampering is considered illegal,@@ but there is also a @@.yellow;moral question as this abrogates the rights of slaves to ever grow up.@@<br><br> Can only be purchased in [[The Black Market|Encyclopedia][$encyclopedia = "The Black Market"]]. </dd> diff --git a/src/js/economyJS.tw b/src/js/economyJS.tw index e7aebe72ff114a1771771305425e51ee91970451..f3b56f444f51115036ce174597706fe2917768d2 100644 --- a/src/js/economyJS.tw +++ b/src/js/economyJS.tw @@ -452,6 +452,9 @@ window.getSlaveCost = function(s) { cost -= foodCost; break; } + if(s.geneticQuirks.fertility == 2 && s.geneticQuirks.hyperFertility == 2) { + cost += foodCost * .5; + } if(s.weight > 130) { cost += foodCost * 2; } else if(s.weight > 50) { diff --git a/src/js/pregJS.tw b/src/js/pregJS.tw index d379a138601966f19a6cac5621e9e28bf5f529dc..ba5050d5b37c0858fe4e9ba0e85c99a6b3625579 100644 --- a/src/js/pregJS.tw +++ b/src/js/pregJS.tw @@ -122,7 +122,22 @@ window.setPregType = function(actor) { } ovum = Math.clamp(ovum, 0, 8); } else if(actor.pregType == 0) { - ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins + if(actor.geneticQuirks.fertility == 2 && actor.geneticQuirks.hyperFertility == 2) { // Do not mix with sperm + ovum += jsEither([1, 2, 2, 3]); + fertilityStack++; + fertilityStack++; + fertilityStack++; + fertilityStack++; + } else if(actor.geneticQuirks.hyperFertility == 2) { // Predisposed to multiples + ovum += jsEither([0, 1, 1, 2]); + fertilityStack++; + fertilityStack++; + } else if(actor.geneticQuirks.fertility == 2) { // Predisposed to twins + ovum += jsEither([0, 0, 0, 0, 1]); + fertilityStack++; + } else { + ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); //base chance for twins + } if(actor.ovaImplant == "fertility") { ovum += jsEither([0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); fertilityStack++; diff --git a/src/js/slaveCostJS.tw b/src/js/slaveCostJS.tw index cfafbf8bce482cce28391ced846ad89208e525ca..3a12643876a064efe85fc43f407bca14818fd8c0 100644 --- a/src/js/slaveCostJS.tw +++ b/src/js/slaveCostJS.tw @@ -1119,13 +1119,15 @@ window.Beauty = (function() { if (arcology.FSPhysicalIdealist === "unset" && arcology.FSHedonisticDecadenceStrongFat === 0 && slave.muscles > 30) { /*muscle check*/ V.genderLawPass = 0; - } else if (arcology.FSHedonisticDecadence !== "unset" || arcology.FSPhysicalIdealistStrongFat === 1) { /*weight check*/ + } + if (arcology.FSHedonisticDecadence !== "unset" || arcology.FSPhysicalIdealistStrongFat === 1) { /*weight check*/ if (slave.weight > 130 || slave.weight <= -30) { V.genderLawPass = 0; } } else if (Math.abs(slave.weight) > 30) { V.genderLawPass = 0; - } else if (arcology.FSAssetExpansionist !== "unset") { + } + if (arcology.FSAssetExpansionist !== "unset") { if (slave.boobs < 500 || slave.boobs > 1600 || slave.butt < 3 || slave.butt > 6) { V.genderLawPass = 0; } diff --git a/src/js/utilJS.tw b/src/js/utilJS.tw index 32587040d2532b8b46f0fe6e525290618fff364f..982e9bf3f96e157390e09ea2bb58b6ae0ae31ffa 100644 --- a/src/js/utilJS.tw +++ b/src/js/utilJS.tw @@ -1159,3 +1159,80 @@ window.ResearchLabStockPile = function() { // Erectile: $stockpile.erectileImplant// Electrolarynx: $stockpile.electrolarynx`; }; + +window.originPronounReplace = function(slave) { + let r = slave.origin; + switch (r) { + case "She was the result of unprotected sex with a client. Her mother tracked you down years after her birth to force her upon you.": + return `${capFirstChar(slave.pronoun)} was the result of unprotected sex with a client. ${capFirstChar(slave.possessive)} mother tracked you down years after ${slave.possessive} birth to force ${slave.object} upon you.`; + case "You kept her after her owner failed to pay your bill for performing surgery on her.": + return `You kept ${slave.object} after ${slave.possessive} owner failed to pay your bill for performing surgery on ${slave.object}.`; + case "She comes from old money and sold herself into slavery to satisfy her obsession with the practice, believing her family would buy her back out of slavery later.": + return `${capFirstChar(slave.pronoun)} comes from old money and sold herself into slavery to satisfy ${slave.possessive} obsession with the practice, believing ${slave.possessive} family would buy ${slave.object} back out of slavery later.`; + case "When you took her from her previous owner, she was locked into a beautiful rosewood box lined with red velvet, crying.": + return `When you took ${slave.object} from ${slave.possessive} previous owner, ${slave.pronoun} was locked into a beautiful rosewood box lined with red velvet, crying.`; + case "Her husband sold her into slavery to escape his debts.": + return `${capFirstChar(slave.possessive)} husband sold ${slave.object} into slavery to escape his debts.`; + case "She was voluntarily enslaved after she decided that your arcology was the best place for her to get the steroids that she'd allowed to define her life.": + return `${capFirstChar(slave.pronoun)} was voluntarily enslaved after ${slave.pronoun} decided that your arcology was the best place for ${slave.object} to get the steroids that ${slave.pronoun}'d allowed to define ${slave.possessive} life.`; + case "She came to you to escape being sold to a cruel master after her producer informed her of her debt.": + return `${capFirstChar(slave.pronoun)} came to you to escape being sold to a cruel master after ${slave.possessive} producer informed ${slave.object} of ${slave.possessive} debt.`; + case "You tricked her into enslavement, manipulating her based on her surgical addiction.": + return `You tricked ${slave.object} into enslavement, manipulating ${slave.object} based on ${slave.possessive} surgical addiction.`; + case "You helped free her from a POW camp after being abandoned by her country, leaving her deeply indebted to you.": + return `You helped free ${slave.object} from a POW camp after being abandoned by ${slave.possessive} country, leaving ${slave.object} deeply indebted to you.`; + case "You purchased her in order to pave the way for her brother to take the throne.": + return `You purchased ${slave.object} in order to pave the way for ${slave.possessive} brother to take the throne.`; + case "You purchased her as a favor to her father.": + return `You purchased ${slave.object} as a favor to ${slave.possessive} father.`; + case "You purchased her from a King after his son put an illegitimate heir in her womb.": + return `You purchased ${slave.object} from a King after his son put an illegitimate heir in ${slave.possessive} womb.`; + case "You acquired her in the last stages of your career as a successful venture capitalist.": + case "Drugs and alcohol can be a potent mix; the night that followed it can sometimes be hard to remember. Needless to say, once your belly began swelling with her, you had to temporarily switch to a desk job for your mercenary group.": + case "You acquired her in the last stages of your career as a noted private military contractor.": + case "You never thought you would be capable of impregnating yourself, but years of pleasuring yourself with yourself after missions managed to create her.": + case "A fresh capture once overpowered you and had his way with you. You kept her as a painful reminder to never lower your guard again.": + case "Your slaving troop kept several girls as fucktoys, you sired her in your favorite.": + case "You enslaved her personally during the last stages of your slaving career.": + case "You sired her in yourself after an arcology owner, impressed by your work, rewarded you with a night you'll never forget.": + case "You conceived her after a male arcology owner, impressed by your work, rewarded you with a night you'll never forget.": + case "You sired her after a female arcology owner, impressed by your work, rewarded you with a night you'll never forget.": + case "You received her as a gift from an arcology owner impressed by your work.": + case "You captured her during your transition to the arcology": + case "You won her at cards, a memento from your life as one of the idle rich before you became an arcology owner.": + case "You brought her into the arcology mindbroken, little more than a walking collection of fuckable holes.": + case "You brought her into the arcology mindbroken, little more than a human onahole.": + case "She grew up sheltered and submissive, making her an easy target for enslavement.": + case "She was fresh from the slave markets when you acquired her.": + case "She chose to be a slave because the romanticized view of it she had turns her on.": + case "She was previously owned by a creative sadist, who has left a variety of mental scars on her.": + case "She was taken as a slave by a Sultan, who presented her as a gift to a surveyor.": + case "She is the winner of a martial arts slave tournament. You won her in a bet.": + case "She was homeless and willing to do anything for food, which in the end resulted in her becoming a slave.": + case "She was sold to you by an anonymous person who wanted her to suffer.": + case "You received her from a surgeon who botched an implant operation on her and needed to get her out of sight.": + case "She offered herself to you for enslavement to escape having plastic surgery foisted on her.": + case "You turned her into a slave girl after she fell into debt to you.": + case "She was raised in a radical slave school that treated her with drugs and surgery from a very young age.": + case "She was raised in a radical slave school that treated her from a very young age, up to the point that she never experienced male puberty.": + case "She was a runaway slave captured by a gang outside your arcology. You bought her cheap after she was harshly used by them.": + case "She was the private slave of a con artist cult leader before he had to abandon her and flee.": + case "You helped her give birth, leaving her deeply indebted to you.": + case "You purchased her from a King after she expressed knowledge of the prince's affair with another servant.": + r = r.replace(/(?<=\s)herself(?=\s|,|\.|;|\?|!)/g, slave.objectReflexive); + r = r.replace(/(?<=\s|^)Herself(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.objectReflexive)); + r = r.replace(/(?<=\s)she(?=\s|,|\.|;|\?|!)/g, slave.pronoun); + r = r.replace(/(?<=\s|^)She(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.pronoun)); + r = r.replace(/(?<=\s)her(?=\s|,|\.|;|\?|!)/g, slave.object); + r = r.replace(/(?<=\s|^)Her(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.object)); + return r; + default: + r = r.replace(/(?<=\s)herself(?=\s|,|\.|;|\?|!)/g, slave.objectReflexive); + r = r.replace(/(?<=\s|^)Herself(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.objectReflexive)); + r = r.replace(/(?<=\s)she(?=\s|,|\.|;|\?|!)/g, slave.pronoun); + r = r.replace(/(?<=\s|^)She(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.pronoun)); + r = r.replace(/(?<=\s)her(?=\s|,|\.|;|\?|!)/g, slave.possessive); + r = r.replace(/(?<=\s|^)Her(?=\s|,|\.|;|\?|!)/g, capFirstChar(slave.possessive)); + return r; + } +}; diff --git a/src/pregmod/fSlaveSelfImpreg.tw b/src/pregmod/fSlaveSelfImpreg.tw index aa4a92fa6c730176259ba71c71ecb8580e328948..04edc25a2eb985a92e834a35ab651fb7a0889c8b 100644 --- a/src/pregmod/fSlaveSelfImpreg.tw +++ b/src/pregmod/fSlaveSelfImpreg.tw @@ -23,7 +23,7 @@ <<set _coop = false>> <<set $activeSlave.devotion -= 2>> <<elseif (_pfh)>> - but, despite the @@;indignity@@ of the situation, $his resistance seems strangely muted. It's fairly obvious that something about the idea of being impregnated is @@.hotpink;strangely appealing@@ to $him. + but, despite the @@.mediumorchid;indignity@@ of the situation, $his resistance seems strangely muted. It's fairly obvious that something about the idea of being impregnated is @@.hotpink;strangely appealing@@ to $him. <<set _coop = false>> <<set $activeSlave.devotion -= 4>> <<else>> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index 0966e28568d04f1ede0e43a8d0f07952c8d61591..688eacac07c7a85936bf25160a6d355ebdc1142e 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -5840,7 +5840,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del <br><<link "Spend the day in bed">> <<EventNameDelink $activeSlave>> <<replace "#result">> - What's the point of becoming a wealthy tycoon in an anarcho-libertarian paradise if you have to obey the rules all the time? You tell $assistantName to cancel the appointment. Then, you wake your bedmate, and <<if $PC.dick == 1>>get a blowjob<<if $PC.vagina == 1>> and some attention for your pussy<</if>><<else>>have $him eat you out<</if>> under the sheet while you enjoy the lurid sunrise through the glass wall of your bedroom. When the sun is up and you've <<if $PC.dick == 1>>shot your load down $his throat<<else>>climaxed twice<</if>>, you pull the bemused $girl up alongside you again, bring the sheets up over you both, switch on a wallscreen, and ask $him if there's anything $he'd like to <<if canSee($activeSlave)>>watch<<elseif canHear($activeSlave)>>listen to<<else>>put on<</if>>. $He smiles incredulously, but after you encourage $him $he @@.mediumaquamarine;finds $his confidence@@ and admits that there's a Free Cities serial drama about slave life that $he enjoys. You put it on and watch three episodes with $him. It's terribly insipid, but there's a lot of explicit sex to liven things up, and all the actresses are nice enough to look at. $activeSlave.slaveName cuddles comfortably with you the entire time, <<if canSee($activeSlave)>>watching raptly<<else>>listening intently<<else>>staying as silent as possible<</if>> and doing $his best to explain the wretchedly trite plot you've missed. + What's the point of becoming a wealthy tycoon in an anarcho-libertarian paradise if you have to obey the rules all the time? You tell $assistantName to cancel the appointment. Then, you wake your bedmate, and <<if $PC.dick == 1>>get a blowjob<<if $PC.vagina == 1>> and some attention for your pussy<</if>><<else>>have $him eat you out<</if>> under the sheet while you enjoy the lurid sunrise through the glass wall of your bedroom. When the sun is up and you've <<if $PC.dick == 1>>shot your load down $his throat<<else>>climaxed twice<</if>>, you pull the bemused $girl up alongside you again, bring the sheets up over you both, switch on a wallscreen, and ask $him if there's anything $he'd like to <<if canSee($activeSlave)>>watch<<elseif canHear($activeSlave)>>listen to<<else>>put on<</if>>. $He smiles incredulously, but after you encourage $him $he @@.mediumaquamarine;finds $his confidence@@ and admits that there's a Free Cities serial drama about slave life that $he enjoys. You put it on and watch three episodes with $him. It's terribly insipid, but there's a lot of explicit sex to liven things up, and all the actresses are nice enough to look at. $activeSlave.slaveName cuddles comfortably with you the entire time, <<if canSee($activeSlave)>>watching raptly<<elseif canHear($activeSlave)>>listening intently<<else>>staying as silent as possible<</if>> and doing $his best to explain the wretchedly trite plot you've missed. <<set $activeSlave.oralCount++, $oralTotal++>> You have a meal delivered, <<if $activeSlave.vagina > 0 && canDoVaginal($activeSlave)>> diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index 3c603af2b01e2b696befcb07732ef2ea849e9b3c..057172ab89a125d5f2c236ba5efff5fd3ae169c9 100644 --- a/src/uncategorized/longSlaveDescription.tw +++ b/src/uncategorized/longSlaveDescription.tw @@ -788,11 +788,11 @@ is <</if>> <<case "sadist">> <<if ($activeSlave.fetishStrength > 95)>> - $He is an @@.lightcoral;aggressive sadist@@; $he's constantly plotting to control, abuse, and hurt other slaves. + $He is an @@.lightcoral;aggressive sadist;@@ $he's constantly plotting to control, abuse, and hurt other slaves. <<elseif ($activeSlave.fetishStrength > 60)>> - $He has @@.lightcoral;sadistic tendencies@@; $he enjoys watching other slaves in pain, but truly loves causing pain $himself. + $He has @@.lightcoral;sadistic tendencies;@@ $he enjoys watching other slaves in pain, but truly loves causing pain $himself. <<else>> - $He gets off on @@.lightcoral;the suffering of others@@; $he enjoys watching other slaves in pain. + $He gets off on @@.lightcoral;the suffering of others;@@ $he enjoys watching other slaves in pain. <</if>> <<case "masochist">> <<if ($activeSlave.fetishStrength > 95)>> @@ -1259,7 +1259,7 @@ is <<if $saleDescription == 0>> <<if $activeSlave.origin != 0>> - <<originDescription $activeSlave>> + <<= originPronounReplace($activeSlave)>> <</if>> <</if>> @@ -1900,7 +1900,7 @@ $He is <</if>> <<if $activeSlave.combatSkill > 0>> - $He is @@.aquamarine;skilled at combat@@: $he is comfortable with the use of modern firearms and edged weapons, and $his hands <<if $activeSlave.amp == -4>>would be deadly weapons even if they weren't full of deadly weapons already<<elseif $activeSlave.amp > 0>>would be deadly weapons if $he had any<<else>>are deadly weapons<</if>>. + $He is @@.aquamarine;skilled at combat:@@ $he is comfortable with the use of modern firearms and edged weapons, and $his hands <<if $activeSlave.amp == -4>>would be deadly weapons even if they weren't full of deadly weapons already<<elseif $activeSlave.amp > 0>>would be deadly weapons if $he had any<<else>>are deadly weapons<</if>>. <</if>> <</if>> diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw index 0adf02c5b6042ee9fb380bf1f1da3ad4521e338e..97c3b3cc6b28cc59a9ba7123588a68548ad41478 100644 --- a/src/uncategorized/newSlaveIntro.tw +++ b/src/uncategorized/newSlaveIntro.tw @@ -268,11 +268,11 @@ The legalities completed, ''__@@.pink;<<= SlaveFullName($activeSlave)>>@@__'' << <</if>> <<if ($PC.career == "escort")>> - $He recognizes you as a whore, leading $him to @@.mediumaquamarine;fear you less@@; however, $his views of you also leave $him less willing to @@.mediumorchid;listen to you.@@ + $He recognizes you as a whore, leading $him to @@.mediumaquamarine;fear you less;@@ however, $his views of you also leave $him less willing to @@.mediumorchid;listen to you.@@ <<set $activeSlave.devotion -= 10>> <<set $activeSlave.trust += 10>> <<elseif ($PC.career == "servant")>> - Seeing you in your <<if $PC.title == 0>>maid's dress<<else>>maid's outfit<</if>> @@.mediumaquamarine;calms $his fears@@; however, $he is unwilling to @@.mediumorchid;listen to a servant.@@ + Seeing you in your <<if $PC.title == 0>>maid's dress<<else>>maid's outfit<</if>> @@.mediumaquamarine;calms $his fears;@@ however, $he is unwilling to @@.mediumorchid;listen to a servant.@@ <<set $activeSlave.devotion -= 3>> <<set $activeSlave.trust += 10>> <<elseif ($PC.career == "gang")>> diff --git a/src/uncategorized/peHeadgirlConcubine.tw b/src/uncategorized/peHeadgirlConcubine.tw index 4cb01df4ae027d1d33c624baa3c71e3c008dc61a..28a839e881936ce8febe48bfef88e8af9f349013 100644 --- a/src/uncategorized/peHeadgirlConcubine.tw +++ b/src/uncategorized/peHeadgirlConcubine.tw @@ -8,7 +8,15 @@ <<setLocalPronouns $Concubine 2>> <<setAssistantPronouns>> -You wake up one morning to find $HeadGirl.slaveName and $Concubine.slaveName waiting next to your bed. It's immediately obvious that they both have a minor item of business for you, since nothing was urgent enough to wake you early, and they evidently both came in to catch you at your normal hour of rising. They're kneeling side by side next to the bed<<if $HeadGirl.boobs + $Concubine.boobs > 10000>> (a position that smashes their massive breasts together on one side)<<elseif $HeadGirl.butt + $Concubine.butt > 10>> (a position that smashes their massive asses together on one side)<</if>>, and it's also obvious that they've been filling the few minutes they've been waiting for you to wake up by making out. Their lips are moist, $Concubine.slaveName's $Concubine.skin cheeks are a little flushed, and there's even a little unnoticed strand of saliva running from _his2 mouth to $HeadGirl.slaveName's. They both look at you expectantly, wondering whether to speak up or save their questions for after you take a moment to get ready for your day. +You wake up one morning to find $HeadGirl.slaveName and $Concubine.slaveName waiting next to your bed. It's immediately obvious that they both have a minor item of business for you, since nothing was urgent enough to wake you early, and they evidently both came in to catch you at your normal hour of rising. They're kneeling side by side next to the +<<if $HeadGirl.boobs + $Concubine.boobs > 10000>> + bed (a position that smashes their massive breasts together on one side), +<<elseif $HeadGirl.butt + $Concubine.butt > 10>> + bed (a position that smashes their massive asses together on one side), +<<else>> + bed, +<</if>> +and it's also obvious that they've been filling the few minutes they've been waiting for you to wake up by making out. Their lips are moist, $Concubine.slaveName's $Concubine.skin cheeks are a little flushed, and there's even a little unnoticed strand of saliva running from _his2 mouth to $HeadGirl.slaveName's. They both look at you expectantly, wondering whether to speak up or save their questions for after you take a moment to get ready for your day. <br><br> diff --git a/src/utility/descriptionWidgets.tw b/src/utility/descriptionWidgets.tw index 40b61947ba4a0d691848d550465aad503397ffc3..11a3715090e12f4f9b076783e96849977987648d 100644 --- a/src/utility/descriptionWidgets.tw +++ b/src/utility/descriptionWidgets.tw @@ -269,7 +269,7 @@ <</widget>> - +/* deprecated, use originPronounReplace() instead. For now this serves as a convenient list of default origins. */ <<widget "originDescription">> <<switch $args[0].origin>> @@ -284,8 +284,6 @@ <<print "You acquired $him in the last stages of your career as a successful venture capitalist.">> <<case "Drugs and alcohol can be a potent mix; the night that followed it can sometimes be hard to remember. Needless to say, once your belly began swelling with her, you had to temporarily switch to a desk job for your mercenary group.">> <<print "Drugs and alcohol can be a potent mix; the night that followed it can sometimes be hard to remember. Needless to say, once your belly began swelling with $him, you had to temporarily switch to a desk job for your mercenary group.">> - <<case "Drugs and alcohol can be a potent mix; the night that followed it can sometimes be hard to remember. Needless to say, once your belly began swelling with her, you had to temporarily switch to a desk job for your mercenary group.">> - <<print "Drugs and alcohol can be a potent mix; the night that followed it can sometimes be hard to remember. Needless to say, once your belly began swelling with $him, you had to temporarily switch to a desk job for your mercenary group.">> <<case "A trip to a brothel after a mission resulted in an unexpected surprise years later.">> <<print "A trip to a brothel after a mission resulted in an unexpected surprise years later.">> <<case "You acquired her in the last stages of your career as a noted private military contractor.">> diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index 9c5185ab0852b87f7801d016b3d178762dd7b62f..ef33cea7713ca20a0543024838dca10abf0a3a39 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -16418,11 +16418,11 @@ $He has <<elseif $activeSlave.nationality == "Stateless">> $He has spent so much time in the Free Cities that their statelessness is effectively $his nationality; ethnically, $he's <<elseif $activeSlave.nationality == "Zimbabwean" && $activeSlave.race == "white">> - $He's originally @@.tan;Rhodesian@@; ethnically, $he's + $He's originally @@.tan;Rhodesian;@@ ethnically, $he's <<elseif $activeSlave.nationality == "Vatican">> - $He's originally @@.tan;from Vatican City@@; ethnically, $he's + $He's originally @@.tan;from Vatican City;@@ ethnically, $he's <<else>> - $He's originally @@.tan;<<print $activeSlave.nationality>>@@; ethnically, $he's + $He's originally @@.tan;<<print $activeSlave.nationality>>;@@ ethnically, $he's <</if>> @@.tan;<<print $activeSlave.race>>,@@ and $his skin is <<print $activeSlave.skin>><<if $activeSlave.markings == "freckles">> and lightly freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><<elseif $activeSlave.markings == "heavily freckled">> and heavily freckled<<if (($activeSlave.skin == "pale") || ($activeSlave.skin == "fair")) && ($activeSlave.hColor != "red")>>, an attractive combination<</if>><</if>>. <<if $activeSlave.race != $activeSlave.origRace && $saleDescription != 1>> @@ -16894,7 +16894,7 @@ $He has <<elseif $activeSlave.fuckdoll > 0>> $activeSlave.slaveName is a @@.pink;quadruple amputee,@@ making $him a convenient torso-only sex toy. <<else>> - The most obvious thing about $activeSlave.slaveName is that $he is a @@.pink;quadruple amputee@@: $he has neither arms nor legs. + The most obvious thing about $activeSlave.slaveName is that $he is a @@.pink;quadruple amputee:@@ $he has neither arms nor legs. <</if>> <</if>>