Newer
Older
App.Events.PMercenaryRomeo = class PMercenaryRomeo extends App.Events.BaseEvent {
eventPrerequisites() {
return [
() => App.Events.effectiveWeek() >= 44,
() => V.mercenaries > 0,
() => V.mercRomeo !== 1,
];
}
/** @type {FC.Zeroable<string>} */
let name = 0;
let _slaveCost;
let juliet;
let _romeoSlaves = V.slaves.filter(function(s) { return s.fetish !== "mindbroken" && s.fuckdoll === 0 && ["serve in the club", "serve the public", "whore", "work in the brothel"].includes(s.assignment); });
if (_romeoSlaves.length === 0) {
_romeoSlaves = V.slaves.filter(function(s) { return (s.counter.publicUse > 0) && (s.newGamePlus === 0) && (s.relationship > -3) && !["be your Concubine", "serve in the master suite"].includes(s.assignment); });
if (_romeoSlaves.length === 0) {
name = setup.whiteAmericanSlaveNames.random();
} else {
juliet = _romeoSlaves.random();
}
} else {
juliet = _romeoSlaves.random();
}
if (juliet === undefined) {
name = setup.whiteAmericanSlaveNames.random();
}
if (name === 0) {
_slaveCost = slaveCost(juliet);
_slaveCost = (random(60, 70) * Math.trunc(_slaveCost / 100));
_slaveCost = 100 * Math.trunc(_slaveCost / 100);
}
He, His,
he, his, him, girl
} = getPronouns(juliet ? juliet : {pronoun: App.Data.Pronouns.Kind.neutral});
heU, hisU, himU, girlU
} = getNonlocalPronouns(V.seeDicks).appendSuffix("U");
r.push(`One of your mercenaries requests an interview. He's a worn, grey-haired tank of a man, made bulkier still by heavy ceramic plate armor and lots of ammunition and gear. The murderous submachine gun favored for city fighting looks like a toy in his hands. But as he sits at your invitation and accepts a`);
if (V.PC.refreshmentType === 1) {
r.push(`glass of ${V.PC.refreshment}`);
} else if (V.PC.refreshmentType === 2) {
r.push(`a plate of ${V.PC.refreshment}`);
} else if (V.PC.refreshmentType === 3) {
r.push(`line of ${V.PC.refreshment}`);
} else if (V.PC.refreshmentType === 4) {
r.push(`syringe of ${V.PC.refreshment}`);
} else if (V.PC.refreshmentType === 5) {
r.push(`pill of ${V.PC.refreshment}`);
} else if (V.PC.refreshmentType === 6) {
r.push(`tab of ${V.PC.refreshment}`);
r.push(`proffered by an attentive slave ${girlU}, he seems almost bashful.`);
r.push(`"${properTitle()}, I'll say this straight. I'd like to buy one of your slaves.`);
if (name !== 0) {
r.push(`I've been seeing ${name} a lot, and ${heU} makes the years sit a little lighter on me. I've scraped together what I can, and I can pay ${cashFormat(50000)}." It's a huge sum for a mercenary; it's probably his entire savings, but there is a slight problem; the slave he is looking for isn't one of yours. "Well then," he says in embarrassment, "Have to say this is a little awkward." He gives a fake cough, "You wouldn't happen to, you know, know who ${hisU} owner is?" You shake your head. A run in with a ${girlU} named ${name} isn't much to go by and it really isn't your problem. "Ah well, I'm sure I'll see ${himU} around again. Anyway, that was a fine victory the other day, ${properTitle()}; come down to the bar and join the boys and I. We'll buy you a drink. Devil knows, thanks to you we can afford to. Hell, maybe you'll even get to meet ${name} too, get to see just how much of a looker ${heU} is."`);
if (["serve in the club", "serve the public", "whore", "work in the brothel"].includes(juliet.assignment)) {
r.push(
`I've been seeing`,
App.UI.DOM.slaveDescriptionDialog(juliet),
`a lot, and ${he} makes the years sit a little lighter on me.`
);
r.push(
`I've seen`,
App.UI.DOM.slaveDescriptionDialog(juliet),
`here and there and I can't stop thinking about ${him}. I feel ${he}'d make the years sit a little lighter on me.`
);
r.push(`I've scraped together what I can, and I can pay ${cashFormat(_slaveCost)}." It's a decent price, probably a little less than you could get at auction. It's a huge sum for a mercenary; it's probably his entire savings. You ask what he would do with ${him}. "Well," he says, actually blushing, "I'd free ${him}. And marry ${him}, if ${he}'d have me."`);
App.Events.addParagraph(node, r);
const choices = [];
choices.push(new App.Events.Result(`Decline, and tell ${him} not to see him`, declineAndForbid));
choices.push(new App.Events.Result(`Politely decline`, declinePolitely));
choices.push(new App.Events.Result(`Accept`, accept));
choices.push(new App.Events.Result(`Give ${him} to him as a gift`, gift));
App.Events.addResponses(node, choices);
App.UI.DOM.appendNewElement("h3", node, `${His} records...`);
App.UI.DOM.appendNewElement("div", node, `${His} current task is to ${juliet.assignment}${(V.assignmentRecords[juliet.ID]) ? `, and before that to ${V.assignmentRecords[juliet.ID]}` : ""}.`, "indent");
node.append(slaveImpactLongTerm(juliet));
}
function declineAndForbid() {
const frag = new DocumentFragment();
let r = [];
r.push(`${juliet.slaveName} obeys your orders not to see the old mercenary. Though neither he or ${juliet.slaveName} says a word about it, his squadmates are not so closemouthed. Soon the tragic story of The Mercenary and the slave${girl} is being told in bars and brothels across the Free City, with you naturally playing <span class="reputation dec">the role of the villain.</span>`);
repX(-1000, "event");
App.Events.addParagraph(frag, r);
return frag;
}
function declinePolitely() {
const frag = new DocumentFragment();
let r = [];
r.push(`"Ah well," he says, "didn't think you would, but I had to ask. If you'd be so kind as to keep ${him} assigned so's I can see ${him}, I would be grateful. That was a fine victory, ${properTitle()}; come down to the bar and join the boys and I. We'll buy you a drink. Devil knows, thanks to you we can afford to."`);
if (juliet.relationship === -3 && juliet.fetish !== "mindbroken" && juliet.devotion + juliet.trust > 190) {
r.push(`${juliet.slaveName} politely thanks you for not letting him take ${him} away.`);
}
App.Events.addParagraph(frag, r);
return frag;
function accept() {
const frag = new DocumentFragment();
let r = [];
r.push(`The mercenary leaves to collect his purchase. On the video feeds, you see that ${juliet.slaveName} can hardly believe what's`);
if (juliet.relationship === -3 && juliet.fetish !== "mindbroken" && juliet.devotion + juliet.trust > 190) {
r.push(`happening. You can't hear what he says as he takes out a ring, but ${his} reaction speaks clearly. ${He} says "No."`);
r.push(`${He} points back into your penthouse and returns to ${his} home.`);
} else {
r.push(`${He} gestures towards the nearest camera and he helps ${him} back into your penthouse.`);
}
r.push(`The only thing ${he} wants after being freed is to return to your side. "I thought I was giving ${him} a better life... But ${he} already had everything ${he} wanted. I'm sorry for putting you in such a position." You can hear the sadness in his voice. "Thank you for your time. I'm sorry to have bothered you." Since ${he} returned to slavery, it's only fair to return the credits he paid for ${him}. He thanks you hollowly before heading on his way.`);
r.push(`${He} hugs him, sobbing into his shoulder. As they walk hand in hand down towards his quarters,`);
} else {
r.push(`As he`);
r.push(`${he} gives the nearest camera a little nod and silently mouths the words "Thank you, ${getWrittenTitle(juliet)}." Soon the romantic story of The Mercenary and the slave${girl} is being told in bars and brothels across the Free City, with you naturally playing <span class="reputation inc">a supporting role.</span>`);
// TODO: uh, actually increase rep?
App.Events.addParagraph(frag, r);
return frag;
}
function gift() {
const frag = new DocumentFragment();
let r = [];
r.push(`The mercenary cannot believe his ears. After you repeat yourself twice, he leaves to collect your gift, thanking you clumsily. On the video feeds, you see that ${juliet.slaveName} can hardly believe what's`);
if (juliet.relationship === -3 && juliet.fetish !== "mindbroken" && juliet.devotion + juliet.trust > 190) {
r.push(`happening. You can't hear what he says as he takes out a ring, but ${his} reaction speaks clearly. ${He} says "No."`);
r.push(`${He} points back into your penthouse and returns to ${his} home.`);
} else {
r.push(`${He} gestures towards the nearest camera and he helps ${him} back into your penthouse.`);
}
r.push(`The only thing ${he} wants after being freed is to return to your side. "I thought I was giving ${him} a better life... But ${he} already had everything ${he} wanted. I'm sorry for putting you in such a position." You can hear the sadness in his voice. "Thank you for your time. I'm sorry to have bothered you."`);
r.push(`${He} hugs him, sobbing into his shoulder. As they walk hand in hand down towards his quarters,`);
} else {
r.push(`As he`);
r.push(`${he} gives the nearest camera a little nod and silently mouths the words "Thank you, ${getWrittenTitle(juliet)}." You smile to yourself; when they get there they'll find flowers and a paid reservation at the arcology's best restaurant. Soon the story is being told in bars and brothels across the Free City, with you naturally playing <span class="reputation inc">a starring role.</span> Some days later, you hear a dramatization is being filmed, with an aging action star playing the mercenary, a rising starlet playing ${juliet.slaveName}, and a noted character actor playing you.`);
V.trinkets.push(`a poster for the movie that was made about the love between one of your mercenaries and ${juliet.slaveName}`);
removeSlave(juliet);