diff --git a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw index 227c60dffbc96c8759a01cd6801ec9d7204112e7..df5252953aebe5545434d071f8b2ed5540b3fa8c 100644 --- a/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw +++ b/src/cheats/PCCheatMenuCheatDatatypeCleanup.tw @@ -30,11 +30,6 @@ <<set $tempSlave.belly = 0>> <<set $tempSlave.pregWeek = 0>> <</if>> -<<run PCDatatypeCleanup()>> -<<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>> -<<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>> -<<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>> -<<set $HackingSkillMultiplier = HackingSkillMultiplier()>> <<if $tempSlave.boobs == 0>> <<set $tempSlave.boobsBonus = 0>> @@ -59,4 +54,9 @@ You perform the dark rituals, pray to the dark gods, and sell your soul for the power to reshape your body and life at will. What a cheater! <<set $PC = clone($tempSlave)>> +<<run PCDatatypeCleanup()>> +<<set $upgradeMultiplierArcology = upgradeMultiplierArcology()>> +<<set $upgradeMultiplierMedicine = upgradeMultiplierMedicine()>> +<<set $upgradeMultiplierTrade = upgradeMultiplierTrade()>> +<<set $HackingSkillMultiplier = HackingSkillMultiplier()>> <<unset $tempSlave>> diff --git a/src/js/pregJS.js b/src/js/pregJS.js index 20c9aaaca1ac021df5fafccab0167ec2dac50628..32462087bbd33b500c41b5192f95fde5c359e405 100644 --- a/src/js/pregJS.js +++ b/src/js/pregJS.js @@ -390,20 +390,20 @@ window.setPregType = function(actor) { maxvol /= 10; // without hyperpreg enabled it's limited to be roughly ten times smaller. } let freevol = maxvol - cmvol; - let coeff = ((maxvol/actor.womb.length) / (freevol/ftvol)) / 2; // more divide to 2 is to balance for ensured 1 ova even if overlimit. + let coeff = ((maxvol/actor.womb.length) / (freevol/ftvol)) / 2; // more divide to 2 is to balance for ensured 1 ova even if over limit. if (coeff < 0) coeff = 0; if (State.variables.seeHyperPreg !== 0) { - coeff += jsRandom(0, fertilityStack/2); //this second chance for implantation. Should be affected only by chemical and genetic for easier implantation. Not directly related to ova count, only to body/womb condition. Raise succesful implantation chance with already overful womb. AFTER previous check. + coeff += jsRandom(0, fertilityStack/2); //this second chance for implantation. Should be affected only by chemical and genetic for easier implantation. Not directly related to ova count, only to body/womb condition. Raise successful implantation chance with already overfull womb. AFTER previous check. } if (ovum > coeff) { ovum = coeff; } - /* for future, if mounthly cycle will be a thing to implement, this will be useful. + /* for future, if monthly cycle will be a thing to implement, this will be useful. if (ovum < 0) ovum = jsRandom(coeff/fertilityStack, 1); */ diff --git a/src/js/vignettes.js b/src/js/vignettes.js index a4c68ccb2910f14a89c20c6cbac15919504b947f..77b666cf4f6be8ee73b6908ddd1a395cc42b2885 100644 --- a/src/js/vignettes.js +++ b/src/js/vignettes.js @@ -189,6 +189,11 @@ window.GetVignette = function GetVignette(slave) { type: "rep", effect: -1, }); + vignettes.push({ + text: `${he} was unable to contain ${himself} and wasted a lot of time sucking the cum from other slaves' sloppy holes,`, + type: "cash", + effect: -1, + }); break; case "humiliation": vignettes.push({ @@ -222,6 +227,13 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } + if (slave.behavioralFlaw === "arrogant") { + vignettes.push({ + text: `${he} wanted it in the ass so much ${he} annoyed more than a few customers by demanding anal,`, + type: "rep", + effect: -1, + }); + } vignettes.push({ text: `${he} earned extra gratitude from a citizen who appreciated a nice rear, even if it is off limits,`, type: "rep", @@ -283,7 +295,7 @@ window.GetVignette = function GetVignette(slave) { break; case "dom": vignettes.push({ - text: `${he} made a female customer ${his} bitch: fortunately, the customer wanted to be ${his} bitch and came back for more,`, + text: `${he} made a female customer ${his} bitch. Fortunately, the customer wanted to be ${his} bitch and came back for more,`, type: "cash", effect: 1, }); @@ -310,7 +322,7 @@ window.GetVignette = function GetVignette(slave) { switch (slave.behavioralFlaw) { case "arrogant": vignettes.push({ - text: `${he} manages to give a citizen the impression ${he} thinks ${himself} better than them,`, + text: `${he} managed to give a citizen the impression ${he} thinks ${himself} better than them,`, type: "rep", effect: -1, }); @@ -368,6 +380,11 @@ window.GetVignette = function GetVignette(slave) { type: "cash", effect: -1, }); + vignettes.push({ + text: `${he} tried to preach ${his} faith to one of ${his} customers, causing him to leave in a huff,`, + type: "cash", + effect: -1, + }); break; case "liberated": vignettes.push({ @@ -439,21 +456,21 @@ window.GetVignette = function GetVignette(slave) { break; case "neglectful": vignettes.push({ - text: `${he} brings a denial fetishist to orgasm three times without cumming ${himself}, earning their repeat business,`, + text: `${he} brought a denial fetishist to orgasm three times without cumming ${himself}, earning their repeat business,`, type: "cash", effect: 3, }); break; case "cum addict": vignettes.push({ - text: `${he}'s so focused on sucking down a customer's cum that ${he} managed to drive them to repeated orgasm, earning their repeated business once they got the feeling back in their legs,`, + text: `${he} was so focused on sucking down a customer's cum that ${he} managed to drive them to repeated orgasm, earning their repeated business once they got the feeling back in their legs,`, type: "cash", effect: 3, }); break; case "anal addict": vignettes.push({ - text: `${he} takes a trio of dicks in ${his} ass without hesitation, earning repeat business from one of them thoroughly impressed by ${his} anal addiction,`, + text: `${he} took a trio of dicks in ${his} ass without hesitation, earning repeat business from one of them thoroughly impressed by ${his} anal addiction,`, type: "cash", effect: 3, }); @@ -525,7 +542,7 @@ window.GetVignette = function GetVignette(slave) { break; case "fitness": vignettes.push({ - text: `${he} continued a marathon gangbang past the point where most would have passed out,`, + text: `${he} continued a marathon gangbang well past the point where most would have passed out,`, type: "cash", effect: 1, }); @@ -537,7 +554,7 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); vignettes.push({ - text: `${he} adoringly kisses the feet of a local socialite who leaves ${him} a generous tip,`, + text: `${he} adoringly kissed the feet of a local socialite who leaves ${him} a generous tip,`, type: "cash", effect: 1, }); @@ -563,7 +580,7 @@ window.GetVignette = function GetVignette(slave) { break; case "sinful": vignettes.push({ - text: `${he} helps a customer get past their religious hang-ups through sex with the friendly neighborhood whore,`, + text: `${he} helped a customer get past their religious hang-ups through sex with the friendly neighborhood whore,`, type: "rep", effect: 1, }); @@ -575,7 +592,7 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); vignettes.push({ - text: `${he} manages to convince a skeptical businessman about the merits of using slaves,`, + text: `${he} managed to convince a skeptical businessman about the merits of using slaves,`, type: "rep", effect: 1, }); @@ -651,6 +668,13 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); break; + case "unflinching": + vignettes.push({ + text: `${he} had no trouble following extremely abusive orders from one of ${his} customers, making him talk positively about the experience,`, + type: "rep", + effect: 1, + }); + break; } if (slave.counter.pitKills > 0) { @@ -713,6 +737,13 @@ window.GetVignette = function GetVignette(slave) { effect: -1, }); } + if (slave.trust < -20) { + vignettes.push({ + text: `a customer who fancies himself a slave trainer noticed ${his} fear and decided to use ${him} to practice his 'slave whispering' skills,`, + type: "cash", + effect: 1, + }); + } if (slave.livingRules === "luxurious") { vignettes.push({ text: `${he} got a truly perfect night's sleep, which put ${him} in the right frame of mind for the whole day,`, @@ -897,39 +928,73 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - if (slave.dick > 0 && canPenetrate(slave)) { - vignettes.push({ - text: `${he} earned repeat business from a customer who likes to see his wife get fucked by a dick${boy} whore,`, - type: "cash", - effect: 1, - }); - if (slave.dick > 3) { + if (slave.dick > 0) { + if (canPenetrate(slave)) { vignettes.push({ - text: `${he} earned repeat business from a female customer who likes big stiff cocks, and cannot lie,`, + text: `${he} earned repeat business from a customer who likes to see his wife get fucked by a dick${boy} whore,`, type: "cash", effect: 1, }); - vignettes.push({ - text: `${he} irritated a male customer who brought his girlfriend with him by accidentally showing him up,`, - type: "rep", - effect: -1, - }); + if (slave.dick > 3) { + vignettes.push({ + text: `${he} earned repeat business from a female customer who likes big stiff cocks, and cannot lie,`, + type: "cash", + effect: 1, + }); + vignettes.push({ + text: `${he} irritated a male customer who brought his girlfriend with him by accidentally showing him up,`, + type: "rep", + effect: -1, + }); + } + } + if (slave.scrotum === 0) { + if (slave.genes === "XY") { + if (canTalk(slave)) { + vignettes.push({ + text: `a doctor ordered ${him} to describe the gelding process in detail and was fascinated by the small scars where ${his} balls used to be,`, + type: "cash", + effect: 1, + }); + } + vignettes.push({ + text: `a slave trainer privately studied ${him} as an example of a slave with well done gelding surgery,`, + type: "cash", + effect: 1, + }); + } + if (slave.balls > 0) { + vignettes.push({ + text: `a customer was pleasantly surprised by ${his} ability to ejaculate,`, + type: "cash", + effect: 1, + }); + } } } - if (slave.balls > 3) { + if (slave.scrotum > 3) { vignettes.push({ text: `${he} loses a customer who wants ${him} to look like a natural girl, since ${his} balls are too big to be hidden,`, type: "cash", effect: -1, }); } - if (slave.balls === 0 && slave.dick > 0) { + if (slave.scrotum > 0) { vignettes.push({ - text: `a slave trainer privately studied ${him} as an example of a slave with well done gelding surgery,`, - type: "cash", - effect: 1, + text: `a particularly sadistic customer attempted to geld ${him}, but ${he} managed to fight him off,`, + type: "health", + effect: -1, }); } + if (slave.vagina >= 0) { + if (slave.genes === "XY") { + vignettes.push({ + text: `a plastic surgeon privately complimented ${him} on ${his} expertly crafted pussy,`, + type: "cash", + effect: 1, + }); + } + } if (canDoVaginal(slave)) { if (slave.vagina === 1) { vignettes.push({ @@ -1000,10 +1065,10 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - if (slave.visualAge > 40) { + if (slave.prestigeDesc === "$He was once a B-list actress, but fell on hard times and drug addiction and was recently enslaved due to debt.") { vignettes.push({ - text: `${he} earned repeat business from a customer with serious mommy issues,`, - type: "cash", + text: `${he} humors one of ${his} fans by acting like one of the characters ${he} used to portray,`, + type: "rep", effect: 1, }); } @@ -1064,6 +1129,20 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } + if (slave.boobs >= 1800) { + if (slave.fetish === "boobs") { + vignettes.push({ + text: `${his} huge boobs and frequent orgasms from titfucks made ${him} quite popular among locals,`, + type: "cash", + effect: 1, + }); + } + vignettes.push({ + text: `${his} huge boobs attracted a lot of breast fetishists, to the point that ${he} lost count of how many titfucks ${he} had to perform,`, + type: "cash", + effect: 1, + }); + } if (!canWalk(slave)) { vignettes.push({ text: `${his} lack of mobility severely hindered ${his} attempts to find customers,`, @@ -1071,7 +1150,7 @@ window.GetVignette = function GetVignette(slave) { effect: -1, }); } else { - if (slave.boobs > 1500 && slave.boobsImplant === 0) { + if (slave.boobs >= 1500 && slave.boobsImplant === 0) { vignettes.push({ text: `a young customer hired ${him} to jump rope so they could watch ${his} massive natural breasts flop around,`, type: "cash", @@ -1223,18 +1302,18 @@ window.GetVignette = function GetVignette(slave) { type: "rep", effect: 1, }); - } else if (slave.fetish === "buttslut") { - vignettes.push({ - text: `a customer was surprised by ${his} penis, so ${he} hid it, but could barely tolerate anal without touching it,`, - type: "rep", - effect: -1, - }); } else if (slave.skill.anal >= 100) { vignettes.push({ text: `a customer was surprised by ${his} penis, so ${he} hid it and skillfully pretended to be a real girl,`, type: "rep", effect: 1, }); + } else if (slave.fetish === "buttslut") { + vignettes.push({ + text: `a customer was surprised by ${his} penis, so ${he} hid it, but could barely tolerate anal without touching it,`, + type: "rep", + effect: -1, + }); } } if (slave.skill.anal < 100 && slave.anus > 2) { @@ -1387,7 +1466,7 @@ window.GetVignette = function GetVignette(slave) { vignettes.push({ text: `${he} got repeat business from a customer who misses the risk of getting a ${boy} pregnant,`, type: "cash", - effect: 3, + effect: 1, }); } } @@ -1399,14 +1478,79 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - } else if (V.arcologies[0].FSDegradationist !== "unset") { - if (canTalk(slave) && slave.voice > 2) { + if (slave.trust < -20) { vignettes.push({ - text: `${he} got repeat business from a customer who prefers ${boy}s with high-pitched screams,`, - type: "cash", + text: `a customer noticed ${his} fear and went out of his way to be gentle,`, + type: "trust", effect: 1, }); } + } else if (V.arcologies[0].FSDegradationist !== "unset") { + if (V.seePee !== 0) { + vignettes.push({ + text: `a drunken customer needing to use the toilet stumbled into ${him} and unfortunately decided to use ${his} mouth to empty ${his} bladder. ${slave.slaveName} found this interaction to be utterly revolting,`, + type: "trust", + effect: -1, + }); + } + if (canTalk(slave)) { + if (slave.voice > 2) { + vignettes.push({ + text: `${he} got repeat business from a customer who prefers ${boy}s with high-pitched screams,`, + type: "cash", + effect: 1, + }); + } else if (slave.voice === 1) { + vignettes.push({ + text: `a customer who was annoyed by ${his} deep voice used his belt on ${his} ass to see if ${his} voice got higher when ${he} screamed,`, + type: "health", + effect: -1, + }); + } + if (slave.boobs >= 1200) { + vignettes.push({ + text: `"a group of laughing customers had ${him} moo like a cow while they gangbanged ${him},`, + type: "cash", + effect: 1, + }); + } + if (slave.weight >= 30) { + vignettes.push({ + text: `a customer had ${him} grunt and squeal like a pig while he used ${him},`, + type: "cash", + effect: 1, + }); + } + vignettes.push({ + text: `a customer ordered ${him} to tell bystanders that ${he} was a 'stupid and ugly bitch',`, + type: "trust", + effect: 0, + }); + } + if (slave.dick > 0) { + if (slave.scrotum === 0 && slave.genes === "XY") { + vignettes.push({ + text: `a customer asked why ${his} useless dick wasn't removed along with ${his} balls,`, + type: "cash", + effect: 0, + }); + vignettes.push({ + text: `a customer hit ${his} dick a few times to see if gelding reduces sensitivity,`, + type: "health", + effect: -1, + }); + vignettes.push({ + text: `an approving customer commented that being gelded made it plain ${he} wasn't human,`, + type: "rep", + effect: 1, + }); + } + vignettes.push({ + text: `a customer tried to see how far ${his} dick could bend and twist,`, + type: "health", + effect: -1, + }); + } if (slave.visualAge > 40) { vignettes.push({ text: `a customer wrote a note on ${his} face that said: 'Retire it to an arcade',`, @@ -1429,6 +1573,16 @@ window.GetVignette = function GetVignette(slave) { type: "health", effect: -1, }); + vignettes.push({ + text: `${he} was hired for use as a prop in a public service announcement showing citizens how to restrain an unwilling slave for rape,`, + type: "rep", + effect: 1, + }); + vignettes.push({ + text: `a sex machine salesman hired ${him} to demonstrate his products and fucked ${his} holes brutally,`, + type: "health", + effect: -1, + }); } if (V.arcologies[0].FSBodyPurist !== "unset") { if (slave.boobsImplant > 0) { @@ -1485,6 +1639,17 @@ window.GetVignette = function GetVignette(slave) { type: "cash", effect: -1, }); + } else { + vignettes.push({ + text: `a businessman asked to hire ${him} for an hour for a meeting so ${he} could provide 'freshly squeezed' milk for his client's coffee,`, + type: "cash", + effect: 2, + }); + vignettes.push({ + text: `${he} was hired by a trendy café in the arcology so the customers could milk ${him} into their coffees,`, + type: "cash", + effect: 2, + }); } if (slave.nipples === "fuckable") { vignettes.push({ @@ -1633,7 +1798,7 @@ window.GetVignette = function GetVignette(slave) { }); } if (V.arcologies[0].FSArabianRevivalist !== "unset") { - if (slave.skill.entertainment >= 100 && canTalk(slave) && slave.voice > 0 && slave.accent < 2) { + if (slave.skill.entertainment >= 100 && canTalk(slave) && slave.accent < 2) { vignettes.push({ text: `${he} got repeat business from a customer who prefers prostitutes who can tell lovely stories,`, type: "cash", @@ -1642,7 +1807,7 @@ window.GetVignette = function GetVignette(slave) { } } if (V.arcologies[0].FSChineseRevivalist !== "unset") { - if (slave.dick > 0 && slave.balls === 2) { + if (slave.dick > 0 && slave.balls === 0) { vignettes.push({ text: `a citizen admired ${his} lack of balls and praised ${him} for being like the eunuchs in Chinese history,`, type: "cash", @@ -1655,7 +1820,39 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - + if (V.seeAge !== 0) { + if (slave.birthWeek >= 51) { + if (V.arcologies[0].FSDegradationist !== "unset") { + if (slave.voice !== 0) { + vignettes.push({ + text: `a group of frat boys found out it was ${his} birthday and took turns spanking ${him} until ${he} couldn't sit down and ${his} voice was hoarse,`, + type: "health", + effect: -1, + }); + } + vignettes.push({ + text: `${he} was given a paddle and ordered to request harsh birthday spankings from all of ${his} customers,`, + type: "health", + effect: -1, + }); + } + vignettes.push({ + text: `a favorite customer gave ${him} a lighthearted birthday spanking and a big tip,`, + type: "cash", + effect: 1, + }); + } + } + vignettes.push({ + text: `a visiting tourist got a crush on ${him} and gave ${him} repeat business,`, + type: "cash", + effect: 1, + }); + vignettes.push({ + text: `a prominent citizen rented ${him} for his birthday party,`, + type: "cash", + effect: 1, + }); vignettes.push({ text: `one of the companies with an office in your arcology retained ${him} for a team-building bukkake party for its employees,`, type: "rep", @@ -1836,7 +2033,7 @@ window.GetVignette = function GetVignette(slave) { break; case 4: vignettes.push({ - text: `a street slut that works near ${him} was badly beaten by an abusive citizen and had to take time off. The reduced competition got ${his} more attention,`, + text: `a street slut that works near ${him} was badly beaten by an abusive citizen and had to take time off. The reduced competition got ${him} more attention,`, type: "rep", effect: 1, }); @@ -1880,6 +2077,11 @@ window.GetVignette = function GetVignette(slave) { type: "rep", effect: -1, }); + vignettes.push({ + text: `${he} was unable to contain ${himself} and wasted a lot of time sucking the cum from other slaves' sloppy holes,`, + type: "rep", + effect: -1, + }); break; case "humiliation": vignettes.push({ @@ -1913,6 +2115,13 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } + if (slave.behavioralFlaw === "arrogant") { + vignettes.push({ + text: `${he} wanted it in the ass so much ${he} annoyed more than a few citizens by demanding anal,`, + type: "rep", + effect: -1, + }); + } vignettes.push({ text: `${he} earned extra gratitude from a citizen who appreciated a nice rear, even if it is off limits,`, type: "rep", @@ -1945,7 +2154,7 @@ window.GetVignette = function GetVignette(slave) { break; case "sadist": vignettes.push({ - text: `${he} deeply impressed a citizen who brought their own slave to ${his} for abuse with ${his} sadism,`, + text: `${he} deeply impressed a citizen who brought their own slave to ${him} for abuse with ${his} sadism,`, type: "rep", effect: 1, }); @@ -1974,7 +2183,7 @@ window.GetVignette = function GetVignette(slave) { break; case "dom": vignettes.push({ - text: `${he} made a female citizen ${his} bitch: fortunately, the citizen wanted to be ${his} bitch and came back for more`, + text: `${he} made a female citizen ${his} bitch. Fortunately, the citizen wanted to be ${his} bitch and came back for more`, type: "rep", effect: 1, }); @@ -2001,7 +2210,7 @@ window.GetVignette = function GetVignette(slave) { switch (slave.behavioralFlaw) { case "arrogant": vignettes.push({ - text: `${he} manages to give a citizen the impression ${he} thinks ${himself} better than them,`, + text: `${he} managed to give a citizen the impression ${he} thinks ${himself} better than them,`, type: "rep", effect: -1, }); @@ -2059,6 +2268,11 @@ window.GetVignette = function GetVignette(slave) { type: "rep", effect: -1, }); + vignettes.push({ + text: `${he} tried to preach ${his} faith to a citizen, causing him to leave in a huff,`, + type: "rep", + effect: -1, + }); break; case "liberated": vignettes.push({ @@ -2144,7 +2358,7 @@ window.GetVignette = function GetVignette(slave) { break; case "anal addict": vignettes.push({ - text: `${he} takes an awe inspiring train of dicks in ${his} ass, well past the point where most would have passed out from pain,`, + text: `${he} took an awe inspiring train of dicks in ${his} ass, well past the point where most would have passed out from pain,`, type: "rep", effect: 3, }); @@ -2165,7 +2379,7 @@ window.GetVignette = function GetVignette(slave) { break; case "abusive": vignettes.push({ - text: `${he} abuses a rival public servant so viciously that a catfight lover takes ${him} right there,`, + text: `${he} abuses a rival public servant so viciously that a catfight lover took ${him} right there,`, type: "rep", effect: 3, }); @@ -2179,7 +2393,7 @@ window.GetVignette = function GetVignette(slave) { break; case "self hating": vignettes.push({ - text: `the way ${he} takes everything thrown at ${him} like nothing disturbed a group of citizens, though one of them enjoyed it more than they let on and came to ${him} for sex later,`, + text: `the way ${he} took everything thrown at ${him} like nothing disturbed a group of citizens, though one of them enjoyed it more than they let on and came to ${him} for sex later,`, type: "rep", effect: 3, }); @@ -2195,14 +2409,14 @@ window.GetVignette = function GetVignette(slave) { switch (slave.behavioralQuirk) { case "confident": vignettes.push({ - text: `${he} confidently presses forward with a wavering citizen, and gets them to fuck ${him},`, + text: `${he} confidently pressed forward with a wavering citizen, and gets them to fuck ${him},`, type: "rep", effect: 1, }); break; case "cutting": vignettes.push({ - text: `${he} made such a gloriously cutting remark to a male citizen that a female bystander takes ${him} right there,`, + text: `${he} made such a gloriously cutting remark to a male citizen that a female bystander took ${him} right there,`, type: "rep", effect: 1, }); @@ -2247,7 +2461,7 @@ window.GetVignette = function GetVignette(slave) { break; case "insecure": vignettes.push({ - text: `${he} successfully convinced a regular patron that they are reliant on ${him} emotionally,`, + text: `${he} successfully convinced a regular patron that ${he}'s reliant on them emotionally,`, type: "rep", effect: 1, }); @@ -2342,6 +2556,13 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); break; + case "unflinching": + vignettes.push({ + text: `${he} had no trouble following extremely abusive orders from one of your citizens, making him talk positively about the experience,`, + type: "rep", + effect: 1, + }); + break; } if (slave.counter.pitKills > 0) { @@ -2386,7 +2607,7 @@ window.GetVignette = function GetVignette(slave) { }); } else if (slave.devotion <= 20) { vignettes.push({ - text: `${he} treasured a love token given to ${his} by a citizen ${he} fooled into thinking ${his} affection was real,`, + text: `${he} treasured a love token given to ${him} by a citizen ${he} fooled into thinking ${his} affection was real,`, type: "devotion", effect: -1, }); @@ -2404,6 +2625,13 @@ window.GetVignette = function GetVignette(slave) { effect: -1, }); } + if (slave.trust < -20) { + vignettes.push({ + text: `a customer who fancies himself a slave trainer noticed ${his} fear and decided to use ${him} to practice his 'slave whispering' skills,`, + type: "rep", + effect: 1, + }); + } if (slave.livingRules === "luxurious") { vignettes.push({ text: `${he} got a truly perfect night's sleep, which put ${him} in the right frame of mind for the whole day,`, @@ -2460,7 +2688,7 @@ window.GetVignette = function GetVignette(slave) { }); } else if (slave.weight < 95) { vignettes.push({ - text: `a potential citizen told ${his} that they are looking forward to patronizing ${his} once ${he} gains a lot more weight,`, + text: `a potential citizen told ${him} that they are looking forward to patronizing ${him} once ${he} gains a lot more weight,`, type: "rep", effect: 0, }); @@ -2563,7 +2791,7 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); vignettes.push({ - text: `${he} disgusted a citizen when his forceful fucking caused ${him} to release ${his} contained ${slave.inflationType} all over them,`, + text: `${he} disgusted a citizen when their forceful fucking caused ${him} to release ${his} contained ${slave.inflationType} all over them,`, type: "rep", effect: -2, }); @@ -2588,39 +2816,73 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - if (slave.dick > 0 && canPenetrate(slave)) { - vignettes.push({ - text: `${he} earned extra gratitude from a citizen who likes to see his wife get fucked by a dick${boy} whore,`, - type: "rep", - effect: 1, - }); - if (slave.dick > 3) { + if (slave.dick > 0) { + if (canPenetrate(slave)) { vignettes.push({ - text: `${he} earned extra gratitude from a female citizen who likes big stiff cocks, and cannot lie,`, + text: `${he} earned extra gratitude from a citizen who likes to see his wife get fucked by a dick${boy} whore,`, type: "rep", effect: 1, }); - vignettes.push({ - text: `${he} irritated a male citizen who brought his girlfriend with him by accidentally showing him up,`, - type: "rep", - effect: -1, - }); + if (slave.dick > 3) { + vignettes.push({ + text: `${he} earned extra gratitude from a female citizen who likes big stiff cocks, and cannot lie,`, + type: "rep", + effect: 1, + }); + vignettes.push({ + text: `${he} irritated a male citizen who brought his girlfriend with him by accidentally showing him up,`, + type: "rep", + effect: -1, + }); + } + } + if (slave.scrotum === 0) { + if (slave.genes === "XY") { + if (canTalk(slave)) { + vignettes.push({ + text: `a doctor ordered ${him} to describe the gelding process in detail and was fascinated by the small scars where ${his} balls used to be,`, + type: "rep", + effect: 1, + }); + } + vignettes.push({ + text: `a slave trainer pointed ${him} out as an example of a slave with well done gelding surgery,`, + type: "rep", + effect: 1, + }); + } + if (slave.balls > 0) { + vignettes.push({ + text: `a citizen was pleasantly surprised by ${his} ability to ejaculate,`, + type: "rep", + effect: 1, + }); + } } } - if (slave.balls === 0 && slave.dick > 0) { + if (slave.scrotum > 3) { vignettes.push({ - text: `a slave trainer pointed ${him} out as an example of a slave with well done gelding surgery,`, + text: `${he} disappoints a citizen who wants ${him} to look like a natural girl, since ${his} balls are too big to be hidden,`, type: "rep", - effect: 1, + effect: -1, }); } - if (slave.balls > 3) { + if (slave.scrotum > 0) { vignettes.push({ - text: `${he} disappoints a citizen who wants ${him} to look like a natural girl, since ${his} balls are too big to be hidden,`, - type: "rep", + text: `a particularly sadistic citizen attempted to geld ${him}, but ${he} managed to fight him off,`, + type: "health", effect: -1, }); } + if (slave.vagina >= 0) { + if (slave.genes === "XY") { + vignettes.push({ + text: `a plastic surgeon publicly complimented ${him} on ${his} expertly crafted pussy,`, + type: "rep", + effect: 1, + }); + } + } if (canDoVaginal(slave)) { if (slave.vagina === 1) { vignettes.push({ @@ -2644,7 +2906,7 @@ window.GetVignette = function GetVignette(slave) { vignettes.push({ text: `${he} irritated a male citizen with ${his} complaints that they were too small to please ${him},`, type: "rep", - effect: -3, + effect: -2, }); } } @@ -2664,6 +2926,20 @@ window.GetVignette = function GetVignette(slave) { }); } } + if (slave.visualAge > 40) { + if (slave.face > 10 && slave.race === "asian") { + vignettes.push({ + text: `${he} got extra gratitude from a citizen who loves well-preserved asian ladies,`, + type: "rep", + effect: 1, + }); + } + vignettes.push({ + text: `${he} earned extra gratitude from a citizen with serious mommy issues,`, + type: "rep", + effect: 1, + }); + } if (slave.face > 40) { vignettes.push({ text: `${he} lost a potential citizen who was so intimidated by ${his} great beauty that they decided to find a homelier whore,`, @@ -2677,16 +2953,9 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - if (slave.visualAge > 40) { - if (slave.face > 10 && slave.race === "asian") { - vignettes.push({ - text: `${he} got extra gratitude from a citizen who loves well-preserved asian ladies,`, - type: "rep", - effect: 1, - }); - } + if (slave.prestigeDesc === "$He was once a B-list actress, but fell on hard times and drug addiction and was recently enslaved due to debt.") { vignettes.push({ - text: `${he} earned extra gratitude from a citizen with serious mommy issues,`, + text: `${he} humors one of ${his} fans by acting like one of the characters ${he} used to portray,`, type: "rep", effect: 1, }); @@ -2748,6 +3017,20 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } + if (slave.boobs >= 1800) { + if (slave.fetish === "boobs") { + vignettes.push({ + text: `${his} huge boobs and frequent orgasms from titfucks made ${him} quite popular among locals,`, + type: "cash", + effect: 1, + }); + } + vignettes.push({ + text: `${his} huge boobs attracted a lot of breast fetishists, to the point that ${he} lost count of how many titfucks ${he} had to perform,`, + type: "rep", + effect: 1, + }); + } if (!canWalk(slave)) { vignettes.push({ text: `${his} lack of mobility severely hindered ${his} attempts to please citizens,`, @@ -2755,7 +3038,7 @@ window.GetVignette = function GetVignette(slave) { effect: -1, }); } else { - if (slave.boobs > 1500 && slave.boobsImplant === 0) { + if (slave.boobs >= 1500 && slave.boobsImplant === 0) { vignettes.push({ text: `a young citizen convinced ${him} to jump rope so they could watch ${his} massive natural breasts flop around,`, type: "rep", @@ -2907,17 +3190,17 @@ window.GetVignette = function GetVignette(slave) { type: "rep", effect: 1, }); - } else if (slave.fetish === "buttslut") { + } else if (slave.skill.anal >= 100) { vignettes.push({ text: `a citizen was surprised by ${his} penis, so ${he} hid it and skillfully pretended to be a real girl,`, type: "rep", - effect: -1, + effect: 1, }); - } else if (slave.skill.anal >= 100) { + } else if (slave.fetish === "buttslut") { vignettes.push({ text: `a citizen was surprised by ${his} penis, so ${he} hid it, but could barely tolerate anal without touching it`, type: "rep", - effect: 1, + effect: -1, }); } } @@ -3083,14 +3366,79 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - } else if (V.arcologies[0].FSDegradationist !== "unset") { - if (canTalk(slave) && slave.voice > 2) { + if (slave.trust < -20) { vignettes.push({ - text: `${he} gratified a citizen who prefers ${boy}s with high-pitched screams,`, - type: "rep", + text: `a citizen noticed ${his} fear and went out of his way to be gentle,`, + type: "trust", effect: 1, }); } + } else if (V.arcologies[0].FSDegradationist !== "unset") { + if (V.seePee !== 0) { + vignettes.push({ + text: `a drunken citizen needing to use the toilet stumbled into ${him} and unfortunately decided to use ${his} mouth to empty ${his} bladder. ${slave.slaveName} found this interaction to be utterly revolting,`, + type: "trust", + effect: -1, + }); + } + if (canTalk(slave)) { + if (slave.voice > 2) { + vignettes.push({ + text: `${he} gratified a citizen who prefers ${boy}s with high-pitched screams,`, + type: "rep", + effect: 1, + }); + } else if (slave.voice === 1) { + vignettes.push({ + text: `a citizen who was annoyed by ${his} deep voice used his belt on ${his} ass to see if ${his} voice got higher when ${he} screamed,`, + type: "health", + effect: -1, + }); + } + if (slave.boobs >= 1200) { + vignettes.push({ + text: `"a group of laughing citizens had ${him} moo like a cow while they gangbanged ${him},`, + type: "rep", + effect: 1, + }); + } + if (slave.weight >= 30) { + vignettes.push({ + text: `a citizen had ${him} grunt and squeal like a pig while he used ${him},`, + type: "rep", + effect: 1, + }); + } + vignettes.push({ + text: `a customer ordered ${him} to tell bystanders that ${he} was a 'stupid and ugly bitch',`, + type: "trust", + effect: 0, + }); + } + if (slave.dick > 0) { + if (slave.scrotum === 0 && slave.genes === "XY") { + vignettes.push({ + text: `a citizen asked why ${his} useless dick wasn't removed along with ${his} balls,`, + type: "rep", + effect: 0, + }); + vignettes.push({ + text: `a citizen hit ${his} dick a few times to see if gelding reduces sensitivity,`, + type: "health", + effect: -1, + }); + vignettes.push({ + text: `an approving citizen commented that being gelded made it plain ${he} wasn't human,`, + type: "rep", + effect: 1, + }); + } + vignettes.push({ + text: `a citizen tried to see how far ${his} dick could bend and twist,`, + type: "health", + effect: -1, + }); + } if (slave.visualAge > 40) { vignettes.push({ text: `a citizen wrote a note on ${his} face that said: 'Retire it to an arcade',`, @@ -3113,6 +3461,16 @@ window.GetVignette = function GetVignette(slave) { type: "health", effect: -1, }); + vignettes.push({ + text: `${he} was used as a prop in a public service announcement showing citizens how to restrain an unwilling slave for rape,`, + type: "rep", + effect: 1, + }); + vignettes.push({ + text: `a sex machine salesman used ${him} to demonstrate his products and fucked ${his} holes brutally,`, + type: "health", + effect: -1, + }); } if (V.arcologies[0].FSBodyPurist !== "unset") { if (slave.boobsImplant > 0) { @@ -3169,6 +3527,17 @@ window.GetVignette = function GetVignette(slave) { type: "rep", effect: -1, }); + } else { + vignettes.push({ + text: `a businessman asked to hire ${him} for an hour for a meeting so ${he} could provide 'freshly squeezed' milk for his client's coffee,`, + type: "rep", + effect: 2, + }); + vignettes.push({ + text: `${he} was hired by a trendy café in the arcology so the customers could milk ${him} into their coffees,`, + type: "rep", + effect: 2, + }); } if (slave.nipples === "fuckable") { vignettes.push({ @@ -3326,7 +3695,7 @@ window.GetVignette = function GetVignette(slave) { } } if (V.arcologies[0].FSChineseRevivalist !== "unset") { - if (slave.dick > 0 && slave.balls === 2) { + if (slave.dick > 0 && slave.balls === 0) { vignettes.push({ text: `a citizen admired ${his} lack of balls and praised ${him} for being like the eunuchs in Chinese history,`, type: "rep", @@ -3339,7 +3708,39 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } - + if (V.seeAge !== 0) { + if (slave.birthWeek >= 51) { + if (V.arcologies[0].FSDegradationist !== "unset") { + if (slave.voice !== 0) { + vignettes.push({ + text: `a group of frat boys found out it was ${his} birthday and took turns spanking ${him} until ${he} couldn't sit down and ${his} voice was hoarse,`, + type: "health", + effect: -1, + }); + } + vignettes.push({ + text: `${he} was given a paddle and ordered to request harsh birthday spankings from all of ${his} citizens,`, + type: "health", + effect: -1, + }); + } + vignettes.push({ + text: `a favorite citizen gave ${him} a lighthearted birthday spanking and a big tip,`, + type: "cash", + effect: 1, + }); + } + } + vignettes.push({ + text: `a visiting tourist got a crush on ${him} and gave ${him} repeat business,`, + type: "rep", + effect: 1, + }); + vignettes.push({ + text: `a prominent citizen invited ${him} to his birthday party,`, + type: "rep", + effect: 1, + }); vignettes.push({ text: `one of the companies with an office in your arcology brought ${him} in for a team-building bukkake party for its employees,`, type: "rep", @@ -3493,6 +3894,15 @@ window.GetVignette = function GetVignette(slave) { effect: 1, }); } + if (slave.boobs >= 1400) { + if (slave.fetish !== "boobs" && slave.fetish !== "masochist") { + vignettes.push({ + text: `${he} got really frustrated by the constant bouncing of ${his} boobs when ${he} performed cleaning activities,`, + type: "trust", + effect: -1, + }); + } + } if (slave.visualAge >= 40) { vignettes.push({ text: `some of the younger slaves purposefully created messes, making fun of ${him} as ${he} scurried behind them to clean up,`, @@ -3507,6 +3917,15 @@ window.GetVignette = function GetVignette(slave) { effect: 0, }); } + if (slave.energy > 80) { + if (slave.chastityVagina !== 0) { + vignettes.push({ + text: `the back and forth motions of cleaning cause ${him} sexual frustration as ${his} chastity belt rubs against ${his} soaking wet pussy,`, + type: "trust", + effect: 0, + }); + } + } if (slave.energy < 60) { vignettes.push({ text: `${he} once thought on how easy ${his} assignment is in comparison to the sexual assignments that the others have,`, @@ -3565,6 +3984,11 @@ window.GetVignette = function GetVignette(slave) { type: "cash", effect: 1, }); + vignettes.push({ + text: `${he} was nearly constantly sneezing from all the dust ${he} cleaned up,`, + type: "health", + effect: -1, + }); } else if (slave.assignment === "get milked" || slave.assignment === "work in the dairy") { if (slave.lactation > 0) { if (slave.race === "black") { @@ -3584,6 +4008,11 @@ window.GetVignette = function GetVignette(slave) { type: "rep", effect: 1, }); + vignettes.push({ + text: `a local grocery store ordered more of ${his} milk than usual by mistake,`, + type: "cash", + effect: 1, + }); vignettes.push({ text: `a few containers of ${his} milk turned sour by accident,`, type: "cash", @@ -3740,6 +4169,18 @@ window.GetVignette = function GetVignette(slave) { effect: 0, }); break; + case "funny": + vignettes.push({ + text: `${he} gained renown as a talented improvisational comedian,`, + type: "rep", + effect: 1, + }); + vignettes.push({ + text: `${he} gained renown as a talented improvisational comedian, but ${his} scathing satires of other slaveholders do you no favors,`, + type: "rep", + effect: -1, + }); + break; } if (slave.fetish === "mindbroken") { vignettes.push({ @@ -3787,8 +4228,24 @@ window.GetVignette = function GetVignette(slave) { effect: -1, }); } + if (slave.trust < -20) { + vignettes.push({ + text: `constantly fearing what might be done to ${him}, rest did not come easy,`, + type: "health", + effect: -1, + }); + } if (slave.relationship === -2) { if (slave.speechRules === "permissive") { + if (slave.intelligence + slave.intelligenceImplant > 50) { + if (slave.skill.entertainment >= 100) { + vignettes.push({ + text: `${he} worked on an erotic play about ${his} deep love for you,`, + type: "rep", + effect: 1, + }); + } + } vignettes.push({ text: `${he} spent most of ${his} time fan${boy}ing obsessively about you to everyone ${he} could,`, type: "rep", @@ -3846,6 +4303,31 @@ window.GetVignette = function GetVignette(slave) { } } } + if (slave.energy > 80) { + if (slave.releaseRules === "permissive" || slave.releaseRules === "masturbation") { + if (slave.fetish === "boobs") { + if (slave.boobs >= 800) { + vignettes.push({ + text: `${he} couldn't control ${his} urges and spent hours fucking ${his} own boobs with various dildoes,`, + type: "health", + effect: 0, + }); + } + vignettes.push({ + text: `${he} was too enthusiastic in tugging and twisting ${his} nipples while masturbating,`, + type: "health", + effect: -1, + }); + } + if (slave.lactation > 0) { + vignettes.push({ + text: `${he} spent an entire day happily masturbating and massaging ${his} swollen, milky tits,`, + type: "trust", + effect: 1, + }); + } + } + } if (slave.health < -20) { vignettes.push({ text: `${he} had a bad cough and spent a lot of time napping,`, diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw index aa56f7a825005288e41df02e71a87b39ec941bb0..fd6d7f4e9e573a1f7c7f546ba007cf8e332f21f0 100644 --- a/src/uncategorized/RETS.tw +++ b/src/uncategorized/RETS.tw @@ -914,7 +914,7 @@ The slaves are about to go to bed; they're naked, and the horny $activeSlave.sla <<elseif !_vaginal && $subSlave.butt > 3>> "You've got <<s>>uch a ni<<c>>e a<<ss>>," $he wheedles. "It'<<s>> ju<<s>>t <<s>>o big, and round, and, um, out there." $He swallows, getting distracted. <<elseif $subSlave.boobShape == "perky">> - "Your tit<<s>> are incredible," $he wheedles. "<<if $subSlave.boobs > 800>>They're magical. There'<<s>> no other explanation for them being <<s>>o huge and <<s>>till perky.<<elseif $subSlave.boobs > 400>>They're <<s>>o perky and perfect.<<else>>They're <<s>>o tiny and cute!<</if>> I want you<<if !_vaginal>>r a<<ss>><</if>> <<s>>o much!" + "Your tit<<s>> are incredible," $he wheedles. "<<if $subSlave.boobs > 800>>They're magical. There'<<s>> no other e<<x>>planation for them being <<s>>o huge and <<s>>till perky.<<elseif $subSlave.boobs > 400>>They're <<s>>o perky and perfect.<<else>>They're <<s>>o tiny and cute!<</if>> I want you<<if !_vaginal>>r a<<ss>><</if>> <<s>>o much!" <<elseif $subSlave.boobShape == "torpedo-shaped">> "Your torpedoe<<s>> are incredible," $he wheedles. "<<if $subSlave.boobs > 400>>The way they <<s>>way when you move <<sh>>ould be again<<s>>t the rule<<s>>.<<else>>They're <<s>>o tiny and cute!<</if>> I want you<<if !_vaginal>>r a<<ss>><</if>> <<s>>o much!" <<elseif $subSlave.muscles > 30>> diff --git a/src/uncategorized/cellblock.tw b/src/uncategorized/cellblock.tw index 0a6b41d5268f50e05f1d3a6c3d35475f675ac0ce..10567ce2e567af2452dca521b43fc572f2f68816 100644 --- a/src/uncategorized/cellblock.tw +++ b/src/uncategorized/cellblock.tw @@ -56,13 +56,13 @@ $cellblockNameCaps <<case "Hedonistic">> is torture for thin slaves. The first thing they notice is the heavily reinforced cot they will reside upon. The second is the feeding tube that will be anchored in their stomach for the duration of their stay. Slaves imprisoned here will have their body stuffed to capacity with concentrated slave food, ensuring a plump, docile slave by the end of their sentence. <<case "Intellectual Dependency">> - is a straightforward prison, with one exception. Each cell comes equiped with sound dampening shutters so slaves may be cut off from all outside stimulation. They are forced to be alone with their thoughts for most of their stay. + is a straightforward prison, with one exception. Each cell comes equipped with sound dampening shutters so slaves may be cut off from all outside stimulation. They are forced to be alone with their thoughts for most of their stay. <<case "Slave Professionalism">> is torture for dumb slaves. Everything in the cell is a puzzle, from the food dispenser to the cot cover. Slaves are frequently rotated so that they may never become accustomed to any solutions. <<case "Petite Admiration">> - is designed to make tall slaves know they are unwelcome. What amounts a basic prison for a short slave is positvely torturous when one is far too large to even move in it. + is designed to make tall slaves know they are unwelcome. What amounts a basic prison for a short slave is positively torturous when one is far too large to even move in it. <<case "Statuesque Glorification">> - is designed to make short slaves know they are unwelcome. Where a tall slave will find nothing more than a standard cell, the vertically challanged while will find an insurmountable trial designed to teach them their place. + is designed to make short slaves know they are unwelcome. Where a tall slave will find nothing more than a standard cell, the vertically challenged while will find an insurmountable trial designed to teach them their place. <<default>> could be mistaken for a modern prison. A close inspection, however, reveals restraints in each cell that will hold inmates in sexually compromising positions, and compliance systems to force them to place their wrists and ankles in them. <</switch>> diff --git a/src/uncategorized/saDiet.tw b/src/uncategorized/saDiet.tw index 461813469195258fa88ef3b65b6a456d4e0a152f..485c31af616580420f3a5aed3ea13634dceee514 100644 --- a/src/uncategorized/saDiet.tw +++ b/src/uncategorized/saDiet.tw @@ -854,7 +854,7 @@ $His diet tastes and smells awful, but $he is incapable of recognizing it, allowing $him to feel nothing but its @@.green;significant restorative effect.@@ <<set $slaves[$i].trust++>> <<elseif !canSmell($slaves[$i]) || !canTaste($slaves[$i])>> - $His diet @@.mediumorchid;tastes and smells awful@@, but $he is thankfully only partially aware of this, allowing $him to appreciate its @@.green;significant restorative effect@@ a bit more. + $His diet @@.mediumorchid;tastes and smells awful,@@ but $he is thankfully only partially aware of this, allowing $him to appreciate its @@.green;significant restorative effect@@ a bit more. <<set $slaves[$i].devotion -= 1, $slaves[$i].trust++>> <<elseif $slaves[$i].sexualFlaw == "self hating">> $His diet @@.hotpink;tastes and smells awful,@@ the perfect meal for such a wretched creature as $himself. $He knows you are @@.green;preserving $his health@@ but doesn't understand why you'd waste time and credits on $him.