diff --git a/devNotes/VersionChangeLog-Premod+LoliMod.txt b/devNotes/VersionChangeLog-Premod+LoliMod.txt index bec69cdab9b4300fed24557172bb46ad0da95404..bc3188d87dd74f62d8d1b61f579380008d0f6e47 100644 --- a/devNotes/VersionChangeLog-Premod+LoliMod.txt +++ b/devNotes/VersionChangeLog-Premod+LoliMod.txt @@ -11,6 +11,7 @@ Pregmod -fertility diet no longer blocked by chastity -RA can now apply contraceptives to postpartum slaves -RA can now manage basic abortions + -added abortion tracking tattoos -fixes 0.10.7.1-2.1.x diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index 7051d51e59ca5aa5ae521c06eba74bfa60021a99..8be0e9ecbdcf60f5d487c9c899570d090c7c713d 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -1060,6 +1060,7 @@ window.DefaultRules = (function() { } if (lastPregRule(slave, V.defaultRules)) { slave.preg = -1; } else { slave.preg = 0; } + if (slave.abortionTat > -1) { slave.abortionTat++, cashX(forceNeg(V.surgeryCost), "slaveSurgery", slave); } V.reservedChildren = FetusGlobalReserveCount("incubator"); V.reservedChildrenNursery = FetusGlobalReserveCount("nursery"); slave.pregType = 0, slave.pregSource = 0, slave.pregKnown = 0, slave.pregWeek = -2; diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 717224238844c7c70fed9c4212b55b34b66d807f..db5443fe9898c5dc957038ae39f6cc4b88c16e4d 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -1811,6 +1811,13 @@ App.Entity.SlaveState = class SlaveState { * * "a butterfly" * @type {string|number} */ this.bellyTat = 0; + /** + * Slave has a series of tattoos to denote how many abortions she has had. + * * -1: no tattoo + * * 0: assigned to have tattoo, may not have one yet + * * 1+: number of abortion tattoos she has + */ + this.abortionTat = -1; /** Slave will give birth this week. * * 1: true; 0: false */ diff --git a/src/js/assayJS.js b/src/js/assayJS.js index 2e62bac72ac747eb1c14f3fe925da89fa096c724..b12d736de35bc04bcae7235fc90c04cc700b8863 100644 --- a/src/js/assayJS.js +++ b/src/js/assayJS.js @@ -170,6 +170,9 @@ window.TatScore = /** @param {App.Entity.SlaveState} slave */ function (slave) { } else if (slave.anusTat !== 0) { tatScore += 1.25; } + if (slave.abortionTat > 0 || (slave.abortionTat == 0 && slave.pregKnown == 1)) { + tatScore += 1; + } return tatScore; }; diff --git a/src/npc/abort.tw b/src/npc/abort.tw index 6974d0a89475fcc66d4537929a827a272900e1d6..2849719dfce626fbdc77e7c3102ff996b85f591a 100644 --- a/src/npc/abort.tw +++ b/src/npc/abort.tw @@ -36,6 +36,12 @@ The remote surgery makes aborting a pregnancy quick and efficient. <</if>> <</if>> +<<if $activeSlave.abortionTat > -1>> + The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($activeSlave.abortionTat)>> crossed out infant. + <<set $activeSlave.abortionTat++>> + <<run cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)>> +<</if>> + <<if lastPregRule($activeSlave,$defaultRules)>><<set $activeSlave.preg = -1>><<else>><<set $activeSlave.preg = 0>><</if>> <<set $reservedChildren = FetusGlobalReserveCount("incubator")>> diff --git a/src/pregmod/saClothes.tw b/src/pregmod/saClothes.tw index 09c0d8520a3881ff95c0f785bcd7e31563c8ad98..3783bef62753b193fea9d6b19bcdbbf35038bdd5 100644 --- a/src/pregmod/saClothes.tw +++ b/src/pregmod/saClothes.tw @@ -457,6 +457,11 @@ <<set $slaves[$i].devotion += 4>> <</if>> <</if>> + <<if $slaves[$i].abortionTat > -1>> + The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant. + <<set $slaves[$i].abortionTat++>> + <<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>> + <</if>> <<else>> <<if $slaves[$i].waist <= -95>> $His waist is so absurd that $his extreme corsetage does not affect $him further. @@ -806,6 +811,11 @@ @@.hotpink;pleased by this stark development,@@ since $he is so attentive to your will. $He also expects $he'll be able to fuck better now. <<set $slaves[$i].devotion += 4>> <</if>> + <<if $slaves[$i].abortionTat > -1>> + The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant. + <<set $slaves[$i].abortionTat++>> + <<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>> + <</if>> <</if>> <</if>> <</if>> diff --git a/src/pregmod/widgets/bodyswapWidgets.tw b/src/pregmod/widgets/bodyswapWidgets.tw index 509d0727be931e3d51c975ab68db1b6969b2260f..4c0c353591316d1638e32b8fd6b15cb79c109db2 100644 --- a/src/pregmod/widgets/bodyswapWidgets.tw +++ b/src/pregmod/widgets/bodyswapWidgets.tw @@ -184,6 +184,7 @@ <<set $args[0].buttplug = $args[1].buttplug>> <<set $args[0].customTat = $args[1].customTat>> <<set $args[0].bellyTat = $args[1].bellyTat>> +<<set $args[0].abortionTat = $args[1].abortionTat>> <<set $args[0].bellySag = $args[1].bellySag>> <<set $args[0].bellySagPreg = $args[1].bellySagPreg>> <<set $args[0].induce = $args[1].induce>> diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw index 25f73cd2c4750a3ed51fd67d1af6e07976af2de1..774145a94508eb1f303a7a81528ae0878f241905 100644 --- a/src/pregmod/widgets/pregmodWidgets.tw +++ b/src/pregmod/widgets/pregmodWidgets.tw @@ -159,6 +159,9 @@ <<if ndef $args[0].clone>> <<set $args[0].clone = 0>> <</if>> +<<if ndef $args[0].abortionTat>> + <<set $args[0].abortionTat = -1>> +<</if>> <<if def $args[0].reservedChildren>> <<run delete $args[0].reservedChildren>> <</if>> diff --git a/src/uncategorized/bodyModification.tw b/src/uncategorized/bodyModification.tw index f5a749171aa9cf6fe52899e6a4d4c57748ca4fdd..a1342eced5a031dab1c29ea94104bb2542f77c17 100644 --- a/src/uncategorized/bodyModification.tw +++ b/src/uncategorized/bodyModification.tw @@ -764,6 +764,27 @@ Choose a tattoo style: $His middle isn't large enough to be a suitable canvas for a navel focused tattoo. <</if>> +<br> +<<if $activeSlave.abortionTat > 0>> + <<if $activeSlave.abortionTat > 1>> + $He has a series of numberToWords($activeSlave.abortionTat) crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach. + <<else>> + $He has a single crossed out baby-shaped tattoo<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach. + <</if>> + //[[Remove tattoos|Body Modification][$activeSlave.abortionTat = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]]// +<<elseif $activeSlave.abortionTat == 0>> + <<if $activeSlave.pregKnown == 1>> + $He has a single baby-shaped temporary tattoo adorning $his stomach. + //[[Remove it|Body Modification][$activeSlave.abortionTat = -1]]// + <<else>> + $He is scheduled to receive a tattoo each time $he gets an abortion or miscarries. + //[[Cancel|Body Modification][$activeSlave.abortionTat = -1]]// + <</if>> +<<else>> + Have $him receive a tattoo for each abortion or miscarriage $he has. + //[[Begin keeping track|Body Modification][$activeSlave.abortionTat = 0]]// +<</if>> + <br> <br> diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw index 54eab54f4c706170d84721f6f676013e61c736cb..483c6985d72c84c899eda9a11561f78c2a8ef6da 100644 --- a/src/uncategorized/saDrugs.tw +++ b/src/uncategorized/saDrugs.tw @@ -1099,6 +1099,11 @@ <<set $slaves[$i].devotion += 4>> <</if>> <</if>> + <<if $slaves[$i].abortionTat > -1>> + The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant. + <<set $slaves[$i].abortionTat++>> + <<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>> + <</if>> <</if>> <</if>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 798908ddcb20d5b3992f5cced07042b788b2b44b..9567398905c0667d1e476c1c358583e5998d7d59 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -4512,6 +4512,10 @@ Society is @@.red;disapproving@@ of $slaves[$i].slaveName's flat, unimpregnated stomach. <<= FSChangePorn("Repopulationist", -2)>> <</if>> + <<if $slaves[$i].abortionTat > 0>> + Society @@.red;is disgusted@@ by the tally of aborted children adorning $his skin. + <<= FSChangePorn("Repopulationist", -1)>> + <</if>> <<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1>> <<if $slaves[$i].preg > 30>> Society @@.green;loves@@ $slaves[$i].slaveName's advanced pregnancy. It's very trendy. @@ -4534,6 +4538,10 @@ The Societal Elite @@.green;are pleased@@ your child is growing within $him. The mark covering $his lower belly, coupled with $his gravidity and blessing, @@.green;enamors@@ your populace. <<set $failedElite -= 5+$slaves[$i].pregType>> <<= FSChangePorn("Eugenics", 3)>> + <<if $slaves[$i].abortionTat > 0>> + The tally of aborted children adorning $his middle @@.red;is worrying,@@ however. + <<= FSChangePorn("Eugenics", -1)>> + <</if>> <</if>> <<else>> <<if $slaves[$i].preg > $slaves[$i].pregData.normalBirth/1.33>> @@ -4554,6 +4562,10 @@ Society is @@.green;pleased@@ that $slaves[$i].slaveName is unable to become pregnant. <<= FSChangePorn("Eugenics", 2)>> <</if>> + <<if $slaves[$i].abortionTat > 0>> + The tally of aborted pregnancies adorning $his middle shows @@.green;just how responsible@@ of an owner $he has. + <<= FSChangePorn("Eugenics", 1)>> + <</if>> <<if $slaves[$i].pregKnown == 1 && $eugenicsFullControl != 1>> The Societal Elite @@.red;judge you@@ for keeping pregnant slaves. It falls to the slaveowner to deal with subhuman pregnancies and you are failing in your duties as a member of the Elite. <<set $failedElite += 5+$slaves[$i].pregType>> @@ -4664,6 +4676,14 @@ Society @@.green;approves@@ of $his many body modifications, which advances the public taste for such degradation of slave bodies. <<= FSChangePorn("Degradationist", 1)>> <</if>> + <<if $slaves[$i].abortionTat > 0 && $arcologies[0].FSRepopulationFocus == "unset">> + Society @@.green;<<if $arcologies[0].FSRestart != "unset">>greatly <</if>>approves@@ of $his tally of aborted children. + <<if $arcologies[0].FSRestart != "unset">> + <<= FSChangePorn("Degradationist", 2)>> + <<else>> + <<= FSChangePorn("Degradationist", 1)>> + <</if>> + <</if>> <<if $slaves[$i].voice != 0>> <<if $slaves[$i].lips > 95>> Society @@.green;approves@@ of the way $his mouth, with its useless ability to speak, has been replaced with an appealing hole. @@ -7338,6 +7358,11 @@ <<run SetBellySize($slaves[$i])>> <<run cashX(-100000, "fines", $slaves[$i])>> <<set $failedElite += 150>> + <<if $slaves[$i].abortionTat > -1>> + But hey, $he gets a tattoo signifying $his abortion. Was it worth it? + <<set $slaves[$i].abortionTat++>> + <<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>> + <</if>> <</if>> <</if>> <</if>> @@ -7467,6 +7492,11 @@ <</if>> <</if>> <<set $slaves[$i].pregType = 0, WombFlush($slaves[$i]), $slaves[$i].pregKnown = 0, $slaves[$i].pregWeek = -4>> + <<if $slaves[$i].abortionTat > -1>> + The temporary tattoo of a child has been replaced with $his <<= ordinalSuffix($slaves[$i].abortionTat)>> crossed out infant. + <<set $slaves[$i].abortionTat++>> + <<run cashX(forceNeg($surgeryCost), "slaveSurgery", $slaves[$i])>> + <</if>> <<run SetBellySize($slaves[$i])>> <<set _miscarriage = 1>> <</if>> diff --git a/src/utility/descriptionWidgetsFlesh.tw b/src/utility/descriptionWidgetsFlesh.tw index 6be7862ad2aa99725d9a4fa2412ef5c72e352d37..1beb378b29db77fd6b0880ddc44e53031cebcbd3 100644 --- a/src/utility/descriptionWidgetsFlesh.tw +++ b/src/utility/descriptionWidgetsFlesh.tw @@ -15380,6 +15380,15 @@ $He has $He has an unrecognizable tattoo scrunched around $his navel. <</if>> <</if>> + <<if $activeSlave.abortionTat > 0>> + <<if $activeSlave.abortionTat > 1>> + $He has a series of $activeSlave.abortionTat crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach; one for each pregnancy $he's failed to complete. + <<else>> + $He has a single crossed out, baby-shaped tattoo<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach. + <</if>> + <<elseif $activeSlave.abortionTat == 0 && $activeSlave.pregKnown == 1>> + $He has a single baby-shaped temporary tattoo adorning $his stomach. + <</if>> <<if ($activeSlave.brand != 0) && ($activeSlave.brandLocation == "belly")>> $He has $activeSlave.brand branded into the flesh of $his $activeSlave.brandLocation. <</if>> @@ -18660,6 +18669,16 @@ $He has <</if>> <</if>> + <<if $activeSlave.abortionTat > 0>> + <<if $activeSlave.abortionTat > 1>> + $He has a series of $activeSlave.abortionTat crossed out baby-shaped tattoos<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach; one for each pregnancy $he's failed to complete. + <<else>> + $He has a single crossed out, baby-shaped tattoo<<if $activeSlave.pregKnown == 1>>, and one uncrossed one,<</if>> adorning $his stomach. + <</if>> + <<elseif $activeSlave.abortionTat == 0 && $activeSlave.pregKnown == 1>> + $He has a single baby-shaped temporary tattoo adorning $his stomach. + <</if>> + <<if ($activeSlave.brand != 0) && ($activeSlave.brandLocation == "belly")>> $He has $activeSlave.brand branded into the flesh of $his $activeSlave.brandLocation. <</if>> diff --git a/src/utility/slaveCreationWidgets.tw b/src/utility/slaveCreationWidgets.tw index 6c02ccdd7c05644604f0d216a500da64b24e0fa1..54881cbd58f7fe9cdef7a7a9bea9560d78a0c9cd 100644 --- a/src/utility/slaveCreationWidgets.tw +++ b/src/utility/slaveCreationWidgets.tw @@ -2483,6 +2483,11 @@ <<if random (1,100) > 90>> <<set $activeSlave.hears = -2>> <</if>> + <<if $arcologies[_market].FSRepopulationFocus == "unset" && $arcologies[_market].FSBodyPurist == "unset">> + <<if isFertile($activeSlave) && random(1,10) == 9>> + <<set $activeSlave.abortionTat = random(1, (Math.min($activeSlave.physicalAge-$fertilityAge, $activeSlave.physicalAge-$minimumSlaveAge))*2)>> + <</if>> + <</if>> <</if>> <<if $arcologies[_market].FSBodyPurist > 80>>