diff --git a/devTools/javaSanityCheck/ignoredVariables b/devTools/javaSanityCheck/ignoredVariables index 7caca87985afedde1020bf1dcad3761f587b6ce7..1aea7eacb2fe33802d0518eea12b5dc93112d39c 100644 --- a/devTools/javaSanityCheck/ignoredVariables +++ b/devTools/javaSanityCheck/ignoredVariables @@ -1,6 +1,4 @@ # Add hits, that are false positives and should therefore be ignored, here -atkMod -defMod tacChance #re-added below 11/14 ############################ diff --git a/js/003-data/policiesData.js b/js/003-data/policiesData.js index 1b4556aec6dc956fc57509354b44dcd42917982d..9be3fb38e0ddf2160fa66fe0d7496242097691c3 100644 --- a/js/003-data/policiesData.js +++ b/js/003-data/policiesData.js @@ -306,7 +306,7 @@ App.Data.Policies.Selection = { "policies.childProtectionAct": [ { title: "Child Protection Act", - text: `underage slaves enjoy protections only against penetrative sex`, + text: `underage slaves enjoy protections only against penetrative sex.`, activatedText: `underage slaves enjoy protections against molestation and rape.`, get requirements() { return (V.extremeUnderage === 1); }, get hide() { return (V.extremeUnderage === 1) ? {button: 0} : {button: 1}; } // CPA is complicated. It inits to "on". Make sure button is hidden if extreme underage is OFF. If a player enables extreme underage, then we can let them control it. @@ -1136,7 +1136,7 @@ App.Data.Policies.Selection = { text: "you will encourage veneration of slaves with both dicks and pussies.", activatedText: "you are encouraging Gender Radicalism towards veneration of slaves with both dicks and pussies.", enable: 1, - get requirements() { return (V.seeDicks !== 0); }, + get requirements() { return (V.seeDicks !== 0 && V.seeDicks !== 100); }, note: `Will affect citizens' appreciation of futas` }, { @@ -1154,7 +1154,6 @@ App.Data.Policies.Selection = { text: "you will encourage an appreciation for broad hips, plush asses, big buttholes, and skilled sphincters.", activatedText: "you are encouraging an appreciation for broad hips, plush asses, big buttholes, and skilled sphincters.", enable: 3, - get requirements() { return (V.seeDicks !== 0); }, note: `Will affect slaves' attractiveness to citizens` }, { @@ -1978,7 +1977,7 @@ App.Data.Policies.Selection = { titleClass: "lime", get text() { return `will force anyone not of the ${V.arcologies[0].FSSupremacistRace} race to emigrate or accept enslavement, and make sex with non-${V.arcologies[0].FSSupremacistRace} people such an expectation that the appetite for all such slaves will increase slightly.`; }, get activatedText() { return `by law, anyone not of the ${V.arcologies[0].FSSupremacistRace} race in your arcology is a slave`; }, - get requirements() { return (V.seeDicks !== 0 && V.arcologies[0].FSSupremacist >= 40); }, + get requirements() { return (V.arcologies[0].FSSupremacist >= 40); }, onImplementation: function() { V.FSSupLawTrigger = 1; checkPolicyGameover(); diff --git a/src/005-passages/eventsPassages.js b/src/005-passages/eventsPassages.js index 411794b7ab4d46acf481f7e134eca19003f3e1e8..90e8c03e059c6c3ae1e6acab2c31f3608daf28a1 100644 --- a/src/005-passages/eventsPassages.js +++ b/src/005-passages/eventsPassages.js @@ -6,6 +6,12 @@ new App.DomPassage("Nonrandom Event", } ); +new App.DomPassage("attackReport", + () => { + return App.Events.attackReport(); + } +); + /* ### Random Events ### */ new App.DomPassage("JS Random Event", diff --git a/src/005-passages/interactPassages.js b/src/005-passages/interactPassages.js index 8ef500cbbd59b11904362b5b88e29ba86db242e1..3a491f19f6fd48bf58aa8578f4be38cee452a989 100644 --- a/src/005-passages/interactPassages.js +++ b/src/005-passages/interactPassages.js @@ -117,3 +117,12 @@ new App.DomPassage( return el; }, ["jump-from-safe"] ); + +new App.DomPassage("MpregSelf", + () => { + V.nextButton = "Back"; + V.nextLink = "Main"; + + return MpregSelf(); + } +); diff --git a/src/Mods/SecExp/attackReport.tw b/src/Mods/SecExp/attackReport.tw deleted file mode 100644 index 740a8dc1298ebdb1545803581e0e1cd73b3a83aa..0000000000000000000000000000000000000000 --- a/src/Mods/SecExp/attackReport.tw +++ /dev/null @@ -1,1514 +0,0 @@ -:: attackReport [nobr] - -<<set $nextButton = "Continue", $nextLink = "Scheduled Event", $encyclopedia = "Battles">> - -/*init*/ -<<set _oldRep = $rep>> -<<set _oldAuth = $SecExp.core.authority>> -<<set $SecExp.war.attacker.losses = Math.trunc($SecExp.war.attacker.losses)>> -<<if $SecExp.war.attacker.losses > $SecExp.war.attacker.troops>> - <<set $SecExp.war.attacker.losses = $SecExp.war.attacker.troops>> -<</if>> -<<set $SecExp.core.totalKills += $SecExp.war.attacker.losses>> -<<set $SecExp.war.losses = Math.trunc($SecExp.war.losses)>> -<<set _loot = 0>> - -/* result */ -<<if $majorBattle == 0>> - <<set _majorBattleMod = 1>> -<<else>> - <<set _majorBattleMod = 2>> - <<set $SecExp.battles.major++>> -<</if>> -<<if $SecExp.war.result == 3>> - <strong>Victory!</strong> - <<set $SecExp.battles.lossStreak = 0>> - <<set $SecExp.battles.victoryStreak += 1>> - <<set $SecExp.battles.victories++>> -<<elseif $SecExp.war.result == -3>> - <strong>Defeat!</strong> - <<set $SecExp.battles.lossStreak += 1>> - <<set $SecExp.battles.victoryStreak = 0>> - <<set $SecExp.battles.losses++>> -<<elseif $SecExp.war.result == 2>> - <strong>Partial victory!</strong> - <<set $SecExp.battles.victories++>> -<<elseif $SecExp.war.result == -2>> - <strong>Partial defeat!</strong> - <<set $SecExp.battles.losses++>> -<<elseif $SecExp.war.result == -1>> - <strong>We surrendered</strong> - <<set $SecExp.battles.losses++>> -<<elseif $SecExp.war.result == 0>> - <strong>Failed bribery!</strong> - <<set $SecExp.battles.losses++>> -<<elseif $SecExp.war.result == 1>> - <strong>Successful bribery!</strong> - <<set $SecExp.battles.victories++>> -<</if>> -<hr> - -<<if $SecExp.war.attacker.type == "raiders">> - Today, <<= asDateString($week, random(0,7))>>, our arcology was attacked by a band of wild raiders, <<print num(Math.trunc($SecExp.war.attacker.troops))>> men strong. - <<if $SecExp.war.result != 1 && $SecExp.war.result != 0 && $SecExp.war.result != -1>> - Our defense forces, <<print num(Math.trunc(App.SecExp.battle.troopCount()))>> strong, clashed with them - <<if $SecExp.war.terrain == "urban">> - in the streets of <<if $SecExp.war.terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, - <<elseif $SecExp.war.terrain == "rural">> - in the rural land surrounding the free city, - <<elseif $SecExp.war.terrain == "hills">> - on the hills around the free city, - <<elseif $SecExp.war.terrain == "coast">> - along the coast just outside the free city, - <<elseif $SecExp.war.terrain == "outskirts">> - just against the walls of the arcology, - <<elseif $SecExp.war.terrain == "mountains">> - in the mountains overlooking the arcology, - <<elseif $SecExp.war.terrain == "wasteland">> - in the wastelands outside the free city territory, - <</if>> - <<if $SecExp.war.attacker.losses != $SecExp.war.attacker.troops>> - inflicting <<print num(Math.trunc($SecExp.war.attacker.losses))>> casualties, while sustaining <<if $SecExp.war.losses > 1>><<print num(Math.trunc($SecExp.war.losses))>> casualties<<elseif $SecExp.war.losses > 0>>a casualty<<else>>zero<</if>> themselves. - <<else>> - completely annihilating their troops, while sustaining <<if $SecExp.war.losses > 1>><<print num(Math.trunc($SecExp.war.losses))>> casualties<<elseif $SecExp.war.losses > 0>>a casualty<<else>>zero casualties<</if>>. - <</if>> - <</if>> - <<if $SecExp.war.result == 3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men easily stopped the disorganized horde's futile attempt at raiding your arcology<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard, but in the end our men stopped the disorganized horde attempt at raiding your arcology<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but our men managed to stop the horde raiding party<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - adding another victory to the growing list of our military's successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - finally putting an end to a series of unfortunate defeats. - <</if>> - <<elseif $SecExp.war.result == -3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men were easily crushed by the barbaric horde of raiders<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard and in the end the bandits proved too much to handle for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but despite their bravery the horde proved too much for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - so interrupting a long series of military successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - confirming the long list of recent failures our armed forces collected. - <</if>> - <<elseif $SecExp.war.result == 2>> - The fight was long and hard, but in the end our men managed to repel the raiders, though not without difficulty. - <<elseif $SecExp.war.result == -2>> - The fight was long and hard. Our men in the end had to yield to the horde raiders, which was fortunately unable to capitalized on their victory. - <<elseif $SecExp.war.result == -1>> - You gave your troops the order to surrender, obediently they stand down. - <<elseif $SecExp.war.result == 0>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <<elseif $SecExp.war.result == 1>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <</if>> -<<elseif $SecExp.war.attacker.type == "free city">> - Today, <<= asDateString($week, random(0,7))>>, our arcology was attacked by a contingent of mercenaries hired by a competing free city, <<print num(Math.trunc($SecExp.war.attacker.troops))>> men strong. - <<if $SecExp.war.result != 1 && $SecExp.war.result != 0 && $SecExp.war.result != -1>> - Our defense forces, <<print num(Math.trunc(App.SecExp.battle.troopCount()))>> strong, clashed with them - <<if $SecExp.war.terrain == "urban">> - in the streets of <<if $SecExp.war.terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, - <<elseif $SecExp.war.terrain == "rural">> - in the rural land surrounding the free city, - <<elseif $SecExp.war.terrain == "hills">> - on the hills around the free city, - <<elseif $SecExp.war.terrain == "coast">> - along the coast just outside the free city, - <<elseif $SecExp.war.terrain == "outskirts">> - just against the walls of the arcology, - <<elseif $SecExp.war.terrain == "mountains">> - in the mountains overlooking the arcology, - <<elseif $SecExp.war.terrain == "wasteland">> - in the wastelands outside the free city territory, - <</if>> - <<if $SecExp.war.attacker.losses != $SecExp.war.attacker.troops>> - inflicting <<print $SecExp.war.attacker.losses>> casualties, while sustaining <<if $SecExp.war.losses > 1>> <<print num(Math.trunc($SecExp.war.losses))>> casualties <<elseif $SecExp.war.losses > 0>> a casualty <<else>> zero <</if>> themselves. - <<else>> - completely annihilating their troops, while sustaining <<if $SecExp.war.losses > 1>> <<print num(Math.trunc($SecExp.war.losses))>> casualties. <<elseif $SecExp.war.losses > 0>> a casualty.<<else>> zero casualties.<</if>> - <</if>> - <</if>> - <<if $SecExp.war.result == 3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men easily stopped the mercenaries dead in their tracks<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard, but in the end our men stopped the slavers attempt at weakening your arcology<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but our men managed to stop the free city mercenaries<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - adding another victory to the growing list of our military's successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - finally putting an end to a series of unfortunate defeats. - <</if>> - <<elseif $SecExp.war.result == -3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men were easily crushed by the consumed mercenary veterans sent against us<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard and in the end the slavers proved too much to handle for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but despite their bravery the mercenary slavers proved too much for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - so interrupting a long series of military successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - confirming the long list of recent failures our armed forces collected. - <</if>> - <<elseif $SecExp.war.result == 2>> - The fight was long and hard, but in the end our men managed to repel the mercenaries, though not without difficulty. - <<elseif $SecExp.war.result == -2>> - The fight was long and hard. Our men in the end had to yield to the slavers, which were fortunately unable to capitalized on their victory. - <<elseif $SecExp.war.result == -1>> - You gave your troops the order to surrender, obediently they stand down. - <<elseif $SecExp.war.result == 0>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <<elseif $SecExp.war.result == 1>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <</if>> -<<elseif $SecExp.war.attacker.type == "freedom fighters">> - Today, <<= asDateString($week, random(0,7))>>, our arcology was attacked by a group of freedom fighters bent on the destruction of the institution of slavery, <<print num(Math.trunc($SecExp.war.attacker.troops))>> men strong. - <<if $SecExp.war.result != 1 && $SecExp.war.result != 0 && $SecExp.war.result != -1>> - Our defense forces, <<print num(Math.trunc(App.SecExp.battle.troopCount()))>> strong, clashed with them - <<if $SecExp.war.terrain == "urban">> - in the streets of <<if $SecExp.war.terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, - <<elseif $SecExp.war.terrain == "rural">> - in the rural land surrounding the free city, - <<elseif $SecExp.war.terrain == "hills">> - on the hills around the free city, - <<elseif $SecExp.war.terrain == "coast">> - along the coast just outside the free city, - <<elseif $SecExp.war.terrain == "outskirts">> - just against the walls of the arcology, - <<elseif $SecExp.war.terrain == "mountains">> - in the mountains overlooking the arcology, - <<elseif $SecExp.war.terrain == "wasteland">> - in the wastelands outside the free city territory, - <</if>> - <<if $SecExp.war.attacker.losses != $SecExp.war.attacker.troops>> - inflicting <<print $SecExp.war.attacker.losses>> casualties, while sustaining <<if $SecExp.war.losses > 1>> <<print num(Math.trunc($SecExp.war.losses))>> casualties <<elseif $SecExp.war.losses > 0>> a casualty <<else>> zero <</if>> themselves. - <<else>> - completely annihilating their troops, while sustaining <<if $SecExp.war.losses > 1>> <<print num(Math.trunc($SecExp.war.losses))>> casualties. <<elseif $SecExp.war.losses > 0>> a casualty. <<else>> zero casualties.<</if>> - <</if>> - <</if>> - <<if $SecExp.war.result == 3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men easily stopped the freedom fighters dead in their tracks<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard, but in the end our men stopped the fighters attack<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but our men managed to stop the freedom fighters<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - adding another victory to the growing list of our military's successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - finally putting an end to a series of unfortunate defeats. - <</if>> - <<elseif $SecExp.war.result == -3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men were easily crushed by the fanatical fury of the freedom fighters<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard and in the end the freedom fighters proved too much to handle for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but despite their bravery the freedom fighters fury proved too much for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - so interrupting a long series of military successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - confirming the long list of recent failures our armed forces collected. - <</if>> - <<elseif $SecExp.war.result == 2>> - The fight was long and hard, but in the end our men managed to repel the freedom fighters, though not without difficulty. - <<elseif $SecExp.war.result == -2>> - The fight was long and hard. Our men in the end had to yield to the freedom fighters, which were fortunately unable to capitalized on their victory. - <<elseif $SecExp.war.result == -1>> - You gave your troops the order to surrender, obediently they stand down. - <<elseif $SecExp.war.result == 0>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <<elseif $SecExp.war.result == 1>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <</if>> -<<elseif $SecExp.war.attacker.type == "old world">> - Today, <<= asDateString($week, random(0,7))>>, our arcology was attacked by an old world nation boasting a misplaced sense of superiority, <<print num(Math.trunc($SecExp.war.attacker.troops))>> men strong. - <<if $SecExp.war.result != 1 && $SecExp.war.result != 0 && $SecExp.war.result != -1>> - Our defense forces, <<print num(Math.trunc(App.SecExp.battle.troopCount()))>> strong, clashed with them - <<if $SecExp.war.terrain == "urban">> - in the streets of <<if $SecExp.war.terrain == "urban">>the old world city surrounding the arcology<<else>>of the free city<</if>>, - <<elseif $SecExp.war.terrain == "rural">> - in the rural land surrounding the free city, - <<elseif $SecExp.war.terrain == "hills">> - on the hills around the free city, - <<elseif $SecExp.war.terrain == "coast">> - along the coast just outside the free city, - <<elseif $SecExp.war.terrain == "outskirts">> - just against the walls of the arcology, - <<elseif $SecExp.war.terrain == "mountains">> - in the mountains overlooking the arcology, - <<elseif $SecExp.war.terrain == "wasteland">> - in the wastelands outside the free city territory, - <</if>> - <<if $SecExp.war.attacker.losses != $SecExp.war.attacker.troops>> - inflicting <<print $SecExp.war.attacker.losses>> casualties, while sustaining <<if $SecExp.war.losses > 1>> <<print num(Math.trunc($SecExp.war.losses))>> casualties <<elseif $SecExp.war.losses > 0>> a casualty <<else>> zero <</if>> themselves. - <<else>> - completely annihilating their troops, while sustaining <<if $SecExp.war.losses > 1>> <<print num(Math.trunc($SecExp.war.losses))>> casualties. <<elseif $SecExp.war.losses > 0>> a casualty. <<else>> zero casualties.<</if>> - <</if>> - <</if>> - <<if $SecExp.war.result == 3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men easily stopped the old world soldiers dead in their tracks<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard, but in the end our men stopped the soldiers of the old world<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but our men managed to stop the old world soldiers<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - adding another victory to the growing list of our military's successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - finally putting an end to a series of unfortunate defeats. - <</if>> - <<elseif $SecExp.war.result == -3>> - <<if $SecExp.war.turns <= 5>> - The fight was quick and one sided, our men were easily crushed by the discipline of the old world armies<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<elseif $SecExp.war.turns <= 7>> - The fight was hard and in the end the old world proved too much to handle for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <<else>> - The fight was long and hard, but despite their bravery the determination of the old world troops proved too much for our men<<if $SecExp.battles.victoryStreak >= 2 || $SecExp.battles.lossStreak >= 2>>,<<else>>.<</if>> - <</if>> - <<if $SecExp.battles.victoryStreak >= 2>> - so interrupting a long series of military successes. - <<elseif $SecExp.battles.lossStreak >= 2>> - confirming the long list of recent failures our armed forces collected. - <</if>> - <<elseif $SecExp.war.result == 2>> - The fight was long and hard, but in the end our men managed to repel the old world soldiers, though not without difficulty. - <<elseif $SecExp.war.result == -2>> - The fight was long and hard. Our men in the end had to yield to the old world soldiers, which were fortunately unable to capitalized on their victory. - <<elseif $SecExp.war.result == -1>> - You gave your troops the order to surrender, obediently they stand down. - <<elseif $SecExp.war.result == 0>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <<elseif $SecExp.war.result == 1>> - You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls. - <</if>> -<</if>> -<br><br> -/* calculates effects on the city */ -<<if $SecExp.war.result == 3>> - Thanks to your victory, your @@.green;reputation@@ and @@.darkviolet;authority@@ increased. You were also able to capture - <<if $SecExp.war.attacker.type == "raiders">> - <<run repX(4000 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 800 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "free city">> - <<run repX(6000 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 1200 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - <<run repX(7500 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 1500 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "old world">> - <<run repX(6000 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 1200 * _majorBattleMod>> - <</if>> - <<if $SecExp.war.attacker.troops - $SecExp.war.attacker.losses <= 50>> - a small amount of attackers, - <<set _captives = ($SecExp.war.attacker.troops - $SecExp.war.attacker.losses) * 0.1 * random(1,3)>> - <<elseif $SecExp.war.attacker.troops - $SecExp.war.attacker.losses <= 100>> - an healthy group of attackers, - <<set _captives = ($SecExp.war.attacker.troops - $SecExp.war.attacker.losses) * 0.1 * random(1,3)>> - <<elseif $SecExp.war.attacker.troops - $SecExp.war.attacker.losses <= 150>> - a big group of attackers, - <<set _captives = ($SecExp.war.attacker.troops - $SecExp.war.attacker.losses) * 0.1 * random(1,3)>> - <<elseif $SecExp.war.attacker.troops - $SecExp.war.attacker.losses <= 200>> - a huge group of attackers, - <<set _captives = ($SecExp.war.attacker.troops - $SecExp.war.attacker.losses) * 0.1 * random(1,3)>> - <<elseif $SecExp.war.attacker.troops - $SecExp.war.attacker.losses > 200>> - a great amount of attackers, - <<set _captives = ($SecExp.war.attacker.troops - $SecExp.war.attacker.losses) * 0.1 * random(1,3)>> - <</if>> - and some of their equipment, which once sold produced - <<if $SecExp.war.attacker.equip == 0>> - @@.yellowgreen;a small amount of cash.@@ - <<set _loot += 1000 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 1>> - @@.yellowgreen;a moderate amount of cash.@@ - <<set _loot += 5000 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 2>> - @@.yellowgreen;a good amount of cash.@@ - <<set _loot += 10000 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 3>> - @@.yellowgreen;a great amount of cash.@@ - <<set _loot += 15000 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 4>> - @@.yellowgreen;wealth worthy of the mightiest warlord.@@ - <<set _loot += 20000 * _majorBattleMod>> - <</if>> - <<if $SecExp.edicts.defense.privilege.mercSoldier == 1 && App.SecExp.battle.deployedUnits('mercs') >= 1>> - Part of the loot is distributed to your mercenaries. - <<set _captives = Math.trunc(_captives * 0.6)>> - <<set _loot = Math.trunc(_loot * 0.6)>> - <</if>> - <<run cashX(_loot, "war")>> - <br> - Damage to the infrastructure was @@.yellow;virtually non-existent,@@ costing only pocket cash to bring the structure back to normal. The inhabitants as well reported little to no injuries, because of this the prosperity of the arcology did not suffer. - <<= IncreasePCSkills('engineering', 0.1)>> - <<run cashX(forceNeg(1000 * _majorBattleMod), "war")>> - <<if $SecExp.battles.victoryStreak >= 3>> - It seems your victories over the constant threats directed your way is having @@.green;a positive effect on the prosperity of the arcology,@@ due to the security your leadership affords. - <<set $arcologies[0].prosperity += 5 * _majorBattleMod>> - <</if>> -<<elseif $SecExp.war.result == -3>> - Due to your defeat, your @@.red;reputation@@ and @@.red;authority@@ decreased. Obviously your troops were not able to capture anyone or anything. - <<if $SecExp.war.attacker.type == "raiders">> - <<run repX(forceNeg(400 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 400 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "free city">> - <<run repX(forceNeg(600 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 600 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - <<run repX(forceNeg(750 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 750 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "old world">> - <<run repX(forceNeg(600 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 600 * _majorBattleMod>> - <</if>> - <br> - In the raiding following the battle @@.red;the arcology sustained heavy damage,@@ which will cost quite the amount of cash to fix. Reports of @@.red;citizens or slaves killed or missing@@ flood your office for a few days following the defeat. - <<= IncreasePCSkills('engineering', 0.1)>> - <<run cashX(forceNeg(5000 * _majorBattleMod), "war")>> - <<if $week <= 30>> - <<set $lowerClass -= random(100) * _majorBattleMod>> - <<set _lostSlaves = random(150) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(5) * _majorBattleMod>> - <<elseif $week <= 60>> - <<set $lowerClass -= random(120) * _majorBattleMod>> - <<set _lostSlaves = random(170) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(10) * _majorBattleMod>> - <<elseif $week <= 90>> - <<set $lowerClass -= random(140) * _majorBattleMod>> - <<set _lostSlaves = random(190) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(15) * _majorBattleMod>> - <<elseif $week <= 120>> - <<set $lowerClass -= random(160) * _majorBattleMod>> - <<set _lostSlaves = random(210) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(20) * _majorBattleMod>> - <<else>> - <<set $lowerClass -= random(180) * _majorBattleMod>> - <<set _lostSlaves = random(230) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(25) * _majorBattleMod>> - <</if>> - <<if $SecExp.battles.lossStreak >= 3>> - This only confirms the fears of many, @@.red;your arcology is not safe@@ and it is clear their business will be better somewhere else. - <<set $arcologies[0].prosperity -= 5 * _majorBattleMod>> - <</if>> -<<elseif $SecExp.war.result == 2>> - Thanks to your victory, your @@.green;reputation@@ and @@.darkviolet;authority@@ slightly increased. Our men were not able to capture any combatants, however some equipment was seized during the enemy's hasty retreat, - <<if $SecExp.war.attacker.type == "raiders">> - <<run repX(1000 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 200 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "free city">> - <<run repX(1500 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 300 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - <<run repX(2000 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 450 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "old world">> - <<run repX(1500 * _majorBattleMod, "war")>> - <<set $SecExp.core.authority += 300 * _majorBattleMod>> - <</if>> - which once sold produced - <<if $SecExp.war.attacker.equip == 0>> - @@.yellowgreen;a bit of cash.@@ - <<set _loot += 500 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 1>> - @@.yellowgreen;a small amount of cash.@@ - <<set _loot += 2500 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 2>> - @@.yellowgreen;a moderate amount of cash.@@ - <<set _loot += 5000 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 3>> - @@.yellowgreen;a good amount of cash.@@ - <<set _loot += 7500 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.equip == 4>> - @@.yellowgreen;a great amount of cash.@@ - <<set _loot += 10000 * _majorBattleMod>> - <</if>> - <<if $SecExp.edicts.defense.privilege.mercSoldier == 1 && App.SecExp.battle.deployedUnits('mercs') >= 1>> - Part of the loot is distributed to your mercenaries. - <<set _loot = Math.trunc(_loot * 0.6)>> - <</if>> - <<run cashX(_loot, "war")>> - <br> - Damage to the city was @@.red;limited,@@ it won't take much to rebuild. Very few citizens or slaves were involved in the fight and even fewer met their end, safeguarding the prosperity of the arcology. - <<= IncreasePCSkills('engineering', 0.1)>> - <<run cashX(forceNeg(2000 * _majorBattleMod), "war")>> - <<set $lowerClass -= random(10) * _majorBattleMod>> - <<set _lostSlaves = random(20) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> -<<elseif $SecExp.war.result == -2>> - It was a close defeat, but nonetheless your @@.red;reputation@@ and @@.red;authority@@ slightly decreased. Your troops were not able to capture anyone or anything. - <<if $SecExp.war.attacker.type == "raiders">> - <<run repX(forceNeg(40 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 40 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "free city">> - <<run repX(forceNeg(60 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 60 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - <<run repX(forceNeg(75 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 75 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "old world">> - <<run repX(forceNeg(60 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 60 * _majorBattleMod>> - <</if>> - <br> - The enemy did not have the strength to raid the arcology for long, still @@.red;the arcology sustained some damage,@@ which will cost a moderate amount of cash to fix. Some citizens and slaves found themselves on the wrong end of a gun and met their demise. - Some business sustained heavy damage, slightly impacting the arcology's prosperity. - <<= IncreasePCSkills('engineering', 0.1)>> - <<run cashX(forceNeg(3000 * _majorBattleMod), "war")>> - <<if $week <= 30>> - <<set $lowerClass -= random(50) * _majorBattleMod>> - <<set _lostSlaves = random(75) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(2) * _majorBattleMod>> - <<elseif $week <= 60>> - <<set $lowerClass -= random(60) * _majorBattleMod>> - <<set _lostSlaves = random(85) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(5) * _majorBattleMod>> - <<elseif $week <= 90>> - <<set $lowerClass -= random(70) * _majorBattleMod>> - <<set _lostSlaves = random(95) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(7) * _majorBattleMod>> - <<elseif $week <= 120>> - <<set $lowerClass -= random(80) * _majorBattleMod>> - <<set _lostSlaves = random(105) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(10) * _majorBattleMod>> - <<else>> - <<set $lowerClass -= random(90) * _majorBattleMod>> - <<set _lostSlaves = random(115) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(12) * _majorBattleMod>> - <</if>> -<<elseif $SecExp.war.result == -1>> - Rather than waste the lives of your men you decided to surrender, hoping your enemy will cause less damage if you indulge them, this is however a big hit to your status. Your @@.red;reputation@@ and @@.red;authority@@ are significantly impacted. - <<if $SecExp.war.attacker.type == "raiders">> - <<run repX(forceNeg(600 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 600 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "free city">> - <<run repX(forceNeg(800 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 800 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - <<run repX(forceNeg(1000 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 1000 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "old world">> - <<run repX(forceNeg(800 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 800 * _majorBattleMod>> - <</if>> - <br> - The surrender allows the arcology to survive @@.red;mostly intact,@@ however reports of @@.red;mass looting and killing of citizens@@ flood your office for a few days. - <<= IncreasePCSkills('engineering', 0.1)>> - <<run cashX(forceNeg(1000 * _majorBattleMod), "war")>> - <<if $week <= 30>> - <<set $lowerClass -= random(80) * _majorBattleMod>> - <<set _lostSlaves = random(120) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(5) * _majorBattleMod>> - <<elseif $week <= 60>> - <<set $lowerClass -= random(100) * _majorBattleMod>> - <<set _lostSlaves = random(140) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(10) * _majorBattleMod>> - <<elseif $week <= 90>> - <<set $lowerClass -= random(120) * _majorBattleMod>> - <<set _lostSlaves = random(160) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(15) * _majorBattleMod>> - <<elseif $week <= 120>> - <<set $lowerClass -= random(140) * _majorBattleMod>> - <<set _lostSlaves = random(180) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(20) * _majorBattleMod>> - <<else>> - <<set $lowerClass -= random(160) * _majorBattleMod>> - <<set _lostSlaves = random(200) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(25) * _majorBattleMod>> - <</if>> -<<elseif $SecExp.war.result == 0>> - Unfortunately your adversary did not accept your money. <<if $SecExp.war.attacker.type == "freedom fighters">> Their ideological crusade would not allow such thing<<else>>They saw your attempt as nothing more than admission of weakness<</if>>. There was no time to organize a defense and so the enemy walked into the arcology as it was his. - Your reputation and authority suffer a hit. - <<if $SecExp.war.attacker.type == "raiders">> - <<run repX(forceNeg(400 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 400 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "free city">> - <<run repX(forceNeg(600 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 600 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - <<run repX(forceNeg(750 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 750 * _majorBattleMod>> - <<elseif $SecExp.war.attacker.type == "old world">> - <<run repX(forceNeg(600 * _majorBattleMod), "war")>> - <<set $SecExp.core.authority -= 600 * _majorBattleMod>> - <</if>> - <br> - Fortunately the arcology survives @@.yellow;mostly intact,@@ however reports of @@.red;mass looting and killing of citizens@@ flood your office for a few days. - <<= IncreasePCSkills('engineering', 0.1)>> - <<run cashX(-1000, "war")>> - <<if $week <= 30>> - <<set $lowerClass -= random(80) * _majorBattleMod>> - <<set _lostSlaves = random(120) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(5) * _majorBattleMod>> - <<elseif $week <= 60>> - <<set $lowerClass -= random(100) * _majorBattleMod>> - <<set _lostSlaves = random(140) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(10) * _majorBattleMod>> - <<elseif $week <= 90>> - <<set $lowerClass -= random(120) * _majorBattleMod>> - <<set _lostSlaves = random(160) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(15) * _majorBattleMod>> - <<elseif $week <= 120>> - <<set $lowerClass -= random(140) * _majorBattleMod>> - <<set _lostSlaves = random(180) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(20) * _majorBattleMod>> - <<else>> - <<set $lowerClass -= random(160) * _majorBattleMod>> - <<set _lostSlaves = random(200) * _majorBattleMod, - $NPCSlaves -= Math.trunc(($NPCSlaves / $ASlaves) * _lostSlaves), - $menials -= Math.trunc(($menials / $ASlaves) * _lostSlaves), - $fuckdolls -= Math.trunc(($fuckdolls / $ASlaves) * _lostSlaves), - $menialBioreactors -= Math.trunc(($menialBioreactors / $ASlaves) * _lostSlaves)>> - <<set $arcologies[0].prosperity -= random(25) * _majorBattleMod>> - <</if>> - <br> -<<elseif $SecExp.war.result == 1>> - The attackers wisely take the money offered them to leave your territory without further issues. The strength of the Free Cities was never in their guns but in their dollars, and today's events are the perfect demonstration of such strength. - Your @@.green;reputation slightly increases.@@ - <<if $SecExp.war.attacker.type == "raiders">> - <<run repX(500 * _majorBattleMod, "war")>> - <<elseif $SecExp.war.attacker.type == "free city">> - <<run repX(750 * _majorBattleMod, "war")>> - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - <<run repX(1000 * _majorBattleMod, "war")>> - <<elseif $SecExp.war.attacker.type == "old world">> - <<run repX(750 * _majorBattleMod, "war")>> - <</if>> - <<run cashX(forceNeg(App.SecExp.battle.bribeCost()), "war")>> -<</if>> -<<if !Number.isInteger($lowerClass)>> - <<if isNaN($lowerClass)>> - <br>@@.red;Error: lowerClass is NaN, please report this issue@@ - <<elseif $lowerClass > 0>> - <<set $lowerClass = Math.trunc($lowerClass)>> - <<else>> - <<set $lowerClass = 0>> - <</if>> -<</if>> -<<if !Number.isInteger($NPCSlaves)>> - <<if isNaN($NPCSlaves)>> - <br>@@.red;Error: NPCSlaves is NaN, please report this issue@@ - <<elseif $NPCSlaves > 0>> - <<set $NPCSlaves = Math.trunc($NPCSlaves)>> - <<else>> - <<set $NPCSlaves = 0>> - <</if>> -<</if>> - -<br><br> -<<if $SecExp.war.result != 1 && $SecExp.war.result != 0 && $SecExp.war.result != -1>> - - /* leaders */ - <<if $SecExp.war.commander == "PC">> - <<setPlayerPronouns>> - You decided to personally lead the defense of your arcology. - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - <<if _oldRep <= 2500>> - <<if _oldRep > 1000>> - You're not particularly popular between the inhabitants of your arcology, so your presence does little to reassure the volunteers. - <<else>> - As your low reputation proves, your volunteers do not particularly enjoy your company. As far as they are concerned your presence is more of a hindrance than an advantage. - <</if>> - <<if $PC.career == "celebrity">> - Still, your past celebrity does carry some weight, and many look forward to fight alongside a famous name. - <<elseif $PC.career == "capitalist">> - Still, your past life as a famous venture capitalist does carry some weight, and many trust in your cunning to save them in the incoming battle. - <<elseif $PC.career == "gang">> - The situation is not made easier by your past. Many still remember you as the gang leader who used to be on the other side of their guns. - <<elseif $PC.career == "escort">> - The situation is not made easier by your past. Many still remember your past career as an escort and doubt you'll be of any use during the fighting. - <<elseif $PC.career == "mercenary">> - Still, your past mercenary work does carry some weight, and many look forward to fight alongside a battle hardened name. - <</if>> - <<elseif _oldRep >= 5000>> - <<if _oldRep < 15000>> - Your citizens are honored that their arcology owner is willing to put _hisP life in danger. - <<else>> - Many among the volunteers are awed by your presence; never would they have thought they would fight shoulder to shoulder with their famous arcology owner. - <</if>> - <<if $PC.career == "celebrity">> - They consider it a priceless opportunity to fight together with someone with such a renowned past as yours. Your celebrity past still carries weight. - <<elseif $PC.career == "capitalist">> - They consider it a priceless opportunity to fight together with one of the great capitalist sharks of their time. Such a fine mind on their side can only bring victory! - <<elseif $PC.career == "gang">> - Your past, however, does not help you. Many still remember you as the gang leader who used to be on the other side of their guns. - <<elseif $PC.career == "escort">> - Your past, however, does not help you. Many still remember your past career as an escort and doubt you'll be of any use during the fighting. - <<elseif $PC.career == "mercenary">> - Your past mercenary work does carries some weight, and many look forward to fight alongside a battle hardened name. - <</if>> - <</if>> - <</if>> - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - <<if _oldAuth <= 2500>> - <<if _oldAuth > 1000>> - Your slave soldiers do not feel bound to you as much as they should, as your authority is far from absolute. - <<else>> - Your slave soldiers are often openly rebellious. Only the threat of execution holds them in line. - <</if>> - <<if $PC.career == "escort">> - Fortunately many feel some level of kinship with you, thanks to your past as an escort. - <<elseif $PC.career == "servant">> - Fortunately many feel some level of kinship with you, thanks to your past as a servant. - <<elseif $PC.career == "slaver">> - Things are made worse by your past as a notorious slaver. - <<elseif $PC.career == "mercenary">> - Your past mercenary work carries some weight, and many look forward to fighting alongside a battle hardened name. - <</if>> - <<elseif _oldAuth >= 5000>> - <<if _oldAuth < 15000>> - Your slave soldiers show a surprising amount of discipline, thanks to your high authority. - <<else>> - Your slave soldiers show almost a fanatical level of martial discipline. Your absolute authority has a great effect on them. - <</if>> - <<if $PC.career == "escort">> - Many have an instinctual feeling of kinship towards you because of your past as an escort. - <<elseif $PC.career == "servant">> - Many have an instinctual feeling of kinship towards you because of your past as a servant. - <<elseif $PC.career == "slaver">> - Still, some rebellious looks can be spotted once in a while. In their eyes your slaver past will always paint you in a dark light. - <<elseif $PC.career == "mercenary">> - Your past mercenary work carries some weight, and many look forward to fighting alongside a battle hardened name. - <</if>> - <</if>> - <</if>> - <<if App.SecExp.battle.deployedUnits('mercs') >= 1>> - <<set _mercLoyalty = App.SecExp.mercenaryAvgLoyalty()>> - <<if _mercLoyalty <= 25>> - <<if _mercLoyalty <= 10>> - Your mercenaries barely bother to pretend being loyal; their battle performance is obviously barely passable. - <<else>> - Your presence does little to spur your mercenaries into action; their loyalty is straining and their performance suffers. - <</if>> - <<if $PC.career == "mercenary">> - Thankfully they hold in high regard someone who made their fortune as a mercenary themselves. - <<elseif $PC.career == "wealth">> - They do little to hide the contempt they have for someone who was born into wealth, rather than gaining it through blood, sweat, and tears. - <<elseif $PC.career == "servant">> - They do little to hide their disgust at being ordered around by an ex-servant. - <<elseif $PC.career == "BlackHat">> - They do little to hide their disgust at being ordered around by some unscrupulous code monkey. - <</if>> - <<elseif _mercLoyalty >= 50>> - <<if _mercLoyalty < 75>> - Your mercenaries are ready to fight their hardest for you, their loyalty a testament to your capability as a leader. - <<else>> - Your mercenaries fight with a martial fury worthy of religious fanatics. Their loyalty to you is absolute. - <</if>> - <<if $PC.career == "mercenary">> - They're more than willing to follow someone who walked their same steps once as a gun for hire. - <<elseif $PC.career == "wealth">> - Unfortunately many still resent you being born into your wealth and power, rather than having earned it through blood, sweat, and tears. - <<elseif $PC.career == "servant">> - Unfortunately some still resent the fact they are ordered around by an ex-servant. - <<elseif $PC.career == "BlackHat">> - Unfortunately some still resent the fact they are ordered around by an unscrupulous hacker. - <</if>> - <</if>> - <<if _oldRep >= 15000>> - Your reputation is so high your name carries power by itself. Having you on the battlefield puts fear even in the hardiest of warriors. - <</if>> - <</if>> - <<if $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - <<if $PC.career == "mercenary" || $PC.career == "slaver" || $PC.career == "capitalist" || $PC.career == "gang" || $PC.skill.warfare > 75>> - The soldiers of $SF.Lower are ready and willing to follow you into battle, confident in your past experience. - <<elseif $PC.career == "wealth" || $PC.career == "medicine" || $PC.career == "engineer">> - The soldiers of $SF.Lower, as loyal as they are, are not enthusiastic to follow the orders of someone who has no experience leading men. - <<elseif $PC.career == "servant">> - The soldiers of $SF.Lower, as loyal as they are, are not enthusiastic to follow the orders of an ex-servant. - <<elseif $PC.career == "escort">> - The soldiers of $SF.Lower, as loyal as they are, are not enthusiastic to follow the orders of an ex-escort. - <<elseif $PC.career == "BlackHat">> - The soldiers of $SF.Lower, as loyal as they are, are not enthusiastic to follow the orders of a dubious incursion specialist. - <</if>> - <</if>> - <<if $PC.skill.warfare <= 25 && $PC.skill.warfare > 10>> - Your inexperience in military matters has a negative impact on your troops performance and the effectiveness of your battle plan. - <<elseif $PC.skill.warfare <= 10>> - Your ignorance in military matters has a severe negative impact on your troops performance and the effectiveness of your battle plan. - <<elseif $PC.skill.warfare >= 50 && $PC.skill.warfare >= 50>> - Your experience in military matters has a positive impact on your troops performance and the effectiveness of your battle plan. - <<elseif $PC.skill.warfare >= 75>> - Your great experience in military matters has a major positive impact on your troops performance and the effectiveness of your battle plan. - <</if>> - <<if $SecExp.war.gainedWarfare>> - Battlefield experience increased your understanding of warfare, making you a better commander. - <</if>> - <<if $PC.health.shortDamage >= 60>> - During the fighting @@.red;you were wounded.@@ Your medics assure you it's nothing life threatening, but you'll be weakened for a few weeks. - <</if>> - <<elseif $SecExp.war.commander == "assistant">> - <<setAssistantPronouns>> - <<if $auto == 1>>$assistant.name<<else>>You<</if>> let your personal assistant lead the troops. - <<if App.SecExp.battle.deployedUnits('mercs') >= 1 || App.SecExp.battle.deployedUnits('militia') >= 1 || App.SecExp.battle.deployedUnits('slaves') >= 1>> - No soldier trusts a computer to be their commander, - <<if _oldRep < 10000 && _oldAuth < 10000>> - no algorithm can substitute experience, <<if $assistant.power == 0>>and as expected, <<else>>however, <</if>> - <<else>> - but they trust you enough to not question your decision<<if $assistant.power == 0>>, however<<else>>, and <</if>> - <</if>> - <<else>> - You find - <</if>> - <<if $assistant.power == 0>> - your assistant gives a rather poor field performance, due to the limited computing power available to _himA. - <<elseif $assistant.power == 1>> - your assistant performs decently. While nothing to write home about your men are pleasantly surprised. - <<elseif $assistant.power == 2>> - your assistant performs admirably. _HisA upgraded computing power allows _himA to monitor the battlefield closely, enhancing the efficiency of your troops and the effectiveness of your battle plan. - <<elseif $assistant.power >= 3>> - your assistant performs admirably. _HisA vast computing power allows _himA to be everywhere on the battlefield, greatly enhancing the efficiency of your troops and the effectiveness of your battle plan. - <</if>> - <<elseif $SecExp.war.commander == "bodyguard">> - <<setLocalPronouns _S.Bodyguard>> - <<if $auto == 1>>$assistant.name<<else>>You<</if>> decided it will be your bodyguard that leads the troops. - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - <<if _S.Bodyguard.devotion < -20>> - $His low devotion has a negative impact on the morale of your slave soldiers. - <<elseif _S.Bodyguard.devotion > 51>> - $His devotion to you has a positive impact on the morale of your slave soldiers, proud to be led by one of their own. - <</if>> - <</if>> - <<if _oldRep < 10000 && _oldAuth < 10000 || _S.Bodyguard.prestige < 1>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a - <<if $SF.Toggle && $SF.Active >= 1 && App.SecExp.battle.deployedUnits('mercs') == 1 && $SecExp.war.deploySF>> - commander, and neither are your mercenaries or your soldiers. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - commander, and neither are your mercenaries. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - commander, and neither are your soldiers. - <<else>> - commander. - <</if>> - <<elseif $SF.Toggle && $SF.Active >= 1 && App.SecExp.battle.deployedUnits('mercs') == 1 && $SecExp.war.deploySF>> - Your mercenaries and soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander. - <</if>> - <<elseif _S.Bodyguard.prestige >= 2>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your - <<if App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - volunteers, your mercenaries and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - volunteers and your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - volunteers and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<else>> - volunteers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <</if>> - <<elseif App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your mercenaries and soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <</if>> - <<else>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a - <<if App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - commander, and neither are your mercenaries and soldiers, but they trust you enough not to question your decision. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - commander, and neither are your mercenaries, but they trust you enough not to question your decision. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - commander, and neither are your soldiers, but they trust you enough not to question your decision. - <<else>> - commander, but they trust you enough not to question your decision. - <</if>> - <<elseif App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your mercenaries and soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however,<</if>> are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however,<</if>> are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however,<</if>> are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision. - <</if>> - <</if>> - <<set _BGCareerGivesBonus = App.Data.Careers.Leader.bodyguard.includes(_S.Bodyguard.career) || App.Data.Careers.Leader.HG.includes(_S.Bodyguard.career) || setup.secExCombatPrestige.includes(_S.Bodyguard.prestigeDesc)>> - <<set _BGTotalIntelligence = _S.Bodyguard.intelligence+_S.Bodyguard.intelligenceImplant>> - <<if _BGCareerGivesBonus && _BGTotalIntelligence > 95>> - With $his experience and $his great intellect, $he is able to exploit the smallest of tactical advantages, making your troops very effective. - <<elseif _BGTotalIntelligence > 95>> - While $he lacks experience, $his great intellect allows $him to seize and exploit any tactical advantage the battlefield offers $him. - <<elseif _BGCareerGivesBonus && _BGTotalIntelligence > 50>> - Having both the experience and the intelligence, $he performs admirably as your commander. $His competence greatly increases the efficiency of your troops. - <<elseif _BGTotalIntelligence > 50>> - Despite not having a lot of experience as a leader, $his intelligence makes $him a good commander, increasing the efficiency of your troops. - <<elseif _BGCareerGivesBonus && _BGTotalIntelligence > 15>> - Thanks to $his experience, $he is a decent commander, competently guiding your troops through the battle. - <<elseif _BGTotalIntelligence > 15>> - Lacking experience, $his performance as a commander is rather forgettable. - <<elseif !_BGCareerGivesBonus || _BGTotalIntelligence < -50>> - Despite the experience $he accumulated during $his past career, $his very low intelligence is a great disadvantage for your troops. - <<elseif _BGTotalIntelligence < -50>> - Without experience and low intelligence, $he performs horribly as a commander, greatly affecting your troops. - <<elseif !_BGCareerGivesBonus || _BGTotalIntelligence < -15>> - Despite the experience $he accumulated during $his past career, $he lacks the intelligence to apply it quickly and effectively, making for a rather poor performance in the field. - <<elseif _BGTotalIntelligence < -15>> - $He lacks the experience and the intelligence to be an effective commander, the performance of your troops suffers because of $his poor leadership. - <</if>> - <<if $SecExp.war.gainedCombat>> - During the battle, $he had to fight for $his life, giving $him experience in modern combat. $He is now proficient with modern firearms and hand to hand combat. - <</if>> - <<if $SecExp.war.leaderWounded>> - Unfortunately, @@.red;$he sustained major injuries.@@ - <<set _woundType = App.SecExp.inflictBattleWound(_S.Bodyguard)>> - <<if _woundType == "voice">> - A stray bullet hit $his neck. While $he fortunately avoided fatal hemorrhaging, $his vocal cords were irreparably damaged. - <<elseif _woundType == "eyes">> - Some shrapnel found $his eyes as their final target, blinding $him permanently. - <<elseif _woundType == "legs">> - A grenade landed close to $him, and $his badly mangled legs had to be amputated. - <<elseif _woundType == "arm">> - A shrapnel blast mangled one of $his arms, which had to be amputated. - <<elseif _woundType == "flesh">> - While gravely wounded, it seems $he will be able to fully recover, given enough time. - <</if>> - Your troops were greatly affected by the loss of their leader. - <</if>> - <<if $SecExp.war.result == 3 && $SecExp.settings.battle.allowSlavePrestige == 1>> - <<set _found = 0>> - <<for _i = 0; _i < $SecExp.battles.slaveVictories.length; _i++>> - <<if $SecExp.battles.slaveVictories[_i].ID == $BodyguardID>> - <<set $SecExp.battles.slaveVictories[_i].victories++>> - <<set _found = 1>> - <<if $SecExp.battles.slaveVictories[_i].victories >= 10>> - <<if _S.Bodyguard.prestige < 3>> - <<set _S.Bodyguard.prestige++>> - <<if _S.Bodyguard.prestige == 1>> - <<set _S.Bodyguard.prestigeDesc = "$He is well known for being a great commander.">> - <<elseif _S.Bodyguard.prestige == 2>> - <<set _S.Bodyguard.prestigeDesc = "$He is famous for being an incredible commander.">> - <<elseif _S.Bodyguard.prestige == 3>> - <<set _S.Bodyguard.prestigeDesc = "$He is known as a legendary commander all over the world.">> - <</if>> - <<set $SecExp.battles.slaveVictories[_i].victories = 0>> - $He brought your army to victory so many times that $his @@.green;prestige has increased.@@ - <</if>> - <</if>> - <<break>> - <</if>> - <</for>> - <<if _found == 0>> - <<set _newSlave = {ID: $BodyguardID, victories: 0}>> - <<set $SecExp.battles.slaveVictories.push(_newSlave)>> - <</if>> - <</if>> - <<elseif $SecExp.war.commander == "headGirl">> - <<setLocalPronouns _S.HeadGirl>> - <<if $auto == 1>>$assistant.name<<else>>You<</if>> decided it will be your Head Girl that leads the troops. - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - <<if _S.HeadGirl.devotion < -20>> - $His low devotion has a negative impact on the morale of your slave soldiers. - <<elseif _S.HeadGirl.devotion > 51>> - $His devotion to you has a positive impact on the morale of your slave soldiers, proud to be led by one of their own. - <</if>> - <</if>> - <<if _oldRep < 10000 && _oldAuth < 10000 || _S.HeadGirl.prestige < 1>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a - <<if App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - commander, and neither are your mercenaries or your soldiers. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - commander, and neither are your mercenaries. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - commander, and neither are your soldiers. - <<else>> - commander. - <</if>> - <<elseif App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your mercenaries and soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander. - <</if>> - <<elseif _S.HeadGirl.prestige >= 2>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your - <<if App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - volunteers, your mercenaries and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - volunteers and your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - volunteers and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<else>> - volunteers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <</if>> - <<elseif App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your mercenaries and soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting $he is a slave. - <</if>> - <<else>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a - <<if App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - commander, and neither are your mercenaries and soldiers, but they trust you enough not to question your decision. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - commander, and neither are your mercenaries, but they trust you enough not to question your decision. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - commander, and neither are your soldiers, but they trust you enough not to question your decision. - <<else>> - commander, but they trust you enough not to question your decision. - <</if>> - <<elseif App.SecExp.battle.deployedUnits('mercs') == 1 && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your mercenaries and soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your soldiers <<if App.SecExp.battle.deployedUnits('slaves') >= 1>>however<</if>> are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision. - <</if>> - <</if>> - <<if (App.Data.Careers.Leader.bodyguard.includes(_S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(_S.HeadGirl.career) || setup.secExCombatPrestige.includes(_S.HeadGirl.prestigeDesc)) && _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 95>> - With $his experience and $his great intellect, $he is able to exploits the smallest of tactical advantages, making your troops greatly effective. - <<elseif _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 95>> - While $he lacks experience, $his great intellect allows $him to seize and exploit any tactical advantage the battlefield offers $him. - <<elseif (App.Data.Careers.Leader.bodyguard.includes(_S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(_S.HeadGirl.career) || setup.secExCombatPrestige.includes(_S.HeadGirl.prestigeDesc)) && _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 50>> - Having both the experience and the intelligence, $he performs admirably as your commander. $His competence greatly increases the efficiency of your troops. - <<elseif _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 50>> - Despite not having a lot of experience as a leader, $his intelligence makes $him a good commander, increasing the efficiency of your troops. - <<elseif (App.Data.Careers.Leader.bodyguard.includes(_S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(_S.HeadGirl.career) || setup.secExCombatPrestige.includes(_S.HeadGirl.prestigeDesc)) && _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 15>> - Thanks to $his experience, $he is a decent commander, competently guiding your troops through the battle. - <<elseif _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant > 15>> - Lacking experience $his performance as a commander is rather forgettable. - <<elseif !(App.Data.Careers.Leader.bodyguard.includes(_S.HeadGirl.career) && App.Data.Careers.Leader.HG.includes(_S.HeadGirl.career) && setup.secExCombatPrestige.includes(_S.HeadGirl.prestigeDesc)) || _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant < -50>> - Despite the experience $he accumulated during $his past career, $his very low intelligence is a great disadvantage for your troops. - <<elseif _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant < -50>> - Without experience and low intelligence, $he performs horribly as a commander, greatly affecting your troops. - <<elseif !(App.Data.Careers.Leader.bodyguard.includes(_S.HeadGirl.career) && App.Data.Careers.Leader.HG.includes(_S.HeadGirl.career) && setup.secExCombatPrestige.includes(_S.HeadGirl.prestigeDesc)) || _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant < -15>> - Despite the experience $he accumulated during $his past career, $he lacks the intelligence to apply it quickly and effectively, making for a rather poor performance in the field. - <<elseif _S.HeadGirl.intelligence+_S.HeadGirl.intelligenceImplant < -15>> - $He lacks the experience and the intelligence to be an effective commander, the performance of your troops suffers because of $his poor leadership. - <</if>> - <<if $SecExp.war.gainedCombat>> - During the battle, $he had to fight for $his life, giving $him experience in modern combat. $He is now proficient with modern firearms and hand to hand combat. - <</if>> - <<if $SecExp.war.leaderWounded>> - Unfortunately, @@.red;$he sustained major injuries.@@ - <<set _woundType = App.SecExp.inflictBattleWound(_S.Bodyguard)>> - <<if _woundType == "voice">> - A stray bullet hit $his neck. While $he fortunately avoided fatal hemorrhaging, $his vocal cords were irreparably damaged. - <<elseif _woundType == "eyes">> - Some shrapnel found $his eyes as their final target, blinding $him permanently. - <<elseif _woundType == "legs">> - A grenade landed close to $him, and $his badly mangled legs had to be amputated. - <<elseif _woundType == "arm">> - A shrapnel blast mangled one of $his arms, which had to be amputated. - <<elseif _woundType == "flesh">> - While gravely wounded, it seems $he will be able to fully recover, given enough time. - <</if>> - Your troops were greatly affected by the loss of their leader. - <</if>> - <<if $SecExp.war.result == 3 && $SecExp.settings.battle.allowSlavePrestige == 1>> - <<set _found = 0>> - <<for _i = 0; _i < $SecExp.battles.slaveVictories.length; _i++>> - <<if $SecExp.battles.slaveVictories[_i].ID == $HeadGirlID>> - <<set $SecExp.battles.slaveVictories[_i].victories++>> - <<set _found = 1>> - <<if $SecExp.battles.slaveVictories[_i].victories >= 10>> - <<if _S.HeadGirl.prestige < 3>> - <<set _S.HeadGirl.prestige++>> - <<if _S.HeadGirl.prestige == 1>> - <<set _S.HeadGirl.prestigeDesc = "$He is well known for being a great commander.">> - <<elseif _S.HeadGirl.prestige == 2>> - <<set _S.HeadGirl.prestigeDesc = "$He is famous for being an incredible commander.">> - <<elseif _S.HeadGirl.prestige == 3>> - <<set _S.HeadGirl.prestigeDesc = "$He is known as a legendary commander all over the world.">> - <</if>> - <<set $SecExp.battles.slaveVictories[_i].victories = 0>> - $He brought your army to victory so many times that $his @@.green;prestige has increased.@@ - <</if>> - <</if>> - <<break>> - <</if>> - <</for>> - <<if _found == 0>> - <<set _newSlave = {ID: $HeadGirlID, victories: 0}>> - <<set $SecExp.battles.slaveVictories.push(_newSlave)>> - <</if>> - <</if>> - <<elseif $SecExp.war.commander == "citizen">> - <<if $auto == 1>>$assistant.name<<else>>You<</if>> decided to appoint one of your volunteers as the commander. - <<if $arcologies[0].FSDegradationist == "unset" && $arcologies[0].FSPaternalist == "unset">> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers are honored and pleased that one of their own is leading the defense force of the city. - <</if>> - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - Your slaves<<if App.SecExp.battle.deployedUnits('militia') >= 1>>, however,<</if>> are not thrilled by the news. - <</if>> - <<elseif $arcologies[0].FSPaternalist != "unset">> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers are honored and pleased that one of their own is leading the defense force of the city. - <</if>> - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - Thanks to your paternalistic society, your slave soldiers trust your chosen citizen to treat them as more than cannon fodder. - <</if>> - <<elseif $arcologies[0].FSDegradationist != "unset">> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers are honored and pleased that one of their own is leading the defense force of the city. - <</if>> - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - Because of your degradationist society,<<if App.SecExp.battle.deployedUnits('militia') >= 1>> however,<</if>> your slave soldiers are deeply distrustful of the new leader. - <</if>> - <</if>> - <<if $arcologies[0].FSRomanRevivalist != "unset" && App.SecExp.battle.deployedUnits('mercs') >= 1>> - Since you decided to revive old Rome, many of your citizens took on themselves to educate themselves in martial matters, because of this your mercenaries feel safe enough in the hands of one of your volunteers. - <<elseif $arcologies[0].FSNeoImperialist != "unset" && App.SecExp.battle.deployedUnits('mercs') >= 1>> - Since having institued an Imperial society, your citizens have become adept at modern warfare and your hardened mercenaries feel far more comfortable with one of your Imperial Knights in command. - <<elseif App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries are not thrilled to be lead by a civilian without any formal martial training or education. - <</if>> - <<if $arcologies[0].FSRomanRevivalist != "unset" && $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Since you decided to revive old Rome, many of your citizens took on themselves to educate themselves in martial matters, because of this your soldiers feel safe enough in the hands of one of your volunteers. - <<elseif $arcologies[0].FSNeoImperialist != "unset" && App.SecExp.battle.deployedUnits('mercs') >= 1>> - Since having institued an Imperial society, your citizens have become adept at modern warfare and the line soldiers feel much more comfortable being commanded by one of your Imperial Knights. - <<elseif $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - You soldiers are not thrilled to be lead by a civilian without any formal martial training or education. - <</if>> - <<if $SecExp.war.leaderWounded>> - During the battle a stray bullet managed to reach the leader. Your troops were greatly affected by the loss. - <</if>> - <<elseif $SecExp.war.commander == "mercenary">> - <<if $auto == 1>>$assistant.name<<else>>You<</if>> decided to appoint one of your mercenary officers as the commander. - <<if App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries of course approve of your decision. - <</if>> - <<if $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - Your soldiers feel more confident going into battle with an experienced commander. - <</if>> - <<if $arcologies[0].FSRomanRevivalist != "unset" && App.SecExp.battle.deployedUnits('militia') >= 1>> - Since you decided to revive old Rome, your volunteers are more willing to trust one of your mercenaries as their leader. - <<elseif App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers are not enthusiastic at the prospect of being commanded around by a gun for hire. - <</if>> - <<if $arcologies[0].FSDegradationist != "unset" && App.SecExp.battle.deployedUnits('slaves') >= 1>> - Because of your degradationist society, your slave soldiers are highly distrustful of the gun for hire you forced them to accept as leader. - <</if>> - <<if $SecExp.war.leaderWounded>> - During the battle a stray bullet managed to reach the mercenary. Your troops were greatly affected by the loss of their leader. - <</if>> - <<elseif $SecExp.war.commander == "colonel">> - <<if $auto == 1>>$assistant.name<<else>>You<</if>> decided to appoint The Colonel as the commander. - <<if App.SecExp.battle.deployedUnits('mercs') >= 1>> - Your mercenaries approve of such decisions, as they feel more confident by having a good, experienced commander. - <</if>> - <<if $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - The soldiers of $SF.Lower obviously approved of your decision. - <</if>> - <<if $arcologies[0].FSRomanRevivalist != "unset" && App.SecExp.battle.deployedUnits('militia') >= 1>> - Since you decided to revive old Rome, your volunteers are more willing to trust one of your soldiers as their leader. - <<elseif $arcologies[0].FSNeoImperialist != "unset" && App.SecExp.battle.deployedUnits('militia') >= 1>> - Under the strict hierarchy of your Imperial society, the militia is more willing to follow the Colonel's commands. - <<elseif App.SecExp.battle.deployedUnits('militia') >= 1>> - Your volunteers are not enthusiastic at the prospect of being commanded around by an old style military officer. - <</if>> - <<if $arcologies[0].FSDegradationist != "unset" && App.SecExp.battle.deployedUnits('slaves') >= 1>> - Because of your degradationist society, your slave soldiers are highly distrustful of the soldier you forced them to accept as leader. - <</if>> - <<if $SecExp.war.leaderWounded>> - During the battle a stray bullet managed to reach The Colonel, wounding her slightly. Your troops were greatly affected by the loss of their leader. - <</if>> - <</if>> - - <br><br> - - /* tactics */ - <<if $auto == 1>>$assistant.name<<else>>You<</if>> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - chose to employ "bait and bleed" tactics or relying on quick attacks and harassment to tire and wound the enemy until their surrender. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - chose to employ "guerrilla" tactics or relying on stealth, terrain knowledge and subterfuge to undermine and ultimately destroy the enemy. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - chose to employ "choke points" tactics or the extensive use of fortified or highly defensive positions to slow down and eventually stop the enemy. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - chose to employ "interior lines" tactics or exploiting the defender's shorter front to quickly disengage and concentrate troops when and where needed. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - chose to employ "pincer maneuver" tactics or attempting to encircle the enemy by faking a collapsing center front. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - chose to employ "defense in depth" tactics or relying on mobility to disengage and exploit overextended enemy troops by attacking their freshly exposed flanks. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - chose to employ "blitzkrieg" tactics or shattering the enemy's front-line with a violent, concentrated armored assault. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - chose to employ "human wave" tactics or overwhelming the enemy's army with a massive infantry assault. - <</if>> - <<if $SecExp.war.terrain == "urban">> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - The urban terrain synergized well with bait and bleed tactics, slowly chipping away at the enemy's forces from the safety of the narrow streets and empty buildings. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - The urban terrain synergized well with guerrilla tactics, eroding your enemy's determination from the safety of the narrow streets and empty buildings. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - The urban environment offers many opportunities to hunker down and stop the momentum of the enemy's assault while keeping your soldiers in relative safety. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - While the urban environment offers many highly defensive position, it does restrict movement and with it the advantages of exploiting interior lines. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - The urban terrain does not allow for wide maneuvers, the attempts of your forces to encircle the attackers are mostly unsuccessful. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - While the urban environment offers many defensive positions, it limits mobility, limiting the advantages of using a defense in depth tactic. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - The urban terrain is difficult to traverse, making your troops attempt at a lightning strike unsuccessful. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - The urban terrain offers great advantages to the defender, your men find themselves in great disadvantage while mass assaulting the enemy's position. - <</if>> - <<elseif $SecExp.war.terrain == "rural">> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - The open terrain of rural lands does not lend itself well to bait and bleed tactics, making it harder for your men to achieve tactical superiority. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - The open terrain of rural lands does not offer many hiding spots, making it harder for your men to perform guerrilla actions effectively. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - The open terrain of rural lands does not offer many natural choke points, making it hard for your troops to funnel the enemy towards highly defended positions. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - The open terrain allows your men to easily exploit the superior mobility of the defender, making excellent use of interior lines to strike where it hurts. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - The open terrain affords your men great mobility, allowing them to easily position themselves for envelopment. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - The open terrain affords your men great mobility, allowing them to exploit overextended assaults and concentrate where and when it matters. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - The open terrain affords your men great mobility, making it easier to accomplish concentrated lightning strikes. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - The open terrain affords your men great mobility, making it easier to overwhelm the enemy with mass assaults. - <</if>> - <<elseif $SecExp.war.terrain == "hills">> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - While the hills offer some protection, they also make it harder to maneuver; bait and bleed tactics will not be 100% effective here. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - The hills offer protection to both your troops and your enemy's, making it harder for your men to accomplish guerrilla attacks effectively. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - While not as defensible as mountains, hills offer numerous opportunities to funnel the enemy towards highly defensible choke points. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - The limited mobility on hills hampers the capability of your troops to exploit the defender's greater mobility afforded by interior lines. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - Limited mobility due to the hills is a double edged sword, affording your men a decent shot at encirclement. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - The limited mobility on hills hampers the capability of your troops to use elastic defense tactics. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - The limited mobility on hills hampers the capability of your troops to organize lightning strikes. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - The defensibility of hills makes it harder to accomplish victory through mass assaults. - <</if>> - <<elseif $SecExp.war.terrain == "coast">> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - On the coast there's little space and protection to effectively employ bait and bleed tactics. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - On the coast there's little space and protection to effectively employ guerrilla tactics. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - Amphibious attacks are difficult in the best of situations; the defender has a very easy time funneling the enemy towards their key defensive positions. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - While in an amphibious landing mobility is not the defender's best weapon, exploiting interior lines still affords your troops some advantages. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - Attempting to encircle a landing party is not the best course of action, but not the worst either. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - In an amphibious assault it's very easy for the enemy to overextend, making defense in depth tactics quite effective. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - The rough, restricted terrain does not lend itself well to lightning strikes, but the precarious position of the enemy still gives your mobile troops tactical superiority. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - The rough, restricted terrain does not lend itself well to mass assaults, but the precarious position of the enemy still gives your troops tactical superiority. - <</if>> - <<elseif $SecExp.war.terrain == "outskirts">> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - Fighting just beneath the walls of the arcology does not allow for the dynamic redeployment of troops bait and bleed tactics would require. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - Fighting just beneath the walls of the arcology does not allow for the dynamic redeployment of troops guerrilla tactics would require. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - The imposing structure of the arcology itself provides plenty of opportunities to create fortified choke points from which to shatter the enemy assault. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - While the presence of the arcology near the battlefield is an advantage, it does limit maneuverability, lowering overall effectiveness of interior lines tactics. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - While the presence of the arcology near the battlefield is an advantage, it does limit maneuverability, lowering the chances of making an effective encirclement. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - Having the arcology near the battlefield means there are limited available maneuvers to your troops, who still needs to defend the structure, making defense in depth tactics not as effective. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - While an assault may save the arcology from getting involved at all, having the imposing structure so near does limit maneuverability and so the impetus of the lightning strike. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - While an attack may save the arcology from getting involved at all, having the imposing structure so near does limit maneuverability and so the impetus of the mass assault. - <</if>> - <<elseif $SecExp.war.terrain == "mountains">> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - While the mountains offer great protection, they also limit maneuverability; bait and bleed tactics will not be quite as effective here. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - The mountains offer many excellent hiding spots and defensive positions, making guerrilla tactics very effective. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - The mountains offer plenty of opportunity to build strong defensive positions from which to shatter the enemy's assault. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - While the rough terrain complicates maneuvers, the defensive advantages offered by the mountains offsets its negative impact. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective encirclement in this environment. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - While mobility is limited, defensive positions are plentiful; your men are not able to fully exploit overextended assaults, but are able to better resist them. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective lightning strike in this environment. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective mass assault in this environment. - <</if>> - <<elseif $SecExp.war.terrain == "wasteland">> - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - While the wastelands are mostly open terrain, there are enough hiding spots to make bait and bleed tactics work well enough. - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - While the wastelands are mostly open terrain, there are enough hiding spots to make guerrilla tactics work well enough. - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - The wastelands are mostly open terrain; your men have a difficult time setting up effective fortified positions. - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - The wastelands, while rough, are mostly open terrain, where your men can exploit to the maximum the superior mobility of the defender. - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - The wastelands, while rough, are mostly open terrain; your men can set up an effective encirclement here. - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - The wastelands, while rough, are mostly open terrain, allowing your men to liberally maneuver to exploit overextended enemies. - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - The wastelands, while rough, are mostly open terrain, where your men are able to mount effective lightning strikes. - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - The wastelands, while rough, are mostly open terrain, where your men are able to mount effective mass assaults. - <</if>> - <</if>> - - <<if $SecExp.war.chosenTactic == "Bait and Bleed">> - <<if $SecExp.war.attacker.type == "raiders">> - Since the bands of raiders are used to be on high alert and on the move constantly, bait and bleed tactics are not effective against them. - <<elseif $SecExp.war.attacker.type == "free city">> - The modern armies hired by Free Cities are decently mobile, which means quick hit and run attacks will be less successful, but their discipline and confidence still make them quite susceptible to this type of attack. - <<elseif $SecExp.war.attacker.type == "old world">> - While old world armies are tough nuts to crack, their predictability makes them the perfect target for hit and run and harassment tactics. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - Freedom fighters live every day as chasing and being chased by far superior forces, they are far more experienced than your troops in this type of warfare and much less susceptible to it. - <</if>> - <<elseif $SecExp.war.chosenTactic == "Guerrilla">> - <<if $SecExp.war.attacker.type == "raiders">> - Since the bands of raiders are used to be on high alert and on the move constantly, guerrilla tactics are not effective against them. - <<elseif $SecExp.war.attacker.type == "free city">> - The modern armies hired by Free Cities are highly mobile, which means quick hit and run attacks will be less successful, but their discipline and confidence still make them quite susceptible to this type of attack. - <<elseif $SecExp.war.attacker.type == "old world">> - While old world armies are tough nuts to crack, their predictability makes them the perfect target for hit and run and harassment tactics. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - Freedom fighters live every day as chasing and being chased by far superior forces, they are far more experienced than your troops in this type of warfare and much less susceptible to it. - <</if>> - <<elseif $SecExp.war.chosenTactic == "Choke Points">> - <<if $SecExp.war.attacker.type == "raiders">> - Raiders lack heavy weaponry or armor, so making use of fortified positions is an excellent way to dissipate the otherwise powerful momentum of their assault. - <<elseif $SecExp.war.attacker.type == "free city">> - The high tech equipment Free Cities can afford to give their guns for hire means there's no defensive position strong enough to stop them, still the relatively low numbers means they will have to take a careful approach, slowing them down. - <<elseif $SecExp.war.attacker.type == "old world">> - Old world armies have both the manpower and the equipment to conquer any defensive position, making use of strong fortifications will only bring you this far against them. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - The lack of specialized weaponry means freedom fighters have a rather hard time overcoming tough defensive positions, unfortunately they have also a lot of experience in avoiding them. - <</if>> - <<elseif $SecExp.war.chosenTactic == "Interior Lines">> - <<if $SecExp.war.attacker.type == "raiders">> - The highly mobile horde of raiders will not give much room for your troops to maneuver, lowering their tactical superiority. - <<elseif $SecExp.war.attacker.type == "free city">> - While decently mobile, Free Cities forces are not in high enough numbers to risk maintaining prolonged contact, allowing your troops to quickly disengage and redeploy where it hurts. - <<elseif $SecExp.war.attacker.type == "old world">> - Old world armies are not famous for the mobility, which makes them highly susceptible to any tactic that exploits maneuverability and speed. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - While not the best equipped army, the experience and mobility typical of freedom fighters groups make them tough targets for an army that relies itself on mobility. - <</if>> - <<elseif $SecExp.war.chosenTactic == "Pincer Maneuver">> - <<if $SecExp.war.attacker.type == "raiders">> - While numerous, the undisciplined masses of raiders are easy prey for encirclements. - <<elseif $SecExp.war.attacker.type == "free city">> - While decently mobile, the low number of Free Cities expedition forces make them good candidates for encirclements. - <<elseif $SecExp.war.attacker.type == "old world">> - The discipline and numbers of old world armies make them quite difficult to encircle. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - While not particularly mobile, freedom fighters are used to fight against overwhelming odds, diminishing the effectiveness of the encirclement. - <</if>> - <<elseif $SecExp.war.chosenTactic == "Defense In Depth">> - <<if $SecExp.war.attacker.type == "raiders">> - While their low discipline makes them prime candidates for an elastic defense type of strategy, their high numbers limit your troops maneuverability. - <<elseif $SecExp.war.attacker.type == "free city">> - With their low numbers Free Cities mercenaries are quite susceptible to this type of tactic, despite their mobility. - <<elseif $SecExp.war.attacker.type == "old world">> - With their low mobility old world armies are very susceptible to this type of strategy. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - Low mobility and not particularly high numbers mean freedom fighters can be defeated by employing elastic defense tactics. - <</if>> - <<elseif $SecExp.war.chosenTactic == "Blitzkrieg">> - <<if $SecExp.war.attacker.type == "raiders">> - With their low discipline and lack of heavy equipment, lightning strikes are very effective against raider hordes. - <<elseif $SecExp.war.attacker.type == "free city">> - Having good equipment and discipline on their side, Free Cities expeditions are capable of responding to even strong lightning strikes. - <<elseif $SecExp.war.attacker.type == "old world">> - While disciplined, old world armies low mobility makes them highly susceptible to lightning strikes. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - While not well equipped, freedom fighters have plenty of experience fighting small, mobile attacks, making them difficult to defeat with lightning strikes. - <</if>> - <<elseif $SecExp.war.chosenTactic == "Human Wave">> - <<if $SecExp.war.attacker.type == "raiders">> - The hordes of raiders are much more experienced than your soldiers in executing mass assaults and they also have a lot more bodies to throw in the grinder. - <<elseif $SecExp.war.attacker.type == "free city">> - The good equipment and mobility of Free Cities mercenaries cannot save them from an organized mass assault. - <<elseif $SecExp.war.attacker.type == "old world">> - Unfortunately the discipline and good equipment of old world armies allow them to respond well against a mass assault. - <<elseif $SecExp.war.attacker.type == "freedom fighters">> - The relative low numbers and not great equipment typical of freedom fighters make them susceptible to being overwhelmed by an organized mass assault. - <</if>> - <</if>> - In the end <<if $SecExp.war.commander == "PC">>you were<<else>>your commander was<</if>> - <<if $SecExp.war.tacticsSuccessful>> - @@.green;able to successfully employ <<print $SecExp.war.chosenTactic>> tactics,@@ greatly enhancing - <<else>> - @@.red;not able to effectively employ <<print $SecExp.war.chosenTactic>> tactics,@@ greatly affecting - <</if>> - the efficiency of your army. <br> <<include "unitsBattleReport">> - - <<if $SF.Toggle && $SF.Active >= 1 && ($SF.Squad.Firebase >= 7 || $SF.Squad.GunS >= 1 || $SF.Squad.Satellite >= 5 || $SF.Squad.GiantRobot >= 6 || $SF.Squad.MissileSilo >= 1)>> - /* SF upgrades effects */ <br><br> - <<if $SF.Squad.Firebase >= 7>> - The artillery pieces installed around $SF.Lower's firebase provided vital fire support to the troops in the field. - <</if>> - <<if $SF.Squad.GunS >= 1>> - The gunship gave our troops an undeniable advantage in recon capabilities, air superiority and fire support. - <</if>> - <<if $SF.Squad.Satellite >= 5 && $SF.SatLaunched > 0>> - The devastating power of $SF.Lower's satellite was employed with great efficiency against the enemy. - <</if>> - <<if $SF.Squad.GiantRobot >= 6>> - The giant robot of $SF.Lower proved to be a great boon to our troops, shielding many from the worst the enemy had to offer. - <</if>> - <<if $SF.Squad.MissileSilo >= 1>> - The missile silo exterminated many enemy soldiers even before the battle would begin. - <</if>> - <</if>> - -<</if>> /* closes check for surrender and bribery */ - -<br><br> - -<<set _menialPrice = Math.trunc(($slaveCostFactor*1000)/100)*100>> -<<set _menialPrice = Math.clamp(_menialPrice, 500, 1500)>> - -<<set _captives = Math.trunc(_captives)>> -<<if _captives > 0>> - During the battle <<print _captives>> attackers were captured. - /* - <<if random(1,100) <= 25>> - <<set _roll = random(1,100)>> - <<if _roll <= 33>> - Three of them have the potential to be sex slaves. - <<set _candidates = 3>> - - <<elseif _roll <= 66>> - Two of them have the potential to be sex slaves. - <<set _candidates = 2>> - <<else>> - One of them have the potential to be sex slaves. - <<set _candidates = 1>> - <</if>> - <</if>> - */ - <br> - <span id="captOptions"> - <<link "sell them all immediately">> - <<run cashX((_menialPrice * _captives), "menialTransfer")>> - <<replace "#captOptions">>Captives sold<</replace>> - <</link>> - | - <<link "Keep them as menial slaves">> - <<set $menials += _captives>> - <<replace "#captOptions">>Captives added as menial slaves<</replace>> - <</link>> - </span> -<</if>> - -/* resets variables */ -<<set $majorBattle = 0>> -<<set $SecExp.units.bots.isDeployed = 0>> -<<for _squad range App.SecExp.unit.humanSquads()>> - <<set _squad.isDeployed = 0>> -<</for>> \ No newline at end of file diff --git a/src/Mods/SecExp/attackHandler.tw b/src/Mods/SecExp/events/attackHandler.tw similarity index 100% rename from src/Mods/SecExp/attackHandler.tw rename to src/Mods/SecExp/events/attackHandler.tw diff --git a/src/Mods/SecExp/js/attackOptions.js b/src/Mods/SecExp/events/attackOptions.js similarity index 100% rename from src/Mods/SecExp/js/attackOptions.js rename to src/Mods/SecExp/events/attackOptions.js diff --git a/src/Mods/SecExp/events/attackReport.js b/src/Mods/SecExp/events/attackReport.js new file mode 100644 index 0000000000000000000000000000000000000000..f2d2e87c5e6d76e7fa9afaa76c479671e90f767a --- /dev/null +++ b/src/Mods/SecExp/events/attackReport.js @@ -0,0 +1,1927 @@ +App.Events.attackReport = function() { + V.nextButton = "Continue"; + V.nextLink = "Scheduled Event"; + V.encyclopedia = "Battles"; + const node = new DocumentFragment(); + let r = []; + const { + HisA, + himA, + } = getPronouns(V.assistant.personality > 0 ? assistant.pronouns().main : {pronoun: App.Data.Pronouns.Kind.ai}).appendSuffix("A"); + const {hisP} = getPronouns(V.PC).appendSuffix("P"); + + /* init*/ + const oldRep = V.rep; + const oldAuth = V.SecExp.core.authority; + V.SecExp.war.attacker.losses = Math.trunc(V.SecExp.war.attacker.losses); + if (V.SecExp.war.attacker.losses > V.SecExp.war.attacker.troops) { + V.SecExp.war.attacker.losses = V.SecExp.war.attacker.troops; + } + V.SecExp.core.totalKills += V.SecExp.war.attacker.losses; + V.SecExp.war.losses = Math.trunc(V.SecExp.war.losses); + let loot = 0; + let lostSlaves; + let captives; + const lossesList = []; + + /* result */ + const majorBattleMod = (V.majorBattle === 0) ? 1 : 2; + if (V.majorBattle !== 0) { + V.SecExp.battles.major++; + } + if (V.SecExp.war.result === 3) { + App.UI.DOM.makeElement("h1", `Victory!`, "strong"); + V.SecExp.battles.lossStreak = 0; + V.SecExp.battles.victoryStreak += 1; + V.SecExp.battles.victories++; + } else if (V.SecExp.war.result === -3) { + App.UI.DOM.makeElement("h1", `Defeat!`, "strong"); + V.SecExp.battles.lossStreak += 1; + V.SecExp.battles.victoryStreak = 0; + V.SecExp.battles.losses++; + } else if (V.SecExp.war.result === 2) { + App.UI.DOM.makeElement("h1", `Partial victory!`, "strong"); + V.SecExp.battles.victories++; + } else if (V.SecExp.war.result === -2) { + App.UI.DOM.makeElement("h1", `Partial defeat!`, "strong"); + V.SecExp.battles.losses++; + } else if (V.SecExp.war.result === -1) { + App.UI.DOM.makeElement("h1", `We surrendered`, "strong"); + V.SecExp.battles.losses++; + } else if (V.SecExp.war.result === 0) { + App.UI.DOM.makeElement("h1", `Failed bribery!`, "strong"); + V.SecExp.battles.losses++; + } else if (V.SecExp.war.result === 1) { + App.UI.DOM.makeElement("h1", `Successful bribery!`, "strong"); + V.SecExp.battles.victories++; + } + let end = (V.SecExp.battles.victoryStreak >= 2 || V.SecExp.battles.lossStreak >= 2) ? `,` : `.`; + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`Today, ${asDateString(V.week, random(0, 7))}, our arcology was attacked by a band of wild raiders, ${num(Math.trunc(V.SecExp.war.attacker.troops))} men strong.`); + if (V.SecExp.war.result !== 1 && V.SecExp.war.result !== 0 && V.SecExp.war.result !== -1) { + r.push(`Our defense forces, ${num(Math.trunc(App.SecExp.battle.troopCount()))} strong, clashed with them`); + if (V.SecExp.war.terrain === "urban") { + r.push(`in the streets of`); + if (V.SecExp.war.terrain === "urban") { + r.push(`the old world city surrounding the arcology,`); + } else { + r.push(`of the free city,`); + } + } else if (V.SecExp.war.terrain === "rural") { + r.push(`in the rural land surrounding the free city,`); + } else if (V.SecExp.war.terrain === "hills") { + r.push(`on the hills around the free city,`); + } else if (V.SecExp.war.terrain === "coast") { + r.push(`along the coast just outside the free city,`); + } else if (V.SecExp.war.terrain === "outskirts") { + r.push(`just against the walls of the arcology,`); + } else if (V.SecExp.war.terrain === "mountains") { + r.push(`in the mountains overlooking the arcology,`); + } else if (V.SecExp.war.terrain === "wasteland") { + r.push(`in the wastelands outside the free city territory,`); + } + if (V.SecExp.war.attacker.losses !== V.SecExp.war.attacker.troops) { + r.push(`inflicting`); + num(Math.trunc(V.SecExp.war.attacker.losses)); + r.push(`casualties, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty`); + } else { + r.push(`zero`); + } + r.push(`themselves.`); + } else { + r.push(`completely annihilating their troops, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties.`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty.`); + } else { + r.push(`zero casualties.`); + } + } + } + if (V.SecExp.war.result === 3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men easily stopped the disorganized horde's futile attempt at raiding your arcology${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard, but in the end our men stopped the disorganized horde attempt at raiding your arcology${end}`); + } else { + r.push(`The fight was long and hard, but our men managed to stop the horde raiding party${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`adding another victory to the growing list of our military's successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`finally putting an end to a series of unfortunate defeats.`); + } + } else if (V.SecExp.war.result === -3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men were easily crushed by the barbaric horde of raiders${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard and in the end the bandits proved too much to handle for our men${end}`); + } else { + r.push(`The fight was long and hard, but despite their bravery the horde proved too much for our men${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`so interrupting a long series of military successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`confirming the long list of recent failures our armed forces collected.`); + } + } else if (V.SecExp.war.result === 2) { + r.push(`The fight was long and hard, but in the end our men managed to repel the raiders, though not without difficulty.`); + } else if (V.SecExp.war.result === -2) { + r.push(`The fight was long and hard. Our men in the end had to yield to the horde raiders, which was fortunately unable to capitalized on their victory.`); + } else if (V.SecExp.war.result === -1) { + r.push(`You gave your troops the order to surrender, obediently they stand down.`); + } else if (V.SecExp.war.result === 0) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } else if (V.SecExp.war.result === 1) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`Today, ${asDateString(V.week, random(0, 7))}, our arcology was attacked by a contingent of mercenaries hired by a competing free city, ${num(Math.trunc(V.SecExp.war.attacker.troops))} men strong.`); + if (V.SecExp.war.result !== 1 && V.SecExp.war.result !== 0 && V.SecExp.war.result !== -1) { + r.push(`Our defense forces, ${num(Math.trunc(App.SecExp.battle.troopCount()))} strong, clashed with them`); + if (V.SecExp.war.terrain === "urban") { + r.push(`in the streets of`); + if (V.SecExp.war.terrain === "urban") { + r.push(`the old world city surrounding the arcology,`); + } else { + r.push(`of the free city,`); + } + } else if (V.SecExp.war.terrain === "rural") { + r.push(`in the rural land surrounding the free city,`); + } else if (V.SecExp.war.terrain === "hills") { + r.push(`on the hills around the free city,`); + } else if (V.SecExp.war.terrain === "coast") { + r.push(`along the coast just outside the free city,`); + } else if (V.SecExp.war.terrain === "outskirts") { + r.push(`just against the walls of the arcology,`); + } else if (V.SecExp.war.terrain === "mountains") { + r.push(`in the mountains overlooking the arcology,`); + } else if (V.SecExp.war.terrain === "wasteland") { + r.push(`in the wastelands outside the free city territory,`); + } + if (V.SecExp.war.attacker.losses !== V.SecExp.war.attacker.troops) { + r.push(`inflicting ${V.SecExp.war.attacker.losses} casualties, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty`); + } else { + r.push(`zero`); + } + r.push(`themselves.`); + } else { + r.push(`completely annihilating their troops, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties.`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty.`); + } else { + r.push(`zero casualties.`); + } + } + } + if (V.SecExp.war.result === 3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men easily stopped the mercenaries dead in their tracks${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard, but in the end our men stopped the slavers attempt at weakening your arcology${end}`); + } else { + r.push(`The fight was long and hard, but our men managed to stop the free city mercenaries${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`adding another victory to the growing list of our military's successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`finally putting an end to a series of unfortunate defeats.`); + } + } else if (V.SecExp.war.result === -3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men were easily crushed by the consumed mercenary veterans sent against us${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard and in the end the slavers proved too much to handle for our men${end}`); + } else { + r.push(`The fight was long and hard, but despite their bravery the mercenary slavers proved too much for our men${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`so interrupting a long series of military successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`confirming the long list of recent failures our armed forces collected.`); + } + } else if (V.SecExp.war.result === 2) { + r.push(`The fight was long and hard, but in the end our men managed to repel the mercenaries, though not without difficulty.`); + } else if (V.SecExp.war.result === -2) { + r.push(`The fight was long and hard. Our men in the end had to yield to the slavers, which were fortunately unable to capitalized on their victory.`); + } else if (V.SecExp.war.result === -1) { + r.push(`You gave your troops the order to surrender, obediently they stand down.`); + } else if (V.SecExp.war.result === 0) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } else if (V.SecExp.war.result === 1) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`Today, ${asDateString(V.week, random(0, 7))}, our arcology was attacked by a group of freedom fighters bent on the destruction of the institution of slavery, ${num(Math.trunc(V.SecExp.war.attacker.troops))} men strong.`); + if (V.SecExp.war.result !== 1 && V.SecExp.war.result !== 0 && V.SecExp.war.result !== -1) { + r.push(`Our defense forces, ${num(Math.trunc(App.SecExp.battle.troopCount()))} strong, clashed with them`); + if (V.SecExp.war.terrain === "urban") { + r.push(`in the streets of`); + if (V.SecExp.war.terrain === "urban") { + r.push(`the old world city surrounding the arcology,`); + } else { + r.push(`of the free city,`); + } + } else if (V.SecExp.war.terrain === "rural") { + r.push(`in the rural land surrounding the free city,`); + } else if (V.SecExp.war.terrain === "hills") { + r.push(`on the hills around the free city,`); + } else if (V.SecExp.war.terrain === "coast") { + r.push(`along the coast just outside the free city,`); + } else if (V.SecExp.war.terrain === "outskirts") { + r.push(`just against the walls of the arcology,`); + } else if (V.SecExp.war.terrain === "mountains") { + r.push(`in the mountains overlooking the arcology,`); + } else if (V.SecExp.war.terrain === "wasteland") { + r.push(`in the wastelands outside the free city territory,`); + } + if (V.SecExp.war.attacker.losses !== V.SecExp.war.attacker.troops) { + r.push(`inflicting ${V.SecExp.war.attacker.losses} casualties, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty`); + } else { + r.push(`zero`); + } + r.push(`themselves.`); + } else { + r.push(`completely annihilating their troops, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties.`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty.`); + } else { + r.push(`zero casualties.`); + } + } + } + if (V.SecExp.war.result === 3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men easily stopped the freedom fighters dead in their tracks${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard, but in the end our men stopped the fighters attack${end}`); + } else { + r.push(`The fight was long and hard, but our men managed to stop the freedom fighters${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`adding another victory to the growing list of our military's successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`finally putting an end to a series of unfortunate defeats.`); + } + } else if (V.SecExp.war.result === -3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men were easily crushed by the fanatical fury of the freedom fighters${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard and in the end the freedom fighters proved too much to handle for our men${end}`); + } else { + r.push(`The fight was long and hard, but despite their bravery the freedom fighters fury proved too much for our men${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`so interrupting a long series of military successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`confirming the long list of recent failures our armed forces collected.`); + } + } else if (V.SecExp.war.result === 2) { + r.push(`The fight was long and hard, but in the end our men managed to repel the freedom fighters, though not without difficulty.`); + } else if (V.SecExp.war.result === -2) { + r.push(`The fight was long and hard. Our men in the end had to yield to the freedom fighters, which were fortunately unable to capitalized on their victory.`); + } else if (V.SecExp.war.result === -1) { + r.push(`You gave your troops the order to surrender, obediently they stand down.`); + } else if (V.SecExp.war.result === 0) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } else if (V.SecExp.war.result === 1) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`Today, ${asDateString(V.week, random(0, 7))}, our arcology was attacked by an old world nation boasting a misplaced sense of superiority, ${num(Math.trunc(V.SecExp.war.attacker.troops))} men strong.`); + if (V.SecExp.war.result !== 1 && V.SecExp.war.result !== 0 && V.SecExp.war.result !== -1) { + r.push(`Our defense forces, ${num(Math.trunc(App.SecExp.battle.troopCount()))} strong, clashed with them`); + if (V.SecExp.war.terrain === "urban") { + r.push(`in the streets of`); + if (V.SecExp.war.terrain === "urban") { + r.push(`the old world city surrounding the arcology,`); + } else { + r.push(`of the free city,`); + } + } else if (V.SecExp.war.terrain === "rural") { + r.push(`in the rural land surrounding the free city,`); + } else if (V.SecExp.war.terrain === "hills") { + r.push(`on the hills around the free city,`); + } else if (V.SecExp.war.terrain === "coast") { + r.push(`along the coast just outside the free city,`); + } else if (V.SecExp.war.terrain === "outskirts") { + r.push(`just against the walls of the arcology,`); + } else if (V.SecExp.war.terrain === "mountains") { + r.push(`in the mountains overlooking the arcology,`); + } else if (V.SecExp.war.terrain === "wasteland") { + r.push(`in the wastelands outside the free city territory,`); + } + if (V.SecExp.war.attacker.losses !== V.SecExp.war.attacker.troops) { + r.push(`inflicting ${V.SecExp.war.attacker.losses} casualties, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty`); + } else { + r.push(`zero`); + } + r.push(`themselves.`); + } else { + r.push(`completely annihilating their troops, while sustaining`); + if (V.SecExp.war.losses > 1) { + r.push(`${num(Math.trunc(V.SecExp.war.losses))} casualties.`); + } else if (V.SecExp.war.losses > 0) { + r.push(`a casualty.`); + } else { + r.push(`zero casualties.`); + } + } + } + if (V.SecExp.war.result === 3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men easily stopped the old world soldiers dead in their tracks${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard, but in the end our men stopped the soldiers of the old world${end}`); + } else { + r.push(`The fight was long and hard, but our men managed to stop the old world soldiers${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`adding another victory to the growing list of our military's successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`finally putting an end to a series of unfortunate defeats.`); + } + } else if (V.SecExp.war.result === -3) { + if (V.SecExp.war.turns <= 5) { + r.push(`The fight was quick and one sided, our men were easily crushed by the discipline of the old world armies${end}`); + } else if (V.SecExp.war.turns <= 7) { + r.push(`The fight was hard and in the end the old world proved too much to handle for our men${end}`); + } else { + r.push(`The fight was long and hard, but despite their bravery the determination of the old world troops proved too much for our men${end}`); + } + if (V.SecExp.battles.victoryStreak >= 2) { + r.push(`so interrupting a long series of military successes.`); + } else if (V.SecExp.battles.lossStreak >= 2) { + r.push(`confirming the long list of recent failures our armed forces collected.`); + } + } else if (V.SecExp.war.result === 2) { + r.push(`The fight was long and hard, but in the end our men managed to repel the old world soldiers, though not without difficulty.`); + } else if (V.SecExp.war.result === -2) { + r.push(`The fight was long and hard. Our men in the end had to yield to the old world soldiers, which were fortunately unable to capitalized on their victory.`); + } else if (V.SecExp.war.result === -1) { + r.push(`You gave your troops the order to surrender, obediently they stand down.`); + } else if (V.SecExp.war.result === 0) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } else if (V.SecExp.war.result === 1) { + r.push(`You decided in favor of a financial approach rather than open hostilities. Your troops remain inside the arcology's walls.`); + } + } + App.Events.addParagraph(node, r); + r = []; + /* calculates effects on the city */ + if (V.SecExp.war.result === 3) { + r.push(`Thanks to your victory, your <span class="green">reputation</span> and <span class="darkviolet">authority</span> increased. You were also able to capture`); + if (V.SecExp.war.attacker.type === "raiders") { + repX(4000 * majorBattleMod, "war"); + V.SecExp.core.authority += 800 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "free city") { + repX(6000 * majorBattleMod, "war"); + V.SecExp.core.authority += 1200 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + repX(7500 * majorBattleMod, "war"); + V.SecExp.core.authority += 1500 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "old world") { + repX(6000 * majorBattleMod, "war"); + V.SecExp.core.authority += 1200 * majorBattleMod; + } + if (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses <= 50) { + r.push(`a small amount of attackers,`); + captives = (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses) * 0.1 * random(1, 3); + } else if (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses <= 100) { + r.push(`an healthy group of attackers,`); + captives = (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses) * 0.1 * random(1, 3); + } else if (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses <= 150) { + r.push(`a big group of attackers,`); + captives = (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses) * 0.1 * random(1, 3); + } else if (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses <= 200) { + r.push(`a huge group of attackers,`); + captives = (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses) * 0.1 * random(1, 3); + } else if (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses > 200) { + r.push(`a great amount of attackers,`); + captives = (V.SecExp.war.attacker.troops - V.SecExp.war.attacker.losses) * 0.1 * random(1, 3); + } + r.push(`and some of their equipment, which once sold produced`); + if (V.SecExp.war.attacker.equip === 0) { + r.push(`<span class="yellowgreen">a small amount of cash.</span>`); + loot += 1000 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 1) { + r.push(`<span class="yellowgreen">a moderate amount of cash.</span>`); + loot += 5000 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 2) { + r.push(`<span class="yellowgreen">a good amount of cash.</span>`); + loot += 10000 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 3) { + r.push(`<span class="yellowgreen">a great amount of cash.</span>`); + loot += 15000 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 4) { + r.push(`<span class="yellowgreen">wealth worthy of the mightiest warlord.</span>`); + loot += 20000 * majorBattleMod; + } + if (V.SecExp.edicts.defense.privilege.mercSoldier === 1 && App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Part of the loot is distributed to your mercenaries.`); + captives = Math.trunc(captives * 0.6); + loot = Math.trunc(loot * 0.6); + } + cashX(loot, "war"); + App.Events.addParagraph(node, r); + r = []; + r.push(`Damage to the infrastructure was <span class="yellow">virtually non-existent,</span> costing only pocket cash to bring the structure back to normal. The inhabitants as well reported little to no injuries, because of this the prosperity of the arcology did not suffer.`); + r.push(`${IncreasePCSkills('engineering', 0.1)}`); + cashX(forceNeg(1000 * majorBattleMod), "war"); + if (V.SecExp.battles.victoryStreak >= 3) { + r.push(`It seems your victories over the constant threats directed your way is having <span class="green">a positive effect on the prosperity of the arcology,</span> due to the security your leadership affords.`); + V.arcologies[0].prosperity += 5 * majorBattleMod; + } + } else if (V.SecExp.war.result === -3) { + r.push(`Due to your defeat, your <span class="red">reputation</span> and <span class="red">authority</span> decreased. Obviously your troops were not able to capture anyone or anything.`); + if (V.SecExp.war.attacker.type === "raiders") { + repX(forceNeg(400 * majorBattleMod), "war"); + V.SecExp.core.authority -= 400 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "free city") { + repX(forceNeg(600 * majorBattleMod), "war"); + V.SecExp.core.authority -= 600 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + repX(forceNeg(750 * majorBattleMod), "war"); + V.SecExp.core.authority -= 750 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "old world") { + repX(forceNeg(600 * majorBattleMod), "war"); + V.SecExp.core.authority -= 600 * majorBattleMod; + } + App.Events.addParagraph(node, r); + r = []; + r.push(`In the raiding following the battle <span class="red">the arcology sustained heavy damage,</span> which will cost quite the amount of cash to fix. Reports of <span class="red">citizens or slaves killed or missing</span> flood your office for a few days following the defeat.`); + r.push(`${IncreasePCSkills('engineering', 0.1)}`); + cashX(forceNeg(5000 * majorBattleMod), "war"); + if (V.week <= 30) { + V.lowerClass -= random(100) * majorBattleMod; + lostSlaves = random(150) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(5) * majorBattleMod; + } else if (V.week <= 60) { + V.lowerClass -= random(120) * majorBattleMod; + lostSlaves = random(170) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(10) * majorBattleMod; + } else if (V.week <= 90) { + V.lowerClass -= random(140) * majorBattleMod; + lostSlaves = random(190) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(15) * majorBattleMod; + } else if (V.week <= 120) { + V.lowerClass -= random(160) * majorBattleMod; + lostSlaves = random(210) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(20) * majorBattleMod; + } else { + V.lowerClass -= random(180) * majorBattleMod; + lostSlaves = random(230) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(25) * majorBattleMod; + } + if (V.SecExp.battles.lossStreak >= 3) { + r.push(`This only confirms the fears of many, <span class="red">your arcology is not safe</span> and it is clear their business will be better somewhere else.`); + V.arcologies[0].prosperity -= 5 * majorBattleMod; + } + } else if (V.SecExp.war.result === 2) { + r.push(`Thanks to your victory, your <span class="green">reputation</span> and <span class="darkviolet">authority</span> slightly increased. Our men were not able to capture any combatants, however some equipment was seized during the enemy's hasty retreat,`); + if (V.SecExp.war.attacker.type === "raiders") { + repX(1000 * majorBattleMod, "war"); + V.SecExp.core.authority += 200 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "free city") { + repX(1500 * majorBattleMod, "war"); + V.SecExp.core.authority += 300 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + repX(2000 * majorBattleMod, "war"); + V.SecExp.core.authority += 450 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "old world") { + repX(1500 * majorBattleMod, "war"); + V.SecExp.core.authority += 300 * majorBattleMod; + } + r.push(`which once sold produced`); + if (V.SecExp.war.attacker.equip === 0) { + r.push(`<span class="yellowgreen">a bit of cash.</span>`); + loot += 500 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 1) { + r.push(`<span class="yellowgreen">a small amount of cash.</span>`); + loot += 2500 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 2) { + r.push(`<span class="yellowgreen">a moderate amount of cash.</span>`); + loot += 5000 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 3) { + r.push(`<span class="yellowgreen">a good amount of cash.</span>`); + loot += 7500 * majorBattleMod; + } else if (V.SecExp.war.attacker.equip === 4) { + r.push(`<span class="yellowgreen">a great amount of cash.</span>`); + loot += 10000 * majorBattleMod; + } + if (V.SecExp.edicts.defense.privilege.mercSoldier === 1 && App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Part of the loot is distributed to your mercenaries.`); + loot = Math.trunc(loot * 0.6); + } + cashX(loot, "war"); + App.Events.addParagraph(node, r); + r = []; + r.push(`Damage to the city was <span class="red">limited,</span> it won't take much to rebuild. Very few citizens or slaves were involved in the fight and even fewer met their end, safeguarding the prosperity of the arcology.`); + r.push(`${IncreasePCSkills('engineering', 0.1)}`); + cashX(forceNeg(2000 * majorBattleMod), "war"); + V.lowerClass -= random(10) * majorBattleMod; + lostSlaves = random(20) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + } else if (V.SecExp.war.result === -2) { + r.push(`It was a close defeat, but nonetheless your <span class="red">reputation</span> and <span class="red">authority</span> slightly decreased. Your troops were not able to capture anyone or anything.`); + if (V.SecExp.war.attacker.type === "raiders") { + repX(forceNeg(40 * majorBattleMod), "war"); + V.SecExp.core.authority -= 40 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "free city") { + repX(forceNeg(60 * majorBattleMod), "war"); + V.SecExp.core.authority -= 60 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + repX(forceNeg(75 * majorBattleMod), "war"); + V.SecExp.core.authority -= 75 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "old world") { + repX(forceNeg(60 * majorBattleMod), "war"); + V.SecExp.core.authority -= 60 * majorBattleMod; + } + App.Events.addParagraph(node, r); + r = []; + r.push(`The enemy did not have the strength to raid the arcology for long, still <span class="red">the arcology sustained some damage,</span> which will cost a moderate amount of cash to fix. Some citizens and slaves found themselves on the wrong end of a gun and met their demise.`); + r.push(`Some business sustained heavy damage, slightly impacting the arcology's prosperity.`); + r.push(`${IncreasePCSkills('engineering', 0.1)}`); + cashX(forceNeg(3000 * majorBattleMod), "war"); + if (V.week <= 30) { + V.lowerClass -= random(50) * majorBattleMod; + lostSlaves = random(75) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(2) * majorBattleMod; + } else if (V.week <= 60) { + V.lowerClass -= random(60) * majorBattleMod; + lostSlaves = random(85) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(5) * majorBattleMod; + } else if (V.week <= 90) { + V.lowerClass -= random(70) * majorBattleMod; + lostSlaves = random(95) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(7) * majorBattleMod; + } else if (V.week <= 120) { + V.lowerClass -= random(80) * majorBattleMod; + lostSlaves = random(105) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(10) * majorBattleMod; + } else { + V.lowerClass -= random(90) * majorBattleMod; + lostSlaves = random(115) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(12) * majorBattleMod; + } + } else if (V.SecExp.war.result === -1) { + r.push(`Rather than waste the lives of your men you decided to surrender, hoping your enemy will cause less damage if you indulge them, this is however a big hit to your status. Your <span class="red">reputation</span> and <span class="red">authority</span> are significantly impacted.`); + if (V.SecExp.war.attacker.type === "raiders") { + repX(forceNeg(600 * majorBattleMod), "war"); + V.SecExp.core.authority -= 600 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "free city") { + repX(forceNeg(800 * majorBattleMod), "war"); + V.SecExp.core.authority -= 800 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + repX(forceNeg(1000 * majorBattleMod), "war"); + V.SecExp.core.authority -= 1000 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "old world") { + repX(forceNeg(800 * majorBattleMod), "war"); + V.SecExp.core.authority -= 800 * majorBattleMod; + } + App.Events.addParagraph(node, r); + r = []; + r.push(`The surrender allows the arcology to survive <span class="red">mostly intact,</span> however reports of <span class="red">mass looting and killing of citizens</span> flood your office for a few days.`); + r.push(`${IncreasePCSkills('engineering', 0.1)}`); + cashX(forceNeg(1000 * majorBattleMod), "war"); + if (V.week <= 30) { + V.lowerClass -= random(80) * majorBattleMod; + lostSlaves = random(120) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(5) * majorBattleMod; + } else if (V.week <= 60) { + V.lowerClass -= random(100) * majorBattleMod; + lostSlaves = random(140) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(10) * majorBattleMod; + } else if (V.week <= 90) { + V.lowerClass -= random(120) * majorBattleMod; + lostSlaves = random(160) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(15) * majorBattleMod; + } else if (V.week <= 120) { + V.lowerClass -= random(140) * majorBattleMod; + lostSlaves = random(180) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(20) * majorBattleMod; + } else { + V.lowerClass -= random(160) * majorBattleMod; + lostSlaves = random(200) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(25) * majorBattleMod; + } + } else if (V.SecExp.war.result === 0) { + r.push(`Unfortunately your adversary did not accept your money.`); + if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`Their ideological crusade would not allow such thing.`); + } else { + r.push(`They saw your attempt as nothing more than admission of weakness.`); + } + r.push(`There was no time to organize a defense and so the enemy walked into the arcology as it was his. Your reputation and authority suffer a hit.`); + if (V.SecExp.war.attacker.type === "raiders") { + repX(forceNeg(400 * majorBattleMod), "war"); + V.SecExp.core.authority -= 400 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "free city") { + repX(forceNeg(600 * majorBattleMod), "war"); + V.SecExp.core.authority -= 600 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + repX(forceNeg(750 * majorBattleMod), "war"); + V.SecExp.core.authority -= 750 * majorBattleMod; + } else if (V.SecExp.war.attacker.type === "old world") { + repX(forceNeg(600 * majorBattleMod), "war"); + V.SecExp.core.authority -= 600 * majorBattleMod; + } + App.Events.addParagraph(node, r); + r = []; + r.push(`Fortunately the arcology survives <span class="yellow">mostly intact,</span> however reports of <span class="red">mass looting and killing of citizens</span> flood your office for a few days.`); + r.push(`${IncreasePCSkills('engineering', 0.1)}`); + cashX(-1000, "war"); + if (V.week <= 30) { + V.lowerClass -= random(80) * majorBattleMod; + lostSlaves = random(120) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(5) * majorBattleMod; + } else if (V.week <= 60) { + V.lowerClass -= random(100) * majorBattleMod; + lostSlaves = random(140) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(10) * majorBattleMod; + } else if (V.week <= 90) { + V.lowerClass -= random(120) * majorBattleMod; + lostSlaves = random(160) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(15) * majorBattleMod; + } else if (V.week <= 120) { + V.lowerClass -= random(140) * majorBattleMod; + lostSlaves = random(180) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(20) * majorBattleMod; + } else { + V.lowerClass -= random(160) * majorBattleMod; + lostSlaves = random(200) * majorBattleMod; + V.NPCSlaves -= Math.trunc((V.NPCSlaves / V.ASlaves) * lostSlaves); + V.menials -= Math.trunc((V.menials / V.ASlaves) * lostSlaves); + V.fuckdolls -= Math.trunc((V.fuckdolls / V.ASlaves) * lostSlaves); + V.menialBioreactors -= Math.trunc((V.menialBioreactors / V.ASlaves) * lostSlaves); + V.arcologies[0].prosperity -= random(25) * majorBattleMod; + } + App.Events.addParagraph(node, r); + r = []; + } else if (V.SecExp.war.result === 1) { + r.push(`The attackers wisely take the money offered them to leave your territory without further issues. The strength of the Free Cities was never in their guns but in their dollars, and today's events are the perfect demonstration of such strength.`); + r.push(`Your <span class="green">reputation slightly increases.</span>`); + if (V.SecExp.war.attacker.type === "raiders") { + repX(500 * majorBattleMod, "war"); + } else if (V.SecExp.war.attacker.type === "free city") { + repX(750 * majorBattleMod, "war"); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + repX(1000 * majorBattleMod, "war"); + } else if (V.SecExp.war.attacker.type === "old world") { + repX(750 * majorBattleMod, "war"); + } + cashX(forceNeg(App.SecExp.battle.bribeCost()), "war"); + } + if (!Number.isInteger(V.lowerClass)) { + if (isNaN(V.lowerClass)) { + r.push(App.UI.DOM.makeElement("div", `Error: lowerClass is NaN, please report this issue`, "red")); + } else if (V.lowerClass > 0) { + V.lowerClass = Math.trunc(V.lowerClass); + } else { + V.lowerClass = 0; + } + } + if (!Number.isInteger(V.NPCSlaves)) { + if (isNaN(V.NPCSlaves)) { + r.push(App.UI.DOM.makeElement("div", `Error: NPCSlaves is NaN, please report this issue`, "red")); + } else if (V.NPCSlaves > 0) { + V.NPCSlaves = Math.trunc(V.NPCSlaves); + } else { + V.NPCSlaves = 0; + } + } + + App.Events.addParagraph(node, r); + r = []; + if (V.SecExp.war.result !== 1 && V.SecExp.war.result !== 0 && V.SecExp.war.result !== -1) { + /* leaders */ + if (V.SecExp.war.commander === "PC") { + r.push(`You decided to personally lead the defense of your arcology.`); + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + if (oldRep <= 2500) { + if (oldRep > 1000) { + r.push(`You're not particularly popular between the inhabitants of your arcology, so your presence does little to reassure the volunteers.`); + } else { + r.push(`As your low reputation proves, your volunteers do not particularly enjoy your company. As far as they are concerned your presence is more of a hindrance than an advantage.`); + } + if (V.PC.career === "celebrity") { + r.push(`Still, your past celebrity does carry some weight, and many look forward to fight alongside a famous name.`); + } else if (V.PC.career === "capitalist") { + r.push(`Still, your past life as a famous venture capitalist does carry some weight, and many trust in your cunning to save them in the incoming battle.`); + } else if (V.PC.career === "gang") { + r.push(`The situation is not made easier by your past. Many still remember you as the gang leader who used to be on the other side of their guns.`); + } else if (V.PC.career === "escort") { + r.push(`The situation is not made easier by your past. Many still remember your past career as an escort and doubt you'll be of any use during the fighting.`); + } else if (V.PC.career === "mercenary") { + r.push(`Still, your past mercenary work does carry some weight, and many look forward to fight alongside a battle hardened name.`); + } + } else if (oldRep >= 5000) { + if (oldRep < 15000) { + r.push(`Your citizens are honored that their arcology owner is willing to put ${hisP} life in danger.`); + } else { + r.push(`Many among the volunteers are awed by your presence; never would they have thought they would fight shoulder to shoulder with their famous arcology owner.`); + } + if (V.PC.career === "celebrity") { + r.push(`They consider it a priceless opportunity to fight together with someone with such a renowned past as yours. Your celebrity past still carries weight.`); + } else if (V.PC.career === "capitalist") { + r.push(`They consider it a priceless opportunity to fight together with one of the great capitalist sharks of their time. Such a fine mind on their side can only bring victory!`); + } else if (V.PC.career === "gang") { + r.push(`Your past, however, does not help you. Many still remember you as the gang leader who used to be on the other side of their guns.`); + } else if (V.PC.career === "escort") { + r.push(`Your past, however, does not help you. Many still remember your past career as an escort and doubt you'll be of any use during the fighting.`); + } else if (V.PC.career === "mercenary") { + r.push(`Your past mercenary work does carries some weight, and many look forward to fight alongside a battle hardened name.`); + } + } + } + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + if (oldAuth <= 2500) { + if (oldAuth > 1000) { + r.push(`Your slave soldiers do not feel bound to you as much as they should, as your authority is far from absolute.`); + } else { + r.push(`Your slave soldiers are often openly rebellious. Only the threat of execution holds them in line.`); + } + if (V.PC.career === "escort") { + r.push(`Fortunately many feel some level of kinship with you, thanks to your past as an escort.`); + } else if (V.PC.career === "servant") { + r.push(`Fortunately many feel some level of kinship with you, thanks to your past as a servant.`); + } else if (V.PC.career === "slaver") { + r.push(`Things are made worse by your past as a notorious slaver.`); + } else if (V.PC.career === "mercenary") { + r.push(`Your past mercenary work carries some weight, and many look forward to fighting alongside a battle hardened name.`); + } + } else if (oldAuth >= 5000) { + if (oldAuth < 15000) { + r.push(`Your slave soldiers show a surprising amount of discipline, thanks to your high authority.`); + } else { + r.push(`Your slave soldiers show almost a fanatical level of martial discipline. Your absolute authority has a great effect on them.`); + } + if (V.PC.career === "escort") { + r.push(`Many have an instinctual feeling of kinship towards you because of your past as an escort.`); + } else if (V.PC.career === "servant") { + r.push(`Many have an instinctual feeling of kinship towards you because of your past as a servant.`); + } else if (V.PC.career === "slaver") { + r.push(`Still, some rebellious looks can be spotted once in a while. In their eyes your slaver past will always paint you in a dark light.`); + } else if (V.PC.career === "mercenary") { + r.push(`Your past mercenary work carries some weight, and many look forward to fighting alongside a battle hardened name.`); + } + } + } + if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + const mercLoyalty = App.SecExp.mercenaryAvgLoyalty(); + if (mercLoyalty <= 25) { + if (mercLoyalty <= 10) { + r.push(`Your mercenaries barely bother to pretend being loyal; their battle performance is obviously barely passable.`); + } else { + r.push(`Your presence does little to spur your mercenaries into action; their loyalty is straining and their performance suffers.`); + } + if (V.PC.career === "mercenary") { + r.push(`Thankfully they hold in high regard someone who made their fortune as a mercenary themselves.`); + } else if (V.PC.career === "wealth") { + r.push(`They do little to hide the contempt they have for someone who was born into wealth, rather than gaining it through blood, sweat, and tears.`); + } else if (V.PC.career === "servant") { + r.push(`They do little to hide their disgust at being ordered around by an ex-servant.`); + } else if (V.PC.career === "BlackHat") { + r.push(`They do little to hide their disgust at being ordered around by some unscrupulous code monkey.`); + } + } else if (mercLoyalty >= 50) { + if (mercLoyalty < 75) { + r.push(`Your mercenaries are ready to fight their hardest for you, their loyalty a testament to your capability as a leader.`); + } else { + r.push(`Your mercenaries fight with a martial fury worthy of religious fanatics. Their loyalty to you is absolute.`); + } + if (V.PC.career === "mercenary") { + r.push(`They're more than willing to follow someone who walked their same steps once as a gun for hire.`); + } else if (V.PC.career === "wealth") { + r.push(`Unfortunately many still resent you being born into your wealth and power, rather than having earned it through blood, sweat, and tears.`); + } else if (V.PC.career === "servant") { + r.push(`Unfortunately some still resent the fact they are ordered around by an ex-servant.`); + } else if (V.PC.career === "BlackHat") { + r.push(`Unfortunately some still resent the fact they are ordered around by an unscrupulous hacker.`); + } + } + if (oldRep >= 15000) { + r.push(`Your reputation is so high your name carries power by itself. Having you on the battlefield puts fear even in the hardiest of warriors.`); + } + } + if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + if (V.PC.career === "mercenary" || V.PC.career === "slaver" || V.PC.career === "capitalist" || V.PC.career === "gang" || V.PC.skill.warfare > 75) { + r.push(`The soldiers of ${V.SF.Lower} are ready and willing to follow you into battle, confident in your past experience.`); + } else if (V.PC.career === "wealth" || V.PC.career === "medicine" || V.PC.career === "engineer") { + r.push(`The soldiers of ${V.SF.Lower}, as loyal as they are, are not enthusiastic to follow the orders of someone who has no experience leading men.`); + } else if (V.PC.career === "servant") { + r.push(`The soldiers of ${V.SF.Lower}, as loyal as they are, are not enthusiastic to follow the orders of an ex-servant.`); + } else if (V.PC.career === "escort") { + r.push(`The soldiers of ${V.SF.Lower}, as loyal as they are, are not enthusiastic to follow the orders of an ex-escort.`); + } else if (V.PC.career === "BlackHat") { + r.push(`The soldiers of ${V.SF.Lower}, as loyal as they are, are not enthusiastic to follow the orders of a dubious incursion specialist.`); + } + } + if (V.PC.skill.warfare <= 25 && V.PC.skill.warfare > 10) { + r.push(`Your inexperience in military matters has a negative impact on your troops performance and the effectiveness of your battle plan.`); + } else if (V.PC.skill.warfare <= 10) { + r.push(`Your ignorance in military matters has a severe negative impact on your troops performance and the effectiveness of your battle plan.`); + } else if (V.PC.skill.warfare >= 50) { + r.push(`Your experience in military matters has a positive impact on your troops performance and the effectiveness of your battle plan.`); + } else if (V.PC.skill.warfare >= 75) { + r.push(`Your great experience in military matters has a major positive impact on your troops performance and the effectiveness of your battle plan.`); + } + if (V.SecExp.war.gainedWarfare) { + r.push(`Battlefield experience increased your understanding of warfare, making you a better commander.`); + } + if (V.PC.health.shortDamage >= 60) { + r.push(`During the fighting <span class="red">you were wounded.</span> Your medics assure you it's nothing life threatening, but you'll be weakened for a few weeks.`); + } + } else if (V.SecExp.war.commander === "assistant") { + if (V.auto === 1) { + r.push(`${V.assistant.name}`); + } else { + r.push(`You`); + } + r.push(`let your personal assistant lead the troops.`); + if (App.SecExp.battle.deployedUnits('mercs') >= 1 || App.SecExp.battle.deployedUnits('militia') >= 1 || App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`No soldier trusts a computer to be their commander,`); + if (oldRep < 10000 && oldAuth < 10000) { + r.push(`no algorithm can substitute experience,`); + if (V.assistant.power === 0) { + r.push(`and as expected,`); + } else { + r.push(`however,`); + } + } else { + r.push(`but they trust you enough to not question your decision,`); + if (V.assistant.power === 0) { + r.push(`however`); + } else { + r.push(`and`); + } + } + } else { + r.push(`You find`); + } + if (V.assistant.power === 0) { + r.push(`your assistant gives a rather poor field performance, due to the limited computing power available to ${himA}.`); + } else if (V.assistant.power === 1) { + r.push(`your assistant performs decently. While nothing to write home about your men are pleasantly surprised.`); + } else if (V.assistant.power === 2) { + r.push(`your assistant performs admirably. ${HisA} upgraded computing power allows ${himA} to monitor the battlefield closely, enhancing the efficiency of your troops and the effectiveness of your battle plan.`); + } else if (V.assistant.power >= 3) { + r.push(`your assistant performs admirably. ${HisA} vast computing power allows ${himA} to be everywhere on the battlefield, greatly enhancing the efficiency of your troops and the effectiveness of your battle plan.`); + } + } else if (V.SecExp.war.commander === "bodyguard") { + const { + His, He, + his, he, him + } = getPronouns(S.Bodyguard); + if (V.auto === 1) { + r.push(`${V.assistant.name}`); + } else { + r.push(`You`); + } + r.push(`decided it will be your bodyguard that leads the troops.`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + if (S.Bodyguard.devotion < -20) { + r.push(`${His} low devotion has a negative impact on the morale of your slave soldiers.`); + } else if (S.Bodyguard.devotion > 51) { + r.push(`${His} devotion to you has a positive impact on the morale of your slave soldiers, proud to be led by one of their own.`); + } + } + if (oldRep < 10000 && oldAuth < 10000 || S.Bodyguard.prestige < 1) { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a`); + if (V.SF.Toggle && V.SF.Active >= 1 && App.SecExp.battle.deployedUnits('mercs') === 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your mercenaries or your soldiers.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`commander, and neither are your mercenaries.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your soldiers.`); + } else { + r.push(`commander.`); + } + } else if (V.SF.Toggle && V.SF.Active >= 1 && App.SecExp.battle.deployedUnits('mercs') === 1 && V.SecExp.war.deploySF) { + r.push(`Your mercenaries and soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander.`); + } + } else if (S.Bodyguard.prestige >= 2) { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your`); + if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`volunteers, your mercenaries and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`volunteers and your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`volunteers and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else { + r.push(`volunteers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } + } else if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your mercenaries and soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } + } else { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a`); + if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your mercenaries and soldiers, but they trust you enough not to question your decision.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`commander, and neither are your mercenaries, but they trust you enough not to question your decision.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your soldiers, but they trust you enough not to question your decision.`); + } else { + r.push(`commander, but they trust you enough not to question your decision.`); + } + } else if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your mercenaries and soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however,`); + } + r.push(`are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however,`); + } + r.push(`are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however,`); + } + r.push(`are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision.`); + } + } + const BGCareerGivesBonus = App.Data.Careers.Leader.bodyguard.includes(S.Bodyguard.career) || App.Data.Careers.Leader.HG.includes(S.Bodyguard.career) || App.Data.misc.secExCombatPrestige.includes(S.Bodyguard.prestigeDesc); + const BGTotalIntelligence = S.Bodyguard.intelligence + S.Bodyguard.intelligenceImplant; + if (BGCareerGivesBonus && BGTotalIntelligence > 95) { + r.push(`With ${his} experience and ${his} great intellect, ${he} is able to exploit the smallest of tactical advantages, making your troops very effective.`); + } else if (BGTotalIntelligence > 95) { + r.push(`While ${he} lacks experience, ${his} great intellect allows ${him} to seize and exploit any tactical advantage the battlefield offers ${him}.`); + } else if (BGCareerGivesBonus && BGTotalIntelligence > 50) { + r.push(`Having both the experience and the intelligence, ${he} performs admirably as your commander. ${His} competence greatly increases the efficiency of your troops.`); + } else if (BGTotalIntelligence > 50) { + r.push(`Despite not having a lot of experience as a leader, ${his} intelligence makes ${him} a good commander, increasing the efficiency of your troops.`); + } else if (BGCareerGivesBonus && BGTotalIntelligence > 15) { + r.push(`Thanks to ${his} experience, ${he} is a decent commander, competently guiding your troops through the battle.`); + } else if (BGTotalIntelligence > 15) { + r.push(`Lacking experience, ${his} performance as a commander is rather forgettable.`); + } else if (BGCareerGivesBonus && BGTotalIntelligence < -50) { + r.push(`Despite the experience ${he} accumulated during ${his} past career, ${his} very low intelligence is a great disadvantage for your troops.`); + } else if (BGTotalIntelligence < -50) { + r.push(`Without experience and low intelligence, ${he} performs horribly as a commander, greatly affecting your troops.`); + } else if (BGCareerGivesBonus && BGTotalIntelligence < -15) { + r.push(`Despite the experience ${he} accumulated during ${his} past career, ${he} lacks the intelligence to apply it quickly and effectively, making for a rather poor performance in the field.`); + } else if (BGTotalIntelligence < -15) { + r.push(`${He} lacks the experience and the intelligence to be an effective commander, the performance of your troops suffers because of ${his} poor leadership.`); + } + if (V.SecExp.war.gainedCombat) { + r.push(`During the battle, ${he} had to fight for ${his} life, giving ${him} experience in modern combat. ${He} is now proficient with modern firearms and hand to hand combat.`); + } + if (V.SecExp.war.leaderWounded) { + r.push(`Unfortunately, <span class="red">${he} sustained major injuries.</span>`); + const woundType = App.SecExp.inflictBattleWound(S.Bodyguard); + if (woundType === "voice") { + r.push(`A stray bullet hit ${his} neck. While ${he} fortunately avoided fatal hemorrhaging, ${his} vocal cords were irreparably damaged.`); + } else if (woundType === "eyes") { + r.push(`Some shrapnel found ${his} eyes as their final target, blinding ${him} permanently.`); + } else if (woundType === "legs") { + r.push(`A grenade landed close to ${him}, and ${his} badly mangled legs had to be amputated.`); + } else if (woundType === "arm") { + r.push(`A shrapnel blast mangled one of ${his} arms, which had to be amputated.`); + } else if (woundType === "flesh") { + r.push(`While gravely wounded, it seems ${he} will be able to fully recover, given enough time.`); + } + r.push(`Your troops were greatly affected by the loss of their leader.`); + } + if (V.SecExp.war.result === 3 && V.SecExp.settings.battle.allowSlavePrestige === 1) { + let found = 0; + for (const victory of V.SecExp.battles.slaveVictories) { + if (victory.ID === V.BodyguardID) { + victory.victories++; + found = 1; + if (victory.victories >= 10) { + if (S.Bodyguard.prestige < 3) { + S.Bodyguard.prestige++; + if (S.Bodyguard.prestige === 1) { + S.Bodyguard.prestigeDesc = "$He is well known for being a great commander."; + } else if (S.Bodyguard.prestige === 2) { + S.Bodyguard.prestigeDesc = "$He is famous for being an incredible commander."; + } else if (S.Bodyguard.prestige === 3) { + S.Bodyguard.prestigeDesc = "$He is known as a legendary commander all over the world."; + } + victory.victories = 0; + r.push(`${He} brought your army to victory so many times that ${his} <span class="green">prestige has increased.</span>`); + } + } + break; + } + } + if (found === 0) { + const newSlave = {ID: V.BodyguardID, victories: 0}; + V.SecExp.battles.slaveVictories.push(newSlave); + } + } + } else if (V.SecExp.war.commander === "headGirl") { + const { + His, He, + his, he, him + } = getPronouns(S.HeadGirl); + if (V.auto === 1) { + r.push(`${V.assistant.name}`); + } else { + r.push(`You`); + } + r.push(`decided it will be your Head Girl that leads the troops.`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + if (S.HeadGirl.devotion < -20) { + r.push(`${His} low devotion has a negative impact on the morale of your slave soldiers.`); + } else if (S.HeadGirl.devotion > 51) { + r.push(`${His} devotion to you has a positive impact on the morale of your slave soldiers, proud to be led by one of their own.`); + } + } + if (oldRep < 10000 && oldAuth < 10000 || S.HeadGirl.prestige < 1) { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a`); + if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your mercenaries or your soldiers.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`commander, and neither are your mercenaries.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your soldiers.`); + } else { + r.push(`commander.`); + } + } else if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your mercenaries and soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander.`); + } + } else if (S.HeadGirl.prestige >= 2) { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your`); + if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`volunteers, your mercenaries and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`volunteers and your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`volunteers and your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else { + r.push(`volunteers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } + } else if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your mercenaries and soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your soldiers are delighted to have such a prestigious individual as their commander, almost forgetting ${he} is a slave.`); + } + } else { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a`); + if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your mercenaries and soldiers, but they trust you enough not to question your decision.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`commander, and neither are your mercenaries, but they trust you enough not to question your decision.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`commander, and neither are your soldiers, but they trust you enough not to question your decision.`); + } else { + r.push(`commander, but they trust you enough not to question your decision.`); + } + } else if (App.SecExp.battle.deployedUnits('mercs') === 1 && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your mercenaries and soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your soldiers`); + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`however`); + } + r.push(`are not enthusiastic to have a slave as a commander, but they trust you enough not to question your decision.`); + } + } + if ((App.Data.Careers.Leader.bodyguard.includes(S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(S.HeadGirl.career) || App.Data.misc.secExCombatPrestige.includes(S.HeadGirl.prestigeDesc)) && S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 95) { + r.push(`With ${his} experience and ${his} great intellect, ${he} is able to exploits the smallest of tactical advantages, making your troops greatly effective.`); + } else if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 95) { + r.push(`While ${he} lacks experience, ${his} great intellect allows ${him} to seize and exploit any tactical advantage the battlefield offers ${him}.`); + } else if ((App.Data.Careers.Leader.bodyguard.includes(S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(S.HeadGirl.career) || App.Data.misc.secExCombatPrestige.includes(S.HeadGirl.prestigeDesc)) && S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) { + r.push(`Having both the experience and the intelligence, ${he} performs admirably as your commander. ${His} competence greatly increases the efficiency of your troops.`); + } else if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) { + r.push(`Despite not having a lot of experience as a leader, ${his} intelligence makes ${him} a good commander, increasing the efficiency of your troops.`); + } else if ((App.Data.Careers.Leader.bodyguard.includes(S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(S.HeadGirl.career) || App.Data.misc.secExCombatPrestige.includes(S.HeadGirl.prestigeDesc)) && S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 15) { + r.push(`Thanks to ${his} experience, ${he} is a decent commander, competently guiding your troops through the battle.`); + } else if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 15) { + r.push(`Lacking experience ${his} performance as a commander is rather forgettable.`); + } else if ((App.Data.Careers.Leader.bodyguard.includes(S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(S.HeadGirl.career) || App.Data.misc.secExCombatPrestige.includes(S.HeadGirl.prestigeDesc)) && S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant < -50) { + r.push(`Despite the experience ${he} accumulated during ${his} past career, ${his} very low intelligence is a great disadvantage for your troops.`); + } else if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant < -50) { + r.push(`Without experience and low intelligence, ${he} performs horribly as a commander, greatly affecting your troops.`); + } else if ((App.Data.Careers.Leader.bodyguard.includes(S.HeadGirl.career) || App.Data.Careers.Leader.HG.includes(S.HeadGirl.career) || App.Data.misc.secExCombatPrestige.includes(S.HeadGirl.prestigeDesc)) && S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant < -15) { + r.push(`Despite the experience ${he} accumulated during ${his} past career, ${he} lacks the intelligence to apply it quickly and effectively, making for a rather poor performance in the field.`); + } else if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant < -15) { + r.push(`${He} lacks the experience and the intelligence to be an effective commander, the performance of your troops suffers because of ${his} poor leadership.`); + } + if (V.SecExp.war.gainedCombat) { + r.push(`During the battle, ${he} had to fight for ${his} life, giving ${him} experience in modern combat. ${He} is now proficient with modern firearms and hand to hand combat.`); + } + if (V.SecExp.war.leaderWounded) { + r.push(`Unfortunately, <span class="red">${he} sustained major injuries.</span>`); + const woundType = App.SecExp.inflictBattleWound(S.Bodyguard); + if (woundType === "voice") { + r.push(`A stray bullet hit ${his} neck. While ${he} fortunately avoided fatal hemorrhaging, ${his} vocal cords were irreparably damaged.`); + } else if (woundType === "eyes") { + r.push(`Some shrapnel found ${his} eyes as their final target, blinding ${him} permanently.`); + } else if (woundType === "legs") { + r.push(`A grenade landed close to ${him}, and ${his} badly mangled legs had to be amputated.`); + } else if (woundType === "arm") { + r.push(`A shrapnel blast mangled one of ${his} arms, which had to be amputated.`); + } else if (woundType === "flesh") { + r.push(`While gravely wounded, it seems ${he} will be able to fully recover, given enough time.`); + } + r.push(`Your troops were greatly affected by the loss of their leader.`); + } + if (V.SecExp.war.result === 3 && V.SecExp.settings.battle.allowSlavePrestige === 1) { + let found = 0; + for (const victory of V.SecExp.battles.slaveVictories) { + if (victory.ID === V.HeadGirlID) { + victory.victories++; + found = 1; + if (victory.victories >= 10) { + if (S.HeadGirl.prestige < 3) { + S.HeadGirl.prestige++; + if (S.HeadGirl.prestige === 1) { + S.HeadGirl.prestigeDesc = "$He is well known for being a great commander."; + } else if (S.HeadGirl.prestige === 2) { + S.HeadGirl.prestigeDesc = "$He is famous for being an incredible commander."; + } else if (S.HeadGirl.prestige === 3) { + S.HeadGirl.prestigeDesc = "$He is known as a legendary commander all over the world."; + } + victory.victories = 0; + r.push(`${He} brought your army to victory so many times that ${his} <span class="green">prestige has increased.</span>`); + } + } + break; + } + } + if (found === 0) { + const newSlave = {ID: V.HeadGirlID, victories: 0}; + V.SecExp.battles.slaveVictories.push(newSlave); + } + } + } else if (V.SecExp.war.commander === "citizen") { + if (V.auto === 1) { + r.push(`${V.assistant.name}`); + } else { + r.push(`You`); + } + r.push(`decided to appoint one of your volunteers as the commander.`); + if (V.arcologies[0].FSDegradationist === "unset" && V.arcologies[0].FSPaternalist === "unset") { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers are honored and pleased that one of their own is leading the defense force of the city.`); + } + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`Your slaves${(App.SecExp.battle.deployedUnits('militia') >= 1) ? `, however,` : ``}are not thrilled by the news.`); + } + } else if (V.arcologies[0].FSPaternalist !== "unset") { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers are honored and pleased that one of their own is leading the defense force of the city.`); + } + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`Thanks to your paternalistic society, your slave soldiers trust your chosen citizen to treat them as more than cannon fodder.`); + } + } else if (V.arcologies[0].FSDegradationist !== "unset") { + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers are honored and pleased that one of their own is leading the defense force of the city.`); + } + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`Because of your degradationist society,`); + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`however,`); + } + r.push(`your slave soldiers are deeply distrustful of the new leader.`); + } + } + if (V.arcologies[0].FSRomanRevivalist !== "unset" && App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Since you decided to revive old Rome, many of your citizens took on themselves to educate themselves in martial matters, because of this your mercenaries feel safe enough in the hands of one of your volunteers.`); + } else if (V.arcologies[0].FSNeoImperialist !== "unset" && App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Since having instituted an Imperial society, your citizens have become adept at modern warfare and your hardened mercenaries feel far more comfortable with one of your Imperial Knights in command.`); + } else if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries are not thrilled to be lead by a civilian without any formal martial training or education.`); + } + if (V.arcologies[0].FSRomanRevivalist !== "unset" && V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Since you decided to revive old Rome, many of your citizens took on themselves to educate themselves in martial matters, because of this your soldiers feel safe enough in the hands of one of your volunteers.`); + } else if (V.arcologies[0].FSNeoImperialist !== "unset" && App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Since having instituted an Imperial society, your citizens have become adept at modern warfare and the line soldiers feel much more comfortable being commanded by one of your Imperial Knights.`); + } else if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`You soldiers are not thrilled to be lead by a civilian without any formal martial training or education.`); + } + if (V.SecExp.war.leaderWounded) { + r.push(`During the battle a stray bullet managed to reach the leader. Your troops were greatly affected by the loss.`); + } + } else if (V.SecExp.war.commander === "mercenary") { + if (V.auto === 1) { + r.push(`${V.assistant.name}`); + } else { + r.push(`You`); + } + r.push(`decided to appoint one of your mercenary officers as the commander.`); + if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries of course approve of your decision.`); + } + if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`Your soldiers feel more confident going into battle with an experienced commander.`); + } + if (V.arcologies[0].FSRomanRevivalist !== "unset" && App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Since you decided to revive old Rome, your volunteers are more willing to trust one of your mercenaries as their leader.`); + } else if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers are not enthusiastic at the prospect of being commanded around by a gun for hire.`); + } + if (V.arcologies[0].FSDegradationist !== "unset" && App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`Because of your degradationist society, your slave soldiers are highly distrustful of the gun for hire you forced them to accept as leader.`); + } + if (V.SecExp.war.leaderWounded) { + r.push(`During the battle a stray bullet managed to reach the mercenary. Your troops were greatly affected by the loss of their leader.`); + } + } else if (V.SecExp.war.commander === "colonel") { + if (V.auto === 1) { + r.push(`${V.assistant.name}`); + } else { + r.push(`You`); + } + r.push(`decided to appoint The Colonel as the commander.`); + if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + r.push(`Your mercenaries approve of such decisions, as they feel more confident by having a good, experienced commander.`); + } + if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + r.push(`The soldiers of ${V.SF.Lower} obviously approved of your decision.`); + } + if (V.arcologies[0].FSRomanRevivalist !== "unset" && App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Since you decided to revive old Rome, your volunteers are more willing to trust one of your soldiers as their leader.`); + } else if (V.arcologies[0].FSNeoImperialist !== "unset" && App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Under the strict hierarchy of your Imperial society, the militia is more willing to follow the Colonel's commands.`); + } else if (App.SecExp.battle.deployedUnits('militia') >= 1) { + r.push(`Your volunteers are not enthusiastic at the prospect of being commanded around by an old style military officer.`); + } + if (V.arcologies[0].FSDegradationist !== "unset" && App.SecExp.battle.deployedUnits('slaves') >= 1) { + r.push(`Because of your degradationist society, your slave soldiers are highly distrustful of the soldier you forced them to accept as leader.`); + } + if (V.SecExp.war.leaderWounded) { + r.push(`During the battle a stray bullet managed to reach The Colonel, wounding her slightly. Your troops were greatly affected by the loss of their leader.`); + } + } + + App.Events.addParagraph(node, r); + r = []; + + /* tactics */ + if (V.auto === 1) { + r.push(`${V.assistant.name}`); + } else { + r.push(`You`); + } + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`chose to employ "bait and bleed" tactics or relying on quick attacks and harassment to tire and wound the enemy until their surrender.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`chose to employ "guerrilla" tactics or relying on stealth, terrain knowledge and subterfuge to undermine and ultimately destroy the enemy.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`chose to employ "choke points" tactics or the extensive use of fortified or highly defensive positions to slow down and eventually stop the enemy.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`chose to employ "interior lines" tactics or exploiting the defender's shorter front to quickly disengage and concentrate troops when and where needed.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`chose to employ "pincer maneuver" tactics or attempting to encircle the enemy by faking a collapsing center front.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`chose to employ "defense in depth" tactics or relying on mobility to disengage and exploit overextended enemy troops by attacking their freshly exposed flanks.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`chose to employ "blitzkrieg" tactics or shattering the enemy's front-line with a violent, concentrated armored assault.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`chose to employ "human wave" tactics or overwhelming the enemy's army with a massive infantry assault.`); + } + if (V.SecExp.war.terrain === "urban") { + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`The urban terrain synergized well with bait and bleed tactics, slowly chipping away at the enemy's forces from the safety of the narrow streets and empty buildings.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`The urban terrain synergized well with guerrilla tactics, eroding your enemy's determination from the safety of the narrow streets and empty buildings.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`The urban environment offers many opportunities to hunker down and stop the momentum of the enemy's assault while keeping your soldiers in relative safety.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`While the urban environment offers many highly defensive position, it does restrict movement and with it the advantages of exploiting interior lines.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`The urban terrain does not allow for wide maneuvers, the attempts of your forces to encircle the attackers are mostly unsuccessful.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`While the urban environment offers many defensive positions, it limits mobility, limiting the advantages of using a defense in depth tactic.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`The urban terrain is difficult to traverse, making your troops attempt at a lightning strike unsuccessful.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`The urban terrain offers great advantages to the defender, your men find themselves in great disadvantage while mass assaulting the enemy's position.`); + } + } else if (V.SecExp.war.terrain === "rural") { + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`The open terrain of rural lands does not lend itself well to bait and bleed tactics, making it harder for your men to achieve tactical superiority.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`The open terrain of rural lands does not offer many hiding spots, making it harder for your men to perform guerrilla actions effectively.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`The open terrain of rural lands does not offer many natural choke points, making it hard for your troops to funnel the enemy towards highly defended positions.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`The open terrain allows your men to easily exploit the superior mobility of the defender, making excellent use of interior lines to strike where it hurts.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`The open terrain affords your men great mobility, allowing them to easily position themselves for envelopment.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`The open terrain affords your men great mobility, allowing them to exploit overextended assaults and concentrate where and when it matters.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`The open terrain affords your men great mobility, making it easier to accomplish concentrated lightning strikes.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`The open terrain affords your men great mobility, making it easier to overwhelm the enemy with mass assaults.`); + } + } else if (V.SecExp.war.terrain === "hills") { + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`While the hills offer some protection, they also make it harder to maneuver; bait and bleed tactics will not be 100% effective here.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`The hills offer protection to both your troops and your enemy's, making it harder for your men to accomplish guerrilla attacks effectively.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`While not as defensible as mountains, hills offer numerous opportunities to funnel the enemy towards highly defensible choke points.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`The limited mobility on hills hampers the capability of your troops to exploit the defender's greater mobility afforded by interior lines.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`Limited mobility due to the hills is a double edged sword, affording your men a decent shot at encirclement.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`The limited mobility on hills hampers the capability of your troops to use elastic defense tactics.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`The limited mobility on hills hampers the capability of your troops to organize lightning strikes.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`The defensibility of hills makes it harder to accomplish victory through mass assaults.`); + } + } else if (V.SecExp.war.terrain === "coast") { + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`On the coast there's little space and protection to effectively employ bait and bleed tactics.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`On the coast there's little space and protection to effectively employ guerrilla tactics.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`Amphibious attacks are difficult in the best of situations; the defender has a very easy time funneling the enemy towards their key defensive positions.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`While in an amphibious landing mobility is not the defender's best weapon, exploiting interior lines still affords your troops some advantages.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`Attempting to encircle a landing party is not the best course of action, but not the worst either.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`In an amphibious assault it's very easy for the enemy to overextend, making defense in depth tactics quite effective.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`The rough, restricted terrain does not lend itself well to lightning strikes, but the precarious position of the enemy still gives your mobile troops tactical superiority.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`The rough, restricted terrain does not lend itself well to mass assaults, but the precarious position of the enemy still gives your troops tactical superiority.`); + } + } else if (V.SecExp.war.terrain === "outskirts") { + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`Fighting just beneath the walls of the arcology does not allow for the dynamic redeployment of troops bait and bleed tactics would require.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`Fighting just beneath the walls of the arcology does not allow for the dynamic redeployment of troops guerrilla tactics would require.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`The imposing structure of the arcology itself provides plenty of opportunities to create fortified choke points from which to shatter the enemy assault.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`While the presence of the arcology near the battlefield is an advantage, it does limit maneuverability, lowering overall effectiveness of interior lines tactics.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`While the presence of the arcology near the battlefield is an advantage, it does limit maneuverability, lowering the chances of making an effective encirclement.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`Having the arcology near the battlefield means there are limited available maneuvers to your troops, who still needs to defend the structure, making defense in depth tactics not as effective.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`While an assault may save the arcology from getting involved at all, having the imposing structure so near does limit maneuverability and so the impetus of the lightning strike.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`While an attack may save the arcology from getting involved at all, having the imposing structure so near does limit maneuverability and so the impetus of the mass assault.`); + } + } else if (V.SecExp.war.terrain === "mountains") { + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`While the mountains offer great protection, they also limit maneuverability; bait and bleed tactics will not be quite as effective here.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`The mountains offer many excellent hiding spots and defensive positions, making guerrilla tactics very effective.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`The mountains offer plenty of opportunity to build strong defensive positions from which to shatter the enemy's assault.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`While the rough terrain complicates maneuvers, the defensive advantages offered by the mountains offsets its negative impact.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective encirclement in this environment.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`While mobility is limited, defensive positions are plentiful; your men are not able to fully exploit overextended assaults, but are able to better resist them.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective lightning strike in this environment.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`The rough terrain complicates maneuvers; your men have a really hard time pulling off an effective mass assault in this environment.`); + } + } else if (V.SecExp.war.terrain === "wasteland") { + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + r.push(`While the wastelands are mostly open terrain, there are enough hiding spots to make bait and bleed tactics work well enough.`); + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + r.push(`While the wastelands are mostly open terrain, there are enough hiding spots to make guerrilla tactics work well enough.`); + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + r.push(`The wastelands are mostly open terrain; your men have a difficult time setting up effective fortified positions.`); + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + r.push(`The wastelands, while rough, are mostly open terrain, where your men can exploit to the maximum the superior mobility of the defender.`); + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + r.push(`The wastelands, while rough, are mostly open terrain; your men can set up an effective encirclement here.`); + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + r.push(`The wastelands, while rough, are mostly open terrain, allowing your men to liberally maneuver to exploit overextended enemies.`); + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + r.push(`The wastelands, while rough, are mostly open terrain, where your men are able to mount effective lightning strikes.`); + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + r.push(`The wastelands, while rough, are mostly open terrain, where your men are able to mount effective mass assaults.`); + } + } + + if (V.SecExp.war.chosenTactic === "Bait and Bleed") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`Since the bands of raiders are used to be on high alert and on the move constantly, bait and bleed tactics are not effective against them.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`The modern armies hired by Free Cities are decently mobile, which means quick hit and run attacks will be less successful, but their discipline and confidence still make them quite susceptible to this type of attack.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`While old world armies are tough nuts to crack, their predictability makes them the perfect target for hit and run and harassment tactics.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`Freedom fighters live every day as chasing and being chased by far superior forces, they are far more experienced than your troops in this type of warfare and much less susceptible to it.`); + } + } else if (V.SecExp.war.chosenTactic === "Guerrilla") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`Since the bands of raiders are used to be on high alert and on the move constantly, guerrilla tactics are not effective against them.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`The modern armies hired by Free Cities are highly mobile, which means quick hit and run attacks will be less successful, but their discipline and confidence still make them quite susceptible to this type of attack.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`While old world armies are tough nuts to crack, their predictability makes them the perfect target for hit and run and harassment tactics.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`Freedom fighters live every day as chasing and being chased by far superior forces, they are far more experienced than your troops in this type of warfare and much less susceptible to it.`); + } + } else if (V.SecExp.war.chosenTactic === "Choke Points") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`Raiders lack heavy weaponry or armor, so making use of fortified positions is an excellent way to dissipate the otherwise powerful momentum of their assault.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`The high tech equipment Free Cities can afford to give their guns for hire means there's no defensive position strong enough to stop them, still the relatively low numbers means they will have to take a careful approach, slowing them down.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`Old world armies have both the manpower and the equipment to conquer any defensive position, making use of strong fortifications will only bring you this far against them.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`The lack of specialized weaponry means freedom fighters have a rather hard time overcoming tough defensive positions, unfortunately they have also a lot of experience in avoiding them.`); + } + } else if (V.SecExp.war.chosenTactic === "Interior Lines") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`The highly mobile horde of raiders will not give much room for your troops to maneuver, lowering their tactical superiority.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`While decently mobile, Free Cities forces are not in high enough numbers to risk maintaining prolonged contact, allowing your troops to quickly disengage and redeploy where it hurts.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`Old world armies are not famous for the mobility, which makes them highly susceptible to any tactic that exploits maneuverability and speed.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`While not the best equipped army, the experience and mobility typical of freedom fighters groups make them tough targets for an army that relies itself on mobility.`); + } + } else if (V.SecExp.war.chosenTactic === "Pincer Maneuver") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`While numerous, the undisciplined masses of raiders are easy prey for encirclements.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`While decently mobile, the low number of Free Cities expedition forces make them good candidates for encirclements.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`The discipline and numbers of old world armies make them quite difficult to encircle.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`While not particularly mobile, freedom fighters are used to fight against overwhelming odds, diminishing the effectiveness of the encirclement.`); + } + } else if (V.SecExp.war.chosenTactic === "Defense In Depth") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`While their low discipline makes them prime candidates for an elastic defense type of strategy, their high numbers limit your troops maneuverability.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`With their low numbers Free Cities mercenaries are quite susceptible to this type of tactic, despite their mobility.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`With their low mobility old world armies are very susceptible to this type of strategy.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`Low mobility and not particularly high numbers mean freedom fighters can be defeated by employing elastic defense tactics.`); + } + } else if (V.SecExp.war.chosenTactic === "Blitzkrieg") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`With their low discipline and lack of heavy equipment, lightning strikes are very effective against raider hordes.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`Having good equipment and discipline on their side, Free Cities expeditions are capable of responding to even strong lightning strikes.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`While disciplined, old world armies low mobility makes them highly susceptible to lightning strikes.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`While not well equipped, freedom fighters have plenty of experience fighting small, mobile attacks, making them difficult to defeat with lightning strikes.`); + } + } else if (V.SecExp.war.chosenTactic === "Human Wave") { + if (V.SecExp.war.attacker.type === "raiders") { + r.push(`The hordes of raiders are much more experienced than your soldiers in executing mass assaults and they also have a lot more bodies to throw in the grinder.`); + } else if (V.SecExp.war.attacker.type === "free city") { + r.push(`The good equipment and mobility of Free Cities mercenaries cannot save them from an organized mass assault.`); + } else if (V.SecExp.war.attacker.type === "old world") { + r.push(`Unfortunately the discipline and good equipment of old world armies allow them to respond well against a mass assault.`); + } else if (V.SecExp.war.attacker.type === "freedom fighters") { + r.push(`The relative low numbers and not great equipment typical of freedom fighters make them susceptible to being overwhelmed by an organized mass assault.`); + } + } + r.push(`In the end`); + if (V.SecExp.war.commander === "PC") { + r.push(`you were`); + } else { + r.push(`your commander was`); + } + if (V.SecExp.war.tacticsSuccessful) { + r.push(`<span class="green">able to successfully employ ${V.SecExp.war.chosenTactic} tactics,</span> greatly enhancing`); + } else { + r.push(`<span class="red">not able to effectively employ ${V.SecExp.war.chosenTactic} tactics,</span> greatly affecting`); + } + r.push(`the efficiency of your army.`); + App.Events.addParagraph(node, r); + r = []; + node.append(unitsBattleReport()); + + if ( + V.SF.Toggle && V.SF.Active >= 1 && + (V.SF.Squad.Firebase >= 7 || V.SF.Squad.GunS >= 1 || V.SF.Squad.Satellite >= 5 || V.SF.Squad.GiantRobot >= 6 || V.SF.Squad.MissileSilo >= 1) + ) { + /* SF upgrades effects */ + App.Events.addParagraph(node, r); + r = []; + if (V.SF.Squad.Firebase >= 7) { + r.push(`The artillery pieces installed around ${V.SF.Lower}'s firebase provided vital fire support to the troops in the field.`); + } + if (V.SF.Squad.GunS >= 1) { + r.push(`The gunship gave our troops an undeniable advantage in recon capabilities, air superiority and fire support.`); + } + if (V.SF.Squad.Satellite >= 5 && V.SF.SatLaunched > 0) { + r.push(`The devastating power of ${V.SF.Lower}'s satellite was employed with great efficiency against the enemy.`); + } + if (V.SF.Squad.GiantRobot >= 6) { + r.push(`The giant robot of ${V.SF.Lower} proved to be a great boon to our troops, shielding many from the worst the enemy had to offer.`); + } + if (V.SF.Squad.MissileSilo >= 1) { + r.push(`The missile silo exterminated many enemy soldiers even before the battle would begin.`); + } + } + }/* closes check for surrender and bribery */ + + App.Events.addParagraph(node, r); + r = []; + + let menialPrice = Math.trunc((V.slaveCostFactor * 1000) / 100) * 100; + menialPrice = Math.clamp(menialPrice, 500, 1500); + + captives = Math.trunc(captives); + if (captives > 0) { + r.push(`During the battle ${captives} attackers were captured.`); + /* + if (random(1,100) <= 25) { + roll = random(1,100); + if (roll <= 33) { + r.push(`Three of them have the potential to be sex slaves.`); + candidates = 3; + + } else if (roll <= 66) { + r.push(`Two of them have the potential to be sex slaves.`); + candidates = 2; + } else { + r.push(`One of them have the potential to be sex slaves.`); + candidates = 1; + } + } + */ + const sell = function() { + cashX((menialPrice * captives), "menialTransfer"); + return `Captives sold`; + }; + + const keep = function() { + V.menials += captives; + return `Captives added as menial slaves`; + }; + + App.Events.addResponses(node, [ + new App.Events.Result(`sell them all immediately`, sell), + new App.Events.Result(`sell them all immediately`, keep), + ]); + } + + /* resets variables */ + V.majorBattle = 0; + V.SecExp.units.bots.isDeployed = 0; + for (const squad of App.SecExp.unit.humanSquads()) { + squad.isDeployed = 0; + } + App.Events.addParagraph(node, r); + return node; + + function unitsBattleReport() { + const el = document.createElement("div"); + if (V.SecExp.war.losses === 0) { + if (App.SecExp.battle.deployedUnits('bots')) { + App.UI.DOM.appendNewElement("div", el, `Security Drones: no casualties.`); + } + if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + App.UI.DOM.appendNewElement("div", el, `${num(V.SF.ArmySize)} soldiers from ${V.SF.Lower} joined the battle: no casualties suffered`); + } + const noCasualties = function(units) { + for (const unit of units) { + if (unit.isDeployed === 1) { + const r = [`${unit.platoonName}: no casualties.`]; + unit.battlesFought++; + if (unit.training < 100) { + if (random(1, 100) > 60) { + r.push(`Experience has increased.`); + unit.training += random(5, 15) + V.majorBattle * random(5, 15); + } + } + App.Events.addNode(el, r, "div"); + } + } + }; + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + noCasualties(V.SecExp.units.militia.squads); + } + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + noCasualties(V.SecExp.units.slaves.squads); + } + if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + noCasualties(V.SecExp.units.mercs.squads); + } + } else if (V.SecExp.war.losses > 0) { + /* if the losses are more than zero */ + /* generates a list of randomized losses, from which each unit picks one at random */ + let losses = V.SecExp.war.losses; + const averageLosses = Math.trunc(losses / App.SecExp.battle.deployedUnits()); + let validityCount = 0; + let assignedLosses; + for (let i = 0; i < App.SecExp.battle.deployedUnits(); i++) { + assignedLosses = Math.trunc(Math.clamp(averageLosses + random(-5, 5), 0, 100)); + if (assignedLosses > losses) { + assignedLosses = losses; + losses = 0; + } else { + losses -= assignedLosses; + } + lossesList.push(assignedLosses); + validityCount += assignedLosses; + } + if (losses > 0) { + lossesList[random(lossesList.length - 1)] += losses; + } + lossesList.shuffle(); + + /* sanity check for losses */ + let count = 0; + for (let i = 0; i < lossesList.length; i++) { + if (!Number.isInteger(lossesList[i])) { + lossesList[i] = 0; + } + count += lossesList[i]; + } + if (count < V.SecExp.war.losses) { + const rand = random(lossesList.length - 1); + lossesList[rand] += V.SecExp.war.losses - count; + } else if (count > V.SecExp.war.losses) { + const diff = count - V.SecExp.war.losses; + const rand = random(lossesList.length - 1); + lossesList[rand] = Math.clamp(lossesList[rand] - diff, 0, 100); + } + + /* assigns the losses and notify the player */ + if (App.SecExp.battle.deployedUnits('bots')) { + let loss = lossesList.pluck(); + loss = Math.clamp(loss, 0, V.SecExp.units.bots.troops); + V.SecExp.units.bots.troops -= loss; + const r = [`Security drones:`]; + if (loss <= 0) { + r.push(`no casualties`); + } else if (loss <= V.SecExp.units.bots.troops * 0.2) { + r.push(`light casualties`); + } else if (loss <= V.SecExp.units.bots.troops * 0.4) { + r.push(`moderate casualties`); + } else if (loss <= V.SecExp.units.bots.troops * 0.6) { + r.push(`heavy casualties`); + } else { + r.push(`catastrophic casualties`); + } + r.push(`suffered.`); + if (V.SecExp.units.bots.troops <= 5) { + V.SecExp.units.bots.active = 0; + r.push(`Unfortunately the losses they took were simply too great, their effective combatants are in so small number you can no longer call them a deployable unit. It will take quite the investment to rebuild them.`); + } else if (V.SecExp.units.bots.troops <= 10) { + r.push(`The unit has very few operatives left, it risks complete annihilation if deployed again.`); + } + App.Events.addNode(el, r, "div"); + } + if (V.SF.Toggle && V.SF.Active >= 1 && V.SecExp.war.deploySF) { + let loss = lossesList.pluck(); + loss = Math.clamp(loss, 0, V.SF.ArmySize); + const r = [`${num(V.SF.ArmySize)} soldiers from ${V.SF.Lower} joined the battle:`]; + if (loss <= 0) { + r.push(`no casualties`); + } else if (loss <= 10) { + r.push(`light casualties`); + } else if (loss <= 30) { + r.push(`moderate casualties`); + } else if (loss <= 60) { + r.push(`heavy casualties`); + } else { + r.push(`catastrophic casualties`); + } + r.push(`suffered.`); + V.SF.ArmySize -= loss; + App.Events.addNode(el, r, "div"); + } + if (App.SecExp.battle.deployedUnits('militia') >= 1) { + loopThroughUnits(V.SecExp.units.militia.squads); + } + if (App.SecExp.battle.deployedUnits('slaves') >= 1) { + loopThroughUnits(V.SecExp.units.slaves.squads); + } + if (App.SecExp.battle.deployedUnits('mercs') >= 1) { + loopThroughUnits(V.SecExp.units.militia.squads); + } + } else { + App.UI.DOM.appendNewElement("div", el, `Error: losses are a negative number or NaN`, "red"); + }/* closes check for more than zero casualties */ + return el; + + function loopThroughUnits(units) { + for (const unit of units) { + if (unit.isDeployed === 1) { + unit.battlesFought++; + let loss = lossesList.pluck(); + loss = Math.clamp(loss, 0, unit.troops); + const r = [`${unit.platoonName}:`]; + if (loss <= 0) { + r.push(`no casualties`); + } else if (loss <= unit.troops * 0.2) { + r.push(`light casualties`); + } else if (loss <= unit.troops * 0.4) { + r.push(`moderate casualties`); + } else if (loss <= unit.troops * 0.6) { + r.push(`heavy casualties`); + } else { + r.push(`catastrophic casualties`); + } + r.push(`suffered.`); + const med = Math.round(Math.clamp(loss * unit.medics * 0.25, 1, loss)); + if (unit.medics === 1 && loss > 0) { + r.push(`Some men were saved by their medics.`); + } + unit.troops -= Math.trunc(Math.clamp(loss - med, 0, unit.maxTroops)); + V.SecExp.units.militia.dead += Math.trunc(loss - med); + if (unit.training < 100) { + if (random(1, 100) > 60) { + r.push(`Experience has increased.`); + unit.training += random(5, 15) + V.majorBattle * random(5, 15); + } + } + App.Events.addNode(el, r, "div"); + if (unit.troops <= 5) { + unit.active = 0; + App.UI.DOM.appendNewElement("div", el, `Unfortunately the losses they took were simply too great, their effective combatants are in so small number you can no longer call them a deployable unit. The remnants will be sent home honored as veterans or reorganized in a new unit.`); + } else if (unit.troops <= 10) { + App.UI.DOM.appendNewElement("div", el, `The unit has very few operatives left, it risks complete annihilation if deployed again.`); + } + } + } + } + } +}; diff --git a/src/Mods/SecExp/rebellionHandler.tw b/src/Mods/SecExp/events/rebellionHandler.tw similarity index 100% rename from src/Mods/SecExp/rebellionHandler.tw rename to src/Mods/SecExp/events/rebellionHandler.tw diff --git a/src/Mods/SecExp/rebellionOptions.tw b/src/Mods/SecExp/events/rebellionOptions.tw similarity index 100% rename from src/Mods/SecExp/rebellionOptions.tw rename to src/Mods/SecExp/events/rebellionOptions.tw diff --git a/src/Mods/SecExp/rebellionReport.tw b/src/Mods/SecExp/events/rebellionReport.tw similarity index 100% rename from src/Mods/SecExp/rebellionReport.tw rename to src/Mods/SecExp/events/rebellionReport.tw diff --git a/src/Mods/SecExp/secExpSmilingMan.tw b/src/Mods/SecExp/events/secExpSmilingMan.tw similarity index 100% rename from src/Mods/SecExp/secExpSmilingMan.tw rename to src/Mods/SecExp/events/secExpSmilingMan.tw diff --git a/src/Mods/SecExp/unitsRebellionReport.tw b/src/Mods/SecExp/events/unitsRebellionReport.tw similarity index 100% rename from src/Mods/SecExp/unitsRebellionReport.tw rename to src/Mods/SecExp/events/unitsRebellionReport.tw diff --git a/src/Mods/SecExp/js/Unit.js b/src/Mods/SecExp/js/Unit.js index 61222d95029009ce568178e5605cc15884aa0f27..5e40ff7b1844fb2f282e614f0d173a060988c6db 100644 --- a/src/Mods/SecExp/js/Unit.js +++ b/src/Mods/SecExp/js/Unit.js @@ -274,9 +274,10 @@ App.SecExp.unit = (function() { } options = document.createElement("div"); options.append(App.UI.DOM.link(`${canDeploy ? 'Deploy' : 'Remove'} the unit`, () => { - input.isDeployed = canDeploy ? 1 : 0; V.SecExp.war.saveValid = 0; - }, - [], passage() + input.isDeployed = canDeploy ? 1 : 0; + V.SecExp.war.saveValid = 0; + App.UI.reload(); + } )); } el.append(options); diff --git a/src/Mods/SecExp/js/secExp.js b/src/Mods/SecExp/js/secExp.js index a42b9592b7aa356183c97b48a7f26fe126dfed64..be6f467b4c9e93574b4b590acb2393ee124793ed 100644 --- a/src/Mods/SecExp/js/secExp.js +++ b/src/Mods/SecExp/js/secExp.js @@ -727,7 +727,11 @@ App.SecExp.battle = (function() { * @returns {number} */ function activeUnits() { - return (jsDef(V.SecExp.units.bots.active) ? V.SecExp.units.bots.active : 0) + App.SecExp.unit.humanSquads().length; + if (V.secExpEnabled > 0) { + return (jsDef(V.SecExp.units.bots.active) ? V.SecExp.units.bots.active : 0) + App.SecExp.unit.humanSquads().length; + } else { + return 0; + } } /** Get maximum active units diff --git a/src/Mods/SecExp/potentialToDo.txt b/src/Mods/SecExp/potentialToDo.txt index 5e2f32e9951cd2d2bf547878af1e2f2e6d23370b..488310875d036463afb62232e545990f7bfe81d8 100644 --- a/src/Mods/SecExp/potentialToDo.txt +++ b/src/Mods/SecExp/potentialToDo.txt @@ -21,7 +21,6 @@ Hexall90's last merged commit: 52dde0b3 - How to make threads - 355478 - One thing I find to be weird/stupid is that facilities must be manned with menial slaves. I think that it instead should be an option, like with armies, to man them with free citizens instead who then do a better job but instead require a monthly wage. - Oni-girl soldiers. -- Modify DOL battle scene to recognize SecExp units. - Update encyclopedia entry to reflect above. - Add suicide units. - Add WarAnimal's units - Optimally Functioning Code, 254511 - 3rd Military Animal Platoon. diff --git a/src/Mods/SecExp/unitsBattleReport.tw b/src/Mods/SecExp/unitsBattleReport.tw deleted file mode 100644 index 67744f41dee12a29daece5868eadf21a2ee732ff..0000000000000000000000000000000000000000 --- a/src/Mods/SecExp/unitsBattleReport.tw +++ /dev/null @@ -1,259 +0,0 @@ -:: unitsBattleReport [nobr] - -<<if $SecExp.war.losses == 0>> - <<if App.SecExp.battle.deployedUnits('bots')>> - <br>Security Drones: no casualties. - <</if>> - <<if $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - <br><<print num($SF.ArmySize)>> soldiers from $SF.Lower joined the battle: no casualties suffered. - <</if>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - <<for _j = 0; _j < $SecExp.units.militia.squads.length; _j++>> - <<if $SecExp.units.militia.squads[_j].isDeployed == 1>> - <br>$SecExp.units.militia.squads[_j].platoonName: no casualties. - <<set $SecExp.units.militia.squads[_j].battlesFought++>> - <<if $SecExp.units.militia.squads[_j].training < 100>> - <<if random(1,100) > 60>> - Experience has increased. - <<set $SecExp.units.militia.squads[_j].training += random(5,15) + $majorBattle * random(5,15)>> - <</if>> - <</if>> - <</if>> - <</for>> - <</if>> - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - <<for _j = 0; _j < $SecExp.units.slaves.squads.length; _j++>> - <<if $SecExp.units.slaves.squads[_j].isDeployed == 1>> - <br>$SecExp.units.slaves.squads[_j].platoonName: no casualties. - <<set $SecExp.units.slaves.squads[_j].battlesFought++>> - <<if $SecExp.units.slaves.squads[_j].training < 100>> - <<if random(1,100) > 60>> - Experience has increased. - <<set $SecExp.units.slaves.squads[_j].training += random(5,15) + $majorBattle * random(5,15)>> - <</if>> - <</if>> - <</if>> - <</for>> - <</if>> - <<if App.SecExp.battle.deployedUnits('mercs') >= 1>> - <<for _j = 0; _j < $SecExp.units.mercs.squads.length; _j++>> - <<if $SecExp.units.mercs.squads[_j].isDeployed == 1>> - <br>$SecExp.units.mercs.squads[_j].platoonName: no casualties. - <<set $SecExp.units.mercs.squads[_j].battlesFought++>> - <<if $SecExp.units.mercs.squads[_j].training < 100>> - <<if random(1,100) > 60>> - Experience has increased. - <<set $SecExp.units.mercs.squads[_j].training += random(5,15) + $majorBattle * random(5,15)>> - <</if>> - <</if>> - <</if>> - <</for>> - <</if>> -<<elseif $SecExp.war.losses > 0>> - /* if the losses are more than zero */ - /* generates a list of randomized losses, from which each unit picks one at random */ - <<set _losses = $SecExp.war.losses>> - <<set _averageLosses = Math.trunc(_losses / App.SecExp.battle.deployedUnits())>> - <<set _lossesList = []>> - <<set _validityCount = 0>> - <<for _i = 0; _i < App.SecExp.battle.deployedUnits(); _i++>> - <<set _assignedLosses = Math.trunc(Math.clamp(_averageLosses + random(-5,5), 0, 100))>> - <<if _assignedLosses > _losses>> - <<set _assignedLosses = _losses>> - <<set _losses = 0>> - <<else>> - <<set _losses -= _assignedLosses>> - <</if>> - <<set _lossesList.push(_assignedLosses)>> - <<set _validityCount += _assignedLosses>> - <</for>> - <<if _losses > 0>> - <<set _lossesList[random(_lossesList.length - 1)] += _losses>> - <</if>> - <<set _lossesList.shuffle()>> - - /* sanity check for losses */ - <<set _count = 0>> - <<for _i = 0; _i < _lossesList.length; _i++>> - <<if !Number.isInteger(_lossesList[_i])>> - <<set _lossesList[_i] = 0>> - <</if>> - <<set _count += _lossesList[_i]>> - <</for>> - <<if _count < $SecExp.war.losses>> - <<set _rand = random(_lossesList.length - 1)>> - <<set _lossesList[_rand] += $SecExp.war.losses - _count>> - <<elseif _count > $SecExp.war.losses>> - <<set _diff = _count - $SecExp.war.losses>> - <<set _rand = random(_lossesList.length - 1)>> - <<set _lossesList[_rand] = Math.trunc(_lossesList[_rand]-_diff,0,100)>> - <</if>> - - /* assigns the losses and notify the player */ - <<if App.SecExp.battle.deployedUnits('bots')>> - <<set _loss = _lossesList.pluck()>> - <<set _loss = Math.clamp(_loss,0,$SecExp.units.bots.troops)>> - <<set $SecExp.units.bots.troops -= _loss>> - <br>Security drones: - <<if _loss <= 0>> - no casualties - <<elseif _loss <= $SecExp.units.bots.troops * 0.2>> - light casualties - <<elseif _loss <= $SecExp.units.bots.troops * 0.4>> - moderate casualties - <<elseif _loss <= $SecExp.units.bots.troops * 0.6>> - heavy casualties - <<else>> - catastrophic casualties - <</if>> - suffered. - <<if $SecExp.units.bots.troops <= 5>> - <<set $SecExp.units.bots.active = 0>> - Unfortunately the losses they took were simply too great, their effective combatants are in so small number you can no longer call them a deployable unit. It will take quite the investment to rebuild them. - <<elseif $SecExp.units.bots.troops <= 10>> - The unit has very few operatives left, it risks complete annihilation if deployed again. - <</if>> - <br> - <</if>> - <<if $SF.Toggle && $SF.Active >= 1 && $SecExp.war.deploySF>> - <<set _loss = _lossesList.pluck()>> - <<set _loss = Math.clamp(_loss,0,$SF.ArmySize)>> - <br> <<print num($SF.ArmySize)>> soldiers from $SF.Lower joined the battle: - <<if _loss <= 0>> - no casualties - <<elseif _loss <= 10>> - light casualties - <<elseif _loss <= 30>> - moderate casualties - <<elseif _loss <= 60>> - heavy casualties - <<else>> - catastrophic casualties - <</if>> - suffered. - <<set $SF.ArmySize -= _loss>> - <br> - <</if>> - <<if App.SecExp.battle.deployedUnits('militia') >= 1>> - <<for _j = 0; _j < $SecExp.units.militia.squads.length; _j++>> - <<if $SecExp.units.militia.squads[_j].isDeployed == 1>> - <<set $SecExp.units.militia.squads[_j].battlesFought++>> - <<set _loss = _lossesList.pluck()>> - <<set _loss = Math.clamp(_loss,0,$SecExp.units.militia.squads[_j].troops)>> - <br>$SecExp.units.militia.squads[_j].platoonName: - <<if _loss <= 0>> - no casualties - <<elseif _loss <= $SecExp.units.militia.squads[_j].troops * 0.2>> - light casualties - <<elseif _loss <= $SecExp.units.militia.squads[_j].troops * 0.4>> - moderate casualties - <<elseif _loss <= $SecExp.units.militia.squads[_j].troops * 0.6>> - heavy casualties - <<else>> - catastrophic casualties - <</if>> - suffered. - <<set _med = Math.round(Math.clamp(_loss * $SecExp.units.militia.squads[_j].medics * 0.25,1,_loss))>> - <<if $SecExp.units.militia.squads[_j].medics == 1 && _loss > 0>> - Some men were saved by their medics. - <</if>> - <<set $SecExp.units.militia.squads[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$SecExp.units.militia.squads[_j].maxTroops))>> - <<set $SecExp.units.militia.dead += Math.trunc(_loss - _med)>> - <<if $SecExp.units.militia.squads[_j].training < 100>> - <<if random(1,100) > 60>> - Experience has increased. - <<set $SecExp.units.militia.squads[_j].training += random(5,15) + $majorBattle * random(5,15)>> - <</if>> - <</if>> - <<if $SecExp.units.militia.squads[_j].troops <= 5>> - <<set $SecExp.units.militia.squads[_j].active = 0>> - <br>Unfortunately the losses they took were simply too great, their effective combatants are in so small number you can no longer call them a deployable unit. The remnants will be sent home honored as veterans or reorganized in a new unit. - <<elseif $SecExp.units.militia.squads[_j].troops <= 10>> - <br>The unit has very few operatives left, it risks complete annihilation if deployed again. - <</if>> - <</if>> - <</for>> - <</if>> - <<if App.SecExp.battle.deployedUnits('slaves') >= 1>> - <<for _j = 0; _j < $SecExp.units.slaves.squads.length; _j++>> - <<if $SecExp.units.slaves.squads[_j].isDeployed == 1>> - <<set $SecExp.units.slaves.squads[_j].battlesFought++>> - <<set _loss = _lossesList.pluck()>> - <<set _loss = Math.clamp(_loss,0,$SecExp.units.slaves.squads[_j].troops)>> - <br>$SecExp.units.slaves.squads[_j].platoonName: - <<if _loss <= 0>> - no casualties - <<elseif _loss <= $SecExp.units.slaves.squads[_j].troops * 0.2>> - light casualties - <<elseif _loss <= $SecExp.units.slaves.squads[_j].troops * 0.4>> - moderate casualties - <<elseif _loss <= $SecExp.units.slaves.squads[_j].troops * 0.6>> - heavy casualties - <<else>> - catastrophic casualties - <</if>> - suffered. - <<set _med = Math.round(Math.clamp(_loss * $SecExp.units.slaves.squads[_j].medics * 0.25,1,_loss))>> - <<if $SecExp.units.slaves.squads[_j].medics == 1 && _loss > 0>> - Some men were saved by their medics. - <</if>> - <<set $SecExp.units.slaves.squads[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$SecExp.units.slaves.squads[_j].maxTroops))>> - <<set $SecExp.units.slaves.dead += Math.trunc(_loss - _med)>> - <<if $SecExp.units.slaves.squads[_j].training < 100>> - <<if random(1,100) > 60>> - Experience has increased. - <<set $SecExp.units.slaves.squads[_j].training += random(5,15) + $majorBattle * random(5,15)>> - <</if>> - <</if>> - <<if $SecExp.units.slaves.squads[_j].troops <= 5>> - <<set $SecExp.units.slaves.squads[_j].active = 0>> - <br>Unfortunately the losses they took were simply too great, their effective combatants are in so small number you can no longer call them a deployable unit. The survivors will be sent home honored as veterans or reorganized in a new unit. - <<elseif $SecExp.units.slaves.squads[_j].troops <= 10>> - <br>The unit has very few operatives left, it risks complete annihilation if deployed again. - <</if>> - <</if>> - <</for>> - <</if>> - <<if App.SecExp.battle.deployedUnits('mercs') >= 1>> - <<for _j = 0; _j < $SecExp.units.mercs.squads.length; _j++>> - <<if $SecExp.units.mercs.squads[_j].isDeployed == 1>> - <<set $SecExp.units.mercs.squads[_j].battlesFought++>> - <<set _loss = _lossesList.pluck()>> - <<set _loss = Math.clamp(_loss,0,$SecExp.units.mercs.squads[_j].troops)>> - <br>$SecExp.units.mercs.squads[_j].platoonName: - <<if _loss <= 0>> - no casualties - <<elseif _loss <= $SecExp.units.mercs.squads[_j].troops * 0.2>> - light casualties - <<elseif _loss <= $SecExp.units.mercs.squads[_j].troops * 0.4>> - moderate casualties - <<elseif _loss <= $SecExp.units.mercs.squads[_j].troops * 0.6>> - heavy casualties - <<else>> - catastrophic casualties - <</if>> - suffered. - <<set _med = Math.round(Math.clamp(_loss * $SecExp.units.mercs.squads[_j].medics * 0.25,1,_loss))>> - <<if $SecExp.units.mercs.squads[_j].medics == 1 && _loss > 0>> - Some men were saved by their medics. - <</if>> - <<set $SecExp.units.mercs.squads[_j].troops -= Math.trunc(Math.clamp(_loss - _med,0,$SecExp.units.mercs.squads[_j].maxTroops))>> - <<set $SecExp.units.mercs.dead += Math.trunc(_loss - _med)>> - <<if $SecExp.units.mercs.squads[_j].training < 100>> - <<if random(1,100) > 60>> - Experience has increased. - <<set $SecExp.units.mercs.squads[_j].training += random(5,15) + $majorBattle * random(5,15)>> - <</if>> - <</if>> - <<if $SecExp.units.mercs.squads[_j].troops <= 5>> - <<set $SecExp.units.mercs.squads[_j].active = 0>> - <br>Unfortunately the losses they took were simply too great, their effective combatants are in so small number you can no longer call them a deployable unit. The remnants will be sent home honored as veterans or reorganized in a new unit. - <<elseif $SecExp.units.mercs.squads[_j].troops <= 10>> - <br>The unit has very few operatives left, it risks complete annihilation if deployed again. - <</if>> - <</if>> - <</for>> - <</if>> -<<else>> - <br>@@.red;Error: losses are a negative number or NaN@@ -<</if>> /* closes check for more than zero casualties */ \ No newline at end of file diff --git a/src/events/RE/reRoyalBlood.js b/src/events/RE/reRoyalBlood.js index a6b9ab51044100081d3e45246a0881c091a6be27..775ab9641a222d49a4a9d5d33a03a5256885b59c 100644 --- a/src/events/RE/reRoyalBlood.js +++ b/src/events/RE/reRoyalBlood.js @@ -598,6 +598,7 @@ App.Events.RERoyalBlood = class RERoyalBlood extends App.Events.BaseEvent { slave.skill.oral = 0; setHealth(slave, jsRandom(30, 60), 0, 0, 0, 0); slave.behavioralFlaw = either("arrogant", "bitchy"); + setMissingParents(slave); // set .father so the prince will be a full sibling return slave; } diff --git a/src/events/nonRandom/daughters/pCoupAttempt.tw b/src/events/nonRandom/daughters/pCoupAttempt.tw index 9f6ee5026521a3eb20f58622362ae5bece70c290..5839cc217ec274cfcf0cb2d79033045397467adf 100644 --- a/src/events/nonRandom/daughters/pCoupAttempt.tw +++ b/src/events/nonRandom/daughters/pCoupAttempt.tw @@ -1,6 +1,7 @@ :: P coup attempt [nobr] <<set $nextButton = "Continue", $daughtersVictory = 1>> +<<set _SecExpUnits = App.SecExp.battle.activeUnits()>> <<if $traitor != 0>> <<set _weeks = $traitorWeeks-1, _pregWeeks = $traitorWeeks-1, $traitorWeeks = 0>> @@ -65,9 +66,7 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc <br><br> -<<if ($mercenaries == 0) && ($arcologies[0].FSRomanRevivalistLaw == 0)>> - You are alone in contributing to the defense of your home. -<<elseif ($mercenaries == 0) && ($arcologies[0].FSNeoImperialistLaw1 == 0)>> +<<if _SecExpUnits === 0 && $mercenaries === 0 && $arcologies[0].FSRomanRevivalistLaw === 0 && $arcologies[0].FSNeoImperialistLaw1 === 0>> You are alone in contributing to the defense of your home. <<elseif $mercenaries == 1>> Your mercenaries desperately defend their barracks but manage little else. @@ -83,10 +82,22 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc As the rebels reel back from the shockingly organized initial resistance of your always-ready Imperial Knights and their lightly-armed but fanatically determined guardsmen, it becomes increasingly clear just how well prepared your arcology was for this exact event. Even as fires rage through the streets of your home, Knights clamber forward through the rebel lines practically undisturbed by the fire that clatters off their enormously thick plate, laying down explosive volleys with enormous heavy guns and launching themselves into outright melee with their holographic weapons. <</if>> +<<if _SecExpUnits >= 4>> + Your + <<if _SecExpUnits >= 9>> + massive + <<elseif _SecExpUnits >= 7>> + huge + <<elseif _SecExpUnits >= 4>> + small + <</if>> + private army quickly and efficently contribues to the defense of $arcologies[0].name. +<</if>> + <br><br> <<set _newSlaves = []>> -<<if $arcologies[0].FSRomanRevivalistLaw + $arcologies[0].FSNeoImperialistLaw1 + $mercenaries + $personalArms + $hackerSupport + _doubleAgent > 8>> +<<if (_SecExpUnits/2) + $arcologies[0].FSRomanRevivalistLaw + $arcologies[0].FSNeoImperialistLaw1 + $mercenaries + $personalArms + $hackerSupport + _doubleAgent > 8>> @@.yellow;The Daughters of Liberty are utterly crushed.@@ $arcologies[0].name has been slightly damaged, but even as the last pockets of resistance are crushed, your citizens begin repairs themselves. The effect on your reputation is @@.green;immensely positive,@@ since your victory was insultingly easy and barely set the arcology's prosperity back at all. You also took a truly impressive bag of prisoners. <<set $daughtersVictory = 3>> <<run cashX(-2000, "war")>> diff --git a/src/events/nonRandom/pRaped.js b/src/events/nonRandom/pRaped.js new file mode 100644 index 0000000000000000000000000000000000000000..eef0dbbd321b8cafb7a1ec173ead9a24603fd8b5 --- /dev/null +++ b/src/events/nonRandom/pRaped.js @@ -0,0 +1,499 @@ +App.Events.pRaped = class pRaped extends App.Events.BaseEvent { + constructor(actors, params) { + super(actors, params); + } + + eventPrerequisites() { + return [ + () => App.Events.effectiveWeek() === 12, + () => V.raped === -1, + () => V.arcologyUpgrade.drones !== 1, + () => V.BodyguardID === 0, + () => V.PC.career !== "arcology owner" + ]; + } + + execute(node) { + let r = []; + const { + hisP, womanP, girlP + } = getPronouns(V.PC).appendSuffix("P"); + V.raped = 1; + + const genParam = {minAge: 16, race: "nonslave", disableDisability: 1}; + let rapist; + const contractCost = 1000; + if (V.PC.vagina >= 0) { + rapist = GenerateNewSlave("XY", genParam); + rapist.dick = 6; + rapist.balls = 5; + rapist.boobs = 0; + rapist.waist = 50; + rapist.skill.oral = 0; + rapist.skill.anal = 0; + } else { + rapist = GenerateNewSlave("XX", genParam); + rapist.vagina = 1; + rapist.preg = 0; + rapist.weight = random(-20, 30); + rapist.waist = -20; + } + rapist.origin = `You sentenced $him to enslavement for the attempted rape of a free ${womanP}.`; + rapist.devotion = -100; + rapist.trust = -100; + setHealth(rapist, jsRandom(-40, -20), normalRandInt(15, 3), undefined, 1, jsRandom(30, 80)); + rapist.anus = 0; + rapist.behavioralFlaw = "arrogant"; + rapist.sexualFlaw = "judgemental"; + + const { + He, + his, he, him, himself, woman + } = getPronouns(rapist); + + r.push(`While returning from a meeting with a prospective investor, an unfortunate wrong turn has led you into a rather seedy area of your arcology. You feel distinctly uncomfortable for some reason.`); + + if (V.PC.career === "mercenary" || V.PC.skill.warfare >= 85) { + r.push(`The moment you hear the sound of the knife unsheathe your reflexes take over. With a single strike, the ${woman} tailing you lies in a heap on the ground.`); + V.raped = 0; + } else if (V.PC.career === "slaver" || V.PC.skill.warfare >= 45) { + r.push(`The moment you notice an arm coming around from behind you does your training kick in. You quickly disarm the assailant and knock them to the floor before placing them in a choke-hold. Once they are subdued, you stand back to decide what to do next.`); + V.raped = 0; + } else if (V.PC.career === "gang") { + r.push(`The moment you hear the sound of the knife unsheathe your reflexes take over. With a single stab, your own shiv is buried in ${his} chest, incapacitating ${him}.`); + V.raped = 0; + } else { + r.push(`You stifle a`); + if (V.PC.title === 1) { + r.push(`swear`); + } else { + r.push(`scream`); + } + r.push(`when you feel your arm grabbed and the knife pressed to your throat, knowing that it will only end badly for you in this place.`); + } + App.Events.addParagraph(node, r); + if (V.raped === 1) { + r = []; + V.fcnn.push("...plans for increased security measures, but refused to answer questions regarding..."); + if (V.PC.vagina >= 0) { + r.push(Spoken(rapist, `"Well, well, well, look what ${(V.PC.belly >= 5000 || V.PC.preg >= 20) ? `waddled` : `walked`} into my territory. If it isn't ${V.PC.slaveName}, come to grace me with ${hisP} presence."`)); + } else { + r.push(Spoken(rapist, `"I've been watching you ever since you first moved in, ${V.PC.slaveName}, waiting for the perfect moment to make you mine. We are going to have a little fun, you and I."`)); + } + r.push(`The ${woman} binds your hands behind you, all the while keeping the knife to your throat.`); + r.push(Spoken(rapist, `"Smart keeping your mouth shut; maybe I won't have to hurt you. Heh, I know what you're thinking, that you'll find out who I am and punish me. Don't worry, I made sure to not to leave you any trails to follow. Now let's see what we have here."`)); + + if (V.PC.vagina >= 0) { + r.push(`With ${his} free hand, ${he} begins to explore your vulnerable body.`); + switch (V.PC.career) { + case "wealth": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. How much did you have to pay for these babies?"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"Couldn't afford an abortion after you took over? How sad,"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"Went with the full package didn't you?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + } + break; + case "capitalist": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. Bet these got you some great deals with guys, didn't they?"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"Sleeping with guys to close deals? Such a slut,"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"Guess you fuck people over in more ways than one, don't you?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + } + break; + case "engineer": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. Did the other engineers care about your designs or just your tits?"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"I can see why your designs were so popular, you fucked your way into the spotlight!"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"Well you do know how to erect things, don't you?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + } + break; + case "medicine": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. Did you implant them yourself?"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"Look at that belly! I bet you inseminated yourself with your own seed,"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } else { + r.push(Spoken(rapist, `"I see how you work. Mess up a surgery and give the guy a pity fuck. Surprised you couldn't get their spawn out of your belly though. Guess you aren't that good of a surgeon,"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"I'm impressed. Your woman impression is quite good. Did you do the surgery yourself?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + r.push(Spoken(rapist, `"Still going to fuck you though."`)); + } + break; + case "celebrity": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. I wonder how many guys jacked off to your pictures?"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"I can see how you got so popular!"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"How much tape did it take to hold this guy down?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + } + break; + case "escort": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and soft. How many dicks have been between these babies?"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"What kind of whore doesn't know about protection?"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"So, did you ever get to use this when you were a prostitute?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + } + break; + case "servant": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. Bet your Master spent a fortune making these so nice,"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"Holding on to your Master's final gift are you?"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"When your Master first undressed you, what did he think of his 'girl'?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + } + break; + case "BlackHat": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. What are the odds that I can find these babies on the internet?"`)); + r.push(`he smirks as he gropes your breasts.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"You'd think someone so skilled at breaking security would understand protection themselves. Or did you trade your pussy for information?"`)); + r.push(`he chuckles as he rubs your pregnant belly.`); + } + if (V.PC.dick > 0) { + r.push(Spoken(rapist, `"Trying to catch a signal with that?"`)); + r.push(`he mocks as he flicks the tip of your stiffening cock.`); + } + } + r.push(`Finally he reaches your moistening pussy.`); + r.push(Spoken(rapist, `"Already wet are we? Glad you know your place,"`)); + r.push(`he states as he pulls your clothes off and bends you over.`); + if (V.PC.vagina === 0) { + r.push(Spoken(rapist, `"And you still have your innocence, how delightful!"`)); + } + App.Events.addParagraph(node, r); + r = []; + r.push(`You can feel the head of his cock teasing your`); + if (V.PC.vagina === 0) { + r.push(`virgin pussy; you grit your teeth knowing what will come next. Without mercy, he <span class="red">tears through your hymen</span> and forces himself as deep as your tight pussy lets him. You choke back a sob as he struggles to hilt himself in you. He must have undergone surgery or something because there is no way your body can handle such a monster. You're in agony already - you can't fathom what will happen when he loses his patience.`); + } else { + r.push(`pussy lips; you hope it feels bigger than it really is. As he struggles to force it into you, you regret thinking about it. He must have undergone surgery or something because he fills you completely. You feel weak just from him sticking it in, you can't fathom what will happen once he starts thrusting.`); + } + r.push(`You soon find out as he wastes no time starting slow. He violently rams his oversized cock deep into you, threatening to penetrate your cervix with each thrust. He quickens his pace, fucking you like a beast.`); + if (V.PC.preg < 1) { + if (random(1, 100) > 60) { + r.push(`His hand rises to your lips and forces something into your mouth.`); + r.push(Spoken(rapist, `"Swallow it."`)); + r.push(`You obey, hoping to just get this over with.`); + V.PC.forcedFertDrugs += 3; + } + r.push(`With one final thrust, he forces through your battered cervix and unloads in the depths of your`); + if (canGetPregnant(V.PC)) { + r.push(`fertile`); + } + r.push(`womb.`); + } else { + r.push(`With one final thrust, he forces it in as deep as he can into you and blows his seed deep in your aching cunt.`); + } + if (V.PC.preg >= 20 || V.PC.belly >= 5000) { + r.push(Spoken(rapist, `"Now your ${(V.PC.pregType > 1) ? `children` : `child`} will know what a real man's sperm is like!"`)); + } + r.push(`He shoves you to the ground, pussy gaping from the size of his shaft and leaking his huge load all over yourself. By the time you loosen your bindings, he is long gone.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`It would be prudent to up security in your arcology. That or take a guard along when you leave the penthouse. Such a thing, happening to you. You can't allow such an indignity to happen again,`); + if (V.PC.vagina === 0) { + r.push(`not that you'll ever get your first time back,`); + } else { + r.push(`you think to yourself,`); + } + r.push(`as you try to coax his sperm from your abused pussy.`); + if (canGetPregnant(V.PC)) { + r.push(`For some reason your body feels really satisfied, despite`); + if (V.PC.vagina === 0) { + r.push(`what transpired`); + } else { + r.push(`not climaxing`); + } + r.push(`... Is this what it feels like to be bred by someone so dominant? You should take a pregnancy test right away and make sure he didn't knock you up.`); + r.push(knockMeUp(V.PC, 100, 0, -2, true)); + } + if (V.PC.vagina === 0) { + V.PC.vagina++; + } + } else { + r.push(`With ${his} free hand, ${he} begins to explore your bound body.`); + switch (V.PC.career) { + case "wealth": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Spared no expenses for these babies, did you?"`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants.`); + r.push(Spoken(rapist, `"Now there's the money maker!"`)); + break; + case "capitalist": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Ever wonder if they were listening to you or just ogling the man with the breasts?"`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants.`); + r.push(Spoken(rapist, `"Now that explains how you were so successful!"`)); + break; + case "engineer": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"How did you get any work done with these hanging over your designs?"`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants.`); + r.push(Spoken(rapist, `"I see what kind of tools you like. Big and strong!"`)); + break; + case "medicine": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"I'm sure you had quite the number of clients after a pair of these,"`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants.`); + r.push(Spoken(rapist, `"Huh, I wonder if that's real..."`)); + break; + case "celebrity": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. Just like I'd expect from a man sporting tits."`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants;`); + r.push(Spoken(rapist, `"Oh, now those tabloids make sense."`)); + break; + case "escort": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"With these hanging out, how many men tried to pick you up?"`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants.`); + r.push(Spoken(rapist, `"Now there's the money maker!"`)); + break; + case "servant": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Did your Master even ask before he stuck you with these?"`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants.`); + r.push(Spoken(rapist, `"Now that's surprising. I expected something smaller."`)); + break; + case "BlackHat": + if (V.PC.boobs >= 300) { + r.push(Spoken(rapist, `"Nice and supple. What are the odds that I can find these babies on the internet?"`)); + r.push(`${he} smirks as ${he} gropes your breasts.`); + } + r.push(`${He} slips ${his} hand down your pants.`); + r.push(Spoken(rapist, `"You wouldn't mind if I download a few files now would you? Well, not that it matters."`)); + } + r.push(`Satisfied, ${he} pulls your cock out of its increasingly cramped confines.`); + r.push(Spoken(rapist, `"Look at him grow, he knows what comes next..."`)); + r.push(`${He} teases as ${he} pushes you to the ground and climbs on top of you.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`${He} lines ${himself} up with the tip of your dick before taking its entire length into ${himself}. ${He} lets out a lust filled moan as ${he} begins to bounce on your traitorous member. You can do nothing to stop ${him} from riding you to climax, so you just enjoy the sight of ${his} breasts bouncing to ${his} pace. As you feel your orgasm approaching, you try to time it so you can slip out of ${him} just before you blow your load, but you have no such luck.`); + r.push(Spoken(rapist, `"You really think I'd let you spoil my plans?"`)); + r.push(`${he} asks as ${he} grinds against you, making sure you cum deep in ${his} pussy. ${He} leans back and massages ${his}`); + if (V.PC.balls >= 20) { + r.push(`taut`); + } + r.push(`stomach, savoring the sensation of your seed seeping into ${him}.`); + r.push(Spoken(rapist, `"That's it, make me a mommy."`)); + r.push(`${He} leans in close and you pop free of ${his} snatch.`); + r.push(Spoken(rapist, `"Be a good ${girlP} and make this arcology a nice place for your bastard. I want to retire in luxury."`)); + r.push(`${He} blows you a kiss as ${he} stuffs a plug up ${his} vagina, redresses and heads on ${his} way. By the time you loosen your bindings, ${he} is long gone.`); + App.Events.addParagraph(node, r); + r = []; + r.push(`It would be prudent to up security in your arcology, that or take a guard along when you leave the penthouse. You can't allow such an indignity to happen again, nor do you need the stress of a bastard trying to seize control of your estate when you want to retire, but you wouldn't mind having your way with ${him} if you get the chance.`); + App.Events.addParagraph(node, r); + } + } else { + App.UI.DOM.appendNewElement("div", node, `Now the only question is what to do with the would-be rapist. You could toss them out of the arcology, but it might be more fun to turn the tables on ${him}.`); + + let slaveCosts = slaveCost(rapist); + slaveCosts -= contractCost; + App.UI.DOM.appendNewElement("div", node, `Applying enslavement as punishment will cost ${cashFormat(contractCost)}. Doing so and then selling ${him} immediately will bring in approximately ${cashFormat(slaveCosts)}.`, "note"); + + node.append(App.Desc.longSlave(rapist, {market: "generic"})); + const choices = []; + if (V.cash >= contractCost) { + choices.push(new App.Events.Result(`Enslave ${him}`, enslave)); + choices.push(new App.Events.Result(`Sentence ${him} to a day in the stocks, then enslave ${him}`, stocks)); + if (V.arcade > 0) { + choices.push(new App.Events.Result(`Enslave ${him} and sentence ${him} to a month in the arcade`, arcade)); + } + if (V.dairy > 0 && V.dairyRestraintsSetting > 1) { + choices.push(new App.Events.Result(`Enslave ${him} and send ${him} straight to the industrial dairy`, dairy)); + } + if (V.farmyard > 0) { + choices.push(new App.Events.Result(`Enslave ${him} and send ${him} straight to the farmyard`, farmyard)); + } + if (V.seeExtreme > 0) { + choices.push(new App.Events.Result(`Punitively amputate ${his} limbs, and then enslave ${him}`, amputate)); + } + } else { + choices.push(new App.Events.Result(null, null, `You lack the necessary funds to enslave ${him}.`)); + } + choices.push(new App.Events.Result(`Publicly flog the criminal`, flog)); + App.Events.addResponses(node, choices); + } + + function enslave() { + const el = new DocumentFragment(); + cashX(forceNeg(contractCost), "slaveTransfer", rapist); + el.append(`You complete the legalities and biometric scanning quickly and without fuss. The idiot will regret crossing you when ${he} wakes in the penthouse for basic slave induction.`); + el.append(App.UI.newSlaveIntro(rapist)); + return el; + } + + function stocks() { + const el = new DocumentFragment(); + const r = []; + healthDamage(rapist, 10); + rapist.behavioralFlaw = "odd"; + rapist.sexualFlaw = "hates penetration"; + rapist.anus = 2; + seX(rapist, "oral", "public", "penetrative", 23); + seX(rapist, "anal", "public", "penetrative", 12); + if (rapist.vagina > -1) { + rapist.vagina = 2; + seX(rapist, "vaginal", "public", "penetrative", 12); + if (random(1, 100) > 60 && isFertile(rapist)) { + r.push(knockMeUp(rapist, 100, 0, -2, true)); + } + } else { + seX(rapist, "anal", "public", "penetrative", 12);/* even more anal */ + } + cashX(forceNeg(contractCost), "slaveTransfer", rapist); + + r.push(`You declare ${his} holes fair game for the entire arcology. ${He} spends a torturous day in the stocks before being hauled in for enslavement, somewhat <span class="health.dec">the worse for wear</span> and <span class="red">acting oddly</span> due to ${his} ordeal, bruises all over ${his} body, cum leaking from ${his} <span class="lime">loosened</span> anus${(rapist.vagina > -1) ? ` and <span class="lime">fucked-out</span> pussy` : ``}. The public <span class="green">enjoys the fun.</span>`); + repX(500, "event"); + V.arcologies[0].prosperity += 2; + r.push(App.UI.newSlaveIntro(rapist)); + App.Events.addParagraph(el, r); + return el; + } + + function arcade() { + assignJob(rapist, "be confined in the arcade"); + rapist.sentence = 4; + cashX(forceNeg(contractCost), "slaveTransfer", rapist); + newSlave(rapist);/* skip New Slave Intro */ + return `You complete the legalities and biometric scanning quickly and cautiously. The idiot will be in for a surprise when ${he} awakes to find ${he} can't move and a dick is in ${his} ass.`; + } + + function dairy() { + const el = new DocumentFragment(); + const r = []; + assignJob(rapist, "work in the dairy"); + cashX(forceNeg(contractCost), "slaveTransfer", rapist); + r.push(`You complete the legalities and biometric scanning quickly and cautiously. The idiot will wake up`); + if (V.dairyStimulatorsSetting > 1) { + r.push(`in agony as ${his} anus takes the rectal hydration dildo.`); + } else { + r.push(`to find ${his} chest has begun swelling with milk.`); + } + rapist.boobs += 300; + newSlave(rapist); /* skip New Slave Intro */ + App.Events.addNode(el, r); + return el; + } + + function farmyard() { + const el = new DocumentFragment(); + const r = []; + assignJob(rapist, "work as a farmhand"); + cashX(forceNeg(contractCost), "slaveTransfer", rapist); + r.push(`You complete the legalities and biometric scanning quickly and cautiously. The idiot will wake up in ${V.farmyardName}, where ${he} will spend the rest of ${his} days working the fields`); + if (V.farmyardShows === 1) { + r.push(`and`); + if (V.seeBestiality === 1) { + r.push(`getting fucked by animals.`); + } else { + r.push(`putting on shows with animals.`); + } + } + newSlave(rapist);/* skip New Slave Intro */ + App.Events.addNode(el, r); + return el; + } + + function amputate() { + const el = new DocumentFragment(); + const r = []; + healthDamage(rapist, 20); + removeLimbs(rapist, "all"); + rapist.behavioralFlaw = "odd"; + cashX(forceNeg(contractCost), "slaveTransfer", rapist); + r.push(`You want ${him} to suffer for what ${he} tried to pull on you. You make sure ${he} is fully awake as ${he} is strapped into the autosurgery. You take great pleasure in watching ${him} struggle as ${his} limbs are taken, one by one. Of course, <span class="health.dec">${his} health is affected</span> and the horrible experience has left ${him} <span class="red">acting oddly.</span> After ${he} has stabilized, it's off to the penthouse for basic slave induction. You'd like to see ${him} try and touch you again without arms and legs.`); + if (rapist.balls > 0) { + const geld = function() { + const el = new DocumentFragment(); + const r = []; + healthDamage(rapist, 20); + rapist.balls = 0; + rapist.devotion -= 25; + rapist.trust -= 25; + cashX(forceNeg(contractCost), "slaveTransfer", rapist); + r.push(`You want ${him} to suffer for what ${he} tried to pull on you. You make sure ${he} is fully awake as ${he} is strapped into the autosurgery, taking the time to roughly fondle ${his} balls. You take great pleasure in watching ${him} struggle as ${his} testicles are removed. Once ${he} can stand again, it's off to the penthouse for basic slave induction.`); + r.push(App.UI.newSlaveIntro(rapist)); + App.Events.addNode(el, r); + return el; + }; + App.Events.addResponses(el, [new App.Events.Result(`Enslave the criminal and geld ${him}`, geld)]); + } + App.Events.addNode(el, r); + return el; + } + + function flog() { + const el = new DocumentFragment(); + const r = []; + r.push(`Naturally, the wretch will be thrown out of the arcology, but an example must first be made. Free people must understand that criminals who commit outrages against them will be severely punished. The protesting malefactor is stripped and flogged on the promenade before being escorted bleeding from the arcology. The public <span class="green">approves of this harshness.</span>`); + repX(500, "event"); + App.Events.addNode(el, r); + return el; + } + } +}; diff --git a/src/events/nonRandomEvent.js b/src/events/nonRandomEvent.js index 15884cdfcc76c5a4838583f14ac4147e5eb1651b..7a668892caad5cf9b5c62494ec50cd22e463b257 100644 --- a/src/events/nonRandomEvent.js +++ b/src/events/nonRandomEvent.js @@ -102,6 +102,7 @@ App.Events.getNonrandomEvents = function() { ], "SE nicaea council"), new App.Events.MurderAttempt(), new App.Events.MurderAttemptFollowup(), + new App.Events.pRaped(), ]; }; @@ -242,8 +243,6 @@ globalThis.nonRandomEvent = function() { setTimeout(() => Engine.play("SE vatcatgirl"), Engine.minDomActionDelay); } else if (V.projectN.status === 8 && V.growingNewCat === 0) { setTimeout(() => Engine.play("SE vatcatboy"), Engine.minDomActionDelay); - } else if ((effectiveWeek === 12) && V.raped === -1 && V.arcologyUpgrade.drones !== 1 && V.BodyguardID === 0 && V.PC.career !== "arcology owner") { - setTimeout(() => Engine.play("P raped"), Engine.minDomActionDelay); } else if ((effectiveWeek >= 15) && (V.arcologies[0].FSNeoImperialistLaw1 === 1) && V.assholeKnight !== 1) { V.assholeKnight = 1; V.imperialEventWeek = effectiveWeek; diff --git a/src/npc/descriptions/legs.js b/src/npc/descriptions/legs.js index 1282f78d05cc4b8aebf05b61471aa2a4d6fb9a69..fb8a53a9be1a90ecb0866455fae6e15fd861eddf 100644 --- a/src/npc/descriptions/legs.js +++ b/src/npc/descriptions/legs.js @@ -3,129 +3,71 @@ * @returns {string} */ App.Desc.legs = function(slave) { - const r = []; const { his, He } = getPronouns(slave); - if (hasAnyNaturalLegs(slave)) { + if (hasAnyNaturalLegs(slave) && (slave.weight > 95 || slave.muscles > 5)) { + const thighs = hasBothNaturalLegs(slave) ? "thighs" : "thigh"; + const thighMuscles = slave.muscles > 5 ? `${thighs} and ${muscleDesc()}` : thighs; if (slave.weight > 190) { - r.push(`${He} has`); if (hasBothNaturalLegs(slave)) { - r.push(`extremely fat legs with immense soft, rather uneven`); - if (slave.muscles > 5) { - r.push(`thighs and`); - } else { - r.push(`thighs.`); - } + return `${He} has extremely fat legs with immense soft, rather uneven ${thighMuscles}.`; } else { - r.push(`an extremely fat leg with an immense soft, rather uneven`); - if (slave.muscles > 5) { - r.push(`thigh and`); - } else { - r.push(`thigh.`); - } + return `${He} has an extremely fat leg with an immense soft, rather uneven ${thighMuscles}.`; } } else if (slave.weight > 160) { - r.push(`${He} has`); if (hasBothNaturalLegs(slave)) { - r.push(`very fat legs with massively thick, soft, somewhat uneven`); - if (slave.muscles > 5) { - r.push(`thighs and`); - } else { - r.push(`thighs.`); - } + return `${He} has very fat legs with massively thick, soft, somewhat uneven ${thighMuscles}.`; } else { - r.push(`a very fat leg with a massively thick, soft, somewhat uneven`); - if (slave.muscles > 5) { - r.push(`thigh and`); - } else { - r.push(`thigh.`); - } + return `${He} has a very fat leg with a massively thick, soft, somewhat uneven ${thighMuscles}.`; } } else if (slave.weight > 130) { - r.push(`${He} has`); if (hasBothNaturalLegs(slave)) { - r.push(`fat legs with hugely thick, soft`); - if (slave.muscles > 5) { - r.push(`thighs and`); - } else { - r.push(`thighs.`); - } + return `${He} has fat legs with hugely thick, soft ${thighMuscles}.`; } else { - r.push(`a fat leg with a hugely thick, soft`); - if (slave.muscles > 5) { - r.push(`thigh and`); - } else { - r.push(`thigh.`); - } + return `${He} has a fat leg with a hugely thick, soft ${thighMuscles}.`; } } else if (slave.weight > 97) { - r.push(`${He} has`); if (hasBothNaturalLegs(slave)) { - r.push(`fat legs with thick, soft`); - if (slave.muscles > 5) { - r.push(`thighs and`); - } else { - r.push(`thighs.`); - } + return `${He} has fat legs with thick, soft ${thighMuscles}.`; } else { - r.push(`a fat leg with a thick, soft`); - if (slave.muscles > 5) { - r.push(`thigh and`); - } else { - r.push(`thigh.`); - } + return `${He} has a fat leg with a thick, soft ${thighMuscles}.`; } } else if (slave.weight > 95) { - r.push(`${He} has`); if (hasBothNaturalLegs(slave)) { - r.push(`normal legs with thick, soft`); - if (slave.muscles > 5) { - r.push(`thighs and`); - } else { - r.push(`thighs.`); - } + return `${He} has normal legs with thick, soft ${thighMuscles}.`; } else { - r.push(`a normal leg with a thick, soft`); - if (slave.muscles > 5) { - r.push(`thigh and`); - } else { - r.push(`thigh.`); - } + return `${He} has a normal leg with a thick, soft ${thighMuscles}.`; } } else if (slave.muscles > 5) { - r.push(`${He} has`); if (hasBothNaturalLegs(slave)) { - r.push(`relatively normal legs and thighs`); + return `${He} has relatively normal legs and thighs with ${muscleDesc()}.`; } else { - r.push(`a relatively normal leg and thigh`); + return `${He} has a relatively normal leg and thigh with ${muscleDesc()}.`; } - r.push(`with`); } + } + function muscleDesc(){ if (slave.muscles > 95) { if (slave.weight > 95) { - r.push(`huge muscles hidden beneath ${his} soft flab.`); + return `huge muscles hidden beneath ${his} soft flab`; } else { - r.push(`huge muscles.`); + return `huge muscles`; } } else if (slave.muscles > 30) { if (slave.weight > 95) { - r.push(`obvious muscles hidden beneath ${his} soft flab.`); + return `obvious muscles hidden beneath ${his} soft flab.`; } else { - r.push(`obvious muscles.`); + return `obvious muscles`; } } else if (slave.muscles > 5) { if (slave.weight > 30) { - r.push(`toned muscles hidden beneath ${his} soft flab.`); + return `toned muscles hidden beneath ${his} soft flab.`; } else { - r.push(`toned muscles.`); + return `toned muscles`; } - } else { - // barely any muscle in them. } } - return r.join(" "); }; - diff --git a/src/player/MpregSelf.js b/src/player/MpregSelf.js new file mode 100644 index 0000000000000000000000000000000000000000..d6a2803daf50f7e095228997b27198c5b04d1a32 --- /dev/null +++ b/src/player/MpregSelf.js @@ -0,0 +1,158 @@ +globalThis.MpregSelf = function() { + const node = new DocumentFragment(); + let r = []; + const { + HeU, + heU, himU, hisU, girlU + } = getNonlocalPronouns(V.seeDicks).appendSuffix("U"); + + if (V.PC.counter.birthSelf === 0) { + if (V.PC.balls >= 14) { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the high-volume enema syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending rivulets of precum running down to pool on your massive balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the extra-long enema syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your soaked member. The large volume of precum coming from your engorged prostate necessitates frequent swallowing that only adds to your pleasure. You lay back and enjoy yourself as ${heU} massages your massive balls before slipping ${hisU} hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your massive balls as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying inhumanly large jets of alabaster cum into the enema syringe. It's good that you asked for high-capacity version, as the prodigious quantity of fertile semen would have overflowed from a smaller container.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing ${hisU} cue, the ${girlU} grabs the large plunger with both hands and starts shoving it in the direction of your womb. ${HeU} leans in, using ${hisU} body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb.`); + r.push(`Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your balloon-like womb from forcing its meal back into the syringe. The nearly 2 liters of cum you have stuffed inside you leaves your stomach looking noticeably distended, prompting you to rub your sloshing belly. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering over your inflated belly to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes ${himU} to swiftly yank the rest of the syringe out of you, opening the floodgates for the colossal quantity of cum inflating your womb. Your well-trained slave reacts quickly, hefting your massive balls up and out of the way so ${heU} can catch the torrent of jizz that's just starting to pour from your cunt.`); + r.push(`You hear some wet sounds as ${heU} slurps down the cum that already escaped, and then you feel ${hisU} soft lips pressed to your vulva as ${heU} steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from ${V.dairyName} of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?`); + } else if (V.PC.balls >= 9) { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the enema syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the glass enema syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your soaked member. The large volume of precum coming from your swollen prostate necessitates regular swallowing that only adds to your pleasure. You lay back and enjoy yourself as ${heU} massages your huge balls before slipping ${hisU} hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your huge balls as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying massive jets of alabaster cum into the enema syringe. It's good that you decided on an enema syringe instead of a normal dildo suppository, as the huge quantity of fertile semen would have overflowed from a smaller container.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing ${hisU} cue, the ${girlU} grabs the large plunger with both hands and starts shoving it in the direction of your womb. ${HeU} leans in, using ${hisU} body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb.`); + r.push(`Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a liter of your virile cum.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your stuffed womb from forcing its meal back into the syringe. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering over your swollen belly to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes ${himU} to swiftly yank the rest of the syringe out of you, opening the floodgates for the huge quantity of cum that's stuffed in your womb. Your well-trained slave reacts quickly, hefting your huge balls up and out of the way so ${heU} can catch the torrent of jizz that's just starting to pour from your cunt.`); + r.push(`You hear some wet sounds as ${heU} slurps down the cum that already escaped, and then you feel ${hisU} soft lips pressed to your vulva as ${heU} steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from ${V.dairyName} of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?`); + } else if (V.PC.balls >= 5) { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the dildo-shaped suppository syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the remarkably-lifelike dildo syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your straining cock. The extra precum coming from your enhanced prostate necessitates occasional swallowing that only adds to your pleasure. You lay back and enjoy yourself as ${heU} massages your large balls before slipping ${hisU} hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your large balls as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying large jets of alabaster cum into the syringe. It's close, the large quantity of fertile semen almost overflowing from the dildo suppository.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing ${hisU} cue, the ${girlU} grabs the large plunger and starts shoving it in the direction of your womb. ${HeU} pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb.`); + r.push(`Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Sometime later when you've recovered your senses, you see your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls the dildo free, opening the floodgates for the cum that's filling your womb. Your well-trained slave reacts quickly, lifting your large balls up and out of the way so ${heU} can catch the stream of jizz that's just starting to pour from your cunt.`); + r.push(`You hear some wet sounds as ${heU} slurps down the cum that already escaped, and then you feel ${hisU} soft lips pressed to your vulva as ${heU} steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from ${V.dairyName} of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?`); + } else { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the dildo-shaped suppository syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the remarkably-lifelike dildo syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your straining cock. You lay back and enjoy yourself as ${heU} massages your balls before slipping ${hisU} hand downward to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching tightly as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying jets of alabaster cum into the syringe. It's a powerful orgasm, but you only manage to fill a quarter of it.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is inserted far enough that you've gotten all the air out of the syringe. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends several jets of cum to land on your reclined body. Seeing ${hisU} cue, the ${girlU} grabs the large plunger and starts shoving it in the direction of your womb. ${HeU} pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb.`); + r.push(`Your orgasm continues unabated, spurred on by the jet of fluid flowing into your womb. Your orgasm soon fades, and you wish that you could produce more than a deciliter of cum to fill yourself with.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Now that your orgasm is over, you notice your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls the dildo free, allowing the cum inside you to leak out. Your well-trained slave reacts quickly, lifting your balls up and out of the way so ${heU} can catch the load of jizz before it starts to leak out of your cunt.`); + r.push(`You feel ${hisU} soft lips pressed to your vulva as ${heU} works to retrieve ${hisU} treat. You hear some soft slurping noises and feel a warm tongue worming its way inside you to retrieve any lingering cum. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your own balls for a satisfying creampie. There's always a slave to do that, of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right?`); + } + let selfPreg = 30+(V.PC.balls*3); + r.push(knockMeUp(V.PC, selfPreg, 0, -1)); + } else { + if (V.PC.balls >= 14) { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the high-volume enema syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending rivulets of precum running down to pool on your massive balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the extra-long enema syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your soaked member. The large volume of precum coming from your engorged prostate necessitates frequent swallowing that only adds to your pleasure. You lay back and enjoy yourself as ${heU} massages your massive balls before slipping ${hisU} hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your massive balls as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying inhumanly large jets of alabaster cum into the enema syringe. It's good that you asked for high-capacity version, as the prodigious quantity of fertile semen would have overflowed from a smaller container.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing ${hisU} cue, the ${girlU} grabs the large plunger with both hands and starts shoving it in the direction of your womb. ${HeU} leans in, using ${hisU} body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb.`); + r.push(`Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your balloon-like womb from forcing its meal back into the syringe. The nearly 2 liters of cum you have stuffed inside you leaves your stomach looking noticeably distended, prompting you to rub your sloshing belly. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering over your inflated belly to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes ${himU} to swiftly yank the rest of the syringe out of you, opening the floodgates for the colossal quantity of cum inflating your womb. Your well-trained slave reacts quickly, hefting your massive balls up and out of the way so ${heU} can catch the torrent of jizz that's just starting to pour from your cunt.`); + r.push(`You hear some wet sounds as ${heU} slurps down the cum that already escaped, and then you feel ${hisU} soft lips pressed to your vulva as ${heU} steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from ${V.dairyName} of course, but why use slave cum when you have such obviously superior material available?`); + } else if (V.PC.balls >= 9) { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the enema syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the glass enema syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your soaked member. The large volume of precum coming from your swollen prostate necessitates regular swallowing that only adds to your pleasure. You lay back and enjoy yourself as ${heU} massages your huge balls before slipping ${hisU} hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your huge balls as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying massive jets of alabaster cum into the enema syringe. It's good that you decided on an enema syringe instead of a normal dildo suppository, as the huge quantity of fertile semen would have overflowed from a smaller container.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing ${hisU} cue, the ${girlU} grabs the large plunger with both hands and starts shoving it in the direction of your womb. ${HeU} leans in, using ${hisU} body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb.`); + r.push(`Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a full liter of your virile cum.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your stuffed womb from forcing its meal back into the syringe. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering over your swollen belly to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes ${himU} to swiftly yank the rest of the syringe out of you, opening the floodgates for the huge quantity of cum that's stuffed in your womb. Your well-trained slave reacts quickly, hefting your huge balls up and out of the way so ${heU} can catch the torrent of jizz that's just starting to pour from your cunt.`); + r.push(`You hear some wet sounds as ${heU} slurps down the cum that already escaped, and then you feel ${hisU} soft lips pressed to your vulva as ${heU} steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from ${V.dairyName} of course, but why use slave cum when you have such obviously superior material available?`); + } else if (V.PC.balls >= 5) { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the dildo-shaped suppository syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the remarkably-lifelike dildo syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your straining cock. The extra precum coming from your enhanced prostate necessitates occasional swallowing that only adds to your pleasure. You lay back and enjoy yourself as ${heU} massages your large balls before slipping ${hisU} hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your large balls as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying large jets of alabaster cum into the syringe. It's close, the large quantity of fertile semen almost overflows from the dildo suppository.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing ${hisU} cue, the ${girlU} grabs the large plunger and starts shoving it in the direction of your womb. ${HeU} pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb.`); + r.push(`Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Sometime later when you've recovered your senses, you see your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls the dildo free, opening the floodgates for the cum that's filling in your womb. Your well-trained slave reacts quickly, lifting your large balls up and out of the way so ${heU} can catch the stream of jizz that's just starting to pour from your cunt.`); + r.push(`You hear some wet sounds as ${heU} slurps down the cum that already escaped, and then you feel ${hisU} soft lips pressed to your vulva as ${heU} steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from ${V.dairyName} of course, but why use slave cum when you have such obviously superior material available?`); + } else { + r.push(`Calling over your closest slave, you order ${himU} to bring you one of the dildo-shaped suppository syringes from the slave quarters. ${HeU} rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before ${heU} enters carrying the remarkably-lifelike dildo syringe. Impatient, you give ${himU} your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Following your instructions, ${heU} eagerly drops to ${hisU} knees and inhales your straining cock. You lay back and enjoy yourself as ${heU} massages your balls before slipping ${hisU} hand downward to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching tightly as your body prepares to cum. Recognizing the signs, your slave removes ${hisU} mouth and replaces it with the open end of the syringe. ${HeU} takes ${hisU} sodden hand from your cunt and starts stroking vigorously, and soon you're spraying jets of alabaster cum into the syringe. It's a powerful orgasm, but you only manage to fill a quarter of it.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. ${HeU} has thoughtfully blocked the tip with the palm of ${hisU} hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the syringe over so that the business end is pointing upward, and the slave removes ${hisU} hand while you make sure the plunger is inserted far enough that you've gotten all the air out of the syringe. Your slave eagerly licks the drop of cum off the palm of ${hisU} hand, but you don't begrudge ${himU} a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more.`); + r.push(`You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done."`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`The ${girlU} does as ${heU}'s told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, ${heU} shoves it back inside you. Seeing the undeniable pleasure on your face, ${heU} takes it as permission to continue and quickly picks up the pace. Soon ${heU}'s fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm.`); + r.push(`Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends several jets of cum to land on your reclined body. Seeing ${hisU} cue, the ${girlU} grabs the large plunger and starts shoving it in the direction of your womb. ${HeU} pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb.`); + r.push(`Your orgasm continues unabated, spurred on by the jet of fluid flowing into your womb. Your orgasm soon fades, and you wish that you could produce more than a deciliter of cum to fill yourself with.`); + App.Events.addParagraph(node, r); + r =[]; + r.push(`Now that your orgasm is over, you notice your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting ${girlU} ${hisU} orders: "Pull it out, and use your mouth to keep the mess to a minimum." ${HeU} gets on ${hisU} knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for ${himU} to continue. As soon as you give ${himU} a nod ${heU} pulls the dildo free, allowing the cum inside you to leak out. Your well-trained slave reacts quickly, lifting your balls up and out of the way so ${heU} can catch the load of jizz before it starts to leak out of your cunt.`); + r.push(`You feel ${hisU} soft lips pressed to your vulva as ${heU} works to retrieve ${hisU} treat. You hear some soft slurping noises and feel a warm tongue worming its way inside you to retrieve any lingering cum. You relax and enjoy the afterglow of your orgasms while ${heU} works, proud of your ingenious idea to take advantage of your own balls for a satisfying creampie. There's always a slave to do that, of course, but why use slave cum when you have such obviously superior material available?`); + } + r.push(knockMeUp(V.PC, 100, 0, -1)); + } + return node; +}; diff --git a/src/pregmod/MpregSelf.tw b/src/pregmod/MpregSelf.tw deleted file mode 100644 index f0ae0d53f7d4f1ca0749f704914eee93baaa5e38..0000000000000000000000000000000000000000 --- a/src/pregmod/MpregSelf.tw +++ /dev/null @@ -1,102 +0,0 @@ -:: MpregSelf [nobr] - -<<setNonlocalPronouns $seeDicks>> - -<<set $nextButton = "Back", $nextLink = "Main">> - -<<if $PC.counter.birthSelf == 0>> - <<if $PC.balls >= 14>> - Calling over your closest slave, you order _himU to bring you one of the high-volume enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending rivulets of precum running down to pool on your massive balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the extra-long enema syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your engorged prostate necessitates frequent swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your massive balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your massive balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying inhumanly large jets of alabaster cum into the enema syringe. It's good that you asked for high-capacity version, as the prodigious quantity of fertile semen would have overflowed from a smaller container. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. - Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum. - <br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your balloon-like womb from forcing its meal back into the syringe. The nearly 2 liters of cum you have stuffed inside you leaves your stomach looking noticeably distended, prompting you to rub your sloshing belly. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering over your inflated belly to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes _himU to swiftly yank the rest of the syringe out of you, opening the floodgates for the colossal quantity of cum inflating your womb. Your well-trained slave reacts quickly, hefting your massive balls up and out of the way so _heU can catch the torrent of jizz that's just starting to pour from your cunt. - You hear some wet sounds as _heU slurps down the cum that already escaped, and then you feel _hisU soft lips pressed to your vulva as _heU steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right? - - <<elseif $PC.balls >= 9>> - Calling over your closest slave, you order _himU to bring you one of the enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the glass enema syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your swollen prostate necessitates regular swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your huge balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your huge balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying massive jets of alabaster cum into the enema syringe. It's good that you decided on an enema syringe instead of a normal dildo suppository, as the huge quantity of fertile semen would have overflowed from a smaller container. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. - Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a liter of your virile cum. - <br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your stuffed womb from forcing its meal back into the syringe. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering over your swollen belly to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes _himU to swiftly yank the rest of the syringe out of you, opening the floodgates for the huge quantity of cum that's stuffed in your womb. Your well-trained slave reacts quickly, hefting your huge balls up and out of the way so _heU can catch the torrent of jizz that's just starting to pour from your cunt. - You hear some wet sounds as _heU slurps down the cum that already escaped, and then you feel _hisU soft lips pressed to your vulva as _heU steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right? - - <<elseif $PC.balls >= 5>> - Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. The extra precum coming from your enhanced prostate necessitates occasional swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your large balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching your large balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying large jets of alabaster cum into the syringe. It's close, the large quantity of fertile semen almost overflowing from the dildo suppository. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. - Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum. - <br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls the dildo free, opening the floodgates for the cum that's filling your womb. Your well-trained slave reacts quickly, lifting your large balls up and out of the way so _heU can catch the stream of jizz that's just starting to pour from your cunt. - You hear some wet sounds as _heU slurps down the cum that already escaped, and then you feel _hisU soft lips pressed to your vulva as _heU steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from $dairyName of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right? - - <<else>> - Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your latest deviancy has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. You lay back and enjoy yourself as _heU massages your balls before slipping _hisU hand downward to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of what comes next, and soon your sack is clenching tightly as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying jets of alabaster cum into the syringe. It's a powerful orgasm, but you only manage to fill a quarter of it. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is inserted far enough that you've gotten all the air out of the syringe. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends several jets of cum to land on your reclined body. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. - Your orgasm continues unabated, spurred on by the jet of fluid flowing into your womb. Your orgasm soon fades, and you wish that you could produce more than a deciliter of cum to fill yourself with. - <br><br>Now that your orgasm is over, you notice your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls the dildo free, allowing the cum inside you to leak out. Your well-trained slave reacts quickly, lifting your balls up and out of the way so _heU can catch the load of jizz before it starts to leak out of your cunt. - You feel _hisU soft lips pressed to your vulva as _heU works to retrieve _hisU treat. You hear some soft slurping noises and feel a warm tongue worming its way inside you to retrieve any lingering cum. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your own balls for a satisfying creampie. There's always a slave to do that, of course, but this way you don't have to worry about getting pregnant. That last thought gives you pause. You can't get yourself pregnant... right? - - <</if>> - <<set _selfPreg = 30+($PC.balls*3)>> - <<= knockMeUp($PC, _selfPreg, 0, -1)>> -<<else>> - <<if $PC.balls >= 14>> - Calling over your closest slave, you order _himU to bring you one of the high-volume enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending rivulets of precum running down to pool on your massive balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the extra-long enema syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your engorged prostate necessitates frequent swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your massive balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your massive balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying inhumanly large jets of alabaster cum into the enema syringe. It's good that you asked for high-capacity version, as the prodigious quantity of fertile semen would have overflowed from a smaller container. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your massive balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to soak you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. - Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a seemingly-endless volume of your virile cum. - <br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your balloon-like womb from forcing its meal back into the syringe. The nearly 2 liters of cum you have stuffed inside you leaves your stomach looking noticeably distended, prompting you to rub your sloshing belly. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering over your inflated belly to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes _himU to swiftly yank the rest of the syringe out of you, opening the floodgates for the colossal quantity of cum inflating your womb. Your well-trained slave reacts quickly, hefting your massive balls up and out of the way so _heU can catch the torrent of jizz that's just starting to pour from your cunt. - You hear some wet sounds as _heU slurps down the cum that already escaped, and then you feel _hisU soft lips pressed to your vulva as _heU steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your inhuman sperm production. There's always the tap from $dairyName of course, but why use slave cum when you have such obviously superior material available? - - <<elseif $PC.balls >= 9>> - Calling over your closest slave, you order _himU to bring you one of the enema syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending a steady stream of precum running down to pool on your huge balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the glass enema syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your soaked member. The large volume of precum coming from your swollen prostate necessitates regular swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your huge balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your huge balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying massive jets of alabaster cum into the enema syringe. It's good that you decided on an enema syringe instead of a normal dildo suppository, as the huge quantity of fertile semen would have overflowed from a smaller container. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the glass of the thick enema syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe between your huge balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the nubby plug-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to take both hands and ram that plunger in. Push hard, I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the pointy enema bulb into the opening of your cervix, forcibly stretching it further open with each piercing impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends thick streams of cum spraying all over the place to coat you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger with both hands and starts shoving it in the direction of your womb. _HeU leans in, using _hisU body weight to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the whole enema syringe further inside you, causing a blissful stretching sensation as the squirting enema bulb penetrates your cervix to lodge in your womb. - Your orgasm continues unabated, spurred on by the syringe now spraying your cum directly into your womb. You spend a couple minutes that feel like hours cumming as your slave slowly inflates your womb with a full liter of your virile cum. - <br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the plunger to keep your stuffed womb from forcing its meal back into the syringe. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering over your swollen belly to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls, and with a popping sensation the enema bulb comes free. The sudden lack of resistance causes _himU to swiftly yank the rest of the syringe out of you, opening the floodgates for the huge quantity of cum that's stuffed in your womb. Your well-trained slave reacts quickly, hefting your huge balls up and out of the way so _heU can catch the torrent of jizz that's just starting to pour from your cunt. - You hear some wet sounds as _heU slurps down the cum that already escaped, and then you feel _hisU soft lips pressed to your vulva as _heU steadfastly works to drink the unending flood of semen. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your prodigious sperm production. There's always the tap from $dairyName of course, but why use slave cum when you have such obviously superior material available? - - <<elseif $PC.balls >= 5>> - Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, sending regular drips of precum running down onto your large balls. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. The extra precum coming from your enhanced prostate necessitates occasional swallowing that only adds to your pleasure. You lay back and enjoy yourself as _heU massages your large balls before slipping _hisU hand underneath to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching your large balls as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying large jets of alabaster cum into the syringe. It's close, the large quantity of fertile semen almost overflows from the dildo suppository. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the full syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is secure and won't leak any of the precious cargo. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your large balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. Push hard, I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends jets of cum all over the place to land on you and your slave. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. - Your orgasm continues unabated, spurred on by warm fluid flowing into your womb. You spend a minute that feel like an hour cumming as your slave slowly fills your womb with a few deciliters of virile cum. - <br><br>Sometime later when you've recovered your senses, you see your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls the dildo free, opening the floodgates for the cum that's filling in your womb. Your well-trained slave reacts quickly, lifting your large balls up and out of the way so _heU can catch the stream of jizz that's just starting to pour from your cunt. - You hear some wet sounds as _heU slurps down the cum that already escaped, and then you feel _hisU soft lips pressed to your vulva as _heU steadfastly works to drink the escaping semen. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your considerable sperm production. There's always the tap from $dairyName of course, but why use slave cum when you have such obviously superior material available? - - <<else>> - Calling over your closest slave, you order _himU to bring you one of the dildo-shaped suppository syringes from the slave quarters. _HeU rushes off, and you set about getting naked before lying down on your luxurious bed. Your cock is already rock-hard, a large droplet of precum hanging from the head. Your pussy is similarly soaked, imagining your belly swelling after you knock yourself up has it practically puddling. Just as you start to think about punishing your slave for taking too long, you hear a knock before _heU enters carrying the remarkably-lifelike dildo syringe. Impatient, you give _himU your instructions: "Pull out the plunger and keep the syringe handy. You're going to suck me off, but I want every drop of my cum to go into that syringe. No spilling. Now get started." - <br><br>Following your instructions, _heU eagerly drops to _hisU knees and inhales your straining cock. You lay back and enjoy yourself as _heU massages your balls before slipping _hisU hand downward to start fingering your soaked pussy. The expert ministrations from your slave combine with your thoughts of the semi-incestuous stuffing that comes next, and soon your sack is clenching tightly as your body prepares to cum. Recognizing the signs, your slave removes _hisU mouth and replaces it with the open end of the syringe. _HeU takes _hisU sodden hand from your cunt and starts stroking vigorously, and soon you're spraying jets of alabaster cum into the syringe. It's a powerful orgasm, but you only manage to fill a quarter of it. - <br><br>You sit up and pick up the previously discarded plunger while your slave continues to hold the syringe. _HeU has thoughtfully blocked the tip with the palm of _hisU hand, keeping any of the precious fluid from escaping. You position the plunger and barely insert it into the open syringe, not wanting to accidentally force out your semen. The two of you flip the syringe over so that the business end is pointing upward, and the slave removes _hisU hand while you make sure the plunger is inserted far enough that you've gotten all the air out of the syringe. Your slave eagerly licks the drop of cum off the palm of _hisU hand, but you don't begrudge _himU a small treat. Instead, you get a firm grasp on the silicone of the thick dildo syringe and lay back once more. - You spread your legs into a wide "M" shape, as if preparing for a gynecological exam. You can't demean yourself by allowing your slave to penetrate you, so you carefully position the girthy syringe underneath your balls and slowly shove it into your pussy. Adjusting your grip, you keep pushing; you're unable to suppress a moan when you feel the cock-like tip knock at the entrance of your womb. Thoroughly penetrated, you lay back and give your slave instructions: "Fuck me good and hard with the syringe until I cum. When I do, I want you to ram that plunger in. I want that syringe completely empty when you're done." - <br><br>The _girlU does as _heU's told, getting a firm grip on the syringe and pushing in slightly before drawing it outward. After a brief pause, _heU shoves it back inside you. Seeing the undeniable pleasure on your face, _heU takes it as permission to continue and quickly picks up the pace. Soon _heU's fucking you hard and fast with the syringe. Thanks to the position caused by your widely-splayed legs, your fertile womb is lined up perfectly for each thrust to slam the head of the dildo into your cervix, battering it open with each impact. The sensation is too much to bear after having cum so recently, and you rapidly moan your way towards another orgasm. - Your fevered thoughts are focused on the perverse pleasure of giving yourself a creampie, intensifying the extreme pleasure you're feeling. Soon you are cumming with a scream of ecstasy, your neglected cock making your orgasm obvious as it sends several jets of cum to land on your reclined body. Seeing _hisU cue, the _girlU grabs the large plunger and starts shoving it in the direction of your womb. _HeU pushes hard to help fight the resistance of your richly-thick and fertile semen that's filling the syringe. The pressure forces the silicone cockhead against your cervix, creating a seal and leaving the syringe free to spray your semen through your battered cervix and into your hungry womb. - Your orgasm continues unabated, spurred on by the jet of fluid flowing into your womb. Your orgasm soon fades, and you wish that you could produce more than a deciliter of cum to fill yourself with. - <br><br>Now that your orgasm is over, you notice your slave standing by while holding the dildo inside you to keep you plugged up. You give the waiting _girlU _hisU orders: "Pull it out, and use your mouth to keep the mess to a minimum." _HeU gets on _hisU knees and takes a firm grip on the syringe before peering up at you to make sure you're ready for _himU to continue. As soon as you give _himU a nod _heU pulls the dildo free, allowing the cum inside you to leak out. Your well-trained slave reacts quickly, lifting your balls up and out of the way so _heU can catch the load of jizz before it starts to leak out of your cunt. - You feel _hisU soft lips pressed to your vulva as _heU works to retrieve _hisU treat. You hear some soft slurping noises and feel a warm tongue worming its way inside you to retrieve any lingering cum. You relax and enjoy the afterglow of your orgasms while _heU works, proud of your ingenious idea to take advantage of your own balls for a satisfying creampie. There's always a slave to do that, of course, but why use slave cum when you have such obviously superior material available? - - <</if>> - <<= knockMeUp($PC, 100, 0, -1)>> -<</if>> diff --git a/src/pregmod/pRaped.tw b/src/pregmod/pRaped.tw deleted file mode 100644 index 47405fe3dbb625c05b1c9055f235af29248a54ad..0000000000000000000000000000000000000000 --- a/src/pregmod/pRaped.tw +++ /dev/null @@ -1,338 +0,0 @@ -:: P raped [nobr] - -<<set $raped = 1, $nextLink = "Nonrandom Event", $returnTo = "Nonrandom Event">> - -<<setPlayerPronouns>> - -<<set _genParam = {minAge: 16, race: "nonslave", disableDisability: 1}>> -<<if $PC.vagina >= 0>> - <<set _rapist = GenerateNewSlave("XY", _genParam)>> - <<set _rapist.dick = 6>> - <<set _rapist.balls = 5>> - <<set _rapist.boobs = 0>> - <<set _rapist.waist = 50>> - <<set _rapist.skill.oral = 0>> - <<set _rapist.skill.anal = 0>> -<<else>> - <<set _rapist = GenerateNewSlave("XX", _genParam)>> - <<set _rapist.vagina = 1>> - <<set _rapist.preg = 0>> - <<set _rapist.weight = random(-20,30)>> - <<set _rapist.waist = -20>> -<</if>> -<<set _rapist.origin = "You sentenced $him to enslavement for the attempted rape of a free " + _womanP + ".">> -<<set _rapist.devotion = -100>> -<<set _rapist.trust = -100>> -<<run setHealth(_rapist, jsRandom(-40, -20), normalRandInt(15, 3), undefined, 1, jsRandom(30, 80))>> -<<set _rapist.anus = 0>> -<<set _rapist.behavioralFlaw = "arrogant">> -<<set _rapist.sexualFlaw = "judgemental">> - -<<setLocalPronouns _rapist>> - -While returning from a meeting with a prospective investor, an unfortunate wrong turn has led you into a rather seedy area of your arcology. You feel distinctly uncomfortable for some reason. - -<<if $PC.career == "mercenary" || $PC.skill.warfare >= 85>> - The moment you hear the sound of the knife unsheathe your reflexes take over. With a single strike, the $woman tailing you lies in a heap on the ground. - <<set $raped = 0>> -<<elseif $PC.career == "slaver" || $PC.skill.warfare >= 45>> - The moment you notice an arm coming around from behind you does your training kick in. You quickly disarm the assailant and knock them to the floor before placing them in a choke-hold. Once they are subdued, you stand back to decide what to do next. - <<set $raped = 0>> -<<elseif $PC.career == "gang">> - The moment you hear the sound of the knife unsheathe your reflexes take over. With a single stab, your own shiv is buried in $his chest, incapacitating $him. - <<set $raped = 0>> -<<else>> - You stifle a <<if $PC.title == 1>>swear<<else>>scream<</if>> when you feel your arm grabbed and the knife pressed to your throat, knowing that it will only end badly for you in this place. -<</if>> -<br><br> -<<if $raped == 1>> - <<set $fcnn.push("...plans for increased security measures, but refused to answer questions regarding...")>> - <<if $PC.vagina >= 0>> - "Well, well, well, look what <<if $PC.belly >= 5000 || $PC.preg >= 20>>waddled<<else>>walked<</if>> into my territory. If it isn't $PC.slaveName, come to grace me with _hisP presence." - <<else>> - "I've been watching you ever since you first moved in, $PC.slaveName, waiting for the perfect moment to make you mine. We are going to have a little fun, you and I." - <</if>> - The $woman binds your hands behind you, all the while keeping the knife to your throat. "Smart keeping your mouth shut; maybe I won't have to hurt you. Heh, I know what you're thinking, that you'll find out who I am and punish me. Don't worry, I made sure to not to leave you any trails to follow. Now let's see what we have here." - - <<if $PC.vagina >= 0>> - With $his free hand, $he begins to explore your vulnerable body. - <<switch $PC.career>> - <<case "wealth">> - <<if $PC.boobs >= 300>> - "Nice and supple. How much did you have to pay for these babies?" he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - "Couldn't afford an abortion after you took over? How sad," he chuckles as he rubs your pregnant belly. - <</if>> - <<if $PC.dick > 0>> - "Went with the full package didn't you?" he mocks as he flicks the tip of your stiffening cock. - <</if>> - <<case "capitalist">> - <<if $PC.boobs >= 300>> - "Nice and supple. Bet these got you some great deals with guys, didn't they?" he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - "Sleeping with guys to close deals? Such a slut," he chuckles as he rubs your pregnant belly. - <</if>> - <<if $PC.dick > 0>> - "Guess you fuck people over in more ways than one, don't you?" he mocks as he flicks the tip of your stiffening cock. - <</if>> - <<case "engineer">> - <<if $PC.boobs >= 300>> - "Nice and supple. Did the other engineers care about your designs or just your tits?" he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - "I can see why your designs were so popular, you fucked your way into the spotlight!" he chuckles as he rubs your pregnant belly. - <</if>> - <<if $PC.dick > 0>> - "Well you do know how to erect things, don't you?" he mocks as he flicks the tip of your stiffening cock. - <</if>> - <<case "medicine">> - <<if $PC.boobs >= 300>> - "Nice and supple. Did you implant them yourself?" he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - <<if $PC.dick > 0>> - "Look at that belly! I bet you inseminated yourself with your own seed," he chuckles as he rubs your pregnant belly. - <<else>> - "I see how you work. Mess up a surgery and give the guy a pity fuck. Surprised you couldn't get their spawn out of your belly though. Guess you aren't that good of a surgeon," he chuckles as he rubs your pregnant belly. - <</if>> - <</if>> - <<if $PC.dick > 0>> - "I'm impressed. Your woman impression is quite good. Did you do the surgery yourself?" he mocks as he flicks the tip of your stiffening cock. "Still going to fuck you though." - <</if>> - <<case "celebrity">> - <<if $PC.boobs >= 300>> - "Nice and supple. I wonder how many guys jacked off to your pictures?" he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - "I can see how you got so popular!" he chuckles as he rubs your pregnant belly. - <</if>> - <<if $PC.dick > 0>> - "How much tape did it take to hold this guy down?" he mocks as he flicks the tip of your stiffening cock. - <</if>> - <<case "escort">> - <<if $PC.boobs >= 300>> - "Nice and soft. How many dicks have been between these babies?" he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - "What kind of whore doesn't know about protection?" he chuckles as he rubs your pregnant belly. - <</if>> - <<if $PC.dick > 0>> - "So, did you ever get to use this when you were a prostitute?" he mocks as he flicks the tip of your stiffening cock. - <</if>> - <<case "servant">> - <<if $PC.boobs >= 300>> - "Nice and supple. Bet your Master spent a fortune making these so nice," he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - "Holding on to your Master's final gift are you?" he chuckles as he rubs your pregnant belly. - <</if>> - <<if $PC.dick > 0>> - "When your Master first undressed you, what did he think of his 'girl'?" he mocks as he flicks the tip of your stiffening cock. - <</if>> - <<case "BlackHat">> - <<if $PC.boobs >= 300>> - "Nice and supple. What are the odds that I can find these babies on the internet?" he smirks as he gropes your breasts. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>> - "You'd think someone so skilled at breaking security would understand protection themselves. Or did you trade your pussy for information?" he chuckles as he rubs your pregnant belly. - <</if>> - <<if $PC.dick > 0>> - "Trying to catch a signal with that?" he mocks as he flicks the tip of your stiffening cock. - <</if>> - <</switch>> - Finally he reaches your moistening pussy. "Already wet are we? Glad you know your place," he states as he pulls your clothes off and bends you over.<<if $PC.vagina == 0>> "And you still have your innocence, how delightful!"<</if>> - <br><br> - You can feel the head of his cock teasing your - <<if $PC.vagina == 0>> - virgin pussy; you grit your teeth knowing what will come next. Without mercy, he @@.red;tears through your hymen@@ and forces himself as deep as your tight pussy lets him. You choke back a sob as he struggles to hilt himself in you. He must have undergone surgery or something because there is no way your body can handle such a monster. You're in agony already - you can't fathom what will happen when he loses his patience. - <<else>> - pussy lips; you hope it feels bigger than it really is. As he struggles to force it into you, you regret thinking about it. He must have undergone surgery or something because he fills you completely. You feel weak just from him sticking it in, you can't fathom what will happen once he starts thrusting. - <</if>> - You soon find out as he wastes no time starting slow. He violently rams his oversized cock deep into you, threatening to penetrate your cervix with each thrust. He quickens his pace, fucking you like a beast. - <<if $PC.preg < 1>> - <<if random(1,100) > 60>> - His hand rises to your lips and forces something into your mouth. "Swallow it." You obey, hoping to just get this over with. - <<set $PC.forcedFertDrugs += 3>> - <</if>> - With one final thrust, he forces through your battered cervix and unloads in the depths of your <<if canGetPregnant($PC)>>fertile <</if>>womb. - <<else>> - With one final thrust, he forces it in as deep as he can into you and blows his seed deep in your aching cunt. - <</if>> - <<if $PC.preg >= 20 || $PC.belly >= 5000>>"Now your child<<if $PC.pregType > 1>>ren<</if>> will know what a real man's sperm is like!" <</if>> - He shoves you to the ground, pussy gaping from the size of his shaft and leaking his huge load all over yourself. By the time you loosen your bindings, he is long gone. - <br><br> - It would be prudent to up security in your arcology. That or take a guard along when you leave the penthouse. Such a thing, happening to you. You can't allow such an indignity to happen again, <<if $PC.vagina == 0>>not that you'll ever get your first time back<<else>>you think to yourself<</if>>, as you try to coax his sperm from your abused pussy. - <<if canGetPregnant($PC)>> - For some reason your body feels really satisfied, despite <<if $PC.vagina == 0>>what transpired<<else>>not climaxing<</if>>... Is this what it feels like to be bred by someone so dominant? You should take a pregnancy test right away and make sure he didn't knock you up. - <<= knockMeUp($PC, 100, 0, -2, 1)>> - <</if>> - <<if $PC.vagina == 0>><<set $PC.vagina++>><</if>> - <<else>> - With $his free hand, $he begins to explore your bound body. - <<switch $PC.career>> - <<case "wealth">> - <<if $PC.boobs >= 300>> - "Spared no expenses for these babies, did you?" $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants. "Now there's the money maker!" - <<case "capitalist">> - <<if $PC.boobs >= 300>> - "Ever wonder if they were listening to you or just ogling the man with the breasts?" $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants. "Now that explains how you were so successful!" - <<case "engineer">> - <<if $PC.boobs >= 300>> - "How did you get any work done with these hanging over your designs?" $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants. "I see what kind of tools you like. Big and strong!" - <<case "medicine">> - <<if $PC.boobs >= 300>> - "I'm sure you had quite the number of clients after a pair of these," $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants. "Huh, I wonder if that's real..." - <<case "celebrity">> - <<if $PC.boobs >= 300>> - "Nice and supple. Just like I'd expect from a man sporting tits." $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants; "Oh, now those tabloids make sense." - <<case "escort">> - <<if $PC.boobs >= 300>> - "With these hanging out, how many men tried to pick you up?" $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants. "Now there's the money maker!" - <<case "servant">> - <<if $PC.boobs >= 300>> - "Did your Master even ask before he stuck you with these?" $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants. "Now that's surprising. I expected something smaller." - <<case "BlackHat">> - <<if $PC.boobs >= 300>> - "Nice and supple. What are the odds that I can find these babies on the internet?" $he smirks as $he gropes your breasts. - <</if>> - $He slips $his hand down your pants. "You wouldn't mind if I download a few files now would you? Well, not that it matters." - <</switch>> - Satisfied, $he pulls your cock out of its increasingly cramped confines. "Look at him grow, he knows what comes next..." $He teases as $he pushes you to the ground and climbs on top of you. - <br><br> - $He lines $himself up with the tip of your dick before taking its entire length into $himself. $He lets out a lust filled moan as $he begins to bounce on your traitorous member. You can do nothing to stop $him from riding you to climax, so you just enjoy the sight of $his breasts bouncing to $his pace. As you feel your orgasm approaching, you try to time it so you can slip out of $him just before you blow your load, but you have no such luck. - "You really think I'd let you spoil my plans?" $he asks as $he grinds against you, making sure you cum deep in $his pussy. $He leans back and massages $his <<if $PC.balls >= 20>>taut <</if>>stomach, savoring the sensation of your seed seeping into $him. "That's it, make me a mommy." $He leans in close and you pop free of $his snatch. "Be a good _girlP and make this arcology a nice place for your bastard. I want to retire in luxury." $He blows you a kiss as $he stuffs a plug up $his vagina, redresses and heads on $his way. By the time you loosen your bindings, $he is long gone. - <br><br> - It would be prudent to up security in your arcology, that or take a guard along when you leave the penthouse. You can't allow such an indignity to happen again, nor do you need the stress of a bastard trying to seize control of your estate when you want to retire, but you wouldn't mind having your way with $him if you get the chance. - <</if>> - -<<else>> - - Now the only question is what to do with the would-be rapist. You could toss them out of the arcology, but it might be more fun to turn the tables on $him. - - <<set _ContractCost = 1000>> - <<set _slaveCost = slaveCost(_rapist)>> - <<set _slaveCost -= 1000>> - <br> - //Applying enslavement as punishment will cost <<print cashFormat(_ContractCost)>>. Doing so and then selling $him immediately will bring in approximately <<print cashFormat(_slaveCost)>>.// - <br> - <<includeDOM App.Desc.longSlave(_rapist, {market: "generic"})>> - - <span id="result"> - <<if $cash >= _ContractCost>> - <br><<link "Enslave $him">> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _rapist)>> - <<replace "#result">> - You complete the legalities and biometric scanning quickly and without fuss. The idiot will regret crossing you when $he wakes in the penthouse for basic slave induction. - <<includeDOM App.UI.newSlaveIntro(_rapist)>> - <</replace>> - <</link>> - <br><<link "Sentence $him to a day in the stocks, then enslave $him">> - <<run healthDamage(_rapist, 10)>> - <<set _rapist.behavioralFlaw = "odd">> - <<set _rapist.sexualFlaw = "hates penetration">> - <<set _rapist.anus = 2>> - <<run seX(_rapist, "oral", "public", "penetrative", 23)>> - <<run seX(_rapist, "anal", "public", "penetrative", 12)>> - <<if _rapist.vagina > -1>> - <<set _rapist.vagina = 2>> - <<run seX(_rapist, "vaginal", "public", "penetrative", 12)>> - <<if random(1,100) > 60 && isFertile(_rapist)>> - <<= knockMeUp(_rapist, 100, 0, -2, 1)>> - <</if>> - <<else>> - <<run seX(_rapist, "anal", "public", "penetrative", 12)>> /* even more anal */ - <</if>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _rapist)>> - <<replace "#result">> - You declare $his holes fair game for the entire arcology. $He spends a torturous day in the stocks before being hauled in for enslavement, somewhat @@.health.dec;the worse for wear@@ and @@.red;acting oddly@@ due to $his ordeal, bruises all over $his body, cum leaking from $his @@.lime;loosened@@ anus<<if _rapist.vagina > -1>> and @@.lime;fucked-out@@ pussy<</if>>. The public @@.green;enjoys the fun.@@ - <<run repX(500, "event")>> - <<set $arcologies[0].prosperity += 2>> - <<includeDOM App.UI.newSlaveIntro(_rapist)>> - <</replace>> - <</link>> - <<if $arcade > 0>> - <br><<link "Enslave $him and sentence $him to a month in the arcade">> - <<= assignJob(_rapist, "be confined in the arcade")>> - <<set _rapist.sentence = 4>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _rapist)>> - <<replace "#result">> - You complete the legalities and biometric scanning quickly and cautiously. The idiot will be in for a surprise when $he awakes to find $he can't move and a dick is in $his ass. - <<run newSlave(_rapist)>> /* skip New Slave Intro */ - <</replace>> - <</link>> - <</if>> - <<if $dairy > 0>> - <<if $dairyRestraintsSetting > 1>> - <br><<link "Enslave $him and send $him straight to the industrial dairy">> - <<= assignJob(_rapist, "work in the dairy")>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _rapist)>> - <<replace "#result">> - You complete the legalities and biometric scanning quickly and cautiously. The idiot will wake up <<if $dairyStimulatorsSetting > 1>>in agony as $his anus takes the rectal hydration dildo<<else>>to find $his chest has begun swelling with milk<</if>>. - <<set _rapist.boobs += 300>> - <<run newSlave(_rapist)>> /* skip New Slave Intro */ - <</replace>> - <</link>> - <</if>> - <</if>> - <<if $farmyard > 0>> - <br><<link "Enslave $him and send $him straight to the farmyard">> - <<= assignJob(_rapist, "work as a farmhand")>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _rapist)>> - <<replace "#result">> - You complete the legalities and biometric scanning quickly and cautiously. The idiot will wake up in $farmyardName, where $he will spend the rest of $his days working the fields<<if $farmyardShows == 1>> and <<if $seeBestiality == 1>>getting fucked by animals<<else>>putting on shows with animals<</if>><</if>>. - <<run newSlave(_rapist)>> /* skip New Slave Intro */ - <</replace>> - <</link>> - <</if>> - <<if $seeExtreme > 0>> - <br><<link "Punitively amputate $his limbs, and then enslave $him">> - <<run healthDamage(_rapist, 20)>> - <<run removeLimbs(_rapist, "all")>> - <<set _rapist.behavioralFlaw = "odd">> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _rapist)>> - <<replace "#result">> - You want $him to suffer for what $he tried to pull on you. You make sure $he is fully awake as $he is strapped into the autosurgery. You take great pleasure in watching $him struggle as $his limbs are taken, one by one. Of course, @@.health.dec;$his health is affected@@ and the horrible experience has left $him @@.red;acting oddly.@@ After $he has stabilized, it's off to the penthouse for basic slave induction. You'd like to see $him try and touch you again without arms and legs. - <</replace>> - <</link>> - <<if _rapist.balls > 0>> - <br><<link "Enslave the criminal and geld $him">> - <<run healthDamage(_rapist, 20)>> - <<set _rapist.balls = 0>> - <<set _rapist.devotion -= 25>> - <<set _rapist.trust -= 25>> - <<run cashX(forceNeg(_ContractCost), "slaveTransfer", _rapist)>> - <<replace "#result">> - You want $him to suffer for what $he tried to pull on you. You make sure $he is fully awake as $he is strapped into the autosurgery, taking the time to roughly fondle $his balls. You take great pleasure in watching $him struggle as $his testicles are removed. Once $he can stand again, it's off to the penthouse for basic slave induction. - <<includeDOM App.UI.newSlaveIntro(_rapist)>> - <</replace>> - <</link>> - <</if>> - <</if>> - <<else>> - //You lack the necessary funds to enslave $him.// - <</if>> - <br><<link "Publicly flog the criminal">> - <<replace "#result">> - Naturally, the wretch will be thrown out of the arcology, but an example must first be made. Free people must understand that criminals who commit outrages against them will be severely punished. The protesting malefactor is stripped and flogged on the promenade before being escorted bleeding from the arcology. The public @@.green;approves of this harshness.@@ - <<run repX(500, "event")>> - <</replace>> - <</link>> - </span> - -<</if>> diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw index f66715d8aeb9cb1c798dee7f0b43b13fb7ab7d21..3de2220374bd4e8d8ed73aaf8ab38afca3b63483 100644 --- a/src/uncategorized/RESS.tw +++ b/src/uncategorized/RESS.tw @@ -4952,7 +4952,7 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look. <<if !canTalk($activeSlave)>> and panting in lieu of an exclamation. <<else>> - and <<say>>ing "Oh" over and over again. + and <<say>>ing "oh" over and over again. <</if>> <<if $PC.dick != 0>>$He clenches against your dick,<<if $PC.vagina != -1>> so hard that you can feel the rush of blood into your cunt,<</if>><<else>>$He works your pussy harder,<</if>> getting you off in turn, and then rolls over to plant a whole-hearted kiss on your lips. <<set $activeSlave.devotion += 4>>