vignettes.js 123.37 KiB
/**
* @param {App.Entity.SlaveState} slave
* @returns {string}
*/
window.GetVignette = function GetVignette(slave) {
const V = State.variables;
let vignettes = [];
const pronouns = getPronouns(slave);
const he = pronouns.pronoun;
const him = pronouns.object;
const his = pronouns.possessive;
const hers = pronouns.possessivePronoun;
const himself = pronouns.objectReflexive;
const boy = pronouns.noun;
const He = capFirstChar(he);
// const His = capFirstChar(his);
if (slave.assignment === "whore" || slave.assignment === window.Job.BROTHEL || slave.assignment === window.Job.MADAM) {
let seed = jsRandom(1, 10);
switch (seed) {
case 1:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} witnessed a domestic dispute over another whore,`,
type: "rep",
effect: 0,
});
break;
case 2:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} saw a free whore finally sink into slavery,`,
type: "rep",
effect: 0,
});
break;
case 3:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that construction forced ${him} to move from ${his} usual spot,`,
type: "rep",
effect: 0,
});
break;
case 4:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that a customer used a new and improved sex toy on ${him},`,
type: "rep",
effect: 0,
});
break;
case 5:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was an appointment with an unusually perverted family,`,
type: "rep",
effect: 0,
});
break;
case 6:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} saw a man sell his wife into slavery,`,
type: "rep",
effect: 0,
});
break;
case 7:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} saw a woman sell her daughters into slavery,`,
type: "rep",
effect: 0,
});
break;
case 8:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} watched a citizen descend into aphrodisiac addiction,`,
type: "rep",
effect: 0,
});
break;
case 9:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} watched a citizen develop the beginnings of sex addiction,`,
type: "rep",
effect: 0,
});
break;
default:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} witnessed a citizen administering a brutal public punishment to one of their slaves,`,
type: "rep",
effect: 0,
});
break;
}
seed = jsRandom(1, 5);
switch (seed) {
case 1:
vignettes.push({
text: `a citizen punished one of his slaves by tying ${his} up in public near where ${slave.slaveName} was working. This cut into ${his} business that day,`,
type: "cash",
effect: -1,
});
break;
case 2:
vignettes.push({
text: `a citizen shared one of his slaves with the public near where ${slave.slaveName} was working. This cut into ${his} business that day,`,
type: "cash",
effect: -1,
});
break;
case 3:
vignettes.push({
text: `a private brothel offered a promotion near where ${slave.slaveName} was working. This cut into ${his} business that day,`,
type: "cash",
effect: -1,
});
break;
case 4:
vignettes.push({
text: `some free sluts threw an aphrodisiac street party near where ${slave.slaveName} was working. This cut into ${his} business that day,`,
type: "cash",
effect: -1,
});
break;
default:
vignettes.push({
text: `a contract breaker was punished with the pillory near where ${slave.slaveName} was working. This cut into ${his} business that day,`,
type: "cash",
effect: -1,
});
break;
}
seed = jsRandom(1, 5);
switch (seed) {
case 1:
vignettes.push({
text: `one of ${his} regular customers got a divorce and came to ${him} for repeated consolation,`,
type: "cash",
effect: 1,
});
break;
case 2:
vignettes.push({
text: `a brothel near where ${slave.slaveName} usually works had business trouble,`,
type: "cash",
effect: 1,
});
break;
case 3:
vignettes.push({
text: `a competing whore that looks like ${him} fell ill, driving a customer to look for an alternative,`,
type: "cash",
effect: 1,
});
break;
case 4:
vignettes.push({
text: `a street whore that works near ${him} was badly beaten by an abusive customer and had to take time off. The reduced competition got ${him} more business,`,
type: "cash",
effect: 1,
});
break;
default:
vignettes.push({
text: `an influx of tourists came into ${his} part of the arcology, earning ${him} more business for a day,`,
type: "cash",
effect: 1,
});
break;
}
if (slave.fetishKnown === 1) {
switch (slave.fetish) {
case "submissive":
vignettes.push({
text: `${he} deeply impressed a customer with ${his} sincere submission to them,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} lost a customer who secretly wanted ${him} to show a little initiative,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `an overeager sadistic customer roughed ${him} up more than a normal submissive like ${him} is used to,`,
type: "health",
effect: -1,
});
break;
case "cumslut":
vignettes.push({
text: `${he} deeply impressed a customer with ${his} hunger for their cum,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a customer who didn't know how much cum fetishes revolted them until ${he} displayed ${hers},`,
type: "rep",
effect: -1,
});
break;
case "humiliation":
vignettes.push({
text: `${he} earned repeat business from a customer who didn't know how much they liked public sex until ${he} got them to try it,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a customer who didn't know how much exhibitionism turned them off until they tried public sex with ${him},`,
type: "rep",
effect: -1,
});
break;
case "buttslut":
if (canDoAnal(slave)) {
vignettes.push({
text: `${he} earned repeat business from a customer who didn't know how much they liked fucking buttholes until ${he} got them to try fucking ${hers},`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a customer who didn't know how much buttsex turned them off until ${he} got them to try fucking ${his} ass,`,
type: "rep",
effect: -1,
});
}
if (slave.butt >= 3) {
vignettes.push({
text: `${he} earned repeat business from a customer who didn't know how much they liked big butts until ${he} gave them a lap dance they'll never forget,`,
type: "cash",
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",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a customer who didn't know how much butts turned them off until ${he} put ${his} hands on theirs,`,
type: "rep",
effect: -1,
});
break;
case "boobs":
vignettes.push({
text: `${he} deeply impressed a customer by orgasming to nothing but the feeling of them sucking ${his} nipples,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disappointed a female customer who didn't know how uninterested she was in nipple play before trying it,`,
type: "rep",
effect: -1,
});
if (slave.nipples === "fuckable") {
vignettes.push({
text: `${he} left a lasting impression on a pair of customers after nearly passing out from a series of intense orgasms from getting ${his} nipples fucked,`,
type: "cash",
effect: 2,
});
}
break;
case "sadist":
vignettes.push({
text: `${he} deeply impressed a customer who brought their own slave to ${him} for abuse with ${his} sadism,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a customer brought ${him} their own slave to abuse, but the sight proved to be a turn off,`,
type: "rep",
effect: -1,
});
break;
case "masochist":
vignettes.push({
text: `${he} helped a customer discover a new fetish by orgasming when they accidentally hurt ${him},`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disturbed a customer who accidentally hurt ${him} by orgasming,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `a group of overzealous customers gangbanging ${him} got a little too excited hearing ${him} get off on abuse, leaving ${him} sore and injured,`,
type: "health",
effect: -1,
});
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,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} accidentally overwhelmed a customer with ${his} sexual dominance,`,
type: "rep",
effect: -1,
});
break;
case "pregnancy":
vignettes.push({
text: `${he} earned repeat business from a customer who didn't know how much they liked pregnancy play until ${he} begged them to knock ${him} up,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a customer who didn't know how much pregnancy play turned them off until ${he} begged them to knock ${him} up,`,
type: "rep",
effect: -1,
});
break;
}
}
switch (slave.behavioralFlaw) {
case "arrogant":
vignettes.push({
text: `${he} manages to give a citizen the impression ${he} thinks ${himself} better than them,`,
type: "rep",
effect: -1,
});
break;
case "bitchy":
vignettes.push({
text: `${he} made an emasculating remark to a customer right after they fuck ${him},`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `${he} was slapped by a customer who was angry at ${his} rude remarks,`,
type: "health",
effect: -1,
});
break;
case "odd":
vignettes.push({
text: `${he} infuriates a potential customer with ${his} nervous tics,`,
type: "cash",
effect: -1,
});
break;
case "hates men":
vignettes.push({
text: `${his} disgust towards men surfaces at a bad time, losing ${him} a male customer,`,
type: "cash",
effect: -1,
});
break;
case "hates women":
vignettes.push({
text: `${his} disgust towards women surfaces at a bad time, losing ${him} a female customer,`,
type: "cash",
effect: -1,
});
break;
case "gluttonous":
vignettes.push({
text: `${he} accidentally lingers at a meal, missing a customer appointment,`,
type: "cash",
effect: -1,
});
break;
case "anorexic":
vignettes.push({
text: `${his} bulimia surfaces at an extremely inopportune moment, turning a customer off,`,
type: "cash",
effect: -1,
});
break;
case "devout":
vignettes.push({
text: `a customer catches ${him} praying to ${himself} as they inserted themselves into ${him}, turning them off,`,
type: "cash",
effect: -1,
});
break;
case "liberated":
vignettes.push({
text: `${he} treats a rude potential customer impolitely, because ${he} thinks that's fair,`,
type: "cash",
effect: -1,
});
break;
}
switch (slave.sexualFlaw) {
case "hates oral":
vignettes.push({
text: `${he} vomits while trying to deepthroat a customer,`,
type: "rep",
effect: -1,
});
break;
case "hates anal":
vignettes.push({
text: `${he} cries while taking anal from a customer who isn't into painal,`,
type: "rep",
effect: -1,
});
break;
case "hates penetration":
vignettes.push({
text: `${he} cries while taking a pounding from a customer who likes their sex consensual,`,
type: "rep",
effect: -1,
});
break;
case "shamefast":
vignettes.push({
text: `${he} cries while a potential customer looks ${him} over,`,
type: "cash",
effect: -1,
});
vignettes.push({
text: `${he} disrobed so slowly that a potential customer gave up on ${him},`,
type: "cash",
effect: -1,
});
vignettes.push({
text: `a customer impatient with how slowly ${he} was disrobing ripped off ${his} clothes and roughed ${him} up,`,
type: "health",
effect: -1,
});
break;
case "idealistic":
vignettes.push({
text: `${he} cries when explaining the price of ${his} body to a potential customer,`,
type: "cash",
effect: -1,
});
break;
case "repressed":
vignettes.push({
text: `${he} misunderstands a potential customer's lewd requests, turning them off,`,
type: "cash",
effect: -1,
});
break;
case "apathetic":
vignettes.push({
text: `${he} fails to notice when a customer achieves orgasm,`,
type: "rep",
effect: -1,
});
break;
case "neglectful":
vignettes.push({
text: `${he} brings 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,`,
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,`,
type: "cash",
effect: 3,
});
break;
case "attention whore":
vignettes.push({
text: `${he} got repeat business from a man who loves fucking ${him} in the middle of crowded rooms,`,
type: "cash",
effect: 3,
});
break;
case "breast growth":
vignettes.push({
text: `${he} got repeat business from a woman with huge breasts who enjoys roleplaying her breast expansion fetishes with ${him},`,
type: "cash",
effect: 3,
});
break;
case "abusive":
vignettes.push({
text: `${he} got repeat business from a man who loves physically abusive sex, though his testicles could only take so much in one week,`,
type: "cash",
effect: 2,
});
break;
case "malicious":
vignettes.push({
text: `${he} got repeat business from a masochistic woman who enjoys being whipped and degraded,`,
type: "cash",
effect: 3,
});
break;
case "self hating":
vignettes.push({
text: `${he} got repeat business from an abusive man who thoroughly enjoyed how diligently ${he} took it,`,
type: "cash",
effect: 3,
});
break;
case "breeder":
vignettes.push({
text: `${he} got repeat business from a pregnancy fetishist nearly driven mad with lust over ${his} pregnancy obsession,`,
type: "cash",
effect: 3,
});
break;
}
switch (slave.behavioralQuirk) {
case "confident":
vignettes.push({
text: `${he} confidently pressed forward with a wavering potential customer, and made the sale,`,
type: "cash",
effect: 1,
});
break;
case "cutting":
vignettes.push({
text: `${he} made such a gloriously cutting remark to a male customer that a female bystander came to ${him} for repeat business,`,
type: "cash",
effect: 1,
});
break;
case "funny":
vignettes.push({
text: `${he} made a group of citizens laugh so hard, one of them came to ${him} for repeat business,`,
type: "cash",
effect: 1,
});
break;
case "fitness":
vignettes.push({
text: `${he} continued a marathon gangbang past the point where most would have passed out,`,
type: "cash",
effect: 1,
});
break;
case "adores women":
vignettes.push({
text: `${he} struck up a personal friendship with a regular female customer,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} adoringly kisses the feet of a local socialite who leaves ${him} a generous tip,`,
type: "cash",
effect: 1,
});
break;
case "adores men":
vignettes.push({
text: `${he} struck up a personal friendship with a regular male customer,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} practically worshipped a minor celebrity, eagerly slobbering over his cock and covering ${himself} with his cum,`,
type: "rep",
effect: 1,
});
break;
case "insecure":
vignettes.push({
text: `${he} successfully convinced a regular customer that ${he}'s reliant on them emotionally,`,
type: "cash",
effect: 1,
});
break;
case "sinful":
vignettes.push({
text: `${he} helps a customer get past their religious hang-ups through sex with the friendly neighborhood whore,`,
type: "rep",
effect: 1,
});
break;
case "advocate":
vignettes.push({
text: `${he} successfully convinced a wavering potential customer that there's nothing wrong with banging a whore,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} manages to convince a skeptical businessman about the merits of using slaves,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${his} enthusiastic discussion of the merits of slavery convinced a young woman to sell herself into slavery, so the new owner gave you a finder's fee,`,
type: "cash",
effect: 1,
});
break;
}
switch (slave.sexualQuirk) {
case "gagfuck queen":
vignettes.push({
text: `${he} earned repeat business from a citizen who's obsessed with gagfucks,`,
type: "cash",
effect: 1,
});
break;
case "painal queen":
vignettes.push({
text: `${he} earned repeat business from a citizen who's obsessed with painal,`,
type: "cash",
effect: 1,
});
break;
case "strugglefuck queen":
vignettes.push({
text: `${he} earned repeat business from a citizen who's obsessed with strugglefucking,`,
type: "cash",
effect: 1,
});
break;
case "tease":
vignettes.push({
text: `${he} convinced a citizen who'd never had sex with a prostitute to patronize ${him} with some truly inspired flirting,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `a few partiers were so impressed with ${his} provocative teasing that they repeated ${his} wit to friends,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a few partygoers were so impressed with ${his} provocative teasing that they left ${him} a sizable tip,`,
type: "cash",
effect: 1,
});
break;
case "romantic":
vignettes.push({
text: `a citizen became infatuated with ${him}, since they are convinced ${he}'s infatuated with them,`,
type: "cash",
effect: 1,
});
break;
case "perverted":
vignettes.push({
text: `${he} earned some momentary notoriety by engaging in a previously unheard-of sex act,`,
type: "rep",
effect: 1,
});
break;
case "caring":
vignettes.push({
text: `${he} served as an impromptu sounding board for a customer having marital trouble,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `a customer was so enamored with ${his} kind and caring manner than they proposed to ${him} and offered to take ${him} away, and when ${he} refused, they left a sizable tip,`,
type: "cash",
effect: 1,
});
break;
}
if (slave.counter.pitKills > 0) {
vignettes.push({
text: `${he} earned repeat business from a customer obsessed with the fact that ${he}'s a killer,`,
type: "cash",
effect: 1,
});
}
if (slave.counter.oral > 500) {
vignettes.push({
text: `a customer into degradation became obsessed with driving ${his} oral mileage as high as possible,`,
type: "cash",
effect: 1,
});
}
if (slave.counter.anal > 500 && slave.anus > 0) {
vignettes.push({
text: `a customer into degradation became obsessed with driving ${his} anal mileage as high as possible,`,
type: "cash",
effect: 1,
});
}
if (slave.counter.vaginal > 500 && slave.vagina > 0) {
vignettes.push({
text: `a customer into degradation became obsessed with driving ${his} pussy mileage as high as possible,`,
type: "cash",
effect: 1,
});
}
if (slave.devotion > 95) {
vignettes.push({
text: `${he} really pushed ${himself} to please a customer with tastes that disgusted ${him},`,
type: "cash",
effect: 1,
});
} else if (slave.devotion < -50) {
vignettes.push({
text: `${his} fury at being sold for sex turned a customer off before they could fuck ${him},`,
type: "cash",
effect: -1,
});
} else if (slave.devotion <= 20) {
vignettes.push({
text: `${he} treasured a love token given to ${him} by a customer ${he} fooled into thinking ${his} affection was real,`,
type: "devotion",
effect: -1,
});
}
if (slave.trust > 95) {
vignettes.push({
text: `${he} really pushed ${himself} to accept a customer with tastes that frightened ${him},`,
type: "cash",
effect: 1,
});
} else if (slave.trust < -50) {
vignettes.push({
text: `${his} tearful terror at being forced to sell ${himself} for sex turned a customer off before they could fuck ${him},`,
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,`,
type: "rep",
effect: 1,
});
} else if (slave.livingRules === "spare") {
if (canHear(slave)) {
vignettes.push({
text: `${he} got a poor night's sleep in the noisy dormitory, which took the shine off ${his} efforts for the whole day,`,
type: "rep",
effect: -1,
});
} else {
vignettes.push({
text: `the noise from the dormitory could not possibly disturb ${his} sleep, so ${he} got much better sleep than ${he} would have otherwise,`,
type: "rep",
effect: 1,
});
}
}
if (slave.releaseRules === "permissive" || slave.releaseRules === "masturbation") {
vignettes.push({
text: `a customer asked if ${he} masturbates, and then spent an hour jerking off as ${he} described how,`,
type: "cash",
effect: 1,
});
} else if (slave.releaseRules === "restrictive") {
vignettes.push({
text: `a customer asked if ${he} masturbates, and seemed disappointed when ${he} answered honestly,`,
type: "cash",
effect: 0,
});
} else {
vignettes.push({
text: `a closeted female customer asked about ${his} sex life with other slaves, and was enthralled by ${his} answer,`,
type: "rep",
effect: 1,
});
}
if (slave.health > 80) {
vignettes.push({
text: `a potential customer in the medical field was fascinated by ${his} health, and spent almost as much time examining ${him} as they did having sex with ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
if (slave.weight < 10) {
vignettes.push({
text: `${he} earned extra gratitude from a customer who misses ${boy}s without a spare tire around their middle,`,
type: "cash",
effect: 1,
});
} else if (slave.weight < 95) {
vignettes.push({
text: `a potential customer told ${him} that they are looking forward to patronizing ${him} once ${he} gains a lot more weight,`,
type: "cash",
effect: 0,
});
} else {
vignettes.push({
text: `${he} earned extra gratitude from a customer who loves them big and soft`,
type: "cash",
effect: 0,
});
}
if (slave.weight > 30) {
vignettes.push({
text: `${he} earned extra gratitude from a customer who enjoyed the way ${his} middle jiggled as they fucked ${him},`,
type: "cash",
effect: 0,
});
}
} else {
if (slave.weight > 95) {
vignettes.push({
text: `a potential customer told ${him} that they are looking forward to patronizing ${him} once ${he} loses a lot of weight,`,
type: "cash",
effect: 0,
});
} else if (slave.weight > 30) {
vignettes.push({
text: `a potential customer told ${him} that they are looking forward to patronizing ${him} once ${he} loses some weight,`,
type: "cash",
effect: 0,
});
} else if (slave.weight <= -30) {
vignettes.push({
text: `a potential customer told ${him} that they are looking forward to patronizing ${him} once ${he} gains some weight,`,
type: "cash",
effect: 0,
});
} else if (slave.weight < -95) {
vignettes.push({
text: `a potential customer told ${him} that they are looking forward to patronizing ${him} once ${he} gains a lot of weight,`,
type: "cash",
effect: 0,
});
}
}
if (slave.drugs === "testicle enhancement") {
vignettes.push({
text: `${he} took it in public, with ${his} copious ejaculation getting ${him} another customer right away,`,
type: "cash",
effect: 1,
});
} else if (slave.drugs === "hyper testicle enhancement") {
vignettes.push({
text: `${he} bloated a female customer's belly with ${his} copious ejaculate, leading her to say she is looking forward to come back and get filled again,`,
type: "rep",
effect: 1,
});
}
if (slave.aphrodisiacs > 1 || slave.inflationType === "aphrodisiac") {
vignettes.push({
text: `${his} piteous begging for sex due to ${his} extreme aphrodisiac dosage turned a potential customer off,`,
type: "cash",
effect: -1,
});
}
if (slave.inflationType === "aphrodisiac") {
vignettes.push({
text: `${his} piteous begging for sex coupled with ${his} bloated belly pleased a customer who loves desperate ${boy}s,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${his} piteous begging for sex coupled with ${his} bloated belly horrified a customer who didn't realize how low a ${boy} could stoop,`,
type: "rep",
effect: -1,
});
}
if (slave.addict > 50) {
vignettes.push({
text: `${he} zoned out badly due to a low point between aphrodisiac doses, disappointing a customer,`,
type: "rep",
effect: -1,
});
}
if (slave.bellyPreg >= 10000 || slave.bellyImplant >= 10000) {
vignettes.push({
text: `${he} earned repeat business from a customer who likes to do nothing more than cuddle with ${his} swollen belly,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `a night with guy who likes rough, hard sex with heavily pregnant ${boy}s took its toll on ${him},`,
type: "health",
effect: -1,
});
}
if (slave.bellyFluid >= 5000) {
vignettes.push({
text: `${he} earned repeat business from a customer who loved the way ${his} belly moved as they fucked ${him},`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a customer when their forceful fucking caused ${him} to release ${his} contained ${slave.inflationType} all over them,`,
type: "rep",
effect: -2,
});
}
if ((slave.hormoneBalance >= 100 || slave.ballType === "sterile") && !canAchieveErection(slave)) {
if (slave.dick > 0) {
vignettes.push({
text: `${he} disappointed a customer who was sure they could get ${slave.slaveName}'s cock erect,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `${he} earned repeat business from a customer who seems unthreatened by ${his} soft dick,`,
type: "cash",
effect: 1,
});
}
} else if (slave.hormoneBalance <= -100 && slave.dick === 0) {
vignettes.push({
text: `${he} earned repeat business from a female customer who adores the masculinity produced by ${slave.slaveName}'s hormone regime,`,
type: "cash",
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) {
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.balls > 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) {
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 (canDoVaginal(slave)) {
if (slave.vagina === 1) {
vignettes.push({
text: `${he} got extra business from a customer who really likes ${him}, and wants to fuck ${his} pussy as much as possible while it's still tight,`,
type: "cash",
effect: 1,
});
} else if (slave.vagina > 2) {
vignettes.push({
text: `${he} disappointed a customer whose cock is just too small for ${his} big cunt,`,
type: "rep",
effect: -1,
});
if (slave.behavioralQuirk === "cutting" && slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} helped a customer discover a new fetish by making cutting remarks when their cock was too small for ${his} big cunt,`,
type: "rep",
effect: 1,
});
} else if (slave.behavioralFlaw === "bitchy") {
vignettes.push({
text: `${he} irritated a male customer with ${his} complaints that they were too small to please ${him},`,
type: "rep",
effect: -2,
});
}
}
}
if (canDoAnal(slave)) {
if (slave.anus === 1) {
vignettes.push({
text: `${he} got extra business from a customer who really likes ${his} butthole, and wants to fuck it as much as possible while it's still tight,`,
type: "cash",
effect: 1,
});
} else if (slave.anus > 2) {
vignettes.push({
text: `${he} disappointed a customer whose cock is just too small for ${his} loose butthole,`,
type: "rep",
effect: -1,
});
}
}
if (slave.visualAge > 40) {
if (slave.face > 10 && slave.race === "asian") {
vignettes.push({
text: `${he} got repeat business from a customer who loves well-preserved asian ladies,`,
type: "cash",
effect: 1,
});
}
vignettes.push({
text: `${he} earned repeat business from a customer with serious mommy issues,`,
type: "cash",
effect: 1,
});
}
if (slave.face > 40) {
vignettes.push({
text: `${he} lost a potential customer who was so intimidated by ${his} great beauty that they decided to find a homelier whore,`,
type: "cash",
effect: -1,
});
} else if (slave.face < -10) {
vignettes.push({
text: `${he} earned repeat business from a customer who lacks self-confidence, and is more comfortable with homely whores,`,
type: "cash",
effect: 1,
});
}
if (slave.visualAge > 40) {
vignettes.push({
text: `${he} earned repeat business from a customer with serious mommy issues,`,
type: "cash",
effect: 1,
});
}
if (slave.lips > 70) {
vignettes.push({
text: `${he} earned repeat business from a customer who likes to play with ${his} lips nonsexually (don't ask),`,
type: "cash",
effect: 1,
});
}
if (slave.lipsPiercing > 0) {
vignettes.push({
text: `${he} was highly recommended by a customer who liked the feeling of ${his} lip piercings on his cock,`,
type: "cash",
effect: 1,
});
if (slave.lipsPiercing > 1) {
vignettes.push({
text: `a customer's pubic hairs got snagged in ${his} lip piercings,`,
type: "cash",
effect: -1,
});
}
}
if (!canTalk(slave)) {
vignettes.push({
text: `${he} impressed a customer who didn't know how relaxing a ${boy} who can't talk could be,`,
type: "rep",
effect: 1,
});
}
if (slave.muscles > 95) {
vignettes.push({
text: `${he} impressed a customer who was so eager to share workout plans with ${him} that they almost forgot to have sex with ${him},`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} gained repeat business from a female customer who likes a ${boy} who can bench-press her before and after they fuck,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} disappointed a customer by accidentally revealing that ${he}'s considerably stronger than them,`,
type: "rep",
effect: -1,
});
}
if (slave.lactation > 0) {
vignettes.push({
text: `${he} was well compensated for providing fresh milk for the coffee served at a customer's business meeting,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `${he} served as a conveniently lactating whore near a trendy arcology coffeehouse,`,
type: "cash",
effect: 1,
});
}
if (!canWalk(slave)) {
vignettes.push({
text: `${his} lack of mobility severely hindered ${his} attempts to find customers,`,
type: "cash",
effect: -1,
});
} else {
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",
effect: 1,
});
}
}
if (slave.amp === 1) {
vignettes.push({
text: `${he} disappointed a customer who thought they would enjoy fucking a quadruple amputee, but found it revolting,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -1) {
vignettes.push({
text: `a strange customer was excited by the sight of ${his} prosthetic limbs,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a customer was disgusted at the thought of ${his} basic prosthetic limbs,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `a customer was put off by ${his} prosthetic limbs,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -2) {
vignettes.push({
text: `a customer was excited by ${his} vibrating fingertips,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a customer was indifferent to the thought of having sex with a slave with artificial limbs,`,
type: "cash",
effect: 0,
});
vignettes.push({
text: `a customer was put off by ${his} crude artificial limbs,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -3) {
vignettes.push({
text: `a strange customer was excited by the sight of ${his} artificial limbs,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a customer was indifferent to the thought of having sex with a slave with artificial limbs,`,
type: "cash",
effect: 0,
});
vignettes.push({
text: `a customer was put off by the sight of ${his} prosthetic limbs,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -4) {
vignettes.push({
text: `a customer was excited by the thought of having sex with a slave with p-limbs, but was scared off by ${his} combat p-limbs,`,
type: "cash",
effect: -1,
});
vignettes.push({
text: `a customer was indifferent to the thought of having sex with a slave with artificial limbs,`,
type: "cash",
effect: 0,
});
vignettes.push({
text: `a customer was greatly intimidated by ${his} combat p-limbs,`,
type: "cash",
effect: -1,
});
} else if (slave.amp === -5) {
vignettes.push({
text: `a customer was fascinated by ${his} cybernetic limbs, and spent almost as much time examining them as they did having sex with ${him},`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `a customer was excited by the thought of having sex with a cybernetically enhanced slave,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a customer was greatly intimidated by the sight of ${his} cybernetic limbs and was frightened away,`,
type: "cash",
effect: -1,
});
}
if (slave.heels === 1 && !(["boots", "extreme heels", "heels", "pumps"].includes(slave.shoes))) {
vignettes.push({
text: `${he} enticed a new customer who had never really considered buttsex before they saw ${him} crawling along with ${his} asshole vulnerable,`,
type: "cash",
effect: 1,
});
}
if (slave.chastityVagina === 1) {
vignettes.push({
text: `a wavering customer who was disappointed that ${his} pussy was unavailable decided to try ${his} mouth instead,`,
type: "cash",
effect: 1,
});
if (slave.chastityAnus !== 1) {
vignettes.push({
text: `a wavering customer who was disappointed that ${his} pussy was unavailable decided to try ${his} ass instead,`,
type: "cash",
effect: 1,
});
}
}
if (slave.collar === "shock punishment") {
vignettes.push({
text: `a customer discovered that the remote control for his video screen also worked on ${his} shock collar,`,
type: "trust",
effect: -1,
});
}
if (slave.fetish === "mindbroken") {
vignettes.push({
text: `a customer really enjoyed being able to treat ${him} however they liked without eliciting a reaction,`,
type: "cash",
effect: 1,
});
}
if (slave.intelligence + slave.intelligenceImplant < -50) {
vignettes.push({
text: `a customer managed to trick ${him} into fucking him without payment,`,
type: "cash",
effect: -1,
});
}
if (slave.accent > 2) {
vignettes.push({
text: `a wealthy foreign tourist was so glad to hear somebody speaking his native language that he hired ${him} for the whole week,`,
type: "cash",
effect: 1,
});
}
if (slave.face > 10 && canDoAnal(slave)) {
if (slave.dick > 0) {
if (slave.fetish === "buttslut" && jsRandom(0, 100) < 50) {
vignettes.push({
text: `a customer was surprised by ${his} penis, so ${he} hid it and enjoyed the buttsex without touching it,`,
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,
});
}
}
if (slave.skill.anal < 100 && slave.anus > 2) {
vignettes.push({
text: `a pair of customers enticed by ${his} beauty but disappointed by ${his} loose butthole doubled up on ${his} poor anus without mercy,`,
type: "health",
effect: -1,
});
}
}
if (slave.fetishKnown === 1 && slave.fetishStrength > 95) {
if (slave.fetish === "buttslut" || slave.fetish === "dom") {
vignettes.push({
text: `${he} advertised ${himself} by forcing a slave in the stocks to eat ${his} ass, drumming up business,`,
type: "cash",
effect: 1,
});
} else if (slave.fetish === "masochist") {
vignettes.push({
text: `${he} cooperated with a citizen who wanted to whip ${his} tits black and blue,`,
type: "health",
effect: -1,
});
}
}
if (slave.health < 20) {
vignettes.push({
text: `${he} attracted the attention of a slaveowner alarmed by ${his} poor health, and thought they seemed kind,`,
type: "devotion",
effect: -1,
});
}
if (slave.skill.vaginal >= 100) {
vignettes.push({
text: `${he} was hired to apply ${his} skills to a customer's virgin son,`,
type: "devotion",
effect: 0,
});
}
if (canDoAnal(slave) && slave.skill.anal < 100 && slave.anus < 2) {
vignettes.push({
text: `a guy with a huge cock paid for the right to fuck ${him} in ${his} tight ass all night,`,
type: "health",
effect: -1,
});
}
if (slave.relationship <= -2 && slave.intelligence + slave.intelligenceImplant <= 15) {
vignettes.push({
text: `${he} accidentally mentions how much ${he} loves you during intercourse with a customer who doesn't like to share,`,
type: "rep",
effect: -1,
});
}
if (slave.prestige > 0) {
vignettes.push({
text: `a college fraternity visiting the arcology for rush week hired ${him} for a gangbang,`,
type: "cash",
effect: 3,
});
}
if (V.arcologies[0].FSSupremacist !== "unset") {
if (slave.race === V.arcologies[0].FSSupremacistRace) {
vignettes.push({
text: `${he} lost a customer who couldn't bear to see a beautiful ${V.arcologies[0].FSSupremacistRace} be a whore,`,
type: "cash",
effect: -1,
});
}
if (V.arcologies[0].FSSupremacistRace === "asian") {
vignettes.push({
text: `${he} was hired to be the special guest at a rather unconventional seijin-shiki celebration party,`,
type: "cash",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "semitic") {
vignettes.push({
text: `${he} was hired to be the special guest at a rather unconventional bar mitzvah celebration party,`,
type: "cash",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "white") {
vignettes.push({
text: `${he} was hired to be the special guest at a rather unconventional Jugendweihe celebration party,`,
type: "cash",
effect: 1,
});
}
}
if (V.arcologies[0].FSSubjugationist !== "unset") {
if (slave.race === V.arcologies[0].FSSubjugationistRace) {
vignettes.push({
text: `${he} had a bad time in general, since most of ${his} customers didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`,
type: "health",
effect: -1,
});
}
}
if (V.arcologies[0].FSYouthPreferentialist !== "unset") {
if (slave.visualAge > 35) {
vignettes.push({
text: `${he} got repeat business from a customer who wants to keep their MILF fetish in the closet,`,
type: "cash",
effect: 1,
});
}
} else if (V.arcologies[0].FSMaturityPreferentialist !== "unset") {
if (slave.visualAge <= 20) {
vignettes.push({
text: `${he} got repeat business from a customer who wants to keep their fetish for young ${boy}s in the closet,`,
type: "cash",
effect: 1,
});
}
}
if (V.arcologies[0].FSGenderRadicalist !== "unset") {
if (slave.dick > 0 && slave.dick < 3) {
vignettes.push({
text: `${he} got repeat business from a customer who is coming to terms with Gender Radicalism, and is unthreatened by ${his} little penis,`,
type: "cash",
effect: 1,
});
}
} else if (V.arcologies[0].FSGenderFundamentalist !== "unset") {
if (slave.visualAge > 25) {
vignettes.push({
text: `${he} got repeat business from a customer who thinks ${he} resembles their ex-wife, who would never let them fuck her butt,`,
type: "cash",
effect: 1,
});
}
}
if (V.arcologies[0].FSRepopulationFocus !== "unset" || V.arcologies[0].FSRepopulationFocusSMR === 1) {
if (slave.pregType > 1 && slave.pregKnown > 1 && slave.belly >= 10000) {
vignettes.push({
text: `${he} got repeat business from a customer who loves fucking ${boy}s with wombs filled by more than a single child,`,
type: "cash",
effect: 1,
});
}
if (slave.preg > slave.pregData.normalBirth / 4 && slave.pregKnown > 1 && slave.bellyPreg >= 5000) {
vignettes.push({
text: `a customer loved ${his} pregnant belly so much that he came back for repeat business,`,
type: "cash",
effect: 1,
});
}
} else if (V.arcologies[0].FSRestart !== "unset") {
if (canGetPregnant(slave)) {
vignettes.push({
text: `${he} got repeat business from a customer who misses the risk of getting a ${boy} pregnant,`,
type: "cash",
effect: 3,
});
}
}
if (V.arcologies[0].FSPaternalist !== "unset") {
if (slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} got repeat business from a customer who likes to chat with intelligent prostitutes while fucking,`,
type: "cash",
effect: 1,
});
}
} else if (V.arcologies[0].FSDegradationist !== "unset") {
if (canTalk(slave) && 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,
});
}
if (slave.visualAge > 40) {
vignettes.push({
text: `a customer wrote a note on ${his} face that said: 'Retire it to an arcade',`,
type: "trust",
effect: -1,
});
}
vignettes.push({
text: `a rich customer had fun seeing how much money he could cram in ${his} holes without using any lube,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `a displeased customer grabbed a permanent marker and wrote a critique of ${his} sex skills on ${his} chest,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `two sadistic customers had fun roughing ${him} up,`,
type: "health",
effect: -1,
});
}
if (V.arcologies[0].FSBodyPurist !== "unset") {
if (slave.boobsImplant > 0) {
vignettes.push({
text: `${he} got repeat business from a customer who wants to keep their fetish for breast implants in the closet,`,
type: "cash",
effect: 1,
});
}
} else if (V.arcologies[0].FSTransformationFetishist !== "unset") {
if (slave.boobsImplant === 0) {
vignettes.push({
text: `${he} got repeat business from a customer who wants to keep their fetish for natural breasts in the closet,`,
type: "cash",
effect: 1,
});
}
if (slave.boobsImplant >= 500) {
vignettes.push({
text: `a photographer won an award for an artistic close-up of one of ${his} implant-heavy tits,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") {
if (canTalk(slave) && slave.voice > 2) {
vignettes.push({
text: `${he} got repeat business from a customer who loves ${his} high-pitched squeals of pleasure,`,
type: "cash",
effect: 1,
});
}
if (slave.boobs > 800) {
vignettes.push({
text: `${he} was publicly mocked as an ugly fat cow with dangling udders,`,
type: "rep",
effect: -1,
});
}
} else if (V.arcologies[0].FSAssetExpansionist !== "unset") {
if (slave.boobs < 300) {
vignettes.push({
text: `${he} got repeat business from a customer who wants to keep their fetish for flat chested ${boy}s in the closet,`,
type: "cash",
effect: 1,
});
}
}
if (V.arcologies[0].FSPastoralist !== "unset") {
if (slave.lactation === 0) {
vignettes.push({
text: `${he} lost a customer who could not understand why nothing was coming out of ${his} nipples when they sucked on them,`,
type: "cash",
effect: -1,
});
}
if (slave.nipples === "fuckable") {
vignettes.push({
text: `${he} lost a customer who refused ${he} could possibly be a proper cow with nipples like ${hers},`,
type: "cash",
effect: -1,
});
}
}
if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
if (slave.muscles <= 95) {
vignettes.push({
text: `${he} lost a customer who could barely believe that ${he} wasn't capable of holding ${himself} in a handstand,`,
type: "cash",
effect: -1,
});
}
}
if (V.arcologies[0].FSChattelReligionist !== "unset") {
if (slave.behavioralFlaw === "devout") {
vignettes.push({
text: `${he} got repeat business from a customer who desperately wants their cock to be the one that converts ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSRomanRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Roman mythology attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSAztecRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Aztec mythology attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSEgyptianRevivalistRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Egyptian mythology attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSArabianRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Sunni Islam attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSEdoRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Shintoism attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSChineseRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Chinese folk religion attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSSupremacist !== "unset") {
if (V.arcologies[0].FSSupremacistRace === "asian") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Buddhism attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "indo-aryan") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Hinduism attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "latina" || V.arcologies[0].FSSupremacistRace === "southern european") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Roman Catholicism attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "middle eastern") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Islam attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "semitic") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Judaism attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "white") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Norse mythology attracted a large crowd near ${him},`,
type: "cash",
effect: 1,
});
}
}
}
if (V.arcologies[0].FSRomanRevivalist !== "unset") {
if (slave.race === "white" && slave.height >= 185) {
vignettes.push({
text: `${he} attracted a customer who thought ${his} appearance worthy of a lusty northern barbarian,`,
type: "cash",
effect: 1,
});
}
}
if (V.arcologies[0].FSAztecRevivalist !== "unset") {
if (slave.devotion > 75 && slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} indulged a citizen by following a fertility ritual completely,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
vignettes.push({
text: `${he} got extra business from a group of citizens competing to get off with whores of each of the arcology's ethnic groups in the least time,`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSEdoRevivalist !== "unset") {
if (slave.face > 40 && slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} got repeat business from a customer who wished to do nothing more than converse with a beautiful and intelligent ${boy},`,
type: "cash",
effect: 1,
});
}
vignettes.push({
text: `${he} was hired to be the special guest at a rather unconventional genpuku celebration party,`,
type: "cash",
effect: 1,
});
}
if (V.arcologies[0].FSArabianRevivalist !== "unset") {
if (slave.skill.entertainment >= 100 && canTalk(slave) && slave.voice > 0 && slave.accent < 2) {
vignettes.push({
text: `${he} got repeat business from a customer who prefers prostitutes who can tell lovely stories,`,
type: "cash",
effect: 1,
});
}
}
if (V.arcologies[0].FSChineseRevivalist !== "unset") {
if (slave.dick > 0 && slave.balls === 2) {
vignettes.push({
text: `a citizen admired ${his} lack of balls and praised ${him} for being like the eunuchs in Chinese history,`,
type: "cash",
effect: 1,
});
}
vignettes.push({
text: `${he} was hired to be the special guest at a rather unconventional Guan Li celebration 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",
effect: 1,
});
vignettes.push({
text: `a man dragged his crying wife along so she could watch him fuck a whore,`,
type: "rep",
effect: 0,
});
if (V.seeDicks !== 100) {
vignettes.push({
text: `a woman dragged her angry husband along so he could watch her get eaten out by a whore,`,
type: "rep",
effect: 0,
});
} else {
vignettes.push({
text: `a man dragged his angry lover along so he could watch him get sucked off by a whore,`,
type: "rep",
effect: 0,
});
}
vignettes.push({
text: `${he} went to sleep after being sold for sex all day, and had a dream about you loving ${him},`,
type: "devotion",
effect: 1,
});
vignettes.push({
text: `${he} went to sleep after being sold for sex all day, and had a dream about you letting a customer hurt ${him},`,
type: "devotion",
effect: -1,
});
vignettes.push({
text: `${he} went to sleep after being sold for sex all day, and had a dream about you protecting ${him} from a mean customer,`,
type: "trust",
effect: 1,
});
vignettes.push({
text: `${he} went to sleep after being sold for sex all day, and had a dream about you selling ${him} for good,`,
type: "trust",
effect: -1,
});
} else if (slave.assignment === "serve the public" || slave.assignment === window.Job.CLUB || slave.assignment === window.Job.DJ) {
let seed = jsRandom(1, 10);
switch (seed) {
case 1:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} witnessed a domestic dispute over another slut,`,
type: "rep",
effect: 0,
});
break;
case 2:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} saw an aphrodisiac addict ${he} knew sell herself into slavery,`,
type: "rep",
effect: 0,
});
break;
case 3:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} had to move to follow the <span class="green">most prominent citizens</span> to a newly fashionable hall,`,
type: "rep",
effect: 0,
});
break;
case 4:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that a citizen used a new and improved sex toy on ${him},`,
type: "rep",
effect: 0,
});
break;
case 5:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was being used in public by an incestuous pair of citizens,`,
type: "rep",
effect: 0,
});
break;
case 6:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} saw a notorious slut come of age and start swapping anal for aphrodisiacs,`,
type: "rep",
effect: 0,
});
break;
case 7:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} saw a citizen experiment with lesbian sex for the first time, in public,`,
type: "rep",
effect: 0,
});
break;
case 8:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} watched a citizen descend into aphrodisiac addiction,`,
type: "rep",
effect: 0,
});
break;
case 9:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} watched a citizen develop the beginnings of sex addiction,`,
type: "rep",
effect: 0,
});
break;
default:
vignettes.push({
text: `the most interesting thing that happened to ${him} at work was that ${he} witnessed a citizen using a public slut so brutally that they had to pay compensation afterward,`,
type: "rep",
effect: 0,
});
break;
}
seed = jsRandom(1, 5);
switch (seed) {
case 1:
vignettes.push({
text: `a citizen punished one of his slaves by tying her up in public near where ${slave.slaveName} was serving as a public slut. This made ${him} less popular that day,`,
type: "rep",
effect: -1,
});
break;
case 2:
vignettes.push({
text: `a citizen shared one of his slaves with the public near where ${slave.slaveName} was serving as a public slut. This made ${him} less popular that day,`,
type: "rep",
effect: -1,
});
break;
case 3:
vignettes.push({
text: `a private brothel offered a promotion near where ${slave.slaveName} was serving as a public slut. This made ${him} less popular that day,`,
type: "rep",
effect: -1,
});
break;
case 4:
vignettes.push({
text: `some free sluts threw an aphrodisiac street party near where ${slave.slaveName} was serving as a public slut. This made ${him} less popular that day,`,
type: "rep",
effect: -1,
});
break;
default:
vignettes.push({
text: `a contract breaker was punished with the pillory near where ${slave.slaveName} was serving as a public slut. This made ${him} less popular that day,`,
type: "rep",
effect: -1,
});
break;
}
seed = jsRandom(1, 5);
switch (seed) {
case 1:
vignettes.push({
text: `one of ${his} regular patrons got a divorce and came to ${him} for repeated consolation,`,
type: "rep",
effect: 1,
});
break;
case 2:
vignettes.push({
text: `a club near where ${slave.slaveName} usually works had business trouble,`,
type: "rep",
effect: 1,
});
break;
case 3:
vignettes.push({
text: `a competing slut that looks like ${him} fell ill, driving a patron to look for an alternative,`,
type: "rep",
effect: 1,
});
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,`,
type: "rep",
effect: 1,
});
break;
default:
vignettes.push({
text: `an influx of tourists came into ${his} part of the arcology, earning ${him} more business for a day,`,
type: "rep",
effect: 1,
});
break;
}
if (slave.fetishKnown === 1) {
switch (slave.fetish) {
case "submissive":
vignettes.push({
text: `${he} deeply impressed a citizen with ${his} sincere submission to them,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} lost a patron who secretly wanted ${him} to show a little initiative,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `an overeager sadistic customer roughed ${him} up more than a normal submissive like ${him} is used to,`,
type: "health",
effect: -1,
});
break;
case "cumslut":
vignettes.push({
text: `${he} deeply impressed a citizen with ${his} hunger for their cum,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a citizen who didn't know how much cum fetishes revolted them until ${he} displayed ${hers},`,
type: "rep",
effect: -1,
});
break;
case "humiliation":
vignettes.push({
text: `${he} earned extra gratitude from a citizen who didn't know how much they liked public sex until ${he} got them to try it,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a citizen who didn't know how much exhibitionism turned them off until they tried public sex with ${him},`,
type: "rep",
effect: -1,
});
break;
case "buttslut":
if (canDoAnal(slave)) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who didn't know how much they liked fucking buttholes until ${he} got them to try fucking ${hers},`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a citizen who didn't know how much buttsex turned them off until ${he} got them to try fucking ${his} ass,`,
type: "rep",
effect: -1,
});
}
if (slave.butt >= 3) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who didn't know how much they liked big butts until ${he} gave them a lap dance they'll never forget,`,
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",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a citizen who didn't know how much butts turned them off until ${he} put ${his} hands on theirs,`,
type: "rep",
effect: -1,
});
break;
case "boobs":
vignettes.push({
text: `${he} deeply impressed a citizen by orgasming to nothing but the feeling of them sucking ${his} nipples,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disappointed a female citizen who didn't know how uninterested she was in nipple play before trying it,`,
type: "rep",
effect: -1,
});
if (slave.nipples === "fuckable") {
vignettes.push({
text: `${he} left a lasting impression on a pair of citizens after nearly passing out from a series of intense orgasms from getting ${his} nipples fucked,`,
type: "rep",
effect: 2,
});
}
break;
case "sadist":
vignettes.push({
text: `${he} deeply impressed a citizen who brought their own slave to ${his} for abuse with ${his} sadism,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a citizen brought ${him} their own slave to abuse, but the sight proved to be a turn off,`,
type: "rep",
effect: -1,
});
break;
case "masochist":
vignettes.push({
text: `${he} helped a citizen discover a new fetish by orgasming when they accidentally hurt ${him},`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disturbed a citizen who accidentally hurt ${him} by orgasming,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `a group of overzealous citizens gangbanging ${him} got a little too excited hearing ${him} get off on abuse, leaving ${him} sore and injured,`,
type: "health",
effect: -1,
});
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`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} accidentally overwhelmed a citizen with ${his} sexual dominance,`,
type: "rep",
effect: -1,
});
break;
case "pregnancy":
vignettes.push({
text: `${he} earned extra gratitude from a citizen who didn't know how much they liked pregnancy play until ${he} begged them to knock ${him} up,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a citizen who didn't know how much pregnancy play turned them off until ${he} begged them to knock ${him} up,`,
type: "rep",
effect: -1,
});
break;
}
}
switch (slave.behavioralFlaw) {
case "arrogant":
vignettes.push({
text: `${he} manages to give a citizen the impression ${he} thinks ${himself} better than them,`,
type: "rep",
effect: -1,
});
break;
case "bitchy":
vignettes.push({
text: `${he} made an emasculating remark to a citizen right after they fucked ${him},`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `${he} was slapped by a citizen who was angry at ${his} rude remarks,`,
type: "health",
effect: -1,
});
break;
case "odd":
vignettes.push({
text: `${he} infuriates a potential citizen with ${his} nervous tics,`,
type: "rep",
effect: -1,
});
break;
case "hates men":
vignettes.push({
text: `${his} disgust towards men surfaces at a bad time, angering a male citizen,`,
type: "rep",
effect: -1,
});
break;
case "hates women":
vignettes.push({
text: `${his} disgust towards women surfaces at a bad time, angering a female citizen,`,
type: "rep",
effect: -1,
});
break;
case "gluttonous":
vignettes.push({
text: `${he} accidentally lingers at a meal, missing an appointment with a citizen,`,
type: "rep",
effect: -1,
});
break;
case "anorexic":
vignettes.push({
text: `${his} bulimia surfaces at an extremely inopportune moment, turning a citizen off,`,
type: "rep",
effect: -1,
});
break;
case "devout":
vignettes.push({
text: `a citizen catches ${him} praying to ${himself} as they inserted themselves into ${him}, turning them off,`,
type: "rep",
effect: -1,
});
break;
case "liberated":
vignettes.push({
text: `${he} treats a rude citizen impolitely, because ${he} thinks that's fair,`,
type: "rep",
effect: -1,
});
break;
}
switch (slave.sexualFlaw) {
case "hates oral":
vignettes.push({
text: `${he} vomits while trying to deepthroat a citizen,`,
type: "rep",
effect: -1,
});
break;
case "hates anal":
vignettes.push({
text: `${he} cries while taking anal from a citizen who isn't into painal,`,
type: "rep",
effect: -1,
});
break;
case "hates penetration":
vignettes.push({
text: `${he} cries while taking a pounding from a citizen who likes their sex consensual,`,
type: "rep",
effect: -1,
});
break;
case "shamefast":
vignettes.push({
text: `${he} cries while a citizen looks ${him} over,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `${he} disrobed so slowly that a horny citizen gave up on ${him},`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `a citizen impatient with how slowly ${he} was disrobing ripped off ${his} clothes and roughed ${him} up,`,
type: "health",
effect: -1,
});
break;
case "idealistic":
vignettes.push({
text: `${he} cries when explaining to a citizen that sex with ${him} is free,`,
type: "rep",
effect: -1,
});
break;
case "repressed":
vignettes.push({
text: `${he} misunderstands a citizen's lewd requests, turning them off,`,
type: "rep",
effect: -1,
});
break;
case "apathetic":
vignettes.push({
text: `${he} fails to notice when a citizen achieves orgasm,`,
type: "rep",
effect: -1,
});
break;
case "neglectful":
vignettes.push({
text: `${he} brings a denial fetishist to orgasm three times without cumming ${himself}, impressing them completely,`,
type: "rep",
effect: 3,
});
break;
case "cum addict":
vignettes.push({
text: `${he}'s so focused on sucking down a client's cum that ${he} managed to drive them to repeated orgasm, earning their admiration once the feeling returns to their legs,`,
type: "rep",
effect: 3,
});
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,`,
type: "rep",
effect: 3,
});
break;
case "attention whore":
vignettes.push({
text: `${he} earned extra gratitude by drawing attention to a savvy businessman from their superiors,`,
type: "rep",
effect: 3,
});
break;
case "breast growth":
vignettes.push({
text: `${he} earned extra gratitude from a citizen who never realized breast growth turned them on so much,`,
type: "rep",
effect: 3,
});
break;
case "abusive":
vignettes.push({
text: `${he} abuses a rival public servant so viciously that a catfight lover takes ${him} right there,`,
type: "rep",
effect: 3,
});
break;
case "malicious":
vignettes.push({
text: `${he} earned extra gratitude from a masochist who loved the way ${he} traced ${his} scars, and added some new ones,`,
type: "rep",
effect: 3,
});
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,`,
type: "rep",
effect: 3,
});
break;
case "breeder":
vignettes.push({
text: `${his} pregnancy obsession earned ${him} extra gratitude from a man with an intense pregnancy fetish,`,
type: "rep",
effect: 3,
});
break;
}
switch (slave.behavioralQuirk) {
case "confident":
vignettes.push({
text: `${he} confidently presses 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,`,
type: "rep",
effect: 1,
});
break;
case "funny":
vignettes.push({
text: `${he} made a group of citizens laugh so hard, one of them came to ${him} for sex later,`,
type: "rep",
effect: 1,
});
break;
case "fitness":
vignettes.push({
text: `${he} continued a marathon gangbang well past the point where most would have passed out,`,
type: "rep",
effect: 1,
});
break;
case "adores women":
vignettes.push({
text: `${he} struck up a personal friendship with a regular female patron,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} adoringly kissed the feet of a local socialite who leaves ${him} a generous tip,`,
type: "cash",
effect: 1,
});
break;
case "adores men":
vignettes.push({
text: `${he} struck up a personal friendship with a regular male patron,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} practically worshipped a minor celebrity, eagerly slobbering over his cock and covering ${himself} with his cum,`,
type: "rep",
effect: 1,
});
break;
case "insecure":
vignettes.push({
text: `${he} successfully convinced a regular patron that they are reliant on ${him} emotionally,`,
type: "rep",
effect: 1,
});
break;
case "sinful":
vignettes.push({
text: `${he} helped a citizen get past their religious hang-ups through sex with the friendly neighborhood slut,`,
type: "rep",
effect: 1,
});
break;
case "advocate":
vignettes.push({
text: `${he} successfully convinced a wavering potential citizen that there's nothing wrong with banging a public slut,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} managed to convince a skeptical businessman about the merits of using slaves,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${his} enthusiastic discussion of the merits of slavery convinced a young woman to sell herself into slavery, so the new owner gave you a finder's fee,`,
type: "cash",
effect: 1,
});
break;
}
switch (slave.sexualQuirk) {
case "gagfuck queen":
vignettes.push({
text: `${he} earned extra gratitude from a citizen who's obsessed with gagfucks,`,
type: "rep",
effect: 1,
});
break;
case "painal queen":
vignettes.push({
text: `${he} earned extra gratitude from a citizen who's obsessed with painal,`,
type: "rep",
effect: 1,
});
break;
case "strugglefuck queen":
vignettes.push({
text: `${he} earned extra gratitude from a citizen who's obsessed with strugglefucking,`,
type: "rep",
effect: 1,
});
break;
case "tease":
vignettes.push({
text: `${he} convinced a citizen who'd never had sex with a street slut to patronize ${him} with some truly inspired flirting,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a few partiers were so impressed with ${his} provocative teasing that they repeated ${his} wit to friends,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a few partygoers were so impressed with ${his} provocative teasing that they left ${him} a sizable tip,`,
type: "cash",
effect: 1,
});
break;
case "romantic":
vignettes.push({
text: `a citizen became infatuated with ${him}, since they are convinced ${he}'s infatuated with them,`,
type: "rep",
effect: 1,
});
break;
case "perverted":
vignettes.push({
text: `${he} earned some momentary notoriety by engaging in a previously unheard-of sex act,`,
type: "rep",
effect: 1,
});
break;
case "caring":
vignettes.push({
text: `${he} served as an impromptu sounding board for a citizen having marital trouble,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a citizen was so enamored with ${his} kind and caring manner than they proposed to ${him} and offered to take ${him} away, and when ${he} refused, they urged a sizable tip on ${him},`,
type: "cash",
effect: 1,
});
break;
}
if (slave.counter.pitKills > 0) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen obsessed with the fact that ${he}'s a killer,`,
type: "rep",
effect: 1,
});
}
if (slave.counter.oral > 500) {
vignettes.push({
text: `a citizen into degradation became obsessed with driving ${his} oral mileage as high as possible,`,
type: "rep",
effect: 1,
});
}
if (slave.counter.anal > 500 && slave.anus > 0) {
vignettes.push({
text: `a citizen into degradation became obsessed with driving ${his} anal mileage as high as possible,`,
type: "rep",
effect: 1,
});
}
if (slave.counter.vaginal > 500 && slave.vagina > 0) {
vignettes.push({
text: `a citizen into degradation became obsessed with driving ${his} pussy mileage as high as possible,`,
type: "rep",
effect: 1,
});
}
if (slave.devotion > 95) {
vignettes.push({
text: `${he} really pushed ${himself} to please a citizen with tastes that disgusted ${him},`,
type: "rep",
effect: 1,
});
} else if (slave.devotion < -50) {
vignettes.push({
text: `${his} fury at being sold for sex turned a citizen off before they could fuck ${him},`,
type: "rep",
effect: -1,
});
} 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,`,
type: "devotion",
effect: -1,
});
}
if (slave.trust > 95) {
vignettes.push({
text: `${he} really pushed ${himself} to accept a citizen with tastes that frightened ${him},`,
type: "rep",
effect: 1,
});
} else if (slave.trust < -50) {
vignettes.push({
text: `${his} tearful terror at being forced to offer ${himself} for sex turned a citizen off before they could fuck ${him},`,
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,`,
type: "rep",
effect: 1,
});
} else if (slave.livingRules === "spare") {
if (canHear(slave)) {
vignettes.push({
text: `${he} got a poor night's sleep in the noisy dormitory, which took the shine off ${his} efforts for the whole day,`,
type: "rep",
effect: -1,
});
} else {
vignettes.push({
text: `the noise from the dormitory could not possibly disturb ${his} sleep, so ${he} got much better sleep than ${he} would have otherwise,`,
type: "rep",
effect: 1,
});
}
}
if (slave.releaseRules === "permissive" || slave.releaseRules === "masturbation") {
vignettes.push({
text: `a citizen asked if ${he} masturbates, and then spent an hour jerking off as ${he} described how,`,
type: "rep",
effect: 1,
});
} else if (slave.releaseRules === "restrictive") {
vignettes.push({
text: `a citizen asked if ${he} masturbates, and seemed disappointed when ${he} answered honestly,`,
type: "rep",
effect: 0,
});
} else {
vignettes.push({
text: `a closeted female citizen asked about ${his} sex life with other slaves, and was enthralled by ${his} answer,`,
type: "rep",
effect: 1,
});
}
if (slave.health > 80) {
vignettes.push({
text: `a potential citizen in the medical field was fascinated by ${his} health, and spent almost as much time examining ${him} as they did having sex with ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSHedonisticDecadence !== "unset") {
if (slave.weight < 10) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who misses ${boy}s without a spare tire around their middle,`,
type: "rep",
effect: 0,
});
} 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,`,
type: "rep",
effect: 0,
});
} else {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who loves them big and soft`,
type: "rep",
effect: 0,
});
}
if (slave.weight > 30) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who enjoyed the way ${his} middle jiggled as they fucked ${him},`,
type: "rep",
effect: 0,
});
}
} else {
if (slave.weight > 95) {
vignettes.push({
text: `a potential citizen told ${him} that they are looking forward to patronizing ${him} once ${he} loses a lot of weight,`,
type: "rep",
effect: 0,
});
} else if (slave.weight > 30) {
vignettes.push({
text: `a potential citizen told ${him} that they are looking forward to patronizing ${him} once ${he} loses some weight,`,
type: "rep",
effect: 0,
});
} else if (slave.weight <= -30) {
vignettes.push({
text: `a potential citizen told ${him} that they are looking forward to patronizing ${him} once ${he} gains some weight,`,
type: "rep",
effect: 0,
});
} else if (slave.weight < -95) {
vignettes.push({
text: `a potential citizen told ${him} that they are looking forward to patronizing ${him} once ${he} gains a lot of weight,`,
type: "rep",
effect: 0,
});
}
}
if (slave.drugs === "testicle enhancement") {
vignettes.push({
text: `${he} took it in public, with ${his} copious ejaculation attracting more citizens,`,
type: "rep",
effect: 1,
});
} else if (slave.drugs === "hyper testicle enhancement") {
vignettes.push({
text: `${he} bloated a female citizen's belly with ${his} copious ejaculate, leading her to recommend your slaves for girls that want to look pregnant without actually getting pregnant,`,
type: "rep",
effect: 1,
});
}
if (slave.aphrodisiacs > 1 || slave.inflationType === "aphrodisiac") {
vignettes.push({
text: `${his} piteous begging for sex due to ${his} extreme aphrodisiac dosage turned a citizen off,`,
type: "rep",
effect: -1,
});
}
if (slave.inflationType === "aphrodisiac") {
vignettes.push({
text: `${his} piteous begging for sex coupled with ${his} bloated belly pleased a citizen who loves desperate sluts,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${his} piteous begging for sex coupled with ${his} bloated belly horrified a citizen who didn't realize how low a ${boy} could stoop,`,
type: "rep",
effect: -1,
});
}
if (slave.addict > 50) {
vignettes.push({
text: `${he} zoned out badly due to a low point between aphrodisiac doses, disappointing a citizen,`,
type: "rep",
effect: -1,
});
}
if (slave.bellyPreg >= 10000 || slave.bellyImplant >= 10000) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who likes to do nothing more than cuddle with ${his} swollen belly,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a night with guy who likes rough, hard sex with heavily pregnant ${boy}s took its toll on ${him}`,
type: "health",
effect: -1,
});
}
if (slave.bellyFluid >= 5000) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who loved the way ${his} belly sloshed and moved to their teasing,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disgusted a citizen when his forceful fucking caused ${him} to release ${his} contained ${slave.inflationType} all over them,`,
type: "rep",
effect: -2,
});
}
if ((slave.hormoneBalance >= 100 || slave.ballType === "sterile") && !canAchieveErection(slave)) {
if (slave.dick > 0) {
vignettes.push({
text: `${he} disappointed a citizen who was sure they could get ${slave.slaveName}'s cock erect,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `${he} earned extra gratitude from a citizen who seems unthreatened by ${his} soft dick,`,
type: "rep",
effect: 1,
});
}
} else if (slave.hormoneBalance <= -100 && slave.dick === 0) {
vignettes.push({
text: `${he} earned extra gratitude from a female citizen who adores the masculinity produced by ${slave.slaveName}'s hormone regime,`,
type: "rep",
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) {
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.balls === 0 && slave.dick > 0) {
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 > 3) {
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",
effect: -1,
});
}
if (canDoVaginal(slave)) {
if (slave.vagina === 1) {
vignettes.push({
text: `${he} got extra attention from a citizen who really likes ${him}, and wants to fuck ${his} pussy as much as possible while it's still tight,`,
type: "rep",
effect: 1,
});
} else if (slave.vagina > 2) {
vignettes.push({
text: `${he} disappointed a citizen whose cock is just too small for ${his} big cunt,`,
type: "rep",
effect: -1,
});
if (slave.behavioralQuirk === "cutting" && slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} helped a citizen discover a new fetish by making cutting remarks when their cock was too small for ${his} big cunt,`,
type: "rep",
effect: 1,
});
} else if (slave.behavioralFlaw === "bitchy") {
vignettes.push({
text: `${he} irritated a male citizen with ${his} complaints that they were too small to please ${him},`,
type: "rep",
effect: -3,
});
}
}
}
if (canDoAnal(slave)) {
if (slave.anus === 1) {
vignettes.push({
text: `${he} got extra attention from a citizen who really likes ${his} butthole, and wants to fuck it as much as possible while it's still tight,`,
type: "rep",
effect: 1,
});
} else if (slave.anus > 2) {
vignettes.push({
text: `${he} disappointed a citizen whose cock is just too small for ${his} loose butthole,`,
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,`,
type: "rep",
effect: -1,
});
} else if (slave.face < -10) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who lacks self-confidence, and is more comfortable with homely whores,`,
type: "rep",
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,
});
}
vignettes.push({
text: `${he} earned extra gratitude from a citizen with serious mommy issues,`,
type: "rep",
effect: 1,
});
}
if (slave.lips > 70) {
vignettes.push({
text: `${he} earned extra gratitude from a citizen who likes to play with ${his} lips nonsexually (don't ask),`,
type: "rep",
effect: 1,
});
}
if (slave.lipsPiercing > 0) {
vignettes.push({
text: `${he} was highly recommended by a citizen who liked the feeling of ${his} lip piercings on his cock,`,
type: "rep",
effect: 1,
});
if (slave.lipsPiercing > 1) {
vignettes.push({
text: `a citizen's pubic hairs got snagged in ${his} lip piercings,`,
type: "rep",
effect: -1,
});
}
}
if (!canTalk(slave)) {
vignettes.push({
text: `${he} impressed a citizen who didn't know how relaxing a ${boy} who can't talk could be,`,
type: "rep",
effect: 1,
});
}
if (slave.muscles > 95) {
vignettes.push({
text: `${he} impressed a citizen who was so eager to share workout plans with ${him} that they almost forgot to have sex with ${him},`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} gained extra gratitude from a female citizen who likes a ${boy} who can bench-press her before and after they fuck,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} disappointed a citizen by accidentally revealing that ${he}'s considerably stronger than him,`,
type: "rep",
effect: -1,
});
}
if (slave.lactation > 0) {
vignettes.push({
text: `${he} provided fresh milk for the coffee served at a citizen's business meeting,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} provided fresh milk at a trendy arcology coffeehouse,`,
type: "rep",
effect: 1,
});
}
if (!canWalk(slave)) {
vignettes.push({
text: `${his} lack of mobility severely hindered ${his} attempts to please citizens,`,
type: "rep",
effect: -1,
});
} else {
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",
effect: 1,
});
}
}
if (slave.amp === 1) {
vignettes.push({
text: `${he} disappointed a citizen who thought they would enjoy fucking a quadruple amputee, but found it revolting,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -1) {
vignettes.push({
text: `a strange citizen was excited by the sight of ${his} prosthetic limbs,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a citizen was disgusted at the thought of ${his} basic prosthetic limbs,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `a citizen was put off by ${his} prosthetic limbs,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -2) {
vignettes.push({
text: `a citizen was excited by ${his} vibrating fingertips,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a citizen was indifferent to the thought of having sex with a slave with artificial limbs,`,
type: "rep",
effect: 0,
});
vignettes.push({
text: `a citizen was put off by ${his} crude artificial limbs,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -3) {
vignettes.push({
text: `a strange citizen was excited by the sight of ${his} artificial limbs,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a citizen was indifferent to the thought of having sex with a slave with artificial limbs,`,
type: "rep",
effect: 0,
});
vignettes.push({
text: `a citizen was put off by the sight of ${his} prosthetic limbs,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -4) {
vignettes.push({
text: `a citizen was excited by the thought of having sex with a slave with p-limbs, but was scared off by ${his} combat p-limbs,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `a citizen was indifferent to the thought of having sex with a slave with artificial limbs,`,
type: "rep",
effect: 0,
});
vignettes.push({
text: `a citizen was greatly intimidated by ${his} combat p-limbs,`,
type: "rep",
effect: -1,
});
} else if (slave.amp === -5) {
vignettes.push({
text: `a citizen was fascinated by ${his} cybernetic limbs, and spent almost as much time examining them as they did having sex with ${him},`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a citizen was excited by the thought of having sex with a cybernetically enhanced slave,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a citizen was greatly intimidated by the sight of ${his} cybernetic limbs and was frightened away,`,
type: "rep",
effect: -1,
});
}
if (slave.heels === 1 && !(["boots", "extreme heels", "heels", "pumps"].includes(slave.shoes))) {
vignettes.push({
text: `${he} enticed a new patron who had never really considered buttsex before they saw ${him} crawling along with ${his} asshole vulnerable,`,
type: "rep",
effect: 1,
});
}
if (slave.chastityVagina === 1) {
vignettes.push({
text: `a wavering citizen who was disappointed that ${his} pussy was unavailable decided to try ${his} mouth instead,`,
type: "rep",
effect: 1,
});
if (slave.chastityAnus !== 1) {
vignettes.push({
text: `a wavering citizen who was disappointed that ${his} pussy was unavailable decided to try ${his} ass instead,`,
type: "rep",
effect: 1,
});
}
}
if (slave.collar === "shock punishment") {
vignettes.push({
text: `a citizen discovered that the remote control for his video screen also worked on ${his} shock collar,`,
type: "trust",
effect: -1,
});
}
if (slave.fetish === "mindbroken") {
vignettes.push({
text: `a citizen really enjoyed being able to treat ${him} however they liked without eliciting a reaction,`,
type: "rep",
effect: 1,
});
}
if (slave.intelligence + slave.intelligenceImplant < -50) {
vignettes.push({
text: `a low-class citizen who had no business fucking ${him} managed to trick ${him} into fucking him anyway,`,
type: "rep",
effect: -1,
});
}
if (slave.accent > 2) {
vignettes.push({
text: `a wealthy immigrant was so glad to hear somebody speaking his native language that he hired ${him} for the whole week,`,
type: "rep",
effect: 1,
});
}
if (slave.face > 10 && canDoAnal(slave)) {
if (slave.dick > 0) {
if (slave.fetish === "buttslut" && jsRandom(0, 100) < 50) {
vignettes.push({
text: `a citizen was surprised by ${his} penis, so ${he} hid it and enjoyed the buttsex without touching it,`,
type: "rep",
effect: 1,
});
} else if (slave.fetish === "buttslut") {
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,
});
} else if (slave.skill.anal >= 100) {
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,
});
}
}
if (slave.skill.anal < 100 && slave.anus > 2) {
vignettes.push({
text: `a pair of customers enticed by ${his} beauty but disappointed by ${his} loose butthole doubled up on ${his} poor anus without mercy,`,
type: "health",
effect: -1,
});
}
}
if (slave.fetishKnown === 1 && slave.fetishStrength > 95) {
if (slave.fetish === "buttslut" || slave.fetish === "dom") {
vignettes.push({
text: `${he} showed off by forcing a slave in the stocks to eat ${his} ass`,
type: "rep",
effect: 1,
});
} else if (slave.fetish === "masochist") {
vignettes.push({
text: `${he} cooperated with a customer who wanted to whip ${his} tits black and blue`,
type: "health",
effect: -1,
});
}
}
if (slave.health < 20) {
vignettes.push({
text: `${he} attracted the attention of a slaveowner alarmed by ${his} poor health, and thought he seemed kind,`,
type: "devotion",
effect: -1,
});
}
if (slave.skill.vaginal >= 100) {
vignettes.push({
text: `${he} was brought in to apply ${his} skills to a prominent citizen's virgin son,`,
type: "devotion",
effect: 0,
});
}
if (canDoAnal(slave) && slave.skill.anal < 100 && slave.anus < 2) {
vignettes.push({
text: `a guy with a huge cock insisted on fucking ${him} in ${his} tight ass all night,`,
type: "health",
effect: -1,
});
}
if (slave.relationship <= -2 && slave.intelligence + slave.intelligenceImplant <= 15) {
vignettes.push({
text: `${he} accidentally mentions how much ${he} loves you during intercourse with a citizen who doesn't like to share,`,
type: "rep",
effect: -1,
});
}
if (slave.prestige > 0) {
vignettes.push({
text: `a college fraternity visiting the arcology for rush week invited ${him} to a gangbang,`,
type: "rep",
effect: 3,
});
}
if (V.arcologies[0].FSSupremacist !== "unset") {
if (slave.race === V.arcologies[0].FSSupremacistRace) {
vignettes.push({
text: `${he} disappointed a citizen who couldn't bear to see a beautiful ${V.arcologies[0].FSSupremacistRace} be a public slut,`,
type: "rep",
effect: -1,
});
}
if (V.arcologies[0].FSSupremacistRace === "asian") {
vignettes.push({
text: `${he} was invited to and livened up a rather unconventional seijin-shiki celebration party,`,
type: "rep",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "semitic") {
vignettes.push({
text: `${he} was invited to and livened up a rather unconventional bar mitzvah celebration party,`,
type: "rep",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "white") {
vignettes.push({
text: `${he} was invited to and livened up a rather unconventional Jugendweihe celebration party,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSSubjugationist !== "unset") {
if (slave.race === V.arcologies[0].FSSubjugationistRace) {
vignettes.push({
text: `${he} had a bad time in general, since most of the citizens who used ${him} didn't care about a ${V.arcologies[0].FSSubjugationistRace} prostitute's health or well-being,`,
type: "health",
effect: -1,
});
}
}
if (V.arcologies[0].FSYouthPreferentialist !== "unset") {
if (slave.visualAge > 35) {
vignettes.push({
text: `${he} gratified a citizen who wants to keep his MILF fetish in the closet,`,
type: "rep",
effect: 1,
});
}
} else if (V.arcologies[0].FSMaturityPreferentialist !== "unset") {
if (slave.visualAge <= 20) {
vignettes.push({
text: `${he} gratified a citizen who wants to keep his fetish for young ${boy}s in the closet,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSGenderRadicalist !== "unset") {
if (slave.dick > 0 && slave.dick < 3) {
vignettes.push({
text: `${he} gratified a citizen who is coming to terms with Gender Radicalism, and is unthreatened by ${his} little penis,`,
type: "rep",
effect: 1,
});
}
} else if (V.arcologies[0].FSGenderFundamentalist !== "unset") {
if (slave.visualAge > 25) {
vignettes.push({
text: `${he} gratified a citizen who thinks ${he} resembles his ex-wife, who would never let him fuck her butt,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSRepopulationFocus !== "unset" || V.arcologies[0].FSRepopulationFocusSMR === 1) {
if (slave.pregType > 1 && slave.pregKnown > 1 && slave.belly >= 10000) {
vignettes.push({
text: `${he} gratified a citizen who enjoys the feeling of a womb filled with more than a single child,`,
type: "rep",
effect: 1,
});
}
if (slave.preg > slave.pregData.normalBirth / 4 && slave.pregKnown > 1 && slave.bellyPreg >= 5000) {
vignettes.push({
text: `a citizen loved ${his} pregnant belly so much that he came back for repeat service,`,
type: "rep",
effect: 1,
});
}
} else if (V.arcologies[0].FSRestart !== "unset") {
if (canGetPregnant(slave)) {
vignettes.push({
text: `${he} gratified a citizen who misses the risk of getting a ${boy} pregnant,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSPaternalist !== "unset") {
if (slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} gratified a citizen who likes to chat with intelligent prostitutes as they fuck ${him},`,
type: "rep",
effect: 1,
});
}
} else if (V.arcologies[0].FSDegradationist !== "unset") {
if (canTalk(slave) && slave.voice > 2) {
vignettes.push({
text: `${he} gratified a citizen who prefers ${boy}s with high-pitched screams,`,
type: "rep",
effect: 1,
});
}
if (slave.visualAge > 40) {
vignettes.push({
text: `a citizen wrote a note on ${his} face that said: 'Retire it to an arcade',`,
type: "trust",
effect: -1,
});
}
vignettes.push({
text: `a rich citizen had fun seeing how much money he could cram in ${his} holes without using any lube,`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `a displeased citizen grabbed a permanent marker and wrote a critique of ${his} sex skills on ${his} chest,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `two sadistic citizens had fun roughing ${him} up,`,
type: "health",
effect: -1,
});
}
if (V.arcologies[0].FSBodyPurist !== "unset") {
if (slave.boobsImplant > 0) {
vignettes.push({
text: `${he} gratified a citizen who wants to keep his fetish for breast implants in the closet,`,
type: "rep",
effect: 1,
});
}
} else if (V.arcologies[0].FSTransformationFetishist !== "unset") {
if (slave.boobsImplant === 0) {
vignettes.push({
text: `${he} gratified a citizen who wants to keep his fetish for natural breasts in the closet,`,
type: "rep",
effect: 1,
});
}
if (slave.boobsImplant >= 500) {
vignettes.push({
text: `a photographer won an award for an artistic close-up of one of ${his} implant-heavy tits,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSSlimnessEnthusiast !== "unset") {
if (canTalk(slave) && slave.voice > 2) {
vignettes.push({
text: `${he} gratified a citizen who loves ${his} high-pitched squeals of pleasure,`,
type: "rep",
effect: 1,
});
}
if (slave.boobs > 800) {
vignettes.push({
text: `${he} was publicly mocked as an ugly fat cow with dangling udders,`,
type: "rep",
effect: -1,
});
}
} else if (V.arcologies[0].FSAssetExpansionist !== "unset") {
if (slave.boobs < 300) {
vignettes.push({
text: `${he} gratified a citizen who wants to keep his fetish for flat chested ${boy}s in the closet,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSPastoralist !== "unset") {
if (slave.lactation === 0) {
vignettes.push({
text: `${he} disappointed a citizen who could not understand why nothing was coming out of ${his} nipples when he sucked on them,`,
type: "rep",
effect: -1,
});
}
if (slave.nipples === "fuckable") {
vignettes.push({
text: `${he} left a citizen deeply confused over how ${he} could possibly be a proper cow without suitable teats,`,
type: "rep",
effect: -1,
});
}
}
if (V.arcologies[0].FSPhysicalIdealist !== "unset") {
if (slave.muscles <= 95) {
vignettes.push({
text: `${he} disappointed a citizen who could barely believe that ${he} wasn't capable of holding ${himself} in a handstand,`,
type: "rep",
effect: -1,
});
}
}
if (V.arcologies[0].FSChattelReligionist !== "unset") {
if (slave.behavioralFlaw === "devout") {
vignettes.push({
text: `${he} gratified a citizen who desperately wants his cock to be the one that converts ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSRomanRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Roman mythology attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSAztecRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Aztec mythology attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Egyptian mythology attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSArabianRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Sunni Islam attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSEdoRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Shintoism attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSChineseRevivalist !== "unset") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Chinese folk religion attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSSupremacist !== "unset") {
if (V.arcologies[0].FSSupremacistRace === "asian") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Buddhism attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "indo-aryan") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Hinduism attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "latina" || V.arcologies[0].FSSupremacistRace === "southern european") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Roman Catholicism attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "middle eastern") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Islam attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "semitic") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Judaism attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
} else if (V.arcologies[0].FSSupremacistRace === "white") {
vignettes.push({
text: `a street preacher arguing that your new religion was the natural theological evolution of Norse mythology attracted a large crowd near ${him},`,
type: "rep",
effect: 1,
});
}
}
}
if (V.arcologies[0].FSRomanRevivalist !== "unset") {
if (slave.race === "white" && slave.height >= 185) {
vignettes.push({
text: `${he} gratified a citizen who thought ${his} appearance worthy of a lusty northern barbarian,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSAztecRevivalist !== "unset") {
if (slave.devotion > 75 && slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} indulged a citizen by following a fertility ritual completely,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSEgyptianRevivalist !== "unset") {
vignettes.push({
text: `${he} got extra attention from a group of citizens competing to get off with whores of each of the arcology's ethnic groups in the least time,`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSEdoRevivalist !== "unset") {
if (slave.face > 40 && slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} gratified a citizen who wished to do nothing more than converse with a beautiful and intelligent ${boy},`,
type: "rep",
effect: 1,
});
}
vignettes.push({
text: `${he} was invited to and livened up a rather unconventional genpuku celebration party,`,
type: "rep",
effect: 1,
});
}
if (V.arcologies[0].FSArabianRevivalist !== "unset") {
if (slave.skill.entertainment >= 100 && canTalk(slave) && slave.voice > 0 && slave.accent < 2) {
vignettes.push({
text: `${he} gratified a citizen who prefers prostitutes who can tell lovely stories,`,
type: "rep",
effect: 1,
});
}
}
if (V.arcologies[0].FSChineseRevivalist !== "unset") {
if (slave.dick > 0 && slave.balls === 2) {
vignettes.push({
text: `a citizen admired ${his} lack of balls and praised ${him} for being like the eunuchs in Chinese history,`,
type: "rep",
effect: 1,
});
}
vignettes.push({
text: `${he} was invited to and livened up a rather unconventional Guan Li celebration 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",
effect: 1,
});
vignettes.push({
text: `a man dragged his crying wife along so she could watch him fuck a public slut,`,
type: "rep",
effect: 0,
});
if (V.seeDicks !== 100) {
vignettes.push({
text: `a woman dragged her angry husband along so he could watch his wife get eaten out by a public slut,`,
type: "rep",
effect: 0,
});
} else {
vignettes.push({
text: `a man dragged his angry lover along so he could watch his boyfriend get sucked off by a public slut,`,
type: "rep",
effect: 0,
});
}
vignettes.push({
text: `${he} went to sleep after having sex with strangers all day, and had a dream about you loving ${him},`,
type: "devotion",
effect: 1,
});
vignettes.push({
text: `${he} went to sleep after having sex with strangers all day, and had a dream about you letting a citizen hurt ${him},`,
type: "devotion",
effect: -1,
});
vignettes.push({
text: `${he} went to sleep after having sex with strangers all day, and had a dream about you protecting ${him} from a mean citizen,`,
type: "trust",
effect: 1,
});
vignettes.push({
text: `${he} went to sleep after having sex with strangers all day, and had a dream about you selling ${him} for good,`,
type: "trust",
effect: -1,
});
} else if (slave.assignment === "be a servant" || slave.assignment === "work as a servant") {
if (slave.fetishKnown === 1) {
switch (slave.fetish) {
case "cumslut":
vignettes.push({
text: `when some of your cum accidentally landed on the floor, ${he} cleaned it up with ${his} tongue,`,
type: "devotion",
effect: 1,
});
vignettes.push({
text: `${he} licked off some sperm from the ground while cleaning up after an orgy,`,
type: "devotion",
effect: 0,
});
vignettes.push({
text: `${his} attempt to clean up cum using only ${his} mouth resulted in gastrointestinal distress,`,
type: "health",
effect: -1,
});
break;
case "humiliation":
vignettes.push({
text: `${he} loved getting absolutely filthy while cleaning everything else,`,
type: "devotion",
effect: 1,
});
break;
}
}
switch (slave.behavioralFlaw) {
case "arrogant":
vignettes.push({
text: `${he} refused to clean up a particular nasty room in the penthouse, earning ${himself} harsh punishment,`,
type: "trust",
effect: -1,
});
break;
case "gluttonous":
vignettes.push({
text: `${he} was thrilled to be getting rid of leftover food the only way ${he} knew how,`,
type: "devotion",
effect: 1,
});
break;
}
if (slave.fetish === "mindbroken") {
vignettes.push({
text: `${he} forgot to sleep and no one bothered to tell ${him} to. ${He} collapsed from exhaustion halfway through the week, but even by then ${he}'d gotten all ${his} work done and then some,`,
type: "cash",
effect: 1,
});
}
if (slave.amp === 1) {
vignettes.push({
text: `${he} was soaped up, tied to a pole, and used as a very inefficient mop. While being used to clean outside, ${he} certainly drew some stares,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} scrubbed the floor of the communal showers with a brush held in ${his} mouth, glad to be able to do something at least,`,
type: "devotion",
effect: 1,
});
}
if (slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} devised a highly efficient way to get ${his} entire week's worth of work done in only three days. As a reward, ${he} was given — you guessed it — more work,`,
type: "cash",
effect: 1,
});
} else if (slave.intelligence + slave.intelligenceImplant < -50) {
vignettes.push({
text: `after being told all ${he} needed was some 'elbow grease', ${he} wasted an obscene amount of time searching for it,`,
type: "cash",
effect: -1,
});
vignettes.push({
text: `${he} had to get ${his} stomach pumped after drinking a bottle of window cleaner ${he} mistook for grape juice,`,
type: "health",
effect: -1,
});
}
if (slave.voice === 0) {
vignettes.push({
text: `a few citizens mistook ${him} for a whore while ${he} was going about ${his} regular cleaning duties. Without the power of speech, ${he} was unable to explain the situation and was subsequently used and paid,`,
type: "cash",
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,`,
type: "trust",
effect: -1,
});
}
if (slave.hLength >= 150) {
vignettes.push({
text: `${he} was routinely forced to use ${his} hair as a mop,`,
type: "cash",
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,`,
type: "trust",
effect: 1,
});
}
vignettes.push({
text: `${he} was ordered to clean the many erotically shaped statues around the arcology. ${He} put on a good show, waxing the many tits, asses, and cocks with gusto,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} was ordered to clean all the exterior windows around your estate using only ${his} tits. The people passing by seemed to appreciate the show,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} was ordered to scrub all the sidewalks outside your places of business free of gum and other detritus, using only a toothbrush. ${He} spent the whole day bent over for all the public to see,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} found refuge from the realities of slavery in constant menial tasks, accidentally accomplishing more than was asked of ${him},`,
type: "cash",
effect: 1,
});
vignettes.push({
text: `while cleaning the slave living quarters, ${he} found someone's hidden stash of money, no doubt withheld from a brave whore's weekly earnings. No one will ever own up to stealing from you out of fear of the consequences, but you take the paltry sum because it is rightfully yours,`,
type: "cash",
effect: 1,
});
} else if (slave.assignment === "get milked" || slave.assignment === "work in the dairy") {
if (slave.lactation > 0) {
if (slave.race === "black") {
vignettes.push({
text: `an unknown prankster labeled ${his} milk 'Chocolate Milk', causing unknowing citizens to buy it in droves,`,
type: "cash",
effect: 1,
});
}
vignettes.push({
text: `a restaurant critic declared ${his} milk delicious,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `an elderly citizen reported feeling healthier after drinking ${his} milk,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `a few containers of ${his} milk turned sour by accident,`,
type: "cash",
effect: -1,
});
}
if (slave.balls > 0) {
switch (slave.fetish) {
case "pregnancy":
vignettes.push({
text: `the thought of ${his} cum knocking someone up inspired ${him} to produce more of it,`,
type: "cash",
effect: 1,
});
break;
}
vignettes.push({
text: `an eccentric celebrity chef used ${his} cum in a new pudding recipe,`,
type: "rep",
effect: 1,
});
}
if (canWalk(slave)) {
vignettes.push({
text: `${he} slipped and fell in an errant puddle of various bodily fluids,`,
type: "health",
effect: -1,
});
}
vignettes.push({
text: `very little of interest happened because the life of a dairy cow is often really boring,`,
type: "rep",
effect: 0,
});
} else if (slave.assignment === "work as a farmhand" || slave.assignment === window.Job.FARMYARD || slave.assignment === window.Job.FARMER) {
if (canWalk(slave)) {
vignettes.push({
text: `${he} rather comically injured ${himself} by stepping on a rake,`,
type: "health",
effect: -1,
});
}
// TODO: add more vignettes
if ((V.farmyardBreeding) && (V.seeBestiality === 1)) {
vignettes.push({
text: `a citizen didn't realize how disgusting he found bestiality until he attended one of ${V.farmyardName}'s shows,`,
type: "rep",
effect: -1,
});
vignettes.push({
text: `a citizen attended one of ${V.farmyardName}'s shows and discovered he had a bestiality fetish,`,
type: "rep",
effect: 1,
});
vignettes.push({
text: `${he} dreamt that you decided to have ${him} do nothing but fuck animals for the rest of ${his} life,`,
type: "devotion",
effect: -1
});
vignettes.push({
text: `${he} dreamt that you wouldn't come to ${his} aid when one of ${his} bestial partners became overeager,`,
type: "trust",
effect: -1
});
if ((V.canines.length > 0) && (slave.amp === 0)) {
vignettes.push({
text: `an over-excited dog left scratch marks on ${his} legs,`,
type: "health",
effect: -1
});
}
if (V.hooved.length > 0) {
vignettes.push({
text: `${he} was injured by a particularly well-endowed horse,`,
type: "health",
effect: -1
});
}
if (V.felines.length > 0) {
vignettes.push({
text: `${he} managed to take two tigers at once, aweing the crowd,`,
type: "cash",
effect: 1
});
}
} else {
vignettes.push({
text: `${he} worked extra hard, and managed to sell extra produce,`,
type: "cash",
effect: 1,
});
}
vignettes.push({
text: `${he} felt energized by the simulated outdoor environment`,
type: "health",
effect: 1,
});
vignettes.push({
text: `the pesticides ${he} accidentally inhaled made ${him} feel nauseous,`,
type: "health",
effect: -1,
});
} else if (slave.assignment === "rest" || slave.assignment === "rest in the spa") {
switch (slave.behavioralFlaw) {
case "anorexic":
vignettes.push({
text: `with nothing to do, ${he} laid in bed and ate almost nothing,`,
type: "health",
effect: -1,
});
break;
case "devout":
vignettes.push({
text: `${he} spent nearly all of ${his} free time praying,`,
type: "cash",
effect: 0,
});
break;
}
switch (slave.behavioralQuirk) {
case "fitness":
vignettes.push({
text: `${he} spent a great deal of time working out,`,
type: "health",
effect: 1,
});
vignettes.push({
text: `${he} exercised to the point of physical exhaustion,`,
type: "health",
effect: -1,
});
break;
case "insecure":
vignettes.push({
text: `${he} relaxed by doing whatever other slaves were doing,`,
type: "cash",
effect: 0,
});
break;
}
if (slave.fetish === "mindbroken") {
vignettes.push({
text: `${he} spent ${his} time watching paint dry. No one bothered telling ${him} the wall wasn't newly painted,`,
type: "cash",
effect: 0,
});
}
if (slave.devotion > 95) {
vignettes.push({
text: `${he} decided to spend some of ${his} free time to praise you on the streets,`,
type: "rep",
effect: 1,
});
}
if (slave.devotion > 50) {
if (slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} spent some of ${his} downtime figuring out a new way for you to make money,`,
type: "cash",
effect: 1,
});
}
}
if (slave.devotion > 20) {
if (slave.relationshipRules === "just friends" || slave.relationshipRules === "permissive") {
vignettes.push({
text: `${he} taught another slave some massage skills,`,
type: "rep",
effect: 1,
});
}
}
if (slave.devotion < -50) {
if (slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} spent some of ${his} downtime figuring out a way to sabotage your profits,`,
type: "cash",
effect: -1,
});
}
vignettes.push({
text: `${he} spent hours plotting ${his} escape from the arcology,`,
type: "trust",
effect: -1,
});
}
if (slave.relationship === -2) {
if (slave.speechRules === "permissive") {
vignettes.push({
text: `${he} spent most of ${his} time fan${boy}ing obsessively about you to everyone ${he} can,`,
type: "rep",
effect: 1,
});
}
vignettes.push({
text: `${he} grew sick with longing to be kept at your side as your fucktoy instead,`,
type: "health",
effect: -1,
});
vignettes.push({
text: `${he} 'accidentally' came to see you throughout the day, even though ${he} was resting,`,
type: "devotion",
effect: 1,
});
} else if (slave.relationship === -1) {
vignettes.push({
text: `${he} daydreamed about being fucked by as many people as possible, upset that you kept ${him} inside,`,
type: "devotion",
effect: -1,
});
}
if (slave.energy > 95) {
if (slave.behavioralFlaw === "odd") {
if (slave.amp !== 1 && canSee(slave)) {
vignettes.push({
text: `you discovered ${him} sketching an image of ${his} genitalia, which you managed to sell,`,
type: "cash",
effect: 1,
});
}
}
if (canWalk(slave)) {
vignettes.push({
text: `${he} was so horny that ${he} sleepwalked into your room and performed oral sex on you, and then woke up when ${he} bruised ${his} shin,`,
type: "health",
effect: -1,
});
} else {
if (slave.missingArms !== 3) {
if (slave.releaseRules === "permissive" || slave.releaseRules === "masturbation") {
vignettes.push({
text: `due to the obvious difficulties in ${his} mobility, ${he} spent a lot of time masturbating in bed,`,
type: "health",
effect: 0,
});
}
} else {
vignettes.push({
text: `${he} was so desperate for sexual relief that ${he} almost threw out ${his} back from trying to hump ${his} own bed,`,
type: "health",
effect: -1,
});
}
}
}
if (slave.health < -20) {
vignettes.push({
text: `${he} had a bad cough and spent a lot of time napping,`,
type: "health",
effect: 0,
});
}
if (slave.intelligence + slave.intelligenceImplant > 50) {
vignettes.push({
text: `${he} immersed ${himself} in classics of literature at an arcology library, giving ${him} uncomfortable ideas about society,`,
type: "devotion",
effect: -1,
});
}
if (V.arcologies[0].FSPaternalist !== "unset") {
vignettes.push({
text: `due to being ordered to rest, ${he} enjoyed a great deal of calm and relaxation thanks to your arcology's caretaking nature,`,
type: "health",
effect: 1,
});
} else if (V.arcologies[0].FSDegradationist !== "unset") {
vignettes.push({
text: `despite being ordered to rest, ${he} was made subject to a lot of torture and pain because of your arcology's depraved nature,`,
type: "health",
effect: -1,
});
}
if (canHear(slave)) {
vignettes.push({
text: `${he} spent much of ${his} free time listening to music,`,
type: "health",
effect: 0,
});
}
if (canSee(slave)) {
vignettes.push({
text: `${he} spent much of ${his} free time watching television,`,
type: "health",
effect: 0,
});
vignettes.push({
text: `${he} spent much of ${his} free time watching movies,`,
type: "health",
effect: 0,
});
}
if (canTalk(slave)) {
vignettes.push({
text: `${he} spent much of ${his} free time talking with the other slaves,`,
type: "health",
effect: 0,
});
}
if (canWalk(slave)) {
vignettes.push({
text: `${he} spent much of ${his} free time walking around the arcology,`,
type: "health",
effect: 1,
});
}
vignettes.push({
text: `${he} spent much of ${his} free time napping,`,
type: "health",
effect: 1,
});
}
return jsEither(vignettes);
};