diff --git a/devTools/FC.d.ts b/devTools/FC.d.ts index ab9704e07d6cfbc7171c76860b70f7fbb4466a42..356f276896c1398d474b6df475d3fe21b84658c4 100644 --- a/devTools/FC.d.ts +++ b/devTools/FC.d.ts @@ -50,6 +50,8 @@ declare namespace App { namespace Interact {} + namespace MainView {} + namespace RA { class NumericTarget { cond: string; diff --git a/js/002-config/fc-js-init.js b/js/002-config/fc-js-init.js index f01b00419cd4402a38ff4f7dbbbb7442d47e858e..ce3b9d12f6328f6cdb4701a916d1d769cd9092da 100644 --- a/js/002-config/fc-js-init.js +++ b/js/002-config/fc-js-init.js @@ -9,6 +9,7 @@ App.Data = {}; App.Debug = {}; App.Entity = {}; App.Entity.Utils = {}; +App.MainView = {}; App.UI = {}; App.UI.DOM = {}; App.UI.View = {}; diff --git a/src/Mods/Reminder/reminder.js b/src/Mods/Reminder/reminder.js index 7de0700054e437f65e3fb994bc0bc3df444a0dd1..18fd2c2401404fb33c99ac4c3b97d0e060f20416 100644 --- a/src/Mods/Reminder/reminder.js +++ b/src/Mods/Reminder/reminder.js @@ -19,9 +19,10 @@ App.Reminders.add = function(message, week, category = "manual") { /** * @param {number} [maxFuture] how far into the future should reminders be displayed. * @param {string} [category] + * @param {boolean} [link] show link to managePersonalAffairs.tw * @return {string} */ -App.Reminders.list = function list({maxFuture = Number.POSITIVE_INFINITY, category = "all"} = {}) { +App.Reminders.list = function list({maxFuture = Number.POSITIVE_INFINITY, category = "all", link = false} = {}) { if (V.reminders.length === 0) { return ""; } @@ -30,9 +31,9 @@ App.Reminders.list = function list({maxFuture = Number.POSITIVE_INFINITY, catego * @param {string} c * @return boolean */ - let includedCategory = category === "all" ? () => true : c => c === category; + const includedCategory = category === "all" ? () => true : c => c === category; - let replace = () => App.UI.replace("#reminder", list({maxFuture: maxFuture, category: category})); + const replace = () => App.UI.replace("#reminder", list({maxFuture: maxFuture, category: category, link: link})); /** * @param {{}} entry @@ -83,6 +84,9 @@ App.Reminders.list = function list({maxFuture = Number.POSITIVE_INFINITY, catego } if (any) { r += `<div>${App.UI.link("Clear All", clearAll, [])}</div>`; + if (link) { + r += `<div>${App.UI.link("Manage reminders", () => {}, [], "Manage Personal Affairs")}</div>`; + } } return `<span id="reminder">${r}</span>`; diff --git a/src/Mods/SpecialForce/Firebase.tw b/src/Mods/SpecialForce/Firebase.tw index c47f66b76a81346ab0ee470d46fb5184aeb31232..80c7448c379f60bdd1c2a780550ac0265c9dec55 100644 --- a/src/Mods/SpecialForce/Firebase.tw +++ b/src/Mods/SpecialForce/Firebase.tw @@ -22,11 +22,11 @@ <<if $cheatMode > 0>> [[Cheat edit|CheatEdit][]] <br> <</if>> The firebase of $arcologies[0].name's <<textbox "$SF.Lower" $SF.Lower "Firebase">> is located in the lower levels, occupying unneeded warehouse space. It is not accessible to the general citizenry, but your personal elevator has express service to it. As you step off, two soldiers in combat armor manning the entry checkpoint tense before recognizing their Marshal and stepping aside with a sharp salute.<br> - <<if $SF.MercCon.CanAttend === 1>> The Colonel is away at her merc meetup, so <<print App.SF.SFC()>> will assist you. + <<if $SF.MercCon.CanAttend === 1>>The Colonel is away at her merc meetup, so <<print App.SF.SFC()>> will assist you. <<else>> You make your way to the operations center. The Colonel is <<if random(1,100) > 25>>glancing between her tablet and the large wallscreen, occasionally taking notes or barking orders. - <<elseif random(1,100) > 25>>is handling a minor issue.<<else>>examining a table with a map of the surrounding area, planning maneuvers in the event of an attack.<</if>> + <<elseif random(1,100) > 25>>handling a minor issue.<<else>>examining a table with a map of the surrounding area, planning maneuvers in the event of an attack.<</if>> She notices your entrance and turns her attention to you. <</if>> diff --git a/src/Mods/SpecialForce/NamingColonel.tw b/src/Mods/SpecialForce/NamingColonel.tw index 29d3626ff3f6a83021efd82c6f6e18a6c8485c48..235b9468618abf0573ac4dba2a31e32ca581cef7 100644 --- a/src/Mods/SpecialForce/NamingColonel.tw +++ b/src/Mods/SpecialForce/NamingColonel.tw @@ -134,7 +134,7 @@ [[Let her leave|Security Force Naming-Colonel][$SF.IntroProgress = 2]] <</if>> <<elseif $SF.IntroProgress < 3>> <<set $nextLink = "RIE Eligibility Check",$nextButton = "Continue">> - She turns and leaves, and you chase the slave out after her. A few minutes later, a soft chime announces the arrival of a message. It's from the Colonel. + She turns and leaves, and you chase the slave out after her. A few minutes later, a soft chime announces the arrival of a message. It's from The Colonel. <br><br> //Hey boss, just wanted to mention something else. In your speech you said that you were going to be paying for $SF.Lower. In my mind that means it's yours, no matter what anyone else here might think. I do what you tell me to do. I make sure the troops behave as you want them to behave. I've worked for some 'nice guys' in the past, and I can do that job if you want. It's boring, but sustainable, and I'll have $SF.Lower turning a profit and supporting the arcology in good order. But if you let me <<if $SF.Colonel.Core === "cruel">>off the leash<<else>>do what I do<</if>> and throw any old world complaints in the trash where they belong, I promise you'll have money pouring into your coffers, even accounting for the good amounts me and my boys will pocket along the way. You'll have an empire in short order. <<if $mercenaries > 1>> diff --git a/src/Mods/SpecialForce/SpecialForce.js b/src/Mods/SpecialForce/SpecialForce.js index ea1a356df38e6ef6b922fbc8f139f9ed764fdc17..eaa81f40d3207dd7e8403d08c97b419e0e2cfb40 100644 --- a/src/Mods/SpecialForce/SpecialForce.js +++ b/src/Mods/SpecialForce/SpecialForce.js @@ -443,7 +443,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) } else if (V.SF.FS[selectedFS].lv === 85) { InputText1 += `Mandate FS-Roleplaying`; } else if (V.SF.FS[selectedFS].lv === 90) { - InputText1 += `Talk the Colonel into Compliance`; + InputText1 += `Talk The Colonel into Compliance`; } } @@ -587,7 +587,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) var0 = -15; var1 = 1; InputText0 += `\n `; - InputText1 += `Buy the Colonel a personal gift `; + InputText1 += `Buy The Colonel a personal gift `; } if (V.SF.FS[selectedFS].gift < 1 || (V.SF.FS[selectedFS].lv < 100 && V.SF.FS[selectedFS].vaildOption > 0)) { @@ -621,7 +621,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) if (input === 'Menu') { if (V.SF.FS.Tension === -1) { text += `<<link "Talk to The Colonel about Future Society integration">> <<replace "#result0">> \n\n`; - text += `You bring up the topic of cultural development with the Colonel, and in doing so, you share your hopes that she might be willing to help you better acquaint the troops with your cultural mores. Her response was less than positive: `; + text += `You bring up the topic of cultural development with The Colonel, and in doing so, you share your hopes that she might be willing to help you better acquaint the troops with your cultural mores. Her response was less than positive: `; switch (V.SF.Colonel.Core) { case "kind": text += `"To be honest, I'm not too happy about this idea. Your plans for cultural development are too... extreme. All we need to focus on is security, raiding, and recruiting. That is what my contract, OUR contract, states in the print. I'm sorry, but innovating upon our culture was not part of our agreement."`; @@ -723,7 +723,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) switch (FS_OPTIONS[i]) { case 'Repopulation': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nTo ease The Colonel's hostility towards Repopulationism, you have gifted her with a very large and unusually shaped armored Command Vehicle; it is designed to fully support the Colonel herself and all of her Command & Communications needs in the field. Given its one-occupant design, it comes well supported with its global-uplink communications array, onboard super computer, shock and blast resistant interior foam padding, adjustable body harness, extended life support & CBRN protection suites, advanced waste removal systems, and its in-built pregnancy-support systems. Should she ever decide to take to the battlefield whilst ${hyperPreg1} pregnant herself, there is no vehicle in the world she would prefer over this one. Despite not yet being ${hyperPreg0}pregnant, she is impressed by how roomy, comfortable, and capable her new Command Vehicle is, despite its large profile. You see her using it quite a bit too, despite her body still being much smaller than the unit was designed for.\n`; + text += `\nTo ease The Colonel's hostility towards Repopulationism, you have gifted her with a very large and unusually shaped armored Command Vehicle; it is designed to fully support The Colonel herself and all of her Command & Communications needs in the field. Given its one-occupant design, it comes well supported with its global-uplink communications array, onboard super computer, shock and blast resistant interior foam padding, adjustable body harness, extended life support & CBRN protection suites, advanced waste removal systems, and its in-built pregnancy-support systems. Should she ever decide to take to the battlefield whilst ${hyperPreg1} pregnant herself, there is no vehicle in the world she would prefer over this one. Despite not yet being ${hyperPreg0}pregnant, she is impressed by how roomy, comfortable, and capable her new Command Vehicle is, despite its large profile. You see her using it quite a bit too, despite her body still being much smaller than the unit was designed for.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nThe troops enjoy their Repopulationist food, which tastes better than the old food, while being completely unaware that they increase semen production and promote ovulation.\n`; @@ -971,7 +971,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Body_Purism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nA powerful experimental serum has been synthesized within your arcology recently, and it has been making waves in the private medical circles of your domain for its vast effects in improving test subjects' natural immuno-responsiveness, bone & muscle density, cellular regeneration, cognition, and lifespan. Still very much a prototype, and still far too expensive for any sort of widespread use, it is available only in small, specially ordered quantities. One such quantity has been gifted to the Colonel, via a sealed serum syringe package. If, one day, The Colonel decides that she trusts you enough to inject the battery of syringes into her bloodstream, she will experience a complete bodily rejuvenation, free from any kind of surgery or artificial modification. At any rate, the Colonel was genuinely impressed that you and your people believe in the Purism ideal enough to make an actual medical innovation based on it.\n`; + text += `\nA powerful experimental serum has been synthesized within your arcology recently, and it has been making waves in the private medical circles of your domain for its vast effects in improving test subjects' natural immuno-responsiveness, bone & muscle density, cellular regeneration, cognition, and lifespan. Still very much a prototype, and still far too expensive for any sort of widespread use, it is available only in small, specially ordered quantities. One such quantity has been gifted to The Colonel, via a sealed serum syringe package. If, one day, The Colonel decides that she trusts you enough to inject the battery of syringes into her bloodstream, she will experience a complete bodily rejuvenation, free from any kind of surgery or artificial modification. At any rate, The Colonel was genuinely impressed that you and your people believe in the Purism ideal enough to make an actual medical innovation based on it.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nAll of the food is rigorously examined before passing into the Firebase for preparation. It is not even kept in storage for long, often being cooked and served within hours of arriving, for optimal freshness. It is all healthy too, with plentiful salads, fruits, and vegetables served at every turn.\n`; @@ -1033,7 +1033,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Transformation_Fetishism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nAn extensive and revolutionary cybernetic modification scheme has been perfected within your arcology recently, and it has been making waves in the private medical circles of your domain for the vast effectiveness of its implanted bio-synthetic bone & muscle reinforcement weaves, and ubiquitous subdermal nanite colonies for enhanced cellular regeneration, immuno-response, cognition, and lifespan. Utilizing extreme bio-mechanical prototypes, and being far too expensive for widespread use, it is offered only to select VIP's... Such as the Colonel, who has already been gifted a paperback manual detailing exactly what her slot-reserved surgery will entail and provide. If, one day, The Colonel decides that she trusts you enough to consent to the procedure, she will experience a complete bodily transformation, free from many weaknesses of flesh.\n`; + text += `\nAn extensive and revolutionary cybernetic modification scheme has been perfected within your arcology recently, and it has been making waves in the private medical circles of your domain for the vast effectiveness of its implanted bio-synthetic bone & muscle reinforcement weaves, and ubiquitous subdermal nanite colonies for enhanced cellular regeneration, immuno-response, cognition, and lifespan. Utilizing extreme bio-mechanical prototypes, and being far too expensive for widespread use, it is offered only to select VIP's... Such as The Colonel, who has already been gifted a paperback manual detailing exactly what her slot-reserved surgery will entail and provide. If, one day, The Colonel decides that she trusts you enough to consent to the procedure, she will experience a complete bodily transformation, free from many weaknesses of flesh.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nDishes served in the Firebase all come with thoroughly processed meat, and vending machines containing all manner of processed snack foods are widely available.\n`; @@ -1219,7 +1219,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Paternalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nPaternalism is all about improving and saving human lives within the context of Free Cities existence, and you are proud to have granted The Colonel a direct manifestation of this powerful ideal via air power. The Colonel has been delivered her very own OMEGA-series MEDIVAC V/STOL aircraft. This flying monolith is very difficult to manufacture, for it is designed to reach embattled trouble zones very quickly despite its massive weight, make rapid landings in impromptu LZ's despite its massive bulk, and endure heavy fire and extreme weather to evacuate wounded personnel despite being a lightly armored aircraft. This variant of the OMEGA-series can take in hundreds of casualties for the onboard staff to stabilize, before dropping them off at the Firebase for truly intensive care. Given its prestige, ease of use, and tremendous durability, the Colonel has been known to occasionally use it to personally evacuate endangered friendly platoons in the field or sometimes even desperate refugees, whenever she needs a productive diversion from her usual duties.\n`; + text += `\nPaternalism is all about improving and saving human lives within the context of Free Cities existence, and you are proud to have granted The Colonel a direct manifestation of this powerful ideal via air power. The Colonel has been delivered her very own OMEGA-series MEDIVAC V/STOL aircraft. This flying monolith is very difficult to manufacture, for it is designed to reach embattled trouble zones very quickly despite its massive weight, make rapid landings in impromptu LZ's despite its massive bulk, and endure heavy fire and extreme weather to evacuate wounded personnel despite being a lightly armored aircraft. This variant of the OMEGA-series can take in hundreds of casualties for the onboard staff to stabilize, before dropping them off at the Firebase for truly intensive care. Given its prestige, ease of use, and tremendous durability, The Colonel has been known to occasionally use it to personally evacuate endangered friendly platoons in the field or sometimes even desperate refugees, whenever she needs a productive diversion from her usual duties.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nFirebase cuisine is prepared with exceptional care, the talented slave-cooks put lots of attention in replicating their family specialty dishes as best they can whenever asked. The troops love the food they get, and mealtimes here frequently prove to be great occasions for bonding.\n`; @@ -1231,7 +1231,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) text += `\nEvery slave here is allotted regular breaks, issued protective gloves and aprons for their work, and even receive regular medical checkups. Numerous slaves have also befriended some soldiers, and even sometimes see these soldiers off on their regular deployments.\n`; } if (textDisplay === 20 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { - text += `\nThe new captives brought t the processing cages are all given 'slave manuals', printed in their declared native language. The manuals are meant to thoroughly inform them of how they should best serve and survive in their new lives. They are all given clean bedrolls to spare them from sleeping on the floor of their cages, and they are also given regular psychiatric and physical evaluations to ensure sound body and mind.'\n`; + text += `\nThe new captives brought to the processing cages are all given 'slave manuals', printed in their declared native language. The manuals are meant to thoroughly inform them of how they should best serve and survive in their new lives. They are all given clean bedrolls to spare them from sleeping on the floor of their cages, and they are also given regular psychiatric and physical evaluations to ensure sound body and mind.'\n`; } if (textDisplay === 25 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nComfort is king here. Every chair now enjoys soft fluffy padding while every table is fully adjustable in height. The large and well-maintained side dens that serve as the local slave quarters all feature simple-yet-comfortable bunk beds, proper plumbing and heating, and even their very own soft drink dispensers.\n`; @@ -1281,7 +1281,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Degradationism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nDegradationism is all about belittling or destroying others' lives for one's own benefit, and you are proud to have granted The Colonel a direct manifestation of this powerful ideal via air power. The Colonel has been delivered her very own ALPHA-series STARSCREAM fighter-bomber aircraft. This flying behemoth is very difficult to manufacture, for it is designed to reach and dominate contested air spaces very quickly despite its massive weight and make rapid & precise bombing runs landings in tight urban environments despite its massive bulk. This variant of the ALPHA-series can rake in hundreds of casualties per minute with the help of its onboard targeting AI's, numerous swiveling autocannons & missile bays, and its wide onboard assortment of modern multi-munitions payloads for truly intensive carnage. Given its prestige, ease of use, and tremendous lethality, the Colonel has been known to occasionally use it to personally strike exposed enemy platoons in the field or sometimes even desperate refugees that get just a little too close to the Free City.\n`; + text += `\nDegradationism is all about belittling or destroying others' lives for one's own benefit, and you are proud to have granted The Colonel a direct manifestation of this powerful ideal via air power. The Colonel has been delivered her very own ALPHA-series STARSCREAM fighter-bomber aircraft. This flying behemoth is very difficult to manufacture, for it is designed to reach and dominate contested air spaces very quickly despite its massive weight and make rapid & precise bombing runs landings in tight urban environments despite its massive bulk. This variant of the ALPHA-series can rake in hundreds of casualties per minute with the help of its onboard targeting AI's, numerous swiveling autocannons & missile bays, and its wide onboard assortment of modern multi-munitions payloads for truly intensive carnage. Given its prestige, ease of use, and tremendous lethality, The Colonel has been known to occasionally use it to personally strike exposed enemy platoons in the field or sometimes even desperate refugees that get just a little too close to the Free City.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nFirebase cuisine is prepared with exceptional care; after all, human meat is no joke, and cannibalism in the Free Cities is a very controversial and esoteric topic as is. Regardless, the troops love the food they get, even after they learn the truth about the food they consume. As such the Firebase is one of the rare testbeds around the world for this daring new frontier of diet. `; @@ -1335,7 +1335,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) text += `\nA fully furnished, equipped, and staffed maximum-security military prison complex has been established on the outskirts of the Firebase entrance. With its tall rooftop watchtower and a spacious reinforced central courtyard, it can retain and retrain vast quantities of future slaves using the many tools and trainers available at all times to ensure that every captured person can be quickly made ready for a life of labor, be it sexual or otherwise. The trainers and prison guards are clinical and unsympathetic in their duties, and thanks to this facility's vast capacity, excess slaves that the Firebase cannot hold are no longer left behind after raids. Since the creation of the complex, the Firebase can now accommodate as many slaves as it wants, and now entire townships can be casually picked clean of human life and have their populations be fully trained at the Firebase's leisure before sale. The Firebase has always contained its own dedicated slaveholding and slave training facilities of course, but now, it enjoys truly peerless enslavement provisions.\n`; } if (textDisplay === 90 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { - text += `\nDominance and Greed are sacrosanct in your Firebase, and this is making the "esprit de corps" very fearsome as the months pass by. This clan places great importance on the community's violence of action, and more personnel than ever are stacking the odds in their favor with close quarters combat regimens or advanced interrogation courses. Because of this, new recruits are accorded with hostility and careful scrutiny; the priority is weeding out aspirants too squeamish for the Firebase's good, and instilling ferocity and determination into those that are left. Staff and soldiers alike are bound to their strict and highly competitive social totem poles, where esteem and respect comes strictly from each member's skills, kills, or wealth. Politeness and Compassion are seen as signs of weakness, of course. At the bottom of it all are the slaves; bar the Colonel and her top dogs, nearly everyone here is getting taken advantage of by those higher up, and thus everyone in need of a release valve for their rage will simply snatch up the nearest available slave. Therefore, unproved beatings, torturings, and rapings of the many slaves present are so common that they are ignored. At any time, one can see a few off duty veterans hazing the shit out of a new recruit. Over by the bars, two troopers are brawling in front of a jeering crowd, duking it out over some perceived slight or another. Elsewhere, a group of slaves is huddling together for warmth in the last few minutes of their sleep time. A predatory mindset has taken hold of the Firebase, and you doubt it will lt go anytime soon.\n`; + text += `\nDominance and Greed are sacrosanct in your Firebase, and this is making the "esprit de corps" very fearsome as the months pass by. This clan places great importance on the community's violence of action, and more personnel than ever are stacking the odds in their favor with close quarters combat regimens or advanced interrogation courses. Because of this, new recruits are accorded with hostility and careful scrutiny; the priority is weeding out aspirants too squeamish for the Firebase's good, and instilling ferocity and determination into those that are left. Staff and soldiers alike are bound to their strict and highly competitive social totem poles, where esteem and respect comes strictly from each member's skills, kills, or wealth. Politeness and Compassion are seen as signs of weakness, of course. At the bottom of it all are the slaves; bar The Colonel and her top dogs, nearly everyone here is getting taken advantage of by those higher up, and thus everyone in need of a release valve for their rage will simply snatch up the nearest available slave. Therefore, unproved beatings, torturings, and rapings of the many slaves present are so common that they are ignored. At any time, one can see a few off duty veterans hazing the shit out of a new recruit. Over by the bars, two troopers are brawling in front of a jeering crowd, duking it out over some perceived slight or another. Elsewhere, a group of slaves is huddling together for warmth in the last few minutes of their sleep time. A predatory mindset has taken hold of the Firebase, and you doubt it will lt go anytime soon.\n`; } if (textDisplay === 100 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nDegradationism: The Colonel is on the prowl; she is more reckless, impulsive, and aggressive than before, as if there is some demanding beast inside of her that she can't quite satisfy. Her personality itself hasn't changed; she speaks with you just as affably as before... Her actions are what's different: prisoners of war, slave captives, and civilians are treated with no dignity at all, and she seems to greatly enjoy punishing her troops harshly for transgressions and failures. She still generously rewards successes, however.\n`; @@ -1343,7 +1343,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Physical_Idealism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { - text += `\nWith the help of her own personal Amphibious Assault Landship, The Colonel can stage a miniature invasion or expedition behind enemy lines or unclaimed territories whenever she pleases, independent of what the rest of the Firebase is up to. This massive, high-performance, quad tracked vehicle can seamlessly transition from land to sea and vice-versa, while sporting a turret armed with a recoilless main gun, and carrying a company-sized element of light infantry and a week's worth of their supplies. This vehicle's long range and hefty versatility makes it a perfect vehicle for the Colonel to stay productive during her more independent, adventurous moods.\n`; + text += `\nWith the help of her own personal Amphibious Assault Landship, The Colonel can stage a miniature invasion or expedition behind enemy lines or unclaimed territories whenever she pleases, independent of what the rest of the Firebase is up to. This massive, high-performance, quad tracked vehicle can seamlessly transition from land to sea and vice-versa, while sporting a turret armed with a recoilless main gun, and carrying a company-sized element of light infantry and a week's worth of their supplies. This vehicle's long range and hefty versatility makes it a perfect vehicle for The Colonel to stay productive during her more independent, adventurous moods.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nTender meats of all kinds are made available in abundance, with a free protein powder packet or nutrition bar provided with each meal. Sweetened protein drinks are available in all forms and varieties as well, including milkshakes and even alcoholic beverages.\n`; @@ -1405,7 +1405,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Hedonistic_Decadence': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nWith the help of her own personal Amphibious Resupply Landship, The Colonel can support ongoing operations within friendly lines while doing very little work herself, independent of whatever the rest of the Firebase is up to. This massive, high-capacity, quad tracked vehicle can seamlessly transition from land to sea and vice-versa, while supporting dozens of heavy ammo crates, several refueling hoses & fuel pumps, and a whole week's worth of rations and recreational refreshments for an entire infantry company. This vehicles long range and ease of use makes it a perfect vehicle for the Colonel to stay productive during her more lackadaisical moods.\n`; + text += `\nWith the help of her own personal Amphibious Resupply Landship, The Colonel can support ongoing operations within friendly lines while doing very little work herself, independent of whatever the rest of the Firebase is up to. This massive, high-capacity, quad tracked vehicle can seamlessly transition from land to sea and vice-versa, while supporting dozens of heavy ammo crates, several refueling hoses & fuel pumps, and a whole week's worth of rations and recreational refreshments for an entire infantry company. This vehicles long range and ease of use makes it a perfect vehicle for The Colonel to stay productive during her more lackadaisical moods.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nDelightful platters of bewildering varieties of foods and baked treats are available on demand, as the cooks and slave-cooks toil day and night on rotation to keep it all coming. Each soldier gets a tray at every meal to fill and stack as he or she pleases, with a small free packet of recreational drugs given with every meal.\n`; @@ -1467,7 +1467,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Slave_Pastoralism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nYou've purchased unused land just outside of the Free City, and cultivated it into a very unique farm, with its own fully furnished farmhouse & manger, several acres of parish & pasture, farming vehicles & tools, and of course, a fully upgraded dairy for human livestock to enjoy. It even comes with its own horse. This is the Colonel's farm now, and from here she is free to grow, tend, milk, harvest, store, and sell whatever she pleases. You do not know if she grew up in a rural, agricultural setting like this, but you do note that she did appreciate having such a tranquil retreat away from the sex, violence, and noise of the Free City proper. Even she needs a few quiet peaceful days sometimes.\n`; + text += `\nYou've purchased unused land just outside of the Free City, and cultivated it into a very unique farm, with its own fully furnished farmhouse & manger, several acres of parish & pasture, farming vehicles & tools, and of course, a fully upgraded dairy for human livestock to enjoy. It even comes with its own horse. This is The Colonel's farm now, and from here she is free to grow, tend, milk, harvest, store, and sell whatever she pleases. You do not know if she grew up in a rural, agricultural setting like this, but you do note that she did appreciate having such a tranquil retreat away from the sex, violence, and noise of the Free City proper. Even she needs a few quiet peaceful days sometimes.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nFor a multitude of dishes and drinks where normal animal milk is a key ingredient, human milk now substitutes. There are even chilled drink dispensers filled with human milk, right next to the standard water dispensers.\n`; @@ -1529,7 +1529,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Chattel_Religionism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nYou've purchased an unused storefront just outside of the arcology's central business district, and redecorated it to serve as a unique cathedral for a distinct sect of your Chattel Religionist faith; a cult that observes the Colonel as your divinely chosen apostle, who has come to carry your arcology to its glorious future. This is the Colonel's cult now, and from here she is free to cultivate her very own band of devotees. You do not know if she grew up regularly attending a religious setting like this, but you do note that she did appreciate having such a sycophantic retreat away from the sex, violence, and noise of the Firebase underground. Even she needs a few quiet meditative days sometimes.\n`; + text += `\nYou've purchased an unused storefront just outside of the arcology's central business district, and redecorated it to serve as a unique cathedral for a distinct sect of your Chattel Religionist faith; a cult that observes The Colonel as your divinely chosen apostle, who has come to carry your arcology to its glorious future. This is The Colonel's cult now, and from here she is free to cultivate her very own band of devotees. You do not know if she grew up regularly attending a religious setting like this, but you do note that she did appreciate having such a sycophantic retreat away from the sex, violence, and noise of the Firebase underground. Even she needs a few quiet meditative days sometimes.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nThe food supplies packages the Firebase receives daily now come with consecrated 'purity seals', assuring the cooks as to the food's freshness and holiness. The food itself hasn't changed much, but each meal now comes with a small side dish featuring plain white bread slices and a shot of red wine, so as to signify a sacrifice or meditation of some kind.\n`; @@ -1591,7 +1591,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Multiculturalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nIn anticipation of the impending global meltdown that doomsday preppers are currently preparing for all around the world, you've had a secret location installed in the arcology, created to match the essential specifications of a modern luxury 'doomsday' bunker. To guarantee the Colonel's survival and comfort in the event of an apocalyptic crisis, you've gone all out: You've carved out an underground formation far underneath the arcology's foundations to build her a private fallout shelter, complete with a secure communications center, her overseer bedroom and several private bedrooms & bathrooms, an artificial aquifer, an agricultural greenhouse, a gymnasium & swimming pool, a fireproof storeroom packed with years worth of dried rations & medical supplies, a stocked munitions room, and a sealed underground passageway leading back up to the surface. When she first entered the overseer bedroom, she found the various emergency survival tomes you've bought for her and her future fellow dwellers. She also saw the extraordinary modular HazMat suit you've had made to her exact measurements, for that special day when she will be ready to emerge from shelter and take on whatever is left of the world.\n`; + text += `\nIn anticipation of the impending global meltdown that doomsday preppers are currently preparing for all around the world, you've had a secret location installed in the arcology, created to match the essential specifications of a modern luxury 'doomsday' bunker. To guarantee The Colonel's survival and comfort in the event of an apocalyptic crisis, you've gone all out: You've carved out an underground formation far underneath the arcology's foundations to build her a private fallout shelter, complete with a secure communications center, her overseer bedroom and several private bedrooms & bathrooms, an artificial aquifer, an agricultural greenhouse, a gymnasium & swimming pool, a fireproof storeroom packed with years worth of dried rations & medical supplies, a stocked munitions room, and a sealed underground passageway leading back up to the surface. When she first entered the overseer bedroom, she found the various emergency survival tomes you've bought for her and her future fellow dwellers. She also saw the extraordinary modular HazMat suit you've had made to her exact measurements, for that special day when she will be ready to emerge from shelter and take on whatever is left of the world.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nThe troops are provided their pick of foods from many Old World countries and many 'New World' Free Cities alike. Delicacies and drinks from nearly every part of the world are available, with many soldiers even being acquainted with the histories and variations of their favorite dishes.\n`; @@ -1653,7 +1653,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Slimness_Enthusiasm': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nIn celebration of Slimness Enthusiasm, you've gifted the Colonel with her very own fleet of small single-seater reconnaissance buggies, all made from extremely lightweight-yet-durable alloys, and precisely engineered miniature nuclear reactors meant to allow each vehicle in the fleet to achieve obscene speeds in the field in all terrains. They even come with roof hardpoint mounts for mounting light remote-operated weapons. Thanks to their stellar support systems they also ensure driver safety and orientation during use, reliably absorbing and redistributing the energy received from the multitude of shocks, bounces, g-forces, jolts, jumps, and other maneuverability hiccups that would make these vehicles impossible to handle without them. All that being said, they are very fun to drive and eventually master. Also, their extreme mobility, tiny target profiles, quiet engines, and ease of camouflage all make them excellent recon vehicles for the Colonel and her friends to use for races, scouting missions, and raids whenever things in the Firebase get too boring.\n`; + text += `\nIn celebration of Slimness Enthusiasm, you've gifted The Colonel with her very own fleet of small single-seater reconnaissance buggies, all made from extremely lightweight-yet-durable alloys, and precisely engineered miniature nuclear reactors meant to allow each vehicle in the fleet to achieve obscene speeds in the field in all terrains. They even come with roof hardpoint mounts for mounting light remote-operated weapons. Thanks to their stellar support systems they also ensure driver safety and orientation during use, reliably absorbing and redistributing the energy received from the multitude of shocks, bounces, g-forces, jolts, jumps, and other maneuverability hiccups that would make these vehicles impossible to handle without them. All that being said, they are very fun to drive and eventually master. Also, their extreme mobility, tiny target profiles, quiet engines, and ease of camouflage all make them excellent recon vehicles for The Colonel and her friends to use for races, scouting missions, and raids whenever things in the Firebase get too boring.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nThe meals are prepared and presented as low-calorie or even calorie-free, stripping fatty content wherever possible. Smaller portions and slices than market standard are not uncommon either.\n`; @@ -1710,12 +1710,12 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) text += `\nThe population of the Firebase is slim-bodied. All personnel, from cooks, to pilots, to infantry, have some form of size reduction done to themselves; liposuctions have become quite popular, and breast and buttocks reductions procedures are in vogue. Cash bonus incentives as well as positive peer pressure are used as useful forces to push new recruits into the slimness mindset. Sleek is sexy, and your soldiers embrace this attitude wholesale, with the compactness of one's body parts and possessions considered a key indicator of social status as well as personal areas of continuous improvement.\n`; } if (textDisplay === 100 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { - text += `\nSlimness Enthusiasm: The Colonel has gotten several additional slaves for her pavilion, and they are very trim, with flat bellies and minimal assets. Sometimes you spot the Colonel casually picking one of them up wholesale and carrying them over her shoulder to her couch for use.\n`; + text += `\nSlimness Enthusiasm: The Colonel has gotten several additional slaves for her pavilion, and they are very trim, with flat bellies and minimal assets. Sometimes you spot The Colonel casually picking one of them up wholesale and carrying them over her shoulder to her couch for use.\n`; } break; case 'Asset_Expansionism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nIn celebration of Asset Expansionism, you've gifted the Colonel with her very own super-heavy missile tank. Making up its shape are its four wide tracks and its thoroughly protective armoring that includes thick Chobham-based armor, overlapping detachable NERA plates, a mine-resistant underbelly, and broad RPG cages along the turret, roof, & hull. It has equally excessive weaponry too; with its large crew, its high-caliber quad-barrel autocannons, automatic grenade launchers, and its ATGM hunter-killer turrets, it can engage myriad opponents simultaneously. The missile tank's computing systems maximize it's crew's situational awareness using thousands of real-time data sources, ensuring that the crew always has optimal targeting solutions and can avoid enemy strafing and flanking attempts. These features make this mobile weapons platform a great asset in the field, despite its large target profile. All in all it is a very fun vehicle for the Colonel and her friends to take onto the battlefield for explosions and giggles whenever things in the Firebase get too boring. `; + text += `\nIn celebration of Asset Expansionism, you've gifted The Colonel with her very own super-heavy missile tank. Making up its shape are its four wide tracks and its thoroughly protective armoring that includes thick Chobham-based armor, overlapping detachable NERA plates, a mine-resistant underbelly, and broad RPG cages along the turret, roof, & hull. It has equally excessive weaponry too; with its large crew, its high-caliber quad-barrel autocannons, automatic grenade launchers, and its ATGM hunter-killer turrets, it can engage myriad opponents simultaneously. The missile tank's computing systems maximize it's crew's situational awareness using thousands of real-time data sources, ensuring that the crew always has optimal targeting solutions and can avoid enemy strafing and flanking attempts. These features make this mobile weapons platform a great asset in the field, despite its large target profile. All in all it is a very fun vehicle for The Colonel and her friends to take onto the battlefield for explosions and giggles whenever things in the Firebase get too boring. `; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nEach food item that ends up on the plate of your soldiers is bigger than it might normally be. For example, in the fast food section, everything served, from the meat patties to the buns to the French fries and the soda tubs that come with them, are all individually huge by Old World standards, filling the plates and paper bags they come in rather easily. Colossal cakes, pies, and other goodies are on display next to the other foods on offer in your Firebase, which are also bigger than they should be.\n`; @@ -1777,7 +1777,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Roman_Revivalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nThe Colonel has been bestowed with an unmistakable and peerless. badge of office - a mastercrafted SPATHI sword, forged from nigh-unbreakable metals, made extremely sharp with the help of a machine that she also now owns, and equipped with an inbuilt communications array, holographic display projector, recharging port, and fingerprint scanner that delivers electric shocks to anyone other than the Colonel when wielded. It comes with an immaculate sheath, and a complementary gold-wrought laurel wreath and fine linen toga, further enabling her to command the legions of the Firebase with absolute authority and authenticity within the Roman tradition.\n`; + text += `\nThe Colonel has been bestowed with an unmistakable and peerless. badge of office - a mastercrafted SPATHI sword, forged from nigh-unbreakable metals, made extremely sharp with the help of a machine that she also now owns, and equipped with an inbuilt communications array, holographic display projector, recharging port, and fingerprint scanner that delivers electric shocks to anyone other than The Colonel when wielded. It comes with an immaculate sheath, and a complementary gold-wrought laurel wreath and fine linen toga, further enabling her to command the legions of the Firebase with absolute authority and authenticity within the Roman tradition.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nYou spare no expense to supply your troops with increasingly rare boar and deer meat, distinctive of Roman cuisine.\n`; @@ -1839,7 +1839,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Aztec_Revivalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nIn honor of the soaring Aztec Revivalism of the Firebase, you've granted The Colonel a little Aztec empire of her own; you've purchased and rejuvenated a distant outcropping of ideal land, seeding it with the proper flora and fauna of the rainforest and constructing within them a modest step pyramid, a sacrificial altar, a miniature palace retreat for her lodging, and a few dozen huts populated by low-class Aztec Revivalists who pay their taxes to her during her visits here. Regardless of her feelings about Aztec Revivalism, the Colonel is flattered and amused to have her own little province to rule as she pleases.\n`; + text += `\nIn honor of the soaring Aztec Revivalism of the Firebase, you've granted The Colonel a little Aztec empire of her own; you've purchased and rejuvenated a distant outcropping of ideal land, seeding it with the proper flora and fauna of the rainforest and constructing within them a modest step pyramid, a sacrificial altar, a miniature palace retreat for her lodging, and a few dozen huts populated by low-class Aztec Revivalists who pay their taxes to her during her visits here. Regardless of her feelings about Aztec Revivalism, The Colonel is flattered and amused to have her own little province to rule as she pleases.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nYou spare no expense to supply your troops with increasingly rare fruits and vegetables, distinctive of Aztec cuisine.\n`; @@ -1901,7 +1901,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Egyptian_Revivalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nIn honor of the prevailing Egyptian Revivalism of the Firebase, you've granted The Colonel a little Egyptian empire of her own; you've purchased and rejuvenated a distant outcropping of pristine land, seeding it with the proper flora and fauna of the Nile valley and constructing within it a modest proper pyramid, a majestic sphinx, a miniature palace retreat for her lodging, and a few dozen huts populated by low-class Egyptian Revivalists who pay their taxes to her during her visits here. Regardless of her feeling about Egyptian Revivalism, the Colonel is flattered and amused to have her own little province to rule as she pleases.\n`; + text += `\nIn honor of the prevailing Egyptian Revivalism of the Firebase, you've granted The Colonel a little Egyptian empire of her own; you've purchased and rejuvenated a distant outcropping of pristine land, seeding it with the proper flora and fauna of the Nile valley and constructing within it a modest proper pyramid, a majestic sphinx, a miniature palace retreat for her lodging, and a few dozen huts populated by low-class Egyptian Revivalists who pay their taxes to her during her visits here. Regardless of her feeling about Egyptian Revivalism, The Colonel is flattered and amused to have her own little province to rule as she pleases.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nYou spare no expense to supply your troops with increasingly rare plants and meat of animals living in the Land of the Nile.\n`; @@ -1963,7 +1963,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Edo_Revivalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nWith your wealth and influence, you've managed to compile the world's most comfortable, sophisticated, durable, and expensive fabrics into one magnificent garment; The Colonel's Kimono. It is an article of unmatched beauty, modernity, and comfort: Its soft, sweat-wicking cloth interior make it an airy albeit form-fitting dress, while its waterproof exterior ripstop digital cloth-screen fabric allows it to adopt any appearance or combination of appearances the Colonel desires. Between the two, a thin soft padding of lab-grown silk-Kevlar hybrid weave allows the kimono to resist direct hits from knives, shrapnel, and even intermediate small arms fire, and between the weave layers lies internal heating and cooling wiring that serve to ensure she is always at a good temperature. Combine this super-dress with the collapsible titanium razor-sharp oriental fan and chopsticks that the Kimono came with, and the Colonel is now one of the best dressed and best protected women in the entire arcology.\n`; + text += `\nWith your wealth and influence, you've managed to compile the world's most comfortable, sophisticated, durable, and expensive fabrics into one magnificent garment; The Colonel's Kimono. It is an article of unmatched beauty, modernity, and comfort: Its soft, sweat-wicking cloth interior make it an airy albeit form-fitting dress, while its waterproof exterior ripstop digital cloth-screen fabric allows it to adopt any appearance or combination of appearances The Colonel desires. Between the two, a thin soft padding of lab-grown silk-Kevlar hybrid weave allows the kimono to resist direct hits from knives, shrapnel, and even intermediate small arms fire, and between the weave layers lies internal heating and cooling wiring that serve to ensure she is always at a good temperature. Combine this super-dress with the collapsible titanium razor-sharp oriental fan and chopsticks that the Kimono came with, and The Colonel is now one of the best dressed and best protected women in the entire arcology.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nYou spare no expense to supply your troops with increasingly rare marine dishes, distinctive of Japanese cuisine.\n`; @@ -2025,7 +2025,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Arabian_Revivalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nWith your wealth and influence, you've managed to compile the world's most comfortable, sophisticated, durable, and expensive fabrics into one magnificent garment: The Colonel's abaya. It is an article of unmatched grace, modesty, and comfort. Its soft, sweat-wicking cloth interior make it an airy albeit form-fitting dress, while its exterior ripstop light-absorbing carbon-black fabric allow the Colonel to simply disappear at will into shadows and dark rooms when she so pleases, especially if she decides to use the detachable niqab the garment came with. Underneath the dark exterior, a thin soft padding of lab-grown silk-Kevlar hybrid weave allows the abaya to resist direct hits from knives, shrapnel, and even intermediate small arms fire, and between the weave layers lies internal heating and cooling wiring that serve to ensure she is always at a good temperature. With a dress like this, the Colonel is now one of the best dressed and classiest women in the entire arcology.\n`; + text += `\nWith your wealth and influence, you've managed to compile the world's most comfortable, sophisticated, durable, and expensive fabrics into one magnificent garment: The Colonel's abaya. It is an article of unmatched grace, modesty, and comfort. Its soft, sweat-wicking cloth interior make it an airy albeit form-fitting dress, while its exterior ripstop light-absorbing carbon-black fabric allow The Colonel to simply disappear at will into shadows and dark rooms when she so pleases, especially if she decides to use the detachable niqab the garment came with. Underneath the dark exterior, a thin soft padding of lab-grown silk-Kevlar hybrid weave allows the abaya to resist direct hits from knives, shrapnel, and even intermediate small arms fire, and between the weave layers lies internal heating and cooling wiring that serve to ensure she is always at a good temperature. With a dress like this, The Colonel is now one of the best dressed and classiest women in the entire arcology.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nYou spare no expense to supply your troops with increasingly rare lamb and chicken meat, distinctive of Arabic cuisine.\n`; @@ -2087,7 +2087,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) break; case 'Chinese_Revivalism': if (textDisplay === -1 && V.SF.FS[FS_OPTIONS[i]].gift > 0) { - text += `\nIn honor of the prevailing Chinese Revivalism of the Firebase, you've granted The Colonel a little Chinese empire of her own; you've purchased and rejuvenated a distant outcropping of bountiful land, seeding it with the exotic flora and fauna China is known for, and constructing within it a miniature forbidden city, complete with fields of potted flowers, a majestic courtyard, and a palace retreat for her lodging. It is populated by low-class Chinese Revivalists who ac as her personal staff of servants and guards during her visits here. Regardless of her feelings about Chinese Revivalism, the Colonel is flattered and amused to have her own little palace to play Empress in.\n`; + text += `\nIn honor of the prevailing Chinese Revivalism of the Firebase, you've granted The Colonel a little Chinese empire of her own; you've purchased and rejuvenated a distant outcropping of bountiful land, seeding it with the exotic flora and fauna China is known for, and constructing within it a miniature forbidden city, complete with fields of potted flowers, a majestic courtyard, and a palace retreat for her lodging. It is populated by low-class Chinese Revivalists who ac as her personal staff of servants and guards during her visits here. Regardless of her feelings about Chinese Revivalism, The Colonel is flattered and amused to have her own little palace to play Empress in.\n`; } if (textDisplay === 5 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) { text += `\nYou spare no expense to supply your troops with increasingly rare Chinese delicacies. While rice-based food is a standard, soldiers can also enjoy a multitude of exotic dishes and beverages of Imperial China.\n`; @@ -2188,7 +2188,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) BadOutcome += 'ANNIHILATION'; V.trinkets.push("The Colonel's combat knife"); r += `Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for a full takeover against your arcology. The promises of plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves), including you, are all that's needed to get things started. However, not every soldier is eager to betray you.`; - r += `\nIt is now Midnight. The lights are the first thing the Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens start panicking almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her horde of marauders purges the plaza and lower floors of the arcology mercilessly, thoughtlessly cutting through your tenants with an ease that stinks of true jealously and hatred. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only the Colonel's contacts and few others could provide. As bad as all of this is, it is merely meant to distract and disrupt your mercenaries. The real threat is aerial.`; + r += `\nIt is now Midnight. The lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens start panicking almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her horde of marauders purges the plaza and lower floors of the arcology mercilessly, thoughtlessly cutting through your tenants with an ease that stinks of true jealously and hatred. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide. As bad as all of this is, it is merely meant to distract and disrupt your mercenaries. The real threat is aerial.`; r += `\nOutside the arcology, her many aircraft swarm the local airspace to patrol the arcology outskirts, conduct recon scans of the upper levels, or monitor your now-secured penthouse, while shooting down any other fleeing VTOL's. You will not be escaping by air. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for resale, as the remainder of her army seizes control of vital arcology infrastructure. As you take note of this while donning your bathrobe, several missiles from attack VTOL's come crashing through your penthouse before detonating. Miraculously, no one is harmed by this, and it has even created a gap in a nearby wall for you to escape the penthouse through, but this is but a small comfort in the wake of the squads of disembarking troops, lead by The Colonel herself, rappelling into your penthouse to capture you directly.`; r += `\nYou run. You run faster than you ever have in your life, past burning shops, burning vehicles, burning crowds, and burning bodies. An entire team of The Colonel's men are chasing you, lead by The Colonel herself, with their heavy kit probably the only reason they haven't caught you yet. They obviously want you alive, and you have been sharp enough to realize that this is very bad news for you. During your sprint, you also happen to run past several security cameras that impassively capture high-definition full-color footage of your retreat. When you eventually bump into one of your mercenaries and are escorted to a shelter, the personnel responsible for overseeing the camera feeds upload the footage of your great chase to the internet, where the entire world can see you being hounded by the men and women you personally hired to protect you and your arcology.`; r += `\nEventually, The Colonel's coup collapses. The selfish and malevolent troops following her, easily distracted by the myriad opportunities for rich plunder all around them, end up scattering throughout the arcology and losing cohesion, allowing for your much better organized security forces, mercenary hunter-killer teams, and even local enraged citizens to regroup and eventually overwhelm each enemy looter gang individually until a grinding total victory is achieved by the end of the week. The Colonel never finds, captures, or kills you. Nor is she ever found, captured, or killed herself. But she did set you on the run, and humiliatingly enough, the entire Free City now knows about it. Everyone has seen the clip. When you think about it she did manage to kill you after all, in a manner of speaking.`; @@ -2199,7 +2199,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) BadOutcome += 'OCCUPATION'; V.trinkets.push("The Colonel's sidearm"); r += `Finally fed up with your constant intrusions into her territory and crew, The Colonel riles up her people for a full takeover against your arcology. The promises of plunder and dominion over some of the wealthiest tenants in the entire Free City (and their world-class slaves), including you, are all that's needed to get things started.`; - r += `\nAt midnight, the lights are the first thing the Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army vanguard strikes fast and hard throughout, cutting through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only the Colonel's contacts and few others could provide.`; + r += `\nAt midnight, the lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army vanguard strikes fast and hard throughout, cutting through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide.`; r += `\nOutside, her many aircraft swarm the local airspace to patrol the arcology outskirts, conduct recon scans of the upper levels, or monitor your now-secured penthouse, while shooting down any other fleeing VTOL's. You will not be escaping by air. No one will. No escaping by land either: Swarms of her drones are tasing fleeing noncombatants by the hundreds for detainment, as the remainder of her army seizes control of vital arcology infrastructure. After just a few days, the entire arcology falls under her direct control, all dissidents, criminals, and rebels hopelessly outgunned by her lavishly equipped and experienced warriors.`; r += `\nYou are trapped inside your Penthouse by the detachment of infantry guarding its exits in order to keep you in, probably with the goal of starving you out until you surrender yourself. With your communications down as well. your penthouse might as well be an island. You only salvation comes in the form of your neighboring arcologies and their respective mercenary contingents. They are intervening on your behalf out of paranoia; Free Cities are extremely wary of military power buildups near their borders, and they absolutely will not tolerate a full scale military cup within its borders. Fighting men and women from all over the City are seen battling in the streets of your arcology in a brutal blitzkrieg that your own tenants and mercenaries quickly join in on, pushing The Colonel's forces back gradually with sheer numbers. Eventually they are forced back into the Firebase proper, where they are sealed inside by using explosives to collapse part of the arcology atop them, rendering the Firebase itself totally defunct. Only a few small groups manage to scatter and flee this holding action, and your intelligence networks suspects that The Colonel herself was among one of them.`; r += `With the help of some unlikely intervention, you've won this little war. Your arcology is once more yours, but your people will never forget the traumatic week they spent under the heel of the army that you convinced them to allow, or the fact that it took an entire coalition of outsiders to save them.`; @@ -2208,7 +2208,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`) BadOutcome += 'ASSIMILATION'; V.trinkets.push("The Colonel's canteen"); r += `Finally weary of your constant intrusions into her territory and crew, The Colonel gathers up her people for a full scale liquidation and dispersal of personnel and assets throughout the Free City itself; they are going to discreetly sell off the majority of their military hardware, assume new identities and melt into the fabric of the Free City's wider population. Gone are the days of plunder and dominion, as this retirement plan will make many of them some of the wealthiest tenants in the entire Free City, and they will no longer need to break their backs living the lives of soldiers. With the liquidation complete and the money distributed, the army moves on to the net stage of the plan.`; - r += `\nAt midnight, the lights are the first thing the Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army moves fast and quietly throughout the arcology and the streets outside of it, slipping through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only the Colonel's contacts and few others could provide.`; + r += `\nAt midnight, the lights are the first thing The Colonel's forces disable, as they still have the excellent night vision equipment you purchased for them. Some of your citizens panic almost immediately at the sudden blackout; this is very reminiscent of the Daughters of Liberty attack that still haunts many of their memories. Her army moves fast and quietly throughout the arcology and the streets outside of it, slipping through your security units and drones with an ease that stinks of months of careful planning and study. Most disturbingly, your penthouse's communications networks are all but destroyed, and your PA has been unreachable, seemingly hacked by some obscure technology you figure only The Colonel's contacts and few others could provide.`; r += `\nOutside, her many aircraft escape the local airspace to patrol the arcology outskirts, evading recon scans, the monitoring systems of your secured penthouse, and the feeble attempts of your sentries to shoot them down. A great many of them will be escaping by air, it seems. Many are escaping by land too: Swarms of personnel carriers and utility trucks are driving off to neighboring arcologies or even neighboring Free Cities by the dozens for retirement, as the remainder of her army purchase new apartments and properties in various arcologies nearby while being dressed in civilian clothing. After just a few days, the entire army has essentially disappeared, hopelessly obscured by mountains of digital noise, detailed fake backstories, lavish fake identities, and lots of bribes and carefully destroyed digital and physical records. Your special force has gone completely AWOL and there is nothing you or anyone can do about it. It seems your experienced former warriors have an eye for deception too.`; r += `\nYou are trapped inside your Penthouse by the electricity-cutting digital virus that has kept you inside and communicatively isolated for the past week. Probably with the goal of keeping you in the dark, figuratively and literally, so that you could not intervene in The Colonel's total assimilation into the Free Cities. The lazy bitch did not want to cooperate with your Future Societies plans, so she and her men decided to stop being soldiers altogether, and live off of their savings. Your only relief comes at the midnight of the seventh day, when the virus self-terminates and the arcology's electricity, PA, and communications lines return to full functioning.`; r += `\nYour arcology is once more yours, but your people will never forget the troubling week they spent in total darkness and lockdown, or the sudden mass desertion and disappearance of the army that you convinced them to allow, or the fact that there was nothing you could do to prevent or mitigate any of it.`; @@ -2941,7 +2941,7 @@ App.SF.UnitText = function(input) { k = ``; let activate = `has been recommissioned for use by ${V.SF.Lower}. They`; - let mechanics = `, mechanics are methodically checking the recent purchases for battle-readiness`; + let mechanics = `, and mechanics are methodically checking the recent purchases for battle-readiness`; let MG = `120 mm main gun is enough to handle the majority of opponents around the Free Cities.`; let engine1 = ``, armor2 = ``, @@ -3203,7 +3203,7 @@ App.SF.UnitText = function(input) { special = `Specialized weaponry is available for many roles, allowing more flexibility in planning.`; } if (S.Armoury >= 8) { - helmets = `and a HUD and camera display have been integrated into soldiers' eyewear, enabling accurate aim around corners or from behind cover`; + helmets = `and a HUD and camera display have been integrated into soldiers' eyewear, enabling accurate aim around corners or from behind cover.`; } if (S.Armoury >= 9) { exo = `An exosuit has been developed to reduce the amount of weight soldiers carry, increase lifting strength, and move faster in combat.`; @@ -3211,14 +3211,14 @@ App.SF.UnitText = function(input) { if (S.Armoury >= 10) { weapons = `Cutting-edge weaponry is available to ${V.SF.Lower}, far outpacing the ability of rival mercenary outfits.`; } - return `${text2} The armory holds soldiers' weapons and gear while not in training or combat. ${weapons} ${special} ${armor1} ${radio}${helmets} ${ammo0} ${uniforms} ${exo}`; + return `${text2} The armory holds soldiers' weapons and gear while not in training or combat. ${weapons} ${special} ${armor1} ${radio} ${helmets} ${ammo0} ${uniforms} ${exo}`; } break; case 'drugs': if (S.Drugs >= 0) { const text3 = `\n\n<b>Drug Lab:</b>`; if (S.Drugs >= 2) { - amphet = `Amphetamines have been added to the cocktail at a low dosage to act as a stimulant, physical performance enhancer, cognition control enhancer. Some side-effects exist.`; + amphet = `Amphetamines have been added to the cocktail at a low dosage to act as a stimulant, physical performance enhancer, and cognition control enhancer. Some side-effects exist.`; } if (S.Drugs >= 2) { phen = `Phencyclidine has been added to the cocktail at a low dosage as a dissociative psychotropic for soldiers in battle to introduce feelings of detachment, strength and invincibility, and aggression. Some side-effects reduce the tolerable dosage before soldiers go on uncontrollable violent outbreaks.`; @@ -3586,9 +3586,9 @@ App.SF.UnitText = function(input) { lens = `A higher quality and adjustable lens has been installed on the laser, allowing scalpel precision on armor or wide-area blasts on unarmored targets.`; } if (S.Satellite.lv >= 10) { - kin = `A magazine of directable tungsten rods have been mounted to the exterior of the satellite, allowing for kinetic bombardment roughly equal to a series of nuclear blasts`; + kin = `A magazine of directable tungsten rods have been mounted to the exterior of the satellite, allowing for kinetic bombardment roughly equal to a series of nuclear blasts.`; } - return `${text12} ${loc1} ${gyro} ${thrusters} ${telemetry} ${solar} ${reactor} ${surviv} ${laser1}${heat} ${lens} ${kin}.`; + return `${text12} ${loc1} ${gyro} ${thrusters} ${telemetry} ${solar} ${reactor} ${surviv} ${laser1} ${heat} ${lens} ${kin}`; } break; case 'GR': diff --git a/src/Mods/SpecialForce/WeeklyChoices.tw b/src/Mods/SpecialForce/WeeklyChoices.tw index 17cfb1c3aaf66a13b1a7545d4836aa02d3c11415..606e4f9b723f1d73499fdac704a996063efd03ca 100644 --- a/src/Mods/SpecialForce/WeeklyChoices.tw +++ b/src/Mods/SpecialForce/WeeklyChoices.tw @@ -68,52 +68,52 @@ <</if>> <<if $SF.Colonel.Status >= 25>> - <br><<link "Walk with the Colonel on the surface">> + <br><<link "Walk with The Colonel on the surface">> <<replace "#result0">> <<set $SF.Colonel.Talk = 1, $SF.Colonel.Status += 2, $SF.FS.Tension -= _colonelTalkTensionRuction>> - <br><br>You ask the Colonel if she would like to stretch her legs up on the surface. It doesn't take much effort for her to agree. + <br><br>You ask The Colonel if she would like to stretch her legs up on the surface. It doesn't take much effort for her to agree. <<if $PC.skill.warfare >= 100 && $PC.career == "mercenary">> - Your mastery of wet work and prior experience in a PMC satisfies the Colonel that between you<<if $Bodyguard != 0>>, $Bodyguard.slaveName,<</if>> and her, there should be little threat to walking around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor. + Your mastery of wet work and prior experience in a PMC satisfies The Colonel that between you<<if $Bodyguard != 0>>, $Bodyguard.slaveName,<</if>> and her, there should be little threat to walking around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor. <<run repX(10, "specialForces")>> <<run cashX(_EnvCash2, "specialForces")>> <<elseif $PC.skill.warfare >= 100>> - Your mastery of wet work satisfies the Colonel that you only need two soldiers <<if $Bodyguard != 0>> plus $Bodyguard.slaveName<</if>> to walk safely around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor. + Your mastery of wet work satisfies The Colonel that you only need two soldiers <<if $Bodyguard != 0>> plus $Bodyguard.slaveName<</if>> to walk safely around the arcology. Being able to see and interact with the arcology owner directly maintains the false idea that you're just like one of them while also giving them an increased opportunity to try gaining your favor. <<run repX(5, "specialForces")>> <<run cashX(_EnvCash3, "specialForces")>> <<elseif $PC.skill.warfare >= 60>> - With some expertise in warfare, the Colonel believes <<if $Bodyguard != 0>>with $Bodyguard.slaveName <</if>>you only need a squad of armed soldiers for a walk through the arcology. + With some expertise in warfare, The Colonel believes <<if $Bodyguard != 0>>with $Bodyguard.slaveName <</if>>you only need a squad of armed soldiers for a walk through the arcology. <<elseif $PC.skill.warfare >= 30>> - As you have some skill in warfare, the Colonel believes<<if $Bodyguard != 0>> with $Bodyguard.slaveName<</if>> you only need two full squads of armed soldiers for a walk around the arcology. + As you have some skill in warfare, The Colonel believes<<if $Bodyguard != 0>> with $Bodyguard.slaveName<</if>> you only need two full squads of armed soldiers for a walk around the arcology. <<elseif $PC.skill.warfare >= 10>> - Your minor skill in warfare convinces the Colonel that <<if $Bodyguard != 0>>in addition to $Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers and an armored car escort for a simple walk around the arcology. + Your minor skill in warfare convinces The Colonel that <<if $Bodyguard != 0>>in addition to $Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers and an armored car escort for a simple walk around the arcology. <<else>> - Your complete lack of combat skill convinces the Colonel that <<if $Bodyguard != 0>>in addition to $Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers, an armored car escort, and a sniper overwatch for a simple walk around the arcology. + Your complete lack of combat skill convinces The Colonel that <<if $Bodyguard != 0>>in addition to $Bodyguard.slaveName, <</if>>you need two full squads of armed soldiers, an armored car escort, and a sniper overwatch for a simple walk around the arcology. <</if>> <br>As you make your way through the arcology you stop at a <<if $arcologies[0].FSPaternalist != "unset">> - paternalist shop, <<if $SF.Colonel.Core == "cruel">>earning a sneer from the Colonel<<else>>helping the Colonel select some luxurious and relaxing slave treatments<</if>>. + paternalist shop, <<if $SF.Colonel.Core == "cruel">>earning a sneer from The Colonel<<else>>helping The Colonel select some luxurious and relaxing slave treatments<</if>>. <<elseif $arcologies[0].FSPastoralist != "unset">> - pastoralist shop, helping the Colonel select a more comfortable breast pump. + pastoralist shop, helping The Colonel select a more comfortable breast pump. <<else>> - shop that catches the Colonel's eye. + shop that catches The Colonel's eye. <</if>> <<if $PC.skill.slaving >= 100 && $PC.career == "slaver">> - Your mastery and extensive history of slaving allows you to assist the Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers. + Your mastery and extensive history of slaving allows you to assist The Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers. <<if $arcologies[0].prosperity < $AProsperityCap>> <<set $arcologies[0].prosperity++>> <</if>> <<elseif $PC.skill.slaving >= 100>> - Your mastery and extensive history of slaving allows you to assist the Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers. + Your mastery and extensive history of slaving allows you to assist The Colonel greatly. The shop owner is so impressed by your understanding of slavery that she asks you for some advice. Before you leave, you manage to pass on a few tips, helping the business with future customers. <<if $arcologies[0].prosperity < $AProsperityCap>> <<set $arcologies[0].prosperity++>> <</if>> <<elseif $PC.skill.slaving >= 60>> - Your expertise in slavery allows you to help the Colonel decide what to buy for her main slave. + Your expertise in slavery allows you to help The Colonel decide what to buy for her main slave. <<elseif $PC.skill.slaving >= 30>> - Your moderate skill in slavery makes you somewhat helpful to the Colonel in deciding what to buy for her main slave. + Your moderate skill in slavery makes you somewhat helpful to The Colonel in deciding what to buy for her main slave. <<elseif $PC.skill.slaving >= 10>> - Your basic skill level of slavery doesn't allow you to help the Colonel at all. + Your basic skill level of slavery doesn't allow you to help The Colonel at all. <<elseif $PC.skill.slaving < 10>> Your total lack of slavery skill (which is very unusual and very concerning for an arcology owner) means that you are of little to no help or even a hindrance. The shopkeeper notices your complete ineptitude, and as soon as you've left the rumor mill begins. <<run repX(-20, "PCactions")>> @@ -146,11 +146,11 @@ <br><<link "Talk in $SF.Lower's HQ">> <<replace "#result0">> <span id="result1"> - <br><br>What do you want to do with the Colonel in the HQ? + <br><br>What do you want to do with The Colonel in the HQ? <br><<link "Talk">> <<replace "#result1">> <<set $SF.Colonel.Talk = 1, $SF.Colonel.Status += 3, $SF.FS.Tension -= _colonelTalkTensionRuction>> - <br><br>You and the Colonel talk over some $PC.refreshment, where she ends up talking about her past. You learn a little more about her. + <br><br>You and The Colonel talk over some $PC.refreshment, where she ends up talking about her past. You learn a little more about her. <<switch random(1,6)>> <<case 1>> <<= IncreasePCSkills(['medicine', 'trading', 'slaving'], 1)>> diff --git a/src/SecExp/tradeReport.tw b/src/SecExp/tradeReport.tw index 724bdb50e6f98914f3289a16dcab7b337e0fcc85..e174a0cfebbc1e2808a62d0c25fc7964cb89d7b5 100644 --- a/src/SecExp/tradeReport.tw +++ b/src/SecExp/tradeReport.tw @@ -124,7 +124,7 @@ <</if>> <<if $SF.Toggle && $SF.Active >= 1 && $SF.Size > 10>> - Having a powerful special force, increases trade security. + Having a powerful special force increases trade security. <<set _tradeChange += $SF.Size/10>> <</if>> diff --git a/src/endWeek/saWorkTheFarm.js b/src/endWeek/saWorkTheFarm.js index af527a4183a69c4b6267f9c1735e96e9aabd7bba..205340cbc2a2098e01b3742a64d69a3bee491c38 100644 --- a/src/endWeek/saWorkTheFarm.js +++ b/src/endWeek/saWorkTheFarm.js @@ -309,7 +309,7 @@ window.saWorkTheFarm = function saWorkTheFarm(slave) { } else if (slave.prestige === 2) { t += `Because a lot of your citizens already know of ${him}, ${he} earns quite a bit more. `; } else if (slave.prestige === 3) { - t += `Because ${he} is so famous, ${he} earns a lot more then ${he} would otherwise.`; + t += `Because ${he} is so famous, ${he} earns a lot more then ${he} would otherwise. `; } if (slave.porn.prestige === 1) { // TODO: are prestige and pornPrestige mutually exclusive? t += `${He} earns a bit more because some of your citizens already know ${him} from porn. `; diff --git a/src/gui/css/mainStyleSheet.css b/src/gui/css/mainStyleSheet.css index 4c6da4ba620e5092a4bea7cd7442cc65fcf23c31..85221500cd101fdffad243a79028bad9c176fd1b 100644 --- a/src/gui/css/mainStyleSheet.css +++ b/src/gui/css/mainStyleSheet.css @@ -361,4 +361,9 @@ h2 + p { } h3 + p { margin-top: 0; +} + +.main-fcnn { + text-align: center; + margin: 0 auto; } \ No newline at end of file diff --git a/src/js/DefaultRules.js b/src/js/DefaultRules.js index c7d5b15a7ea7e794ec11ac578e76a311c2998ecb..7d3741db213dba780bfbfb3af7ccc74a321766e3 100644 --- a/src/js/DefaultRules.js +++ b/src/js/DefaultRules.js @@ -2870,13 +2870,13 @@ window.DefaultRules = (function() { // mass removal of old tags, variant from '*' mask. if (rule.removeLabel !== null && rule.removeLabel !== '' && rule.removeLabel === '*') { slave.custom.label = slave.custom.label.replace(/(?:\[.+\])+/, ""); - r += `<br>All ${slave.slaveName}'s tags is removed.`; + r += `<br>All of ${slave.slaveName}'s tags have been removed.`; } // mass removal of old tags, variant from GUI swith. if (rule.labelTagsClear === true) { slave.custom.label = slave.custom.label.replace(/(?:\[.+\])+/, ""); - r += `<br>All ${slave.slaveName}'s tags is removed.`; + r += `<br>All of ${slave.slaveName}'s tags have been removed.`; } // removing tags selected for removal. diff --git a/src/js/main.js b/src/js/main.js new file mode 100644 index 0000000000000000000000000000000000000000..f52619035baf1486db77b8dbfaa28c14f5b9c64c --- /dev/null +++ b/src/js/main.js @@ -0,0 +1,11 @@ +App.MainView.fcnn = function() { + let text; + + if (V.FCNNstation !== 1 && V.week >= 90) { + text = "FCNN: FCNN service has been temporarily suspended. Please stand by."; + } else { + text = V.fcnn.random(); + } + + return document.createTextNode(`${text} `); +}; diff --git a/src/js/utilsSC.js b/src/js/utilsSC.js index 087d00cc93c4d94b90e9620873c8b87006d117db..44adff3c742af50971702ebc3ca999706085c351 100644 --- a/src/js/utilsSC.js +++ b/src/js/utilsSC.js @@ -90,7 +90,11 @@ App.UI.link = function() { if (passage) { return App.UI.passageLink(linkText, passage, SCHandlerText, tooltip); } else { - return App.UI.passageLink(linkText, SugarCube.State.passage, SCHandlerText, tooltip); + if (tooltip) { + throw "Tooltips are not supported by the <<link>> markup."; + } + // data-passage scheme does not work with empty passage name + return `<<link "${linkText}">><<run ${SCHandlerText}>><</link>>`; } } }(); diff --git a/src/npc/fBeg.tw b/src/npc/fBeg.tw index f7fcb216a616fd3cc07962cb6f3bb47dfa044fa5..5a24651bf0a5a89a591c0180396e91a01fdfff16 100644 --- a/src/npc/fBeg.tw +++ b/src/npc/fBeg.tw @@ -301,7 +301,7 @@ You give $him permission to speak, and tell $him that $he may beg $his <<= Writt <<elseif ($activeSlave.behaviorFlaw == "arrogant")>> $He tries to cock $his shoulders back, giving a death glare to the slaves holding $him in place, "I don't need anything from you," $he hisses. $He is disobedient and arrogant, a bad combo. <<elseif ($activeSlave.behavioralFlaw == "liberated")>> - $He does $his best to spit in your face, but the height difference means $he only stains your shirt. "I demand you relea<<s>>e me!" $he scowls, "Or I'm going to call the poli<<c>>e!" You smile at $his pathetically outdated worldview. You tell $him that's a good idea, since you know how rebellious slaves fair in jail. + $He does $his best to spit in your face, but the height difference means $he only stains your shirt. "I demand you relea<<s>>e me!" $he scowls, "Or I'm going to call the poli<<c>>e!" You smile at $his pathetically outdated worldview. You tell $him that's a good idea, since you know how rebellious slaves fare in jail. <<elseif ($activeSlave.behavioralFlaw == "odd")>> $He purses $his lips and bounces on $his heels in futile rebellion. "Nuh-uh." $he puffs, shaking $his head wildly. <<else>> diff --git a/src/pregmod/fillUpButt.tw b/src/pregmod/fillUpButt.tw index 82d69722e21cfdb15b408270f447eb024c9fe9dc..a207569ded313a43fce3bc51a977fca993e47da9 100644 --- a/src/pregmod/fillUpButt.tw +++ b/src/pregmod/fillUpButt.tw @@ -155,7 +155,7 @@ before shoving the equipment into $his <</if>> <<if $seeRace == 1>>$activeSlave.race <</if>> buttocks. <<if (hasAnyArms($activeSlave))>> - $he tries to grab your <<if (hasBothArms($activeSlave))>>wrists to keep them<<else>>wrist to keep it<</if>> away but $he cannot resist for long. + $He tries to grab your <<if (hasBothArms($activeSlave))>>wrists to keep them<<else>>wrist to keep it<</if>> away but $he cannot resist for long. <</if>> You start rubbing along $his cheeks, feeling the shape of $his<<if $seeRace == 1>> $activeSlave.race<</if>> ass with your fingers and squeezing gently. $He tries to break out of your grasp as you rub fingers around $his <<if ($activeSlave.anus > 3)>> diff --git a/src/pregmod/incubatorReport.tw b/src/pregmod/incubatorReport.tw index 53a63fb7ac9d90f2bbc8a0748a82de706caf4ca6..139af2d188c91906d79b2845426c54507488e143 100644 --- a/src/pregmod/incubatorReport.tw +++ b/src/pregmod/incubatorReport.tw @@ -756,7 +756,7 @@ <<set $tanks[_inc].height = Math.clamp($tanks[_inc].height, 0, 274)>> <<set $tanks[_inc].hormoneBalance = Math.clamp($tanks[_inc].hormoneBalance, -500, 500)>> -<br> +<br><br> <</for>> /* <<if $incubatorSlaves == 0>> diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw index 1ae82b504bef339a036c7b08e4cc70f152090186..bc9f10e33541fb2b62e106ea7563fef07911b6c8 100644 --- a/src/uncategorized/BackwardsCompatibility.tw +++ b/src/uncategorized/BackwardsCompatibility.tw @@ -3794,6 +3794,13 @@ Done<br> })>> <<set $completedOrgans = _newOrgans>> +<<if def $organsCompleted>> + <<unset $organsCompleted>> +<</if>> + +<<if ($PC.customTitle == "")>> + <<set $PC.customTitle = undefined, $PC.customTitleLisp = undefined>> +<</if>> /* leave this at the bottom of BC */ <<if $releaseID < App.Version.release>> diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw index d8249d8914779414076bc289fc26c595997c313e..797c66757d2ec89fe5e17d811a84cda1892e1bc3 100644 --- a/src/uncategorized/brothel.tw +++ b/src/uncategorized/brothel.tw @@ -69,7 +69,7 @@ <</switch>> <<if $brothelAdsSpending > 0>> - Screens outside the entrance are showing porn to advertise $brothelNameCaps. + Screens outside the entrance are showing porn to advertise $brothelName. <<if $brothelAdsOld == 1>> The featured slave actresses are all MILFs. <<elseif $brothelAdsOld == -1>> diff --git a/src/uncategorized/longSlaveDescription.tw b/src/uncategorized/longSlaveDescription.tw index a3f04b89f75f09ec07702ed91b1735b1b0141a95..e266a991dcd288c4fea502f04db6968d9d478098 100644 --- a/src/uncategorized/longSlaveDescription.tw +++ b/src/uncategorized/longSlaveDescription.tw @@ -1372,11 +1372,11 @@ is <<if $activeSlave.prestige > 0>> <<if $activeSlave.prestigeDesc>>$activeSlave.prestigeDesc<</if>> <<if $activeSlave.prestige > 2>> - It is extremely prestigious to own $him. + <span class="green">It is extremely prestigious to own $him.</span> <<elseif $activeSlave.prestige > 1>> - It is quite prestigious to own $him. + <span class="green">It is quite prestigious to own $him.</span> <<else>> - It is fairly prestigious to own $him. + <span class="green">It is fairly prestigious to own $him.</span> <</if>> <</if>> diff --git a/src/uncategorized/main.tw b/src/uncategorized/main.tw index 1b51418f2a42a1f7e1544f793598203bad25f06c..8f05fc2c90ca60ed04f8ea87d74bbcdf515b8080 100644 --- a/src/uncategorized/main.tw +++ b/src/uncategorized/main.tw @@ -15,16 +15,6 @@ <br><br> <</if>> -<<if def $organsCompleted>> - <<unset $organsCompleted>> -<</if>> - -<<set $currentRule = $defaultRules[0]>> - -<<SlaveSort $slaves>> - -<<set _SL = $slaves.length>> - /* extra sanity checks and repair */ <<if $slaves.includes(null)>> <br><br>@@.red;ERROR: Main slaves array contains a null entry! Please report this.@@ <<link "Repair">><<set $slaves.delete(null)>><</link>><<goto "Main">><br><br> @@ -46,13 +36,16 @@ <br><br>@@.red;ERROR: Your husk slave order has taken on a mutated life of its own and has been summarily shot. Refile your husk slave order, if necessary, and notify the appropriate authorities if you see this message again.@@<br><br> <<set $huskSlave = new App.Entity.CustomSlaveOrder()>> <</if>> -/* end extra sanity checks and repair */ <<set _duplicateSlaves = _($slaves).countBy(s => s.ID).pickBy(v => v > 1).keys().map(v => Number(v)).value()>> <<for _i range _duplicateSlaves>> <br><br>@@.red;Duplicate slave ID _i at indices <<= _($slaves).map((s, idx) => ({ID: s.ID, idx: idx, name: s.slaveName, assignment: s.assignment})).filter(s => s.ID === _i).map(s => s.idx + ' - ' + s.name + ' (' + s.assignment + ')').join(', ')>>@@ <</for>> + +/* end extra sanity checks and repair */ + + <<set _visibleSlaves = $slaves.filter(s => assignmentVisible(s) && (s.assignment != "be your Head Girl" || $HGSuite != 1) && (s.assignment != "guard you" || $dojo <= 1)), $slavesVisible = _visibleSlaves.length, $dormitoryPopulation = _visibleSlaves.filter(s => s.rules.living != "luxurious").length, @@ -69,9 +62,11 @@ <<set $nextButton = "END WEEK", $nextLink = "End Week", $showEncyclopedia = 1, $encyclopedia = "How to Play">> <<set $costs = Math.trunc(calculateCosts.predict())>> -<<if ($PC.customTitle == "")>> - <<set $PC.customTitle = undefined, $PC.customTitleLisp = undefined>> -<</if>> +<<set $currentRule = $defaultRules[0]>> + +<<run SlaveSort.slaves($slaves)>> + +<<set _SL = $slaves.length>> <<if $newModelUI == 1>><<DisplayBuilding>><</if>> <<if $seeArcology == 1>> <<include "Arcology Description">> | [[Hide|Main][$seeArcology = 0]]<br><</if>> @@ -81,18 +76,21 @@ [[Hide|Main][$seeDesk = 0]] <</if>> -<<= App.Reminders.list({maxFuture: 5})>> -<<if $reminders.length > 0>> - <div>[[Manage reminders|Manage Personal Affairs]]</div> -<</if>> +<<= App.Reminders.list({maxFuture: 5, link: true})>> -<<if $seeFCNN == 1>> - <<if $FCNNstation != 1 && $week >= 90>> - <center>FCNN: <<print "FCNN service has been temporarily suspended. Please stand by.">> [[Hide|Main][$seeFCNN = 0]]</center> - <<else>> - <center>FCNN: <<print $fcnn.random()>> [[Hide|Main][$seeFCNN = 0]]</center> - <</if>> + +<<if $seeFCNN === 1>> + <div id="fcnn" class="main-fcnn"></div> + <<script>> + $(document).one(':passageend', () => { + $('#fcnn').append( + App.MainView.fcnn(), + App.UI.DOM.passageLink("Hide", passage(), () => {V.seeFCNN = 0;}) + ); + }); + <</script>> <</if>> + <<if ($seeDesk == 1) && ($seeFCNN == 0)>><br><</if>> __''MAIN MENU''__ //[[Summary Options]]// diff --git a/src/uncategorized/newSlaveIntro.tw b/src/uncategorized/newSlaveIntro.tw index 75f344b7583011f9a8b73a143f4fc540a481b7b5..3debe1cffecfb2b15482341b32ef5200768ecbf6 100644 --- a/src/uncategorized/newSlaveIntro.tw +++ b/src/uncategorized/newSlaveIntro.tw @@ -1810,7 +1810,7 @@ The legalities completed, <span class='slave-name'><<= SlaveFullName($activeSlav <<if $activeSlave.bellyPreg >= 5000>> <br> - <<link "Make sure $he knows pregnant women can still enjoy sex.">> + <<link "Make sure $he knows pregnant women can still enjoy sex">> <<replace "#introResult">> You introduce $him to obedience and proper manners regarding $his <<= WrittenMaster($activeSlave)>> before sending $him off for a physical. That night, $he's returned to your room, and finds you doing business on a tablet in bed. $He looks doubtful, but obeys when you direct $him to get into bed<<if $PC.dick == 0>>, even after $he realizes you're wearing a strap-on<</if>>. You turn out the light and spoon $him from behind, kissing $his neck and ears, cupping $his swollen breasts, and running your hands across $his pregnant belly with its taut $activeSlave.skin skin. $He's awkward at first but $his body responds to the tenderness. Before long $he's humping $his pussy back and forth against <<if $PC.dick != 0>>your cock<<else>>the strap-on<</if>>. You begin to gently work <<if $PC.dick != 0>>your dickhead<<else>>its tip<</if>> up $his used pussy. $He's unsure of $himself, but you keep $him nice and relaxed. After several minutes of gentle loving, $he's nothing but a satisfied puddle in your arms. $He believes that $he can @@.mediumaquamarine;trust@@ you won't harm $him or $his child<<if $activeSlave.pregType > 1>>ren<</if>>. <</replace>> diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw index c425feb4c73a01c9db9d48ff99a4d03350c110a0..1c237b6659c25055adf040b56a08cc2b4ba4083f 100644 --- a/src/uncategorized/options.tw +++ b/src/uncategorized/options.tw @@ -787,133 +787,135 @@ This save was created using FC version $ver build $releaseID. <br> <div class="subHeading"> + <<if $debugMode || $cheatMode || $cheatModeM>> ''Debug/cheat'' - </div> - <<run MenialPopCap()>> - - <style> - table.invisible { - table-layout: fixed; - border-collapse: separate; - border-spacing: 5px; - margin:1em auto; - } - </style> - - <table class="invisible"> - <tr style="text-align:center"> - <td colspan="2" > - <<link "Set loyalty high" "Options">> - <<for _i = 0; _i < $militiaUnits.length; _i++>> - <<set $militiaUnits[_i].loyalty = random(80,100)>> - <</for>> - - <<for _i = 0; _i < $slaveUnits.length; _i++>> - <<set $slaveUnits[_i].loyalty = random(80,100)>> - <</for>> - - <<for _i = 0; _i < $mercUnits.length; _i++>> - <<set $mercUnits[_i].loyalty = random(80,100)>> - <</for>> - <</link>> - | <<link "Set loyalty average" "Options">> - <<for _i = 0; _i < $militiaUnits.length; _i++>> - <<set $militiaUnits[_i].loyalty = random(40,60)>> - <</for>> - - <<for _i = 0; _i < $slaveUnits.length; _i++>> - <<set $slaveUnits[_i].loyalty = random(40,60)>> - <</for>> - - <<for _i = 0; _i < $mercUnits.length; _i++>> - <<set $mercUnits[_i].loyalty = random(40,60)>> - <</for>> - <</link>> - | <<link "Set loyalty low" "Options">> - <<for _i = 0; _i < $militiaUnits.length; _i++>> - <<set $militiaUnits[_i].loyalty = random(20)>> - <</for>> - - <<for _i = 0; _i < $slaveUnits.length; _i++>> - <<set $slaveUnits[_i].loyalty = random(20)>> - <</for>> - - <<for _i = 0; _i < $mercUnits.length; _i++>> - <<set $mercUnits[_i].loyalty = random(20)>> - <</for>> - <</link>> - | <<link "Randomize loyalty" "Options">> - <<for _i = 0; _i < $militiaUnits.length; _i++>> - <<set $militiaUnits[_i].loyalty = random(100)>> - <</for>> - - <<for _i = 0; _i < $slaveUnits.length; _i++>> - <<set $slaveUnits[_i].loyalty = random(100)>> - <</for>> - - <<for _i = 0; _i < $mercUnits.length; _i++>> - <<set $mercUnits[_i].loyalty = random(100)>> - <</for>> - <</link>> - </td> - </tr> - - <tr style="text-align:center"> - <td colspan="2"> - <<link "Give Authority" "Options">> - <<set $SecExp.core.authority = Math.clamp($SecExp.core.authority + 1000, 0, 20000)>> - <</link>> - | <<link "Remove Authority" "Options">> - <<set $SecExp.core.authority = Math.clamp($SecExp.core.authority - 1000, 0, 20000)>> - <</link>> - </td> - </tr> - - <tr> - <td style="text-align:right"> - <<link "Raise security" "Options">> - <<set $SecExp.security.cap = Math.clamp($SecExp.security.cap + 5, 0, 100)>> - <</link>> - | <<link "Lower security" "Options">> - <<set $SecExp.security.cap = Math.clamp($SecExp.security.cap - 5, 0, 100)>> - <</link>> - </td> - - <td style="text-align:left"> - <<link "Raise crime" "Options">> - <<set $SecExp.core.crimeLow = Math.clamp($SecExp.core.crimeLow + 5, 0, 100)>> - <</link>> - | <<link "Lower crime" "Options">> - <<set $SecExp.core.crimeLow = Math.clamp($SecExp.core.crimeLow - 5, 0, 100)>> - <</link>> - </td> - </tr> - - <tr> - <td style="text-align:right"> - <<link "Give militia manpower" "Options">> - <<set $militiaFreeManpower += 30>> - <<recalcManpower>> - <</link>> - | <<link "Remove militia manpower" "Options">> - <<set $militiaFreeManpower = Math.max($militiaFreeManpower - 30, 0)>> - <<recalcManpower>> - <</link>> - </td> - - <td style="text-align:left"> - <<link "Give mercs manpower" "Options">> - <<set $mercFreeManpower += 30>> - <<recalcManpower>> - <</link>> - | <<link "Remove mercs manpower" "Options">> - <<set $mercFreeManpower = Math.max($mercFreeManpower - 30, 0)>> - <<recalcManpower>> - <</link>> - </td> - </tr> - - </table> + </div> + <<run MenialPopCap()>> + + <style> + table.invisible { + table-layout: fixed; + border-collapse: separate; + border-spacing: 5px; + margin:1em auto; + } + </style> + + <table class="invisible"> + <tr style="text-align:center"> + <td colspan="2" > + <<link "Set loyalty high" "Options">> + <<for _i = 0; _i < $militiaUnits.length; _i++>> + <<set $militiaUnits[_i].loyalty = random(80,100)>> + <</for>> + + <<for _i = 0; _i < $slaveUnits.length; _i++>> + <<set $slaveUnits[_i].loyalty = random(80,100)>> + <</for>> + + <<for _i = 0; _i < $mercUnits.length; _i++>> + <<set $mercUnits[_i].loyalty = random(80,100)>> + <</for>> + <</link>> + | <<link "Set loyalty average" "Options">> + <<for _i = 0; _i < $militiaUnits.length; _i++>> + <<set $militiaUnits[_i].loyalty = random(40,60)>> + <</for>> + + <<for _i = 0; _i < $slaveUnits.length; _i++>> + <<set $slaveUnits[_i].loyalty = random(40,60)>> + <</for>> + + <<for _i = 0; _i < $mercUnits.length; _i++>> + <<set $mercUnits[_i].loyalty = random(40,60)>> + <</for>> + <</link>> + | <<link "Set loyalty low" "Options">> + <<for _i = 0; _i < $militiaUnits.length; _i++>> + <<set $militiaUnits[_i].loyalty = random(20)>> + <</for>> + + <<for _i = 0; _i < $slaveUnits.length; _i++>> + <<set $slaveUnits[_i].loyalty = random(20)>> + <</for>> + + <<for _i = 0; _i < $mercUnits.length; _i++>> + <<set $mercUnits[_i].loyalty = random(20)>> + <</for>> + <</link>> + | <<link "Randomize loyalty" "Options">> + <<for _i = 0; _i < $militiaUnits.length; _i++>> + <<set $militiaUnits[_i].loyalty = random(100)>> + <</for>> + + <<for _i = 0; _i < $slaveUnits.length; _i++>> + <<set $slaveUnits[_i].loyalty = random(100)>> + <</for>> + + <<for _i = 0; _i < $mercUnits.length; _i++>> + <<set $mercUnits[_i].loyalty = random(100)>> + <</for>> + <</link>> + </td> + </tr> + + <tr style="text-align:center"> + <td colspan="2"> + <<link "Give Authority" "Options">> + <<set $SecExp.core.authority = Math.clamp($SecExp.core.authority + 1000, 0, 20000)>> + <</link>> + | <<link "Remove Authority" "Options">> + <<set $SecExp.core.authority = Math.clamp($SecExp.core.authority - 1000, 0, 20000)>> + <</link>> + </td> + </tr> + + <tr> + <td style="text-align:right"> + <<link "Raise security" "Options">> + <<set $SecExp.security.cap = Math.clamp($SecExp.security.cap + 5, 0, 100)>> + <</link>> + | <<link "Lower security" "Options">> + <<set $SecExp.security.cap = Math.clamp($SecExp.security.cap - 5, 0, 100)>> + <</link>> + </td> + + <td style="text-align:left"> + <<link "Raise crime" "Options">> + <<set $SecExp.core.crimeLow = Math.clamp($SecExp.core.crimeLow + 5, 0, 100)>> + <</link>> + | <<link "Lower crime" "Options">> + <<set $SecExp.core.crimeLow = Math.clamp($SecExp.core.crimeLow - 5, 0, 100)>> + <</link>> + </td> + </tr> + + <tr> + <td style="text-align:right"> + <<link "Give militia manpower" "Options">> + <<set $militiaFreeManpower += 30>> + <<recalcManpower>> + <</link>> + | <<link "Remove militia manpower" "Options">> + <<set $militiaFreeManpower = Math.max($militiaFreeManpower - 30, 0)>> + <<recalcManpower>> + <</link>> + </td> + + <td style="text-align:left"> + <<link "Give mercs manpower" "Options">> + <<set $mercFreeManpower += 30>> + <<recalcManpower>> + <</link>> + | <<link "Remove mercs manpower" "Options">> + <<set $mercFreeManpower = Math.max($mercFreeManpower - 30, 0)>> + <<recalcManpower>> + <</link>> + </td> + </tr> + + </table> + <</if>> /* closes cheatmode check */ <</if>> /* closes SecExp check*/ </div> </div> diff --git a/src/uncategorized/reRebels.tw b/src/uncategorized/reRebels.tw index 7467abb11715c538f21d55cd17afbd564550ee85..3c7b80e779f57f5a63aed626f5b9b6dec1421aec 100644 --- a/src/uncategorized/reRebels.tw +++ b/src/uncategorized/reRebels.tw @@ -27,7 +27,7 @@ <<set $slaves[_i].clothes = _clothesTemp>> <<set $slaves[_j].clothes = _clothesTemp2>> -You have a rebel problem. $slaves[_i].slaveName and $slaves[_j].slaveName are both unbroken, and they seem to draw strength from each other. They're discreet about it, but the arcology's always-vigilant systems occasionally catch them nodding to one another after one of them is punished, or giving each other quiet words of encouragement when they think no one is listening. This is extremely dangerous and should be addressed promptly. +You have a rebel problem. <<link "$slaves[_i].slaveName" "Long Slave Description">><<set $nextLink = passage(), $returnTo = "Back to Event", $activeSlave = $slaves[_i]>><</link>> and <<link "$slaves[_j].slaveName" "Long Slave Description">><<set $nextLink = passage(), $returnTo = "Back to Event", $activeSlave = $slaves[_j]>><</link>> are both unbroken, and they seem to draw strength from each other. They're discreet about it, but the arcology's always-vigilant systems occasionally catch them nodding to one another after one of them is punished, or giving each other quiet words of encouragement when they think no one is listening. This is extremely dangerous and should be addressed promptly. <br><br> diff --git a/src/uncategorized/reSlaveMarriage.tw b/src/uncategorized/reSlaveMarriage.tw index 9ee98470e27678b8ee0e1d2776580919defa9482..0078bbf9be1a30804a54687676228d30d0bb5af2 100644 --- a/src/uncategorized/reSlaveMarriage.tw +++ b/src/uncategorized/reSlaveMarriage.tw @@ -82,7 +82,7 @@ <br><br> <<if (_brideSlave.vagina == 0)>> _brideSlave.slaveName is a virgin, so _he2's wearing white - <<elseif (_groomSlave.pregKnown == 1)>> + <<elseif (_brideSlave.pregKnown == 1)>> _brideSlave.slaveName is pregnant, so _he2's wearing light pink <<elseif (_brideSlave.vagina < 0)>> _brideSlave.slaveName is a sissy slave, so _he2's wearing light blue diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw index 9be9d17ba99161690246cf5f1aaf4b836dd1685d..6972f1dfb55a06dc1066216aacd8d2f3c36b1166 100644 --- a/src/uncategorized/remoteSurgery.tw +++ b/src/uncategorized/remoteSurgery.tw @@ -590,7 +590,7 @@ <<if $activeSlave.indentureRestrictions < 1>> <div class="choices"> <<if ($activeSlave.smells == 0) && ($seeExtreme == 1)>> - | [[Remove sense of smell|Surgery Degradation][$activeSlave.smells = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "desmell"]] + [[Remove sense of smell|Surgery Degradation][$activeSlave.smells = -1, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "desmell"]] <<elseif $activeSlave.smells == -1>> | [[Repair sense of smell|Surgery Degradation][$activeSlave.smells = 0, cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10), $surgeryType = "resmell"]] <</if>> @@ -780,8 +780,9 @@ <<if $activeSlave.areolae > 0>> | [[Reduce areolae|Surgery Degradation][$activeSlave.areolae -= 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10),$surgeryType = "areolae"]] <</if>> + <<if $activeSlave.areolae > 0>>|<</if>> <<if $activeSlave.areolae < 4>> - | [[Enlarge areolae|Surgery Degradation][$activeSlave.areolae += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10),$surgeryType = "areolae"]] + [[Enlarge areolae|Surgery Degradation][$activeSlave.areolae += 1,cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave), surgeryDamage($activeSlave,10),$surgeryType = "areolae"]] <</if>> </div> <</if>> @@ -1281,7 +1282,7 @@ <div class="choices"> <<if $activeSlave.vagina > -1>> <<if $activeSlave.indentureRestrictions < 1 && ($activeSlave.breedingMark != 1 || $propOutcome == 0 || $eugenicsFullControl == 1 || $arcologies[0].FSRestart == "unset")>> - | [[Remove pussy|Surgery Degradation][surgeryAmp($activeSlave, "vagina"), $surgeryType = "vaginaRemoval", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]] <<if $activeSlave.ovaries == 1>><span class="note">This will remove $his ovaries as well</span><</if>> + [[Remove pussy|Surgery Degradation][surgeryAmp($activeSlave, "vagina"), $surgeryType = "vaginaRemoval", cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave)]] <<if $activeSlave.ovaries == 1>><span class="note">This will remove $his ovaries as well</span><</if>> <</if>> <</if>> diff --git a/src/uncategorized/saDrugs.tw b/src/uncategorized/saDrugs.tw index c2ecdf78d565b24a564cd2447525dd831162bd57..7fba584cdc5b0ee98a4379b872f6530be2e92122 100644 --- a/src/uncategorized/saDrugs.tw +++ b/src/uncategorized/saDrugs.tw @@ -1421,41 +1421,44 @@ <<if $slaves[$i].fuckdoll == 0 && $slaves[$i].fetish != "mindbroken">> <<if $suppository == 1>> <<if ($slaves[$i].aphrodisiacs > 0) || ($slaves[$i].curatives > 0) || ($slaves[$i].drugs == "psychosuppressants") || ($slaves[$i].drugs == "hormone enhancers") || ($slaves[$i].drugs == "hormone blockers") || ($slaves[$i].hormones != 0)>> - <<if ($slaves[$i].sexualFlaw == "hates anal")>> - <<if random(1,100) > 80>> - Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime forces $him to @@.green;accept anal sex@@ as a fact of life. - <<set $slaves[$i].sexualFlaw = "none">> - <<else>> - Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime @@.mediumorchid;infuriates $him,@@ since $he hates getting assraped. - <<set $slaves[$i].devotion -= 4>> - <</if>> - <<elseif ($slaves[$i].fetish == "buttslut")>> - <<if ($slaves[$i].fetishKnown == 0)>> - Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime has revealed something: @@.lightcoral;$he likes it up the ass!@@ - <<set $slaves[$i].fetishKnown = 1>> - <<elseif ($slaves[$i].fetishStrength <= 95) && ($slaves[$i].devotion > 4)>> - Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime has @@.lightcoral;deepened $his anal fixation.@@ - <<set $slaves[$i].fetishStrength += 5>> + <<if $slaves[$i].anus == 0>> + <<else>> + <<if ($slaves[$i].sexualFlaw == "hates anal")>> + <<if random(1,100) > 80>> + Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime forces $him to @@.green;accept anal sex@@ as a fact of life. + <<set $slaves[$i].sexualFlaw = "none">> + <<else>> + Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime @@.mediumorchid;infuriates $him,@@ since $he hates getting assraped. + <<set $slaves[$i].devotion -= 4>> + <</if>> + <<elseif ($slaves[$i].fetish == "buttslut")>> + <<if ($slaves[$i].fetishKnown == 0)>> + Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime has revealed something: @@.lightcoral;$he likes it up the ass!@@ + <<set $slaves[$i].fetishKnown = 1>> + <<elseif ($slaves[$i].fetishStrength <= 95) && ($slaves[$i].devotion > 4)>> + Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime has @@.lightcoral;deepened $his anal fixation.@@ + <<set $slaves[$i].fetishStrength += 5>> + <</if>> + <<elseif ($slaves[$i].fetish != "buttslut")>> + <<if ($slaves[$i].devotion < -20)>> + Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime @@.mediumorchid;disgusts $him.@@ + <<set $slaves[$i].devotion -= 2>> + <<elseif fetishChangeChance($slaves[$i]) > random(0,100)>> + $He starts to look forward to getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime; $he's @@.lightcoral;become anally fixated.@@ + <<set $slaves[$i].fetish = "buttslut">> + <<set $slaves[$i].fetishKnown = 1>> + <<set $slaves[$i].fetishStrength = 10>> + <</if>> <</if>> - <<elseif ($slaves[$i].fetish != "buttslut")>> - <<if ($slaves[$i].devotion < -20)>> - Getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime @@.mediumorchid;disgusts $him.@@ - <<set $slaves[$i].devotion -= 2>> - <<elseif fetishChangeChance($slaves[$i]) > random(0,100)>> - $He starts to look forward to getting buttfucked morning and night by reciprocating dildos that ejaculate $his drug regime; $he's @@.lightcoral;become anally fixated.@@ - <<set $slaves[$i].fetish = "buttslut">> - <<set $slaves[$i].fetishKnown = 1>> - <<set $slaves[$i].fetishStrength = 10>> + <<if ($slaves[$i].sexualQuirk == "painal queen")>> + $He @@.hotpink;secretly enjoys@@ being assraped by a machine twice a day. + <<set $slaves[$i].devotion += 1>> <</if>> - <</if>> - <<if ($slaves[$i].sexualQuirk == "painal queen")>> - $He @@.hotpink;secretly enjoys@@ being assraped by a machine twice a day. - <<set $slaves[$i].devotion += 1>> - <</if>> - <<if ($slaves[$i].anus == 1)>> - <<if random(1,100) > 70>> - The regular machine anal @@.lime;stretches out $his tight asshole.@@ - <<set $slaves[$i].anus += 1>> + <<if ($slaves[$i].anus == 1)>> + <<if random(1,100) > 70>> + The regular machine anal @@.lime;stretches out $his tight asshole.@@ + <<set $slaves[$i].anus += 1>> + <</if>> <</if>> <</if>> <</if>> diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw index 7f322260d5546761d4770074caf75ca5b19068fd..70c2204f58fd1c66b9d18c68b6306552f969845a 100644 --- a/src/uncategorized/saLongTermEffects.tw +++ b/src/uncategorized/saLongTermEffects.tw @@ -3949,14 +3949,14 @@ $He @@.mediumaquamarine;feels right@@ to be growing heavy with child. To $him, a growing baby means better milk. <<set $slaves[$i].devotion += 1>> <<elseif ($slaves[$i].devotion <= 20) && ($slaves[$i].pregSource == -1)>> - $He is filled with a feeling of @@.mediumorchid;revulsion@@ that your child is growing within $his body. + $He is filled with a feeling of @@.mediumorchid;revulsion@@ that your child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> growing within $his body. <<set $slaves[$i].devotion -= 1>> <<if $slaves[$i].relationship == -3>> This is compounded by the fact that you @@.gold;forced $him to marry you@@ and @@.mediumorchid;raped $him pregnant.@@ <<set $slaves[$i].devotion -= 5, $slaves[$i].trust -= -5>> <</if>> <<elseif ($slaves[$i].devotion > 50) && ($slaves[$i].pregSource == -1)>> - $He @@.hotpink;loves@@ that your child is growing within $him. + $He @@.hotpink;loves@@ that your child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> growing within $him. <<set $slaves[$i].devotion += 1>> <<if $slaves[$i].relationship == -3>> This is compounded by the fact that $he is your @@.hotpink;devoted $wife@@ and @@.mediumaquamarine;feels it is $his duty@@ to bear your children. @@ -5451,7 +5451,7 @@ <</if>> <<if $slaves[$i].breedingMark == 1 && $propOutcome == 1>> <<if $slaves[$i].pregKnown == 1 && ($slaves[$i].pregSource == -1 || $slaves[$i].pregSource == -6)>> - The Societal Elite @@.green;are pleased@@ <<if $slaves[$i].pregSource == -1>>your<<elseif $slaves[$i].pregSource == -6>>an Elite<</if>> child is growing within $him. The mark covering $his lower belly, coupled with $his gravidity and blessing, @@.green;enamors@@ your populace. + The Societal Elite @@.green;are pleased@@ <<if $slaves[$i].pregSource == -1>>your<<elseif $slaves[$i].pregSource == -6>>an Elite<</if>> child<<if $slaves[$i].pregType > 1>>ren are<<else>> is<</if>> growing within $him. The mark covering $his lower belly, coupled with $his gravidity and blessing, @@.green;enamors@@ your populace. <<set $failedElite -= 5+$slaves[$i].pregType>> <<= FutureSocieties.ChangePorn("Eugenics", 3)>> <<if $slaves[$i].abortionTat > 0>> diff --git a/src/uncategorized/salon.tw b/src/uncategorized/salon.tw index 704228bd45a6fe8d2e7f6734a0ef6d75520b98b1..e5b65a3d56ab68d30bdbf5d8f4f65c7528076dd9 100644 --- a/src/uncategorized/salon.tw +++ b/src/uncategorized/salon.tw @@ -444,7 +444,11 @@ <</if>> <div> - $His $activeSlave.hStyle hair is <<= lengthToEitherUnit($activeSlave.hLength)>> long. + <<if $activeSlave.hStyle !== "shaved">> + $His $activeSlave.hStyle hair is <<= lengthToEitherUnit($activeSlave.hLength)>> long. + <<else>> + $His hair is shaved smooth. + <</if>> <span class="note">General hairstyles will conform to hair length and clothing choices.</span> </div> <div class="choices"> diff --git a/src/uncategorized/seExpiration.tw b/src/uncategorized/seExpiration.tw index 9db2d2db4c2f6659c87247ef32f1ce89b014fce9..0f2b17ef42e45099ed099ebc4ba219e6cb3cf519 100644 --- a/src/uncategorized/seExpiration.tw +++ b/src/uncategorized/seExpiration.tw @@ -200,7 +200,7 @@ at the moment of $his scheduled emancipation, $he seems willing to consider a sh <h3>Final notes?</h3> <div class="note"> <div class="indent"> - $His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$slaves[$i].ID]>><</if>>. + $His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>. </div> <<SlaveExpensesExtra $activeSlave>> </div> \ No newline at end of file diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw index 696bc6ad4b8f777b84ed85b2a600ad4e188ee148..572351d77c1e404aace3bb94a94a7dfeaa2ca6bd 100644 --- a/src/uncategorized/seNonlethalPit.tw +++ b/src/uncategorized/seNonlethalPit.tw @@ -55,7 +55,7 @@ <<if $pitAnimal == 0>> This week's pit fight is between _fighterOne.slaveName and _fighterTwo.slaveName. <<elseif $pitAnimal == 1>> - This week a _animal.species is going to use _fighterOne.slaveName. + This week a _animal.species is going to try to use _fighterOne.slaveName. <<else>> This week, _fighterOne.slaveName was scheduled to be used by an animal, but is spared because no animal has been chosen. <<set $slaves[$slaveIndices[_fighterOne.ID]] = _fighterOne>> @@ -1059,10 +1059,10 @@ <<if canDoVaginal($activeSlave)>> <<set _sexAct = "vaginal">> - <<set _orifice = "pussy">> + <<set _orifice = either("pussy", "cunt", "slit")>> <<elseif canDoAnal($activeSlave)>> <<set _sexAct = "anal">> - <<set _orifice = "asshole">> + <<set _orifice = either("asshole", "rear hole")>> <<else>> <<set _sexAct = "oral">> <<set _orifice = "mouth">> /*this shouldn't ever actually be used*/ @@ -1095,16 +1095,14 @@ <br><br> $activeSlave.slaveName and the _animal.species enter $pitName from opposite sides. $activeSlave.slaveName is naked and $his wrists have been bound, and $he has already been given $his instructions: $he is to try to avoid being caught and <<if _agree == 1>>fucked<<else>>raped<</if>> by the animal for five minutes, and if $he succeeds, $he wins. The _animal.species has been given a large dose of aphrodisiacs, and its lust is apparent — its _animal.dickSize cock is clearly visible, even from where you are seated. It isn't in a hurry, and slowly saunters over to where the <<if _agree == 1>>determined<<else>>terrified<</if>> slave is standing. After what seems to be a moment of deliberation, $he finally makes $his move, and starts <<if _canRun == 1>>running<<else>>moving as quickly as $he can<</if>> in the opposite direction. The _animal.species quickly follows suit, breaking out into a full sprint toward $him. - <<if random(1,100) < 50>> - <<if _canRun == 1>> - $activeSlave.slaveName is quick, though, and $he manages to avoid the animal for the full five minutes, and drops to $his knees in relief and exhaustion once the bell sounds and the _animal.species is leashed and pulled back into its cage. - <<if $pitAudience == "paid">> - The audience is fairly impressed by this impressive display of sportsmanship, and so is your @@.yellowgreen;cut of the betting.@@ - <<run cashX(2500, "pit", $activeSlave)>> - <<elseif $pitAudience == "free">> - The audience is @@.green;fairly impressed@@ by this impressive display of sportsmanship. - <<run repX(100, "pit", $activeSlave)>> - <</if>> + <<if random(1,100) < 30 && _canRun>> + $activeSlave.slaveName is quick, though, and $he manages to avoid the animal for the full five minutes, and drops to $his knees in relief and exhaustion once the bell sounds and the _animal.species is leashed and pulled back into its cage. + <<if $pitAudience == "paid">> + The audience is fairly impressed by this impressive display of sportsmanship, and so is your @@.yellowgreen;cut of the betting.@@ + <<run cashX(2500, "pit", $activeSlave)>> + <<elseif $pitAudience == "free">> + The audience is @@.green;fairly impressed@@ by this impressive display of sportsmanship. + <<run repX(100, "pit", $activeSlave)>> <</if>> <<else>> <<set _minutesLasted = random(1,5)>> diff --git a/src/uncategorized/seRetirement.tw b/src/uncategorized/seRetirement.tw index 5504784b0ec045a0ecece1cf045a3836c9c420f4..8a3f643ad5c5df783b0ba2dcda56da76a4edf19f 100644 --- a/src/uncategorized/seRetirement.tw +++ b/src/uncategorized/seRetirement.tw @@ -402,7 +402,7 @@ You have @@.yellowgreen;gained a menial slave.@@ <h3>Final notes...</h3> <div class="note"> <div class="indent"> - $His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$slaves[$i].ID]>><</if>>. + $His most recent task was to <<print $activeSlave.assignment>><<if $assignmentRecords[$activeSlave.ID]>>, and before that to <<print $assignmentRecords[$activeSlave.ID]>><</if>>. </div> <<SlaveExpensesExtra $activeSlave>> </div> diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw index 91a9c8c21be9ed0270b781e0132667432d76ecaa..21a0bdcf29c7721b1da91454e7c7995b3061f325 100644 --- a/src/utility/miscWidgets.tw +++ b/src/utility/miscWidgets.tw @@ -615,14 +615,6 @@ $args[1]: Fetish. <</widget>> -/% -Call as <<SlaveSort [$slaves]>> -$args[0]: array to sort -%/ -<<widget "SlaveSort">> - <<run SlaveSort.slaves($args[0])>> -<</widget>> - /% Call as <<SlaveIDSort [slaveIDs]>> $args[0]: array to sort