diff --git a/src/endWeek/economics/reputation.js b/src/endWeek/economics/reputation.js index ec72bc7582828d266748e5ec7fb2fe17b6f14c3b..d2ab9d3776896de74c88c93f8f6cdb2b14938d8d 100644 --- a/src/endWeek/economics/reputation.js +++ b/src/endWeek/economics/reputation.js @@ -977,14 +977,15 @@ App.EndWeek.reputation = function() { } } if (V.rapedThisWeek) { - r.push(`There's ${V.PC.degeneracy ? "also " : ""}a rumor you've been raped${V.rapedThisWeek > V.PC.counter.raped && V.PC.counter.raped > 0 ? "again" : ""}.`); + r.push(`There's ${V.PC.degeneracy ? "also " : ""}a rumor you've been raped${V.PC.counter.raped > 0 ? "again" : ""}.`); let rapeFameDec = 25 + V.rapedThisWeek * 75; if (V.arcologies[0].FSAntebellumRevivalist !== "unset") { if (V.SecExp.edicts.weaponsLaw > 0) { - r.push(`Your citizens are relieved that it is allowed to carry weapons to defend themselves against possible attacks.`); + r.push(`Your citizens are relieved that they are allowed to bear arms to defend themselves against possible attacks.`); rapeFameDec *= .8; } else { - r.push(`Your citizens would feel safer if they were allowed to carry weapons to defend themselves against possible attacks.`); + r.push(`Your citizens would feel safer if they were allowed to bear weapons to defend themselves against possible attacks.`); + rapeFameDec *= 1.2; } } else if (V.arcologies[0].FSSubjugationist !== "unset" && V.PC.race === V.arcologies[0].FSSubjugationistRace) { r.push(`Your citizens see your rape as normal since you are ${V.PC.race}.`); diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js index 1e67757f0a785f3dcaa3efc15cee3ef456f3641b..76d0cf98967047ffb52020d7161daecd994a90ce 100644 --- a/src/events/intro/pcAppearance.js +++ b/src/events/intro/pcAppearance.js @@ -980,6 +980,7 @@ App.UI.Player.design = function() { ["Societal Elite", -6], ["Designer baby", -7], ["Futanari Sister", -9], + ["Rapist", -10], ]) .showTextBox(); } diff --git a/src/events/scheduled/sePlayerBirth.js b/src/events/scheduled/sePlayerBirth.js index 6f3e3db780c8fb2cd78af0bdb42bba694591bc5c..6bba001e6810b34cd1ee815995f4264337a7a7c4 100644 --- a/src/events/scheduled/sePlayerBirth.js +++ b/src/events/scheduled/sePlayerBirth.js @@ -61,6 +61,7 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent { let elite = 0; let lab = 0; let futaS = 0; + let rapists = 0; let slavesLength = 0; let babies = []; for (const baby of birthed) { @@ -91,6 +92,9 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent { } else if (baby.fatherID === -9) { futaS++; babies.push("a Futanari Sister"); + } else if (baby.fatherID === -10) { + rapists++; + babies.push("a rapist"); } else { const babyDaddy = getSlave(baby.fatherID); if (babyDaddy) { @@ -720,6 +724,8 @@ App.Events.SEPlayerBirth = class SEPlayerBirth extends App.Events.BaseEvent { V.PC.counter.birthElite += elite; V.PC.counter.birthLab += lab; V.PC.counter.birthDegenerate += slavesLength; + V.PC.counter.birthRape += rapists; + V.PC.counter.birthFutaSis += futaS; if (curBabies === 1) { let p = 0; diff --git a/src/facilities/facilityRetrievalWorkaround.js b/src/facilities/facilityRetrievalWorkaround.js index 2fa4db315169853d4910ff5af0e06d553012df10..b0c4a74b62d649887c3680ee8d04f611789ef7c3 100644 --- a/src/facilities/facilityRetrievalWorkaround.js +++ b/src/facilities/facilityRetrievalWorkaround.js @@ -105,6 +105,8 @@ App.UI.facilityRetrievalWorkaround = function(facility) { r.append(`Lab crafted.`); } else if (slave.father === -9) { r.append(`Futanari Sister.`); + } else if (slave.father === -10) { + r.append(`Your rapist.`); } else { r.append(missingSlave); } diff --git a/src/facilities/nursery/utils/nurseryUtils.js b/src/facilities/nursery/utils/nurseryUtils.js index 7240d517b2f56b2e21aa0bdfd110963ff4121a18..dc381021964a9b92a8eaddf0e5fd179ff53c7e70 100644 --- a/src/facilities/nursery/utils/nurseryUtils.js +++ b/src/facilities/nursery/utils/nurseryUtils.js @@ -751,6 +751,9 @@ App.Facilities.Nursery.nurserySort = function nurserySort() { case -9: r += `the Futanari Sister's`; break; + case -10: + r += `your rapist`; + break; default: if (slave.preg <= 5) { r += `someone's, though it is too early to tell whose,`; diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js index 29de7c69fa552f95f79412a77fd7dc2d4a2967d9..c831d940dc3f6f6f97680dc3ae3c32da7f6efc29 100644 --- a/src/js/SlaveState.js +++ b/src/js/SlaveState.js @@ -1404,6 +1404,7 @@ App.Entity.SlaveState = class SlaveState { * accepts ID See Pregnancy Control section for more. * * Who sired her pregnancy + * * -10: a rapist * * -9: a futanari sister * * -8: an animal * * -7: designer baby @@ -2178,6 +2179,7 @@ App.Entity.SlaveState = class SlaveState { * | *-6* | Societal Elite | * | *-8* | Animal | * | *-9* | Futanari Sister | + * | *-10* | Rapist | * @type {Set<number>} */ this.partners = new Set(); diff --git a/src/js/birth/birth.js b/src/js/birth/birth.js index f12ff10d0eb253c1c95e676764b0842ff46d5aa9..bf8dabdd9c5a8baffe023dac2920b95fc259cff2 100644 --- a/src/js/birth/birth.js +++ b/src/js/birth/birth.js @@ -425,6 +425,8 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false, artRen fathers.push("one of your animals"); } else if (baby.fatherID === -9) { fathers.push("a Futanari Sister"); + } else if (baby.fatherID === -10) { + fathers.push("a rapist"); } else { const babyDaddy = findFather(baby.fatherID); if (babyDaddy) { @@ -2133,6 +2135,8 @@ globalThis.birth = function(slave, {birthStorm = false, cSection = false, artRen fathers.push("one of your animals"); } else if (baby.fatherID === -9) { fathers.push("a Futanari Sister"); + } else if (baby.fatherID === -10) { + fathers.push("a rapist"); } else { const babyDaddy = findFather(baby.fatherID); if (babyDaddy) { diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js index bc5183d404c853220675e15c5414502aae02878b..af0b4412913e9813515687d6d9fb709ad501b52e 100644 --- a/src/js/sexActsJS.js +++ b/src/js/sexActsJS.js @@ -547,6 +547,7 @@ globalThis.seX = function(slave1, act1, slave2, act2 = "penetrative", count = 1) * | *-6* | Societal Elite | * | *-8* | Animal | * | *-9* | Futanari Sister | + * | *-10* | Rapist | */ function addPartner(slave, partner) { /** @returns {FC.HumanState} */ diff --git a/src/npc/children/ChildState.js b/src/npc/children/ChildState.js index b02ba500b972bf8f426382953129cae763d45833..2d80ae90c4deb44d3c6a01943fe8399a96a83fce 100644 --- a/src/npc/children/ChildState.js +++ b/src/npc/children/ChildState.js @@ -737,6 +737,7 @@ App.Facilities.Nursery.ChildState = class ChildState { * accepts ID See Pregnancy Control section for more. * * Who sired her pregnancy + * * -10: a rapist * * -9: a futanari sister * * -8: an animal * * -7: designer baby diff --git a/src/npc/descriptions/womb/pregnancy.js b/src/npc/descriptions/womb/pregnancy.js index 0f66527bce7263da69dde812134ae5ddceeba496..10cc554a80974ff3228c7fdcbfc986b9b6e4ad23 100644 --- a/src/npc/descriptions/womb/pregnancy.js +++ b/src/npc/descriptions/womb/pregnancy.js @@ -589,6 +589,7 @@ App.Desc.pregnancy = function(slave, descType = DescType.NORMAL) { 6: `a member of the Societal Elite`, 8: `one of your pets`, 9: `a Futanari Sister`, + 10: `a rapist`, }; daddy = desc[Math.abs(daddy)]; } diff --git a/src/npc/generate/generateGenetics.js b/src/npc/generate/generateGenetics.js index 5f0b207a5392a21ca379643f2c3713447d53fd2e..220b414bd53cf99bd7476e2c4a4c696915de27f4 100644 --- a/src/npc/generate/generateGenetics.js +++ b/src/npc/generate/generateGenetics.js @@ -261,6 +261,9 @@ globalThis.generateGenetics = (function() { case -9: fatherName = "A Futanari Sister"; break; + case -10: + fatherName = "A rapist"; + break; default: fatherName = "Unknown"; } diff --git a/src/npc/interaction/fSuckDick.js b/src/npc/interaction/fSuckDick.js index 9a17523da0cebf08c5e55d77a014039014b2424f..692299830cbbfe8ccec0b5ab14ec94f5370e73f7 100644 --- a/src/npc/interaction/fSuckDick.js +++ b/src/npc/interaction/fSuckDick.js @@ -537,7 +537,7 @@ App.Interact.fSuckDick = function(slave) { } else if (isHorny(slave) && slave.devotion < 50 && slave.trust > 50 && jsRandom(1, 100) > 50) { // Slaves unable to warn with time enough r.push(`${He} warns you that ${his} orgasm is imminent at the time you feel a throbbing at the base of the dick, and ${amount <= 100 ? "liquid splatters in the back of your mouth" : "a thick spurt fills your mouth"}.`); - r.push(`You pull away immediately, letting go what's in your mouth. ${He} lets ${himself} go, the expression on ${his} face is worried, but ${his} orgasm and ${his} moans increase in intensity, having cummed in your mouth arouses ${him}${isHorny(V.PC) ? ", and you too." : "."} You look at ${him} threateningly, you're really angry.`); + r.push(`You pull away immediately, taking out what's in your mouth. ${He} lets ${himself} go, the expression on ${his} face is worried, but ${his} orgasm and ${his} moans increase in intensity, having cummed in your mouth arouses ${him}${isHorny(V.PC) ? ", and you too." : "."} You look at ${him} threateningly, you're really angry.`); if (isHorny(V.PC)) { r.push(`You can't control yourself anymore and an intense, extremely pleasurable and endless orgasm takes control of your mind,`); diff --git a/src/player/js/PlayerState.js b/src/player/js/PlayerState.js index 7b3d9cc5de8df3fbda7af0bd52a51bd13d1de32d..55b779460f0e99b943b29a18692c7dd1e763996a 100644 --- a/src/player/js/PlayerState.js +++ b/src/player/js/PlayerState.js @@ -106,6 +106,8 @@ App.Entity.PlayerActionsCountersState = class { this.birthSelf = 0; /** how many designer babies you've produced */ this.birthLab = 0; + /** hoy many children you've had fruit of unknown rapists */ + this.birthRape = 0; /** untracked births */ this.birthOther = 0; /** how many units of your cum are stored away for artificially inseminating slaves */ @@ -1552,7 +1554,7 @@ App.Entity.PlayerState = class PlayerState { * | *-6* | Societal Elite* | * | *-8* | Animal* | * | *-9* | Futanari Sister* | - * | *-10* | Rapist* | + * | *-10* | Rapist* | * * **not currently implemented* * @type {Set<number>}