diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersDeficit.js b/src/events/nonRandom/peacekeepers/pPeacekeepersDeficit.js new file mode 100644 index 0000000000000000000000000000000000000000..9c0e936386ab1e9832076e526b044a0eed9c2d53 --- /dev/null +++ b/src/events/nonRandom/peacekeepers/pPeacekeepersDeficit.js @@ -0,0 +1,85 @@ +App.Events.PPeacekeepersDeficit = class PPeacekeepersDeficit extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.peacekeepers !== 0, + () => V.peacekeepers.attitude >= 0, + () => App.Events.effectiveWeek() === 54, + ]; + } + + execute(node) { + if (V.peacekeepers === 0) { + return node; + } + + V.nextButton = "Continue"; + V.nextLink = "Random Nonindividual Event"; + + App.Events.addParagraph(node, [`General ${V.peacekeepers.generalName}'s peacekeeping force has stabilized the neighboring region somewhat. True to his word, the general has indeed concentrated on his peacekeeping mandate, and hasn't done anything that might be construed as a move against the Free City or its interests. There are somewhat fewer refugees available from that area, and it's a less complete refuge for bad actors, but other than that, there hasn't been much reason for you to take notice. Until today, when General ${V.peacekeepers.generalName} gives you a call.`]); + + + App.Events.addParagraph(node, [`It's a video link, and the general is in the field somewhere, wearing scuffed armor with his insignia of rank on the neck protector. He looks tired, and stress worse than simple fatigue is etched on his face, but he looks at you directly and gets on with it. "${PlayerName()}," he says, "to start, I'd like to assure you this is a secure line from my end. We rely on structural security more than you in the Free Cities, with your cutting-edge computing power, but it's effective." He's in what looks like a field command post, in what's almost certainly an improvised secure communications booth. "The situation is this," he explains. "I have two problems, and I hope you may be able to solve them both at once in a way that will be beneficial to you."`]); + + App.Events.addParagraph(node, [`"First," he says sharply, "I'm not getting the support I need out here." It obviously pains him to admit this, and the muscles along his jaw tense as he does, as though he's chewing on the words. "And I'm not giving anything away by telling you that. It's obvious enough, if you compare what I'm being asked to do here with the resources the politicians back home are willing to provide." At this, ${V.assistant.name} displays a quick summary of the political developments in the general's home country. General ${V.peacekeepers.generalName} is right; the expensive peacekeeping force is unpopular, and its support is being reduced by opportunistic politicians. "It isn't bad yet," he says, "but if this keeps up, I'm going to be rationing the most modern medical supplies for my wounded men and women. That's hard."`]); + + App.Events.addParagraph(node, [`"And second," he continues, "I'm having difficulty housing the prisoners we're taking. We're the only functioning law and order in this area, and in order to keep control I'm having to lock up everyone from armed bandits to petty looters. I don't have the resources to imprison them decently. I'm already getting flak about conditions in our main prison camp here." He arches an eyebrow. "Some people back home seem to care more about keeping prisoners comfortable than they care about getting my wounded men and women the best possible care. And I can't just reduce the prisoner population, either. There are too many of them. Word would get out, and there'd be hell to pay back home."`]); + + App.Events.addParagraph(node, [`The singular solution to the two problems is obvious. It's equally obvious that General ${V.peacekeepers.generalName} isn't going to be the one to propose it. He's not stupid.`]); + + const assistCash = 100000; + const choices = []; + if (V.cash >= assistCash) { + choices.push(new App.Events.Result(`Offer to assist`, assist, `This will cost ${cashFormat(assistCash)} and provide a number of menial slaves`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the funds to buy the prisoners.`)); + } + choices.push(new App.Events.Result(`Connect the general with Free Cities pharmaceutical sources`, pharmaceutical)); + choices.push(new App.Events.Result(`Tell him his situation is untenable`, decline)); + + App.Events.addResponses(node, choices); + + function assist() { + const frag = new DocumentFragment(); + if (V.peacekeepers === 0) { + return frag; + } + let r = []; + r.push(`Understanding that the general needs to couch the situation in a way he can justify in public, and perhaps in a way he can justify to himself, you offer to house the prisoners on a contract basis, with immediate payment to the general so he can meet his forces' immediate needs. Naturally, the prisoners will be kept busy while you keep them; menial labor seems appropriate. It's unlikely that the situation will ever stabilize to the point where they can be released, so for safety, they should all be detained indefinitely. And of course, each prisoner's individual detention will be available for resale. Just like any other slave's.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`The general is unable to keep from smiling slightly when he hears that you understand perfectly and are willing and able to assist. There's some bitterness there, but not much. The two of you adjust the terms. The new menial slaves will be delivered immediately, several hundred of them; the general prefers to have this be a one-time transfer. After all, having an ongoing prisoner pipeline between his prisoner pens and the Free City might draw unwanted political attention. For now, he has the funds he needs, not to mention an empty prison camp.`); + V.peacekeepers.attitude += 5; + V.menials += 200; + cashX(-assistCash, "peacekeepers"); + App.Events.addParagraph(frag, r); + return frag; + } + + function pharmaceutical() { + const frag = new DocumentFragment(); + if (V.peacekeepers === 0) { + return frag; + } + let r = []; + if (V.cash < 100000) { + r.push(`Unfortunately, you lack the funds to buy the prisoners.`); + } + r.push(`It would be very expensive to provide the general with the kind of money necessary to make a difference in the medical supply situation of a military force sufficient to keep what used to be a small country pacified. You express your regrets at your inability to help directly. You offer to connect the general with Free Cities pharmaceutical resources that will probably be able to get him what his infirmaries need at a lower price. "Interesting," he says, considering the offer. "The usual providers at home will scream bloody murder when it gets out. But it's a good idea," he admits. "Though that does nothing for the prison camps." Part of his reluctance is probably due to an unspoken hesitation to do business with the Free Cities directly. But he's coming around.`); + V.peacekeepers.attitude += 5; + App.Events.addParagraph(frag, r); + return frag; + } + function decline() { + const frag = new DocumentFragment(); + if (V.peacekeepers === 0) { + return frag; + } + let r = []; + r.push(`You decide to use this as an object lesson in the limits of old world power projection, and tell his situation is untenable and that he should withdraw. If he doesn't have the political firepower necessary to get proper support and supply, he's better off cutting his losses. "That's not for you to say," he responds bitterly. "And that's not for me to say, either. I still go where I'm told and do what I'm told. Thank you for your time." He ends the call brusquely. Word of your verbal defense of the Free City's sphere of influence gets around, <span class="reputation inc">greatly improving your reputation.</span>`); + V.peacekeepers.attitude -= 10; + repX(5000, "event"); + App.Events.addParagraph(frag, r); + return frag; + } + } +}; diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersDeficit.tw b/src/events/nonRandom/peacekeepers/pPeacekeepersDeficit.tw deleted file mode 100644 index 5e4464da2399bc1dd7ee2b490ade7d6193fa90ec..0000000000000000000000000000000000000000 --- a/src/events/nonRandom/peacekeepers/pPeacekeepersDeficit.tw +++ /dev/null @@ -1,52 +0,0 @@ -:: P peacekeepers deficit [nobr] - -<<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event">> - -General $peacekeepers.generalName's peacekeeping force has stabilized the neighboring region somewhat. True to his word, the general has indeed concentrated on his peacekeeping mandate, and hasn't done anything that might be construed as a move against the Free City or its interests. There are somewhat fewer refugees available from that area, and it's a less complete refuge for bad actors, but other than that, there hasn't been much reason for you to take notice. Until today, when General $peacekeepers.generalName gives you a call. - -<br><br> - -It's a video link, and the general is in the field somewhere, wearing scuffed armor with his insignia of rank on the neck protector. He looks tired, and stress worse than simple fatigue is etched on his face, but he looks at you directly and gets on with it. "<<= PlayerName()>>," he says, "to start, I'd like to assure you this is a secure line from my end. We rely on structural security more than you in the Free Cities, with your cutting-edge computing power, but it's effective." He's in what looks like a field command post, in what's almost certainly an improvised secure communications booth. "The situation is this," he explains. "I have two problems, and I hope you may be able to solve them both at once in a way that will be beneficial to you." - -<br><br> - -"First," he says sharply, "I'm not getting the support I need out here." It obviously pains him to admit this, and the muscles along his jaw tense as he does, as though he's chewing on the words. "And I'm not giving anything away by telling you that. It's obvious enough, if you compare what I'm being asked to do here with the resources the politicians back home are willing to provide." At this, $assistant.name displays a quick summary of the political developments in the general's home country. General $peacekeepers.generalName is right; the expensive peacekeeping force is unpopular, and its support is being reduced by opportunistic politicians. "It isn't bad yet," he says, "but if this keeps up, I'm going to be rationing the most modern medical supplies for my wounded men and women. That's hard." - -<br><br> - -"And second," he continues, "I'm having difficulty housing the prisoners we're taking. We're the only functioning law and order in this area, and in order to keep control I'm having to lock up everyone from armed bandits to petty looters. I don't have the resources to imprison them decently. I'm already getting flak about conditions in our main prison camp here." He arches an eyebrow. "Some people back home seem to care more about keeping prisoners comfortable than they care about getting my wounded men and women the best possible care. And I can't just reduce the prisoner population, either. There are too many of them. Word would get out, and there'd be hell to pay back home." - -<br><br> - -The singular solution to the two problems is obvious. It's equally obvious that General $peacekeepers.generalName isn't going to be the one to propose it. He's not stupid. - -<br><br> -<span id="result"> -<<if $cash >= 100000>> - <<link "Offer to assist">> - <<replace "#result">> - Understanding that the general needs to couch the situation in a way he can justify in public, and perhaps in a way he can justify to himself, you offer to house the prisoners on a contract basis, with immediate payment to the general so he can meet his forces' immediate needs. Naturally, the prisoners will be kept busy while you keep them; menial labor seems appropriate. It's unlikely that the situation will ever stabilize to the point where they can be released, so for safety, they should all be detained indefinitely. And of course, each prisoner's individual detention will be available for resale. Just like any other slave's. - <br><br> - The general is unable to keep from smiling slightly when he hears that you understand perfectly and are willing and able to assist. There's some bitterness there, but not much. The two of you adjust the terms. The new menial slaves will be delivered immediately, several hundred of them; the general prefers to have this be a one-time transfer. After all, having an ongoing prisoner pipeline between his prisoner pens and the Free City might draw unwanted political attention. For now, he has the funds he needs, not to mention an empty prison camp. - <<set $peacekeepers.attitude += 5, $menials += 200>> - <<run cashX(-100000, "peacekeepers")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(100000)>> and provide a number of menial slaves// -<<else>> - //You lack the funds to buy the prisoners.// -<</if>> -<br><<link "Connect the general with Free Cities pharmaceutical sources">> - <<replace "#result">> - <<if $cash < 100000>>Unfortunately, you lack the funds to buy the prisoners.<</if>> - It would be very expensive to provide the general with the kind of money necessary to make a difference in the medical supply situation of a military force sufficient to keep what used to be a small country pacified. You express your regrets at your inability to help directly. You offer to connect the general with Free Cities pharmaceutical resources that will probably be able to get him what his infirmaries need at a lower price. "Interesting," he says, considering the offer. "The usual providers at home will scream bloody murder when it gets out. But it's a good idea," he admits. "Though that does nothing for the prison camps." Part of his reluctance is probably due to an unspoken hesitation to do business with the Free Cities directly. But he's coming around. - <<set $peacekeepers.attitude += 5>> - <</replace>> -<</link>> -<br><<link "Tell him his situation is untenable">> - <<replace "#result">> - You decide to use this as an object lesson in the limits of old world power projection, and tell his situation is untenable and that he should withdraw. If he doesn't have the political firepower necessary to get proper support and supply, he's better off cutting his losses. "That's not for you to say," he responds bitterly. "And that's not for me to say, either. I still go where I'm told and do what I'm told. Thank you for your time." He ends the call brusquely. Word of your verbal defense of the Free City's sphere of influence gets around, @@.green;greatly improving your reputation.@@ - <<set $peacekeepers.attitude -= 10>> - <<run repX(5000, "event")>> - <</replace>> -<</link>> -</span> diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersIndependence.js b/src/events/nonRandom/peacekeepers/pPeacekeepersIndependence.js new file mode 100644 index 0000000000000000000000000000000000000000..0c049df3cc28c3a5df277d64143e5156143fec3b --- /dev/null +++ b/src/events/nonRandom/peacekeepers/pPeacekeepersIndependence.js @@ -0,0 +1,110 @@ +App.Events.PPeacekeepersIndependence = class PPeacekeepersIndependence extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => App.Events.effectiveWeek() > 75, + () => V.peacekeepers && V.peacekeepers.strength < 50, + () => V.rivalOwner === 0, + () => V.peacekeepersFate !== 1, + ]; + } + + execute(node) { + let r = []; + if (!V.peacekeepers) { // for typing + return node; + } + + V.nextButton = "Continue"; + V.nextLink = "Random Nonindividual Event"; + V.peacekeepersFate = 1; + + V.peacekeepers.strength = -10; + + + r.push(`General ${V.peacekeepers.generalName} contacts you again, looking more tired and battered than ever.There's a strange light in his eyes, though, as though he's resolved to make a big bet.And once he starts speaking, it turns out that he is. "${PlayerName()}," he says,`); + if (V.peacekeepers.attitude > 10) { + r.push(`"you've been supportive of my peacekeeping mission here in the past.`); + } else { + r.push(`"I understand your attitude towards my peacekeeping mission here must be mixed.`); + } + r.push(`But all that's about to change." He straightens up, falling back on a military bearing. "The support — funding, supply, everything — for my men and women here is ending, effective now. Right now, in fact. I'm not sure how I'm going to get everyone home." He looks through the video feed at you.`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`"If we're going home."`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`"The world's changed," he continues. "Or maybe it's gone back to the way it used to be. There's nothing for my people back home but discharge and unemployment. If they're lucky. It's too much to ask good men and women, good, armed, men and women, to do that. Not when we already control what used to be a nation, right here." He gestures around him, probably indicating maps you can't see. "We're already the government here. It's a battered, war-torn country, but it's a country. If I start levying taxes here, it'll keep my men and women fed. And clothed. And in something like the status they deserve." And, he does not need to add, General V.peacekeepers.generalName will be a powerful warlord.`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`"But," he says. "But. This is going to be difficult. I can't be sure I'll succeed. As for me, I'd take the chance and be damned, just for the chance to tell the politicians back home what they can do with their orders. But there's my men and women. They'll do what I ask, but I won't ask it of them without a good, solid chance." His eyes narrow. "I need funding, and I need it now. I can't offer anything in return, not right away. But I pay my debts. And we'll be a buffer between external threats and the Free City. And finally, any resentment about old world power in the area among your people will be wiped away overnight."`); + + App.Events.addParagraph(node, r); + + const smallAid = 100000; + const generousAid = 250000; + const choices = []; + if (V.cash >= smallAid) { + choices.push(new App.Events.Result(`Provide immediate assistance`, assistance, `This will cost ${cashFormat(smallAid)}`)); + } else { + choices.push(new App.Events.Result(null, null, `You lack the ¤ to make any meaningful contribution.`)); + } + if (V.cash >= 250000) { + choices.push(new App.Events.Result(`Deliver generous aid`, generous, `This will cost ${cashFormat(generousAid)}`)); + } + choices.push(new App.Events.Result(`Decline to support him`, decline)); + + + App.Events.addResponses(node, choices); + + function assistance() { + const frag = new DocumentFragment(); + if (!V.peacekeepers) { // for typing + return frag; + } + let r = []; + r.push(`You immediately wire General ${V.peacekeepers.generalName} ${cashFormat(smallAid)}, not an impressive sum by Free Cities standards, but probably enough to turn the scales in his plans to keep his force together as it transitions from old world peacekeeping to autocratic nation building. Soon enough, he'll be able to support his men and women through armed extortion, the original form of taxation and, arguably, the only form of taxation.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`"You have my thanks," he says formally. "We'll be in control here soon enough. The one thing we'll have an almost limitless supply of is people. I don't think anyone's likely to notice a few menial slaves transferred into the Free City. I'm sure a regular trade already exists; we'll just be adding a few undesirables to it." He ends the call, looking determined.Despite his confidence, he has his work cut out for him.`); + cashX(-smallAid, "peacekeepers"); + V.peacekeepers.strength = 50; + V.peacekeepers.attitude += 5; + V.peacekeepers.undermining = 0; + V.fcnn.push("...asking: how many will follow the precedent set by the peacekeeping force in..."); + App.Events.addParagraph(frag, r); + return frag; + } + + function generous() { + const frag = new DocumentFragment(); + if (!V.peacekeepers) { // for typing + return frag; + } + let r = []; + r.push(`You immediately wire General ${V.peacekeepers.generalName} ${cashFormat(250000)}, enough to keep his force together through the critical period as it transitions from old world peacekeeping to autocratic nation building. Soon enough, he'll be able to support his men and women through armed extortion, the original form of taxation and, arguably, the only form of taxation.`); + App.Events.addParagraph(frag, r); + r = []; + r.push(`"That's extremely generous of you," he says, with an undertone of relief. "This is going to go much more smoothly than I'd originally thought. And I see that we're going to have friends and allies out here, as we establish ourselves. We're going to have quite a few undesirables to rid ourselves of, here, and the menial slave trade between this area and the Free City seems like an opportune way to do that." He ends the call, looking confident.`); + cashX(-250000, "peacekeepers"); + V.peacekeepers.strength = 50; + V.peacekeepers.attitude += 25; + V.peacekeepers.undermining = 0; + V.fcnn.push("...asking: how many will follow the precedent set by the peacekeeping force in..."); + App.Events.addParagraph(frag, r); + return frag; + } + + function decline() { + if (!V.peacekeepers) { // for typing + return ""; + } + return `You inform General ${V.peacekeepers.generalName} that you will not be providing assistance. He does not falter, but he looks suddenly older, as though the prospect of a decisive strike was giving him the strength to carry on. He expresses his regrets dully, and then ends the call.`; + } + } +}; diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersIndependence.tw b/src/events/nonRandom/peacekeepers/pPeacekeepersIndependence.tw deleted file mode 100644 index 534086e8cc99eb9b19af84fbd71050130cf43899..0000000000000000000000000000000000000000 --- a/src/events/nonRandom/peacekeepers/pPeacekeepersIndependence.tw +++ /dev/null @@ -1,52 +0,0 @@ -:: P peacekeepers independence [nobr] - -<<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event", $peacekeepersFate = 1>> - -<<set $peacekeepers.strength = -10>> - -General $peacekeepers.generalName contacts you again, looking more tired and battered than ever. There's a strange light in his eyes, though, as though he's resolved to make a big bet. And once he starts speaking, it turns out that he is. "<<= PlayerName()>>," he says, "<<if $peacekeepers.attitude > 10>>you've been supportive of my peacekeeping mission here in the past<<else>>I understand your attitude towards my peacekeeping mission here must be mixed<</if>>. But all that's about to change." He straightens up, falling back on a military bearing. "The support — funding, supply, everything — for my men and women here is ending, effective now. Right now, in fact. I'm not sure how I'm going to get everyone home." He looks through the video feed at you. - -<br><br> - -"If we're going home." - -<br><br> - -"The world's changed," he continues. "Or maybe it's gone back to the way it used to be. There's nothing for my people back home but discharge and unemployment. If they're lucky. It's too much to ask good men and women, good, armed, men and women, to do that. Not when we already control what used to be a nation, right here." He gestures around him, probably indicating maps you can't see. "We're already the government here. It's a battered, war-torn country, but it's a country. If I start levying taxes here, it'll keep my men and women fed. And clothed. And in something like the status they deserve." And, he does not need to add, General $peacekeepers.generalName will be a powerful warlord. - -<br><br> - -"But," he says. "But. This is going to be difficult. I can't be sure I'll succeed. As for me, I'd take the chance and be damned, just for the chance to tell the politicians back home what they can do with their orders. But there's my men and women. They'll do what I ask, but I won't ask it of them without a good, solid chance." His eyes narrow. "I need funding, and I need it now. I can't offer anything in return, not right away. But I pay my debts. And we'll be a buffer between external threats and the Free City. And finally, any resentment about old world power in the area among your people will be wiped away overnight." - -<br><br> -<span id="result"> -<<if $cash >= 100000>> - <<link "Provide immediate assistance">> - <<replace "#result">> - You immediately wire General $peacekeepers.generalName <<print cashFormat(100000)>>, not an impressive sum by Free Cities standards, but probably enough to turn the scales in his plans to keep his force together as it transitions from old world peacekeeping to autocratic nation building. Soon enough, he'll be able to support his men and women through armed extortion, the original form of taxation and, arguably, the only form of taxation. - <br><br> - "You have my thanks," he says formally. "We'll be in control here soon enough. The one thing we'll have an almost limitless supply of is people. I don't think anyone's likely to notice a few menial slaves transferred into the Free City. I'm sure a regular trade already exists; we'll just be adding a few undesirables to it." He ends the call, looking determined. Despite his confidence, he has his work cut out for him. - <<set cashX(-100000, "peacekeepers"), $peacekeepers.strength = 50, $peacekeepers.attitude += 5, $peacekeepers.undermining = 0>> - <<set $fcnn.push("...asking: how many will follow the precedent set by the peacekeeping force in...")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(100000)>>// -<<else>> - You lack the ¤ to make any meaningful contribution. -<</if>> -<<if $cash >= 250000>> - <br><<link "Deliver generous aid">> - <<replace "#result">> - You immediately wire General $peacekeepers.generalName <<print cashFormat(250000)>>, enough to keep his force together through the critical period as it transitions from old world peacekeeping to autocratic nation building. Soon enough, he'll be able to support his men and women through armed extortion, the original form of taxation and, arguably, the only form of taxation. - <br><br> - "That's extremely generous of you," he says, with an undertone of relief. "This is going to go much more smoothly than I'd originally thought. And I see that we're going to have friends and allies out here, as we establish ourselves. We're going to have quite a few undesirables to rid ourselves of, here, and the menial slave trade between this area and the Free City seems like an opportune way to do that." He ends the call, looking confident. - <<set cashX(-250000, "peacekeepers"), $peacekeepers.strength = 50, $peacekeepers.attitude += 25, $peacekeepers.undermining = 0>> - <<set $fcnn.push("...asking: how many will follow the precedent set by the peacekeeping force in...")>> - <</replace>> - <</link>> //This will cost <<print cashFormat(250000)>>// -<</if>> -<br><<link "Decline to support him">> - <<replace "#result">> - You inform General $peacekeepers.generalName that you will not be providing assistance. He does not falter, but he looks suddenly older, as though the prospect of a decisive strike was giving him the strength to carry on. He expresses his regrets dully, and then ends the call. - <</replace>> -<</link>> -</span> diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersInfluence.js b/src/events/nonRandom/peacekeepers/pPeacekeepersInfluence.js new file mode 100644 index 0000000000000000000000000000000000000000..4d07ac4f7831b7d44befc1f4330f6838f6c72481 --- /dev/null +++ b/src/events/nonRandom/peacekeepers/pPeacekeepersInfluence.js @@ -0,0 +1,281 @@ +App.Events.PPeacekeepersInfluence = class PPeacekeepersInfluence extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.peacekeepers && V.peacekeepers.strength >= 50, + () => V.peacekeepers.influenceAnnounced === 0, + ]; + } + + execute(node) { + let r = []; + if (!V.peacekeepers) { // for typing + return node; + } + + // :: P peacekeepers influence [nobr] + + V.nextButton = "Continue"; + V.nextLink = "Random Nonindividual Event"; + + V.peacekeepers.influenceAnnounced = 1; + + r.push(`General ${V.peacekeepers.generalName} has successfully declared his independence from his mother country. That nation recruited, trained, and commanded him and all his men and women, but then it sent him to keep the peace in a war-torn region, failed to give him the support he needed, and then tried to withdraw him when the costs of what support they were willing to send overtopped what weak political will the old world still has. In truth, it was only a half-step from peacekeeping force to government for General V.peacekeepers.generalName and his troops. They were already the only source of public order in that area.`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`You provided money to General ${V.peacekeepers.generalName} to help him through this difficult time of transition, making him an investment of yours. That investment has already shown a small return; the first regular tribute of slaves arrived this week, free of charge. General ${V.peacekeepers.generalName} seems determined to pay his debts properly, and he sent you good stock, healthy menials ready for`); + if (V.menials) { + r.push(`work${(V.Sweatshops) ? `. They're already toiling away in ${V.arcologies[0].name}'s sweatshops` : ``}.`); + } else { + r.push(`resale.`); + } + r.push(`Even better, it seems you can expect to receive a similar shipment in perpetuity. The number of downtrodden people living in the ruins of a small country dwarfs even a Free City's appetite for slaves.`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`As you review intelligence from the area at your desk,`); + if (V.assistant.personality > 0) { + const { + HeA, HisA, + heA, hisA, himA, girlA, himselfA, womanA, loliA + } = getPronouns(assistant.pronouns().main).appendSuffix("A"); + r.push(`${V.assistant.name}'s avatar pops up.`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`The little monster ${girlA} toys with ${hisA} tentacle hair until you give ${himA} your attention. When ${heA} sees that ${heA} has it, ${heA} wiggles ${hisA} hips at you, and gives you a wink.`); + break; + case "shemale": + r.push(`The slutty little shemale pops up, literally, bouncing upward buoyantly in a way that makes ${hisA} boobs jiggle ridiculously and ${hisA} cock slap wetly against ${hisA} stomach.`); + break; + case "schoolgirl": + r.push(`The slutty little school ${girlA} pops up, literally, bouncing upward so violently that ${hisA} skirt flies up and exposes everything. ${HeA} flips it back down with a giggle.`); + break; + case "goddess": + r.push(`The beautiful, gravid goddess appears with ${hisA} usual wash of radiant golden light, and gently smoothens one of ${hisA} long tresses with a soft hand until ${heA} has your attention.`); + break; + case "businesswoman": + r.push(`The stacked business ${womanA} appears hugging a tablet to ${hisA} generous bosom, squashing ${hisA} cleavage upward and indicating that ${heA} has important information for you.`); + break; + case "amazon": + r.push(`The ferocious little warrior ${womanA} stands up straight, cutely muscular and full of self-importance, as though ${heA} has something ${heA}'d like to share.`); + break; + case "fairy": + r.push(`The little fairy appears on your table, flailing around while ${hisA} body lights up. ${HeA} bends over and starts slapping ${hisA} butt at you and giggling. ${HisA} slapping turns into groping, and ${heA} gets lost in molesting ${hisA} own ass. Clearing your throat, ${heA} looks upside down between ${hisA} legs and sees that ${heA} finally has your attention.`); + break; + case "pregnant fairy": + r.push(`The little fairy appears on your table, leaning towards you and squishing ${hisA} breasts together to show off ${hisA} cleavage. You completely fail to notice ${himA}. ${HeA} tries again, turning around and bending over and shaking ${hisA} butt while looking back at you. Yet again ${heA} fails to draw your attention. Frustrated, ${heA} sits on the table, spreading ${hisA} legs and showing off ${hisA} pussy. Peeking over ${hisA} swollen belly, ${heA} sees that you're not even looking at ${himA}. ${HisA} tiny body is just too small to garner your attention. It's not for a few minutes until you notice ${himA} sitting up on the desk, looking away with ${hisA} arms crossed and pouting.`); + break; + case "hypergoddess": + r.push(`The beautiful, massively gravid goddess appears with${hisA} usual wash of radiant golden light, and gently calms ${hisA} squirming occupants until ${heA} has your attention.`); + break; + case "loli": + r.push(`The cute little ${loliA} pops up, literally, bouncing upward again and again until ${heA} is absolutely certain ${heA} has your attention.`); + break; + case "preggololi": + r.push(`The slutty little ${loliA} appears bent over flashing ${hisA} pregnant pussy at you. ${HeA} giggles and straightens up once ${heA} is absolutely certain you've given ${hisA} moist cleft enough attention.`); + break; + case "angel": + r.push(`The beautiful angel appears in ${hisA} usual wash of radiant white light and gently folds ${hisA} wings behind ${himA} as ${heA} patiently awaits your attention.`); + break; + case "cherub": + r.push(`The cute little cherub appears in ${hisA} usual wash of radiant white light and flutters around until ${heA} has your attention.`); + break; + case "incubus": + r.push(`The hung sex demon pops up, bouncing upward buoyantly in a way that makes ${hisA} erect cock slide along ${hisA} stomach. Stimulation just enough, ${heA} blows a huge load across your desk while moaning lewdly; ${heA} knows how to get your attention.`); + break; + case "succubus": + r.push(`The slutty little sex demoness pops up.`); + switch (V.assistant.fsAppearance) { + case "paternalist": + r.push(`"${V.PC.slaveName}, would you help me with this zipper?"`); + break; + case "degradationist": + r.push(`"${V.PC.slaveName}, what do you think of these piercings?"`); + break; + case "physical idealist": + r.push(`"${V.PC.slaveName}, bet you I can lift this!"`); + break; + case "hedonistic decadence": + r.push(`"${V.PC.slaveName}, is there food on my face?"`); + break; + case "repopulation focus": + r.push(`"${V.PC.slaveName}, my water broke."`); + break; + case "gender radicalist": + r.push(`"${V.PC.slaveName}, do you think`); + if (V.arcologies[0].FSGenderRadicalistLawFuta === 3) { + r.push(`my ass could be bigger?"`); + } else { + r.push(`this outfit makes me look too girly?"`); + } + break; + case "gender fundamentalist": + r.push(`"${V.PC.slaveName}, would I make a good mother?"`); + break; + case "asset expansionist": + r.push(`"${V.PC.slaveName}, I feel like my breasts got smaller, what do you think?"`); + break; + case "transformation fetishist": + r.push(`"${V.PC.slaveName}, how do you think these implants would look in me?"`); + break; + case "pastoralist": + r.push(`"Oh ${V.PC.slaveName}, I'm so backed up. Would you give me a hand?"`); + break; + case "slimness enthusiast": + r.push(`"${V.PC.slaveName}, do`); + if (V.arcologies[0].FSSlimnessEnthusiastLaw === 1) { + r.push(`these look bigger to you?"`); + } else { + r.push(`you think they're getting bigger?"`); + } + break; + case "slave professionalism": + r.push(`"Hey ${V.PC.slaveName}, what's most useful when it's long and hard? An education, of course!"`); + break; + case "petite admiration": + r.push(`"${V.PC.slaveName}, I think I grew a little."`); + break; + case "statuesque glorification": + r.push(`"${V.PC.slaveName}, are these heels long enough?"`); + break; + default: r.push(`${HeA} spasms with a powerful orgasm and moans lewdly and loudly.`); + } + r.push(`${HeA} knows just how to get your attention.`); + break; + case "imp": + r.push(`The scandalous little imp swoops into view and eagerly stares at you, as if ${heA} has some juicy gossip to tell you.`); + break; + case "witch": + r.push(`The cute little witch pops up, before blushing and undressing. An important message for you is scrawled across ${hisA} skin.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`Your shapeshifting assistant pops out of a crack on your desk, ${hisA} belly swollen with something. ${HeA} bends over and pushes out information for you, though you're not sure how.`); + break; + default: + r.push(`The round symbol pulses brightly, ${hisA} way of indicating that ${heA} has important information for you.`); + } + r.push(`"General ${V.peacekeepers.generalName}'s men and women are using sex slaves," ${heA} reports, and brings up a trove of surveillance data to back up ${hisA} assertion. "It was unofficial at first,`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`just people with weapons in their hands doing what people with power over others do," ${heA} explains approvingly, showing ${hisA} fangs.`); + break; + case "shemale": + r.push(`just hot guys sticking their dicks in the local girls," ${heA} explains, masturbating openly.`); + break; + case "schoolgirl": + r.push(`just boys blowing off a little steam with the local girls," ${heA} explains nastily.`); + break; + case "goddess": + r.push(`just the sort of thing men with arms in their hands have been doing to the locals for thousands of years," ${heA} explains.`); + break; + case "businesswoman": + r.push(`normal behavior for soldiers under severe stress in areas with civilians," ${heA} explains, sounding vaguely disapproving of something so uncivilized.`); + break; + case "amazon": + r.push(`just warriors letting off steam with the local girls," ${heA} explains, making it sound like the most natural thing in the world.`); + break; + case "fairy": + r.push(`just some boys and girls doing those bedroom sports for indoor types" ${heA} explains.`); + break; + case "pregnant fairy": + r.push(`just some guys having fun with those bigger girls" ${heA} explains, sounding annoyed for some reason.`); + break; + case "hypergoddess": + r.push(`just the boys trying to make sure they have someone to carry on their legacy, I'm sure," ${heA} states hopefully.`); + break; + case "loli": + r.push(`just wrestling and dancing," ${hisA} innocence shining through ${hisA} explanation.`); + break; + case "preggololi": + r.push(`just the guys enjoying some fresh young girls," ${heA} says with a hint of jealousy.`); + break; + case "angel": + r.push(`just the strong taking what they want without consideration," ${heA} sighs, sounding disapproving of something so uncivilized.`); + break; + case "cherub": + r.push(`simply the satisfaction of one's urges," ${heA} says with disappointment.`); + break; + case "incubus": + r.push(`just men enjoying new holes," ${heA} explains, masturbating openly.`); + break; + case "succubus": + r.push(`just seductresses doing what they do," ${heA} explains, masturbating openly.`); + break; + case "imp": + r.push(`just the victors enjoying the spoils," ${heA} says, a hint of excitement in ${hisA} voice.`); + break; + case "witch": + r.push(`just soldiers relaxing after a hard day," ${heA} explains.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`just the conquerors using what's theirs," ${heA} explains, making it sound like the most natural thing in the world.`); + break; + default: + r.push(`just the common behavior of troops under severe stress in areas with civilians," ${heA} explains.`); + } + r.push(`"But it's spread, and with their independence, General ${V.peacekeepers.generalName} has decided to bring it under control by setting up official slave brothels for his troops. <span class="yellow">The officer in charge of staffing these doesn't have enough money to pay Free Cities prices, but I've added him to the standard slave sale interface.</span> Selling sex slaves to him at a price General ${V.peacekeepers.generalName}'s people can afford would bring them closer to ${V.arcologies[0].name}."`); + switch (V.assistant.appearance) { + case "monstergirl": + r.push(`${HeA} strokes ${hisA} cocks meaningfully. "Selling them a particularly distinctive, valuable girl might even influence their tastes. Imagine, manipulating an entire army by providing it with skilled whores." ${HeA} shudders.`); + break; + case "shemale": + r.push(`${HeA} strokes ${hisA} cock meaningfully. "Oh, and they could even develop into a regular market if they're sold distinctive, valuable girls. We should totally get them addicted to anal whores." To make ${hisA} meaning perfectly clear, ${heA} sticks out ${hisA} butt and winks ${hisA} lewd little anus.`); + break; + case "schoolgirl": + r.push(`${HeA} flashes ${hisA} breasts, as though to an appreciative crowd. "If we sell them hotties, it'll get them even more used to us," ${heA} says naughtily. "Get them used to Free Cities girls sucking their dicks all the time!"`); + break; + case "goddess": + r.push(`${HeA} caresses ${hisA} pregnancy. "If we sell them some of our best slaves, I'm sure their virtues will win General V.peacekeepers.generalName's men and women over," ${heA} says confidently. "It'd be like sending some of my own out to love each and every one of them."`); + break; + case "businesswoman": + r.push(`${HeA} fans ${himselfA}, flushing at the possibilities. "Just think, they might develop into a regular, profitable market for sex slaves if they're sent top-quality product at first to build up the brand," ${heA} says huskily, and then climaxes.`); + break; + case "amazon": + r.push(`${HeA} flexes ${hisA} muscles, crossing ${hisA} arms under ${hisA} big breasts and feeling ${hisA} own biceps thoughtfully. "Selling them good stock would make them like us even more, I bet," ${heA} says. "Sharing a good slut around the campfire is a good way to make friends!"`); + break; + case "fairy": + r.push(`${HeA} reaches behind ${himselfA} and starts groping ${hisA} butt again. "If we sell them some super cuties, they'll really love us!" ${heA} giggles as ${heA} gives ${himselfA} a playful slap.`); + break; + case "pregnant fairy": + r.push(`Since ${heA} has your attention now, ${heA} slowly spreads ${hisA} legs and flashes ${hisA} pussy once again. Seeing you watch with interest this time, a small smile creeps up on ${hisA} face. "If we sell them some of our prettier girls, they'll be sure to warm up to us."`); + break; + case "hypergoddess": + r.push(`${HeA} caresses ${hisA} pregnancy. "If we sell them some of our fertile slaves, I'm sure their burgeoning pregnancies will ease them into relying on us," ${heA} says confidently. "Or at least it will result in more slaves later on."`); + break; + case "loli": + r.push(`${HeA} claps excitedly. "If we sell them new friends, then they'll hear from them about how great the Free Cities are and want to become our friends too!" ${heA} says hopefully, eager to meet all the newcomers to the arcology.`); + break; + case "preggololi": + r.push(`${HeA} claps excitedly. "I don't know what they think of lolis, but selling them a few cute little slave girls will surely warm them up to us," ${heA} says, patting ${hisA} belly. "Plus, I'm sure they'll love how tight they are and how much energy they have once you break them in!"`); + break; + case "angel": + r.push(`${HeA} wrings a wing nervously. "If we send them nice girls, we'd be doing a disservice to them by sending them away. But if we don't, how can we be certain that the girls they have will be well cared for? We definitely need to teach them our ways," ${heA} concludes.`); + break; + case "cherub": + r.push(`${HeA} lands and ponders deeply. "We have to show them the right way before they get mislead. Some of our finest girls should help convert them to our ways!"`); + break; + case "incubus": + r.push(`${HeA} strokes ${hisA} cock meaningfully. "Oh, and they could even develop into a regular market if they're sold distinctive, sexy girls. We should totally get them addicted to rape." ${HeA} makes several thrusting motions.`); + break; + case "succubus": + r.push(`${HeA} fingers ${hisA} pussy meaningfully. "Oh, and they could even develop into a regular market if they're sold distinctive, sexy girls. Plus that means more money for you, and less competition for me." ${HeA} winks.`); + break; + case "imp": + r.push(`${HeA} punches ${hisA} fist into ${hisA} palm. "We should sell them sexy, but unbroken, girls. That way they can learn to love breaking slaves into proper sex toys!" ${HeA} shivers with orgasm at the thought.`); + break; + case "witch": + r.push(`${HeA} runs ${hisA} hat through ${hisA} hands. "If we sell them skilled girls, they'll grow closer to us. But we have to be careful not to send them klutzes like me; not everyone finds that adorable." ${HeA} takes the time to mend the rip ${heA} accidentally tore in ${hisA} hat's brim.`); + break; + case "ERROR_1606_APPEARANCE_FILE_CORRUPT": + r.push(`${HeA} ponders deeply. "We could sell them the most loyal girls we have. They'll naturally lead them back to us. And then they are ours to do as we please," ${heA} says smiling deviously.`); + break; + default: + r.push(`${HisA} symbol takes on a rapid succession of pulsating lewd shapes, signifying some of the arcology's better varieties of sex slaves. "If they're sold good product, they may become a reliable market, " ${heA} asserts.`); + } + } else { + r.push(`your personal assistant appears to offer a suggestion. "I have collated data on the use of unofficial sex slaves by General ${V.peacekeepers.generalName}'s forces," it reports. "Despite the high state of readiness of his forces, the use of comfort women seems to have become widespread. Characteristically, the general has responded to this by accepting the new status quo, and is setting up recreation centers to ensure that the practice does not become disruptive. One of his officers has been tasked with obtaining appropriate sex slaves, but does not have sufficient resources to pay Free Cities prices. <span class="yellow">The purchasing officer may appear as a slave buyer through the standard slave sale interface.</span> It may be possible to influence them by selling them high-quality slaves."`); + } + } +}; diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersInfluence.tw b/src/events/nonRandom/peacekeepers/pPeacekeepersInfluence.tw deleted file mode 100644 index 5efce2b24a3a13051e9a2f2487647f0def408671..0000000000000000000000000000000000000000 --- a/src/events/nonRandom/peacekeepers/pPeacekeepersInfluence.tw +++ /dev/null @@ -1,161 +0,0 @@ -:: P peacekeepers influence [nobr] - -<<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event">> - -<<set $peacekeepers.influenceAnnounced = 1>> -<<setAssistantPronouns>> - -General $peacekeepers.generalName has successfully declared his independence from his mother country. That nation recruited, trained, and commanded him and all his men and women, but then it sent him to keep the peace in a war-torn region, failed to give him the support he needed, and then tried to withdraw him when the costs of what support they were willing to send overtopped what weak political will the old world still has. In truth, it was only a half-step from peacekeeping force to government for General $peacekeepers.generalName and his troops. They were already the only source of public order in that area. - -<br><br> - -You provided money to General $peacekeepers.generalName to help him through this difficult time of transition, making him an investment of yours. That investment has already shown a small return; the first regular tribute of slaves arrived this week, free of charge. General $peacekeepers.generalName seems determined to pay his debts properly, and he sent you good stock, healthy menials ready for <<if $menials>>work<<if $Sweatshops>>. They're already toiling away in $arcologies[0].name's sweatshops<</if>><<else>>resale<</if>>. Even better, it seems you can expect to receive a similar shipment in perpetuity. The number of downtrodden people living in the ruins of a small country dwarfs even a Free City's appetite for slaves. - -<br><br> - -As you review intelligence from the area at your desk, -<<if $assistant>> - $assistant.name's avatar pops up. - <<switch $assistant.appearance>> - <<case "monstergirl">> - The little monster<<= _girlA>> toys with _hisA tentacle hair until you give _himA your attention. When _heA sees that _heA has it, _heA wiggles _hisA hips at you, and gives you a wink. - <<case "shemale">> - The slutty little shemale pops up, literally, bouncing upward buoyantly in a way that makes _hisA boobs jiggle ridiculously and _hisA cock slap wetly against _hisA stomach. - <<case "schoolgirl">> - The slutty little school<<= _girlA>> pops up, literally, bouncing upward so violently that _hisA skirt flies up and exposes everything. _HeA flips it back down with a giggle. - <<case "goddess">> - The beautiful, gravid goddess appears with _hisA usual wash of radiant golden light, and gently smoothens one of _hisA long tresses with a soft hand until _heA has your attention. - <<case "businesswoman">> - The stacked business<<= _womanA>> appears hugging a tablet to _hisA generous bosom, squashing _hisA cleavage upward and indicating that _heA has important information for you. - <<case "amazon">> - The ferocious little warrior _womanA stands up straight, cutely muscular and full of self-importance, as though _heA has something _heA'd like to share. - <<case "fairy">> - The little fairy appears on your table, flailing around while _hisA body lights up. _HeA bends over and starts slapping _hisA butt at you and giggling. _HisA slapping turns into groping, and _heA gets lost in molesting _hisA own ass. Clearing your throat, _heA looks upside down between _hisA legs and sees that _heA finally has your attention. - <<case "pregnant fairy">> - The little fairy appears on your table, leaning towards you and squishing _hisA breasts together to show off _hisA cleavage. You completely fail to notice _himA. _HeA tries again, turning around and bending over and shaking _hisA butt while looking back at you. Yet again _heA fails to draw your attention. Frustrated, _heA sits on the table, spreading _hisA legs and showing off _hisA pussy. Peeking over _hisA swollen belly, _heA sees that you're not even looking at _himA. _HisA tiny body is just too small to garner your attention. It's not for a few minutes until you notice _himA sitting up on the desk, looking away with _hisA arms crossed and pouting. - <<case "hypergoddess">> - The beautiful, massively gravid goddess appears with _hisA usual wash of radiant golden light, and gently calms _hisA squirming occupants until _heA has your attention. - <<case "loli">> - The cute little _loliA pops up, literally, bouncing upward again and again until _heA is absolutely certain _heA has your attention. - <<case "preggololi">> - The slutty little _loliA appears bent over flashing _hisA pregnant pussy at you. _HeA giggles and straightens up once _heA is absolutely certain you've given _hisA moist cleft enough attention. - <<case "angel">> - The beautiful angel appears in _hisA usual wash of radiant white light and gently folds _hisA wings behind _himA as _heA patiently awaits your attention. - <<case "cherub">> - The cute little cherub appears in _hisA usual wash of radiant white light and flutters around until _heA has your attention. - <<case "incubus">> - The hung sex demon pops up, bouncing upward buoyantly in a way that makes _hisA erect cock slide along _hisA stomach. Stimulation just enough, _heA blows a huge load across your desk while moaning lewdly; _heA knows how to get your attention. - <<case "succubus">> - The slutty little sex demoness pops up. - <<switch $assistant.fsAppearance>> - <<case "paternalist">>"<<print $PC.slaveName>>, would you help me with this zipper?" - <<case "degradationist">>"<<print $PC.slaveName>>, what do you think of these piercings?" - <<case "physical idealist">>"<<print $PC.slaveName>>, bet you I can lift this!" - <<case "hedonistic decadence">>"<<print $PC.slaveName>>, is there food on my face?" - <<case "repopulation focus">>"<<print $PC.slaveName>>, my water broke." - <<case "gender radicalist">>"<<print $PC.slaveName>>, do you think <<if $arcologies[0].FSGenderRadicalistLawFuta == 3>>my ass could be bigger?"<<else>>this outfit makes me look too girly?"<</if>> - <<case "gender fundamentalist">>"<<print $PC.slaveName>>, would I make a good mother?" - <<case "asset expansionist">>"<<print $PC.slaveName>>, I feel like my breasts got smaller, what do you think?" - <<case "transformation fetishist">>"<<print $PC.slaveName>>, how do you think these implants would look in me?" - <<case "pastoralist">>"Oh <<print $PC.slaveName>>, I'm so backed up. Would you give me a hand?" - <<case "slimness enthusiast">>"<<print $PC.slaveName>>, do <<if $arcologies[0].FSSlimnessEnthusiastLaw == 1>>these look bigger to you?"<<else>>you think they're getting bigger?"<</if>> - <<case "slave professionalism">>"Hey <<print $PC.slaveName>>, what's most useful when it's long and hard? An education, of course!" - <<case "petite admiration">>"<<print $PC.slaveName>>, I think I grew a little." - <<case "statuesque glorification">>"<<print $PC.slaveName>>, are these heels long enough?" - <<default>>_HeA spasms with a powerful orgasm and moans lewdly and loudly. - <</switch>> - _HeA knows just how to get your attention. - <<case "imp">> - The scandalous little imp swoops into view and eagerly stares at you, as if _heA has some juicy gossip to tell you. - <<case "witch">> - The cute little witch pops up, before blushing and undressing. An important message for you is scrawled across _hisA skin. - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - Your shapeshifting assistant pops out of a crack on your desk, _hisA belly swollen with something. _HeA bends over and pushes out information for you, though you're not sure how. - <<default>> - The round symbol pulses brightly, _hisA way of indicating that _heA has important information for you. - <</switch>> - "General $peacekeepers.generalName's men and women are using sex slaves," _heA reports, and brings up a trove of surveillance data to back up _hisA assertion. "It was unofficial at first, - <<switch $assistant.appearance>> - <<case "monstergirl">> - just people with weapons in their hands doing what people with power over others do," _heA explains approvingly, showing _hisA fangs. - <<case "shemale">> - just hot guys sticking their dicks in the local girls," _heA explains, masturbating openly. - <<case "schoolgirl">> - just boys blowing off a little steam with the local girls," _heA explains nastily. - <<case "goddess">> - just the sort of thing men with arms in their hands have been doing to the locals for thousands of years," _heA explains. - <<case "businesswoman">> - normal behavior for soldiers under severe stress in areas with civilians," _heA explains, sounding vaguely disapproving of something so uncivilized. - <<case "amazon">> - just warriors letting off steam with the local girls," _heA explains, making it sound like the most natural thing in the world. - <<case "fairy">> - just some boys and girls doing those bedroom sports for indoor types" _heA explains. - <<case "pregnant fairy">> - just some guys having fun with those bigger girls" _heA explains, sounding annoyed for some reason. - <<case "hypergoddess">> - just the boys trying to make sure they have someone to carry on their legacy, I'm sure," _heA states hopefully. - <<case "loli">> - just wrestling and dancing," _hisA innocence shining through _hisA explanation. - <<case "preggololi">> - just the guys enjoying some fresh young girls," _heA says with a hint of jealousy. - <<case "angel">> - just the strong taking what they want without consideration," _heA sighs, sounding disapproving of something so uncivilized. - <<case "cherub">> - simply the satisfaction of one's urges," _heA says with disappointment. - <<case "incubus">> - just men enjoying new holes," _heA explains, masturbating openly. - <<case "succubus">> - just seductresses doing what they do," _heA explains, masturbating openly. - <<case "imp">> - just the victors enjoying the spoils," _heA says, a hint of excitement in _hisA voice. - <<case "witch">> - just soldiers relaxing after a hard day," _heA explains. - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - just the conquerors using what's theirs," _heA explains, making it sound like the most natural thing in the world. - <<default>> - just the common behavior of troops under severe stress in areas with civilians," _heA explains. - <</switch>> - "But it's spread, and with their independence, General $peacekeepers.generalName has decided to bring it under control by setting up official slave brothels for his troops. @@.yellow;The officer in charge of staffing these doesn't have enough money to pay Free Cities prices, but I've added him to the standard slave sale interface.@@ Selling sex slaves to him at a price General $peacekeepers.generalName's people can afford would bring them closer to $arcologies[0].name." - <<switch $assistant.appearance>> - <<case "monstergirl">> - _HeA strokes _hisA cocks meaningfully. "Selling them a particularly distinctive, valuable girl might even influence their tastes. Imagine, manipulating an entire army by providing it with skilled whores." _HeA shudders. - <<case "shemale">> - _HeA strokes _hisA cock meaningfully. "Oh, and they could even develop into a regular market if they're sold distinctive, valuable girls. We should totally get them addicted to anal whores." To make _hisA meaning perfectly clear, _heA sticks out _hisA butt and winks _hisA lewd little anus. - <<case "schoolgirl">> - _HeA flashes _hisA breasts, as though to an appreciative crowd. "If we sell them hotties, it'll get them even more used to us," _heA says naughtily. "Get them used to Free Cities girls sucking their dicks all the time!" - <<case "goddess">> - _HeA caresses _hisA pregnancy. "If we sell them some of our best slaves, I'm sure their virtues will win General $peacekeepers.generalName's men and women over," _heA says confidently. "It'd be like sending some of my own out to love each and every one of them." - <<case "businesswoman">> - _HeA fans _himselfA, flushing at the possibilities. "Just think, they might develop into a regular, profitable market for sex slaves if they're sent top-quality product at first to build up the brand," _heA says huskily, and then climaxes. - <<case "amazon">> - _HeA flexes _hisA muscles, crossing _hisA arms under _hisA big breasts and feeling _hisA own biceps thoughtfully. "Selling them good stock would make them like us even more, I bet," _heA says. "Sharing a good slut around the campfire is a good way to make friends!" - <<case "fairy">> - _HeA reaches behind _himselfA and starts groping _hisA butt again. "If we sell them some super cuties, they'll really love us!" _heA giggles as _heA gives _himselfA a playful slap. - <<case "pregnant fairy">> - Since _heA has your attention now, _heA slowly spreads _hisA legs and flashes _hisA pussy once again. Seeing you watch with interest this time, a small smile creeps up on _hisA face. "If we sell them some of our prettier girls, they'll be sure to warm up to us." - <<case "hypergoddess">> - _HeA caresses _hisA pregnancy. "If we sell them some of our fertile slaves, I'm sure their burgeoning pregnancies will ease them into relying on us," _heA says confidently. "Or at least it will result in more slaves later on." - <<case "loli">> - _HeA claps excitedly. "If we sell them new friends, then they'll hear from them about how great the Free Cities are and want to become our friends too!" _heA says hopefully, eager to meet all the newcomers to the arcology. - <<case "preggololi">> - _HeA claps excitedly. "I don't know what they think of lolis, but selling them a few cute little slave girls will surely warm them up to us," _heA says, patting _hisA belly. "Plus, I'm sure they'll love how tight they are and how much energy they have once you break them in!" - <<case "angel">> - _HeA wrings a wing nervously. "If we send them nice girls, we'd be doing a disservice to them by sending them away. But if we don't, how can we be certain that the girls they have will be well cared for? We definitely need to teach them our ways," _heA concludes. - <<case "cherub">> - _HeA lands and ponders deeply. "We have to show them the right way before they get mislead. Some of our finest girls should help convert them to our ways!" - <<case "incubus">> - _HeA strokes _hisA cock meaningfully. "Oh, and they could even develop into a regular market if they're sold distinctive, sexy girls. We should totally get them addicted to rape." _HeA makes several thrusting motions. - <<case "succubus">> - _HeA fingers _hisA pussy meaningfully. "Oh, and they could even develop into a regular market if they're sold distinctive, sexy girls. Plus that means more money for you, and less competition for me." _HeA winks. - <<case "imp">> - _HeA punches _hisA fist into _hisA palm. "We should sell them sexy, but unbroken, girls. That way they can learn to love breaking slaves into proper sex toys!" _HeA shivers with orgasm at the thought. - <<case "witch">> - _HeA runs _hisA hat through _hisA hands. "If we sell them skilled girls, they'll grow closer to us. But we have to be careful not to send them klutzes like me; not everyone finds that adorable." _HeA takes the time to mend the rip _heA accidentally tore in _hisA hat's brim. - <<case "ERROR_1606_APPEARANCE_FILE_CORRUPT">> - _HeA ponders deeply. "We could sell them the most loyal girls we have. They'll naturally lead them back to us. And then they are ours to do as we please," _heA says smiling deviously. - <<default>> - _HisA symbol takes on a rapid succession of pulsating lewd shapes, signifying some of the arcology's better varieties of sex slaves. "If they're sold good product, they may become a reliable market," _heA asserts. - <</switch>> -<<else>> - your personal assistant appears to offer a suggestion. "I have collated data on the use of unofficial sex slaves by General $peacekeepers.generalName's forces," _heA reports. "Despite the high state of readiness of his forces, the use of comfort women seems to have become widespread. Characteristically, the general has responded to this by accepting the new status quo, and is setting up recreation centers to ensure that the practice does not become disruptive. One of his officers has been tasked with obtaining appropriate sex slaves, but does not have sufficient resources to pay Free Cities prices. @@.yellow;The purchasing officer may appear as a slave buyer through the standard slave sale interface.@@ It may be possible to influence them by selling them high-quality slaves." -<</if>> \ No newline at end of file diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersIntro.js b/src/events/nonRandom/peacekeepers/pPeacekeepersIntro.js new file mode 100644 index 0000000000000000000000000000000000000000..b68eb8dc5bd09bfa6dbe4bfb0f8f38a1d0ed4ef7 --- /dev/null +++ b/src/events/nonRandom/peacekeepers/pPeacekeepersIntro.js @@ -0,0 +1,95 @@ +App.Events.PPeacekeepersIntro = class PPeacekeepersIntro extends App.Events.BaseEvent { + eventPrerequisites() { + return [ + () => V.invasionVictory > 0, + () => V.peacekeepers === 0, + () => V.peacekeepersGone !== 1, + () => App.Events.effectiveWeek() > 48, + ]; + } + + execute(node) { + let r = []; + + V.nextButton = "Continue"; + V.nextLink = "Random Nonindividual Event"; + + V.peacekeepers = { + generalName: App.Data.whiteAmericanSlaveSurnames.random(), strength: 20, attitude: 0, independent: 0, undermining: 0, influenceAnnounced: 0, tastes: 0 + }; + if (V.continent === "Africa" || V.continent === "Western Europe") { + V.peacekeepers.generalName = App.Data.frenchSlaveSurnames.random(); + } else if (V.continent === "Asia" || V.continent === "Australia") { + V.peacekeepers.generalName = App.Data.chineseSlaveSurnames.random(); + } else if (V.continent === "Central Europe" || V.continent === "Scandinavia") { + V.peacekeepers.generalName = App.Data.germanSlaveSurnames.random(); + } else if (V.continent === "Eastern Europe") { + V.peacekeepers.generalName = App.Data.russianSlaveSurnames.random(); + } else if (V.continent === "Southern Europe") { + V.peacekeepers.generalName = App.Data.italianSlaveSurnames.random(); + } else if (V.continent === "Brazil") { + V.peacekeepers.generalName = App.Data.brazilianSlaveSurnames.random(); + } else if (V.continent === "Japan") { + V.peacekeepers.generalName = App.Data.japaneseSlaveSurnames.random(); + } + + r.push(`The aftermath of the attack on the Free City by forces from the neighboring failed state grows grimmer by the day. Not that the situation isn't without its good points, from your perspective. For one thing, the supply of helpless refugees has never been better. The Free City's victory over the invaders was`); + if (V.invasionVictory > 2) { + r.push(`almost completely one-sided. The fighting bore some resemblance to Victorian soldiers of empire machine-gunning native warriors armed with spears. Everyone with any appetite for an attack on the Free City in that area is already quite dead.`); + V.peacekeepers.attitude += 5; + } else { + r.push(`hard-fought, but the attackers did most of the dying. Modern weapons are powerful, especially on the defensive, and there's no appetite in that area to repeat the experiment.`); + } + r.push(`There are still enough weapons and desperate people there to keep banditry and warlordism going more or less indefinitely, though.`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`Having the area revert to a Hobbesian wilderness might not be too annoying for you and your peers in the Free City, but to an old world country, it's not a good thing to have next door. And there are still old world countries with the ability and the will to project power. After a spate of bad incidents, rumors have started that the strongest remaining old world nation in this part of the world will be sending a peacekeeping force to stabilize the area. This is a cynical time and the rumors stay just that, rumors, until one day ${V.assistant.name} announces that you're receiving an unscheduled call from a general officer. General ${V.peacekeepers.generalName}, in point of fact. One of the most dynamic military leaders the old world has.`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`"In a few hours," says the general, "my country is going to announce the deployment of a peacekeeping force to the lawless area next to your Free City." It should sound like a threat, but it doesn't. The general's body language is erect and military, but not intimidating. He continues, "I want to be clear. We intend to stabilize the region. We have no ill intentions toward your Free City, and I see no reason why our interests should ever come into conflict." Despite the direct delivery, he isn't reading from a script that you can see.`); + if (V.PC.skill.warfare >= 100 && V.invasionVictory > 2) { + r.push(`"As one warrior to another, that was damn fine work you did defending your city. It's good to see tough people doing well in the Free Cities."`); + V.peacekeepers.attitude += 5; + } else { + r.push(`"I congratulate you on your part in the recent victory. I'm contacting you because you get results. You seem like someone I might be able to work with."`); + } + r.push(`He spreads his hands. "I don't have anything to suggest, not yet. But if I see an opportunity for a mutually beneficial arrangement, I wouldn't want to be approaching you for the first time to discuss it."`); + + App.Events.addParagraph(node, r); + r = []; + + r.push(`As he spoke, you and ${V.assistant.name} surreptitiously checked out what he said. He seems to be telling the truth, and he's correct that your interests won't be immediately affected. Nevertheless, this is a concerning development. General ${V.peacekeepers.generalName} will have thousands of troops and a lot of military hardware under his able command, more or less right next door to the Free City. He might not intend to overstep the bounds of his peacekeeping mandate, but that's no guarantee that his civilian superiors back home won't decide to order him to. Worse, the politics of the Free Cities are almost unanimously hostile to old world power; there will be public resentment about this. On the other hand, General ${V.peacekeepers.generalName} has been successful in these difficult times in no small part due to his willingness to bend the rules. If he sees an opportunity to work with an ambitious arcology owner in furtherance of his goals, he'll probably take it.`); + + App.Events.addParagraph(node, r); + r = []; + + App.Events.addResponses(node, [ + new App.Events.Result(`Tell him you disapprove of old world meddling in the Free City's sphere of influence`, disapprove), + new App.Events.Result(`Respond politely, but avoid committing yourself`, noncommital), + new App.Events.Result(`Share intelligence on that area as a basis for further cooperation`, agree) + ]); + + function disapprove() { + const frag = new DocumentFragment(); + let r = []; + r.push(`You tell him that you consider that area within the Free City's area of influence now, and that you disapprove of old world meddling. "Interesting," he says, noncommittal. "It takes real power projection to maintain a real sphere of influence. It remains to be seen whether your Free City has it. In the meantime, we'll pursue our mission." He inclines his head respectfully, and ends the call. Word of your brusque defense of the Free City's growing influence gets around, <span class="reputation inc">greatly improving your reputation.</span>`); + V.peacekeepers.attitude -= 10; + repX(5000, "event"); + App.Events.addParagraph(frag, r); + return frag; + } + + function noncommital() { + return `You respond politely, stating that you're always willing to listen to business proposals, and that you approach each situation without preconceptions. General ${V.peacekeepers.generalName} understands the unspoken subtext, and that you're not willing to commit yourself to anything definite as yet. He understands, and matches your show of respect before ending the call.`; + } + + function agree() { + V.peacekeepers.attitude += 5; + return `You immediately forward him your intelligence dossier on that area, all but the most sensitive items. His eyes widen fractionally as he sees the data coming over the link. Before he can thank you, you offer him good wishes for the success of his mission, and communicate a willingness to work together in the future to advance the stability and prosperity of the whole region. He recovers his equipoise and expresses gratitude, though without committing himself too thoroughly.`; + } + } +}; diff --git a/src/events/nonRandom/peacekeepers/pPeacekeepersIntro.tw b/src/events/nonRandom/peacekeepers/pPeacekeepersIntro.tw deleted file mode 100644 index 5dccd008e9ef6bbaf2f56821fc0c1dedd53f61dc..0000000000000000000000000000000000000000 --- a/src/events/nonRandom/peacekeepers/pPeacekeepersIntro.tw +++ /dev/null @@ -1,70 +0,0 @@ -:: P peacekeepers intro [nobr] - -<<set $nextButton = "Continue", $nextLink = "Random Nonindividual Event">> - -<<set $peacekeepers = {generalName: setup.whiteAmericanSlaveSurnames.random(), strength: 20, attitude: 0, independent: 0, undermining: 0, influenceAnnounced: 0, tastes: 0}>> -<<if $continent == "Africa" || $continent == "Western Europe">> - <<set $peacekeepers.generalName = setup.frenchSlaveSurnames.random()>> -<<elseif $continent == "Asia" || $continent == "Australia">> - <<set $peacekeepers.generalName = setup.chineseSlaveSurnames.random()>> -<<elseif $continent == "Central Europe" || $continent == "Scandinavia">> - <<set $peacekeepers.generalName = setup.germanSlaveSurnames.random()>> -<<elseif $continent == "Eastern Europe">> - <<set $peacekeepers.generalName = setup.russianSlaveSurnames.random()>> -<<elseif $continent == "Southern Europe">> - <<set $peacekeepers.generalName = setup.italianSlaveSurnames.random()>> -<<elseif $continent == "Brazil">> - <<set $peacekeepers.generalName = setup.brazilianSlaveSurnames.random()>> -<<elseif $continent == "Japan">> - <<set $peacekeepers.generalName = setup.japaneseSlaveSurnames.random()>> -<</if>> - -The aftermath of the attack on the Free City by forces from the neighboring failed state grows grimmer by the day. Not that the situation isn't without its good points, from your perspective. For one thing, the supply of helpless refugees has never been better. The Free City's victory over the invaders was -<<if $invasionVictory > 2>> - almost completely one-sided. The fighting bore some resemblance to Victorian soldiers of empire machine-gunning native warriors armed with spears. Everyone with any appetite for an attack on the Free City in that area is already quite dead. - <<set $peacekeepers.attitude += 5>> -<<else>> - hard-fought, but the attackers did most of the dying. Modern weapons are powerful, especially on the defensive, and there's no appetite in that area to repeat the experiment. -<</if>> -There are still enough weapons and desperate people there to keep banditry and warlordism going more or less indefinitely, though. - -<br><br> - -Having the area revert to a Hobbesian wilderness might not be too annoying for you and your peers in the Free City, but to an old world country, it's not a good thing to have next door. And there are still old world countries with the ability and the will to project power. After a spate of bad incidents, rumors have started that the strongest remaining old world nation in this part of the world will be sending a peacekeeping force to stabilize the area. This is a cynical time and the rumors stay just that, rumors, until one day $assistant.name announces that you're receiving an unscheduled call from a general officer. General $peacekeepers.generalName, in point of fact. One of the most dynamic military leaders the old world has. - -<br><br> - -"In a few hours," says the general, "my country is going to announce the deployment of a peacekeeping force to the lawless area next to your Free City." It should sound like a threat, but it doesn't. The general's body language is erect and military, but not intimidating. He continues, "I want to be clear. We intend to stabilize the region. We have no ill intentions toward your Free City, and I see no reason why our interests should ever come into conflict." Despite the direct delivery, he isn't reading from a script that you can see. -<<if $PC.skill.warfare >= 100 && $invasionVictory > 2>> - "As one warrior to another, that was damn fine work you did defending your city. It's good to see tough people doing well in the Free Cities." - <<set $peacekeepers.attitude += 5>> -<<else>> - "I congratulate you on your part in the recent victory. I'm contacting you because you get results. You seem like someone I might be able to work with." -<</if>> -He spreads his hands. "I don't have anything to suggest, not yet. But if I see an opportunity for a mutually beneficial arrangement, I wouldn't want to be approaching you for the first time to discuss it." - -<br><br> - -As he spoke, you and $assistant.name surreptitiously checked out what he said. He seems to be telling the truth, and he's correct that your interests won't be immediately affected. Nevertheless, this is a concerning development. General $peacekeepers.generalName will have thousands of troops and a lot of military hardware under his able command, more or less right next door to the Free City. He might not intend to overstep the bounds of his peacekeeping mandate, but that's no guarantee that his civilian superiors back home won't decide to order him to. Worse, the politics of the Free Cities are almost unanimously hostile to old world power; there will be public resentment about this. On the other hand, General $peacekeepers.generalName has been successful in these difficult times in no small part due to his willingness to bend the rules. If he sees an opportunity to work with an ambitious arcology owner in furtherance of his goals, he'll probably take it. - -<br><br> -<span id="result"> -<<link "Tell him you disapprove of old world meddling in the Free City's sphere of influence">> - <<replace "#result">> - You tell him that you consider that area within the Free City's area of influence now, and that you disapprove of old world meddling. "Interesting," he says, noncommittal. "It takes real power projection to maintain a real sphere of influence. It remains to be seen whether your Free City has it. In the meantime, we'll pursue our mission." He inclines his head respectfully, and ends the call. Word of your brusque defense of the Free City's growing influence gets around, @@.green;greatly improving your reputation.@@ - <<set $peacekeepers.attitude -= 10>> - <<run repX(5000, "event")>> - <</replace>> -<</link>> -<br><<link "Respond politely, but avoid committing yourself">> - <<replace "#result">> - You respond politely, stating that you're always willing to listen to business proposals, and that you approach each situation without preconceptions. General $peacekeepers.generalName understands the unspoken subtext, and that you're not willing to commit yourself to anything definite as yet. He understands, and matches your show of respect before ending the call. - <</replace>> -<</link>> -<br><<link "Share intelligence on that area as a basis for further cooperation">> - <<replace "#result">> - You immediately forward him your intelligence dossier on that area, all but the most sensitive items. His eyes widen fractionally as he sees the data coming over the link. Before he can thank you, you offer him good wishes for the success of his mission, and communicate a willingness to work together in the future to advance the stability and prosperity of the whole region. He recovers his equipoise and expresses gratitude, though without committing himself too thoroughly. - <<set $peacekeepers.attitude += 5>> - <</replace>> -<</link>> -</span> \ No newline at end of file diff --git a/src/events/nonRandomEvent.js b/src/events/nonRandomEvent.js index 04e80345a676b913f0e14c2dfa3e2547501cbf98..3be2580f9a844f9e550b0554e85f4899c3d6f93d 100644 --- a/src/events/nonRandomEvent.js +++ b/src/events/nonRandomEvent.js @@ -107,6 +107,12 @@ App.Events.getNonrandomEvents = function() { new App.Events.PRaidResult(), new App.Events.PSlaveMedic(), new App.Events.PSnatchAndGrabResult(), + + // Peacekeepers + new App.Events.PPeacekeepersIndependence(), + new App.Events.PPeacekeepersInfluence(), + new App.Events.PPeacekeepersIntro(), + new App.Events.PPeacekeepersDeficit(), ]; }; @@ -259,8 +265,6 @@ globalThis.nonRandomEvent = function() { V.assholeKnight = 1; V.imperialEventWeek = effectiveWeek; setTimeout(() => Engine.play("SE assholeknight"), Engine.minDomActionDelay); - } else if (effectiveWeek === 54 && (V.peacekeepers) && V.peacekeepers.attitude >= 0) { - setTimeout(() => Engine.play("P peacekeepers deficit"), Engine.minDomActionDelay); } else if (V.SF.Toggle && V.SF.Active === -1 && effectiveWeek >= 72) { setTimeout(() => Engine.play("Security Force Proposal"), Engine.minDomActionDelay); } else if (V.arcologies[0].FSRestart !== "unset" && V.failedElite > 300 && V.eugenicsFullControl !== 1) { @@ -269,14 +273,8 @@ globalThis.nonRandomEvent = function() { setTimeout(() => Engine.play("P FS Announcement"), Engine.minDomActionDelay); } else if (effectiveWeek > 45 && V.bodyswapAnnounced === 0 && V.surgeryUpgrade === 1) { setTimeout(() => Engine.play("P Bodyswap Reveal"), Engine.minDomActionDelay); - } else if (effectiveWeek > 48 && V.invasionVictory > 0 && V.peacekeepers === 0 && V.peacekeepersGone !== 1) { - setTimeout(() => Engine.play("P peacekeepers intro"), Engine.minDomActionDelay); } else if (V.arcologies[0].prosperity > 80 && App.Utils.schoolCounter() === 0 && V.schoolSuggestion === 0) { setTimeout(() => Engine.play("P school suggestion"), Engine.minDomActionDelay); - } else if (effectiveWeek > 75 && (V.peacekeepers) && V.peacekeepers.strength < 50 && V.rivalOwner === 0 && V.peacekeepersFate !== 1) { - setTimeout(() => Engine.play("P peacekeepers independence"), Engine.minDomActionDelay); - } else if ((V.peacekeepers) && V.peacekeepers.strength >= 50 && V.peacekeepers.influenceAnnounced === 0) { - setTimeout(() => Engine.play("P peacekeepers influence"), Engine.minDomActionDelay); } else if (V.cash > 120000 && V.rep > 4000 && V.corp.Announced === 0) { setTimeout(() => Engine.play("P Corp Announcement"), Engine.minDomActionDelay); } else if (V.rivalOwner > 0) {