From 6f76039b34696ba3b4c1fea7ad7323b5678507ba Mon Sep 17 00:00:00 2001
From: klorpa <30924131+klorpa@users.noreply.github.com>
Date: Sat, 11 May 2019 18:44:14 -0500
Subject: [PATCH] SCheckFixes

---
 slave variables documentation - Pregmod.txt |  2 +-
 src/SpecialForce/NamingColonel.tw           |  2 +-
 src/SpecialForce/Proposal.tw                |  4 +--
 src/SpecialForce/SpecialForce.js            | 18 +++++-----
 src/SpecialForce/WeeklyChoices.tw           |  2 +-
 src/js/assignJS.js                          |  2 +-
 src/js/generateMarketSlave.js               |  4 +--
 src/js/utilJS.js                            | 40 ++++++++++-----------
 src/npc/agent/agentFramework.js             |  8 ++---
 src/npc/fDance.tw                           |  2 +-
 src/npc/fPCImpreg.tw                        |  2 +-
 src/uncategorized/RESS.tw                   |  2 +-
 src/uncategorized/brothelReport.tw          |  2 +-
 src/uncategorized/nextWeek.tw               |  2 +-
 src/uncategorized/nonRandomEvent.tw         |  2 +-
 src/uncategorized/options.tw                |  2 +-
 src/uncategorized/recETS.tw                 | 10 +++---
 src/uncategorized/remoteSurgery.tw          |  2 +-
 src/uncategorized/resFailure.tw             |  8 ++---
 src/uncategorized/slaveInteract.tw          |  2 +-
 src/utility/miscWidgets.tw                  |  2 +-
 21 files changed, 61 insertions(+), 59 deletions(-)

diff --git a/slave variables documentation - Pregmod.txt b/slave variables documentation - Pregmod.txt
index faee542935c..0c90088afa9 100644
--- a/slave variables documentation - Pregmod.txt	
+++ b/slave variables documentation - Pregmod.txt	
@@ -749,7 +749,7 @@ Accepts int
 
 ageImplant:
 
-has has facial surgery to reduce age
+has had facial surgery to reduce age
 0 - no
 1 - yes
 
diff --git a/src/SpecialForce/NamingColonel.tw b/src/SpecialForce/NamingColonel.tw
index 52b824280b3..4642e81551b 100644
--- a/src/SpecialForce/NamingColonel.tw
+++ b/src/SpecialForce/NamingColonel.tw
@@ -71,7 +71,7 @@
 		<<if $PC.dick > 0>>
 			then force your cock roughly down her throat while you cum. She swallows as much as she can before pulling
 		<<else>>
-			 tightly with your thighs, pressing her face tightly against your pussy as you cum. When you release her, she pulls
+			tightly with your thighs, pressing her face tightly against your pussy as you cum. When you release her, she pulls
 		<</if>> away, coughing.
 
 		<br><br>
diff --git a/src/SpecialForce/Proposal.tw b/src/SpecialForce/Proposal.tw
index 7bdc653e619..72ca2c8bb32 100644
--- a/src/SpecialForce/Proposal.tw
+++ b/src/SpecialForce/Proposal.tw
@@ -20,7 +20,7 @@
 		<<set _price *= .75>>
 	<</if>>
 	<br><<link "Prepare for an announcement." "Security Force Naming-Colonel">>
-		 <<replace "#result">>
+		<<replace "#result">>
 			<<= App.SF.Init()>>
 			<<set $SF.IntroProgress = -1>>
 			<<run cashX(forceNeg(_price), "specialForces")>>
@@ -30,5 +30,5 @@
 		<<replace "#result">>
 			<<set $SF.Active = 0>>
 		<</replace>>
-	 <</link>>
+	<</link>>
 </span>
\ No newline at end of file
diff --git a/src/SpecialForce/SpecialForce.js b/src/SpecialForce/SpecialForce.js
index 3b5cfcc48d6..eb213f52e19 100644
--- a/src/SpecialForce/SpecialForce.js
+++ b/src/SpecialForce/SpecialForce.js
@@ -844,10 +844,10 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`)
 						text += `\nEvery vehicle crew leader in the Firebase is an Elite, and is thus privy to the contents of these strategy meetings. As such, every vehicle crew has a great deal of power in determining their own armor kits and loadouts to best fit the tactics used for their next mission. Every crewman is handpicked, and every single vehicle unit is unique, with the only similarity being the common ground vehicle chassis types between them. Your tanker crews have been known to snatch victory from the jaws of defeat with the help of their unique and unpredictable individuality and unconventional unit compositions throughout their careers in your armor units. Inspired of these glorious service records, their offspring often choose to become vehicle crewmen themselves.\n`;
 					}
 					if (textDisplay === 70 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
-						text += `\nThe hangar is a cavernous place, and when takeoffs and landings are not in progress there are many open spaces for gangs of ambitious air force understudies to gather around veterans and teachers and learn more about their craft, as well as lots of places to simply kick back with a good book and await the next summons for a CASEVAC, air assault, or assault support flight mission. At any given time, these open spaces are in heavy use by the the airmen and airwomen who are not busy at work here. The longest wall of the hangar is also host to a massive and beautiful mural altogether depicting all of the renowned aces and flight instructors the Firebase has known throughout its history thus far. While artful, this mural also holds the promise that through this multitude of Elite personnel, the hangar should always have a rich pool of skillful pilots and maintenance personnel for the good of the service.\n`;
+						text += `\nThe hangar is a cavernous place, and when takeoffs and landings are not in progress there are many open spaces for gangs of ambitious air force understudies to gather around veterans and teachers and learn more about their craft, as well as lots of places to simply kick back with a good book and await the next summons for a CASEVAC, air assault, or assault support flight mission. At any given time, these open spaces are in heavy use by the airmen and airwomen who are not busy at work here. The longest wall of the hangar is also host to a massive and beautiful mural altogether depicting all of the renowned aces and flight instructors the Firebase has known throughout its history thus far. While artful, this mural also holds the promise that through this multitude of Elite personnel, the hangar should always have a rich pool of skillful pilots and maintenance personnel for the good of the service.\n`;
 					}
 					if (textDisplay === 75 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
-						text += `\nWithin the numerous transport aircraft of the hangar, a unique change can be found; since greater human quality is a focus and priority of the Firebase, the seating for passengers has has been completely replaced by rows of specialized transport pods; every passenger now has a life-support enabled, environmentally-sealed, shock-absorbent, blast-resistant, and fireproof individual pod to climb into and remain inside of until their aircraft arrives at their intended destination. These pods are welded into the interiors of every passenger section, leading to an extreme degree of passenger survivability, even when crashed or shot down by enemy fire, but at the cost of smaller troop payloads once the transport aircraft touch down. While it currently is uncomfortable for the troops, once the proud few, specially bred and registered children of the current generation of Firebase troops grow up and seek to follow in their parent's footsteps, these advanced 'seating' arrangements will be downright necessary to protect the lives of the Firebase's greatest and scarcest asset; it's Elite fighting personnel.\n`;
+						text += `\nWithin the numerous transport aircraft of the hangar, a unique change can be found; since greater human quality is a focus and priority of the Firebase, the seating for passengers has been completely replaced by rows of specialized transport pods; every passenger now has a life-support enabled, environmentally-sealed, shock-absorbent, blast-resistant, and fireproof individual pod to climb into and remain inside of until their aircraft arrives at their intended destination. These pods are welded into the interiors of every passenger section, leading to an extreme degree of passenger survivability, even when crashed or shot down by enemy fire, but at the cost of smaller troop payloads once the transport aircraft touch down. While it currently is uncomfortable for the troops, once the proud few, specially bred and registered children of the current generation of Firebase troops grow up and seek to follow in their parent's footsteps, these advanced 'seating' arrangements will be downright necessary to protect the lives of the Firebase's greatest and scarcest asset; it's Elite fighting personnel.\n`;
 					}
 					if (textDisplay === 80 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
 						text += `\nNear the barracks, the residents of the Firebase are grateful to have the aid of the Aristocracy Academy. This impressively large and well-equipped facility is staffed with Elites from all over the arcology, and these impeccable men and women carry out all the services needed to help this place function as a part-time 'Finishing School' for all members of the Firebase; the curriculum specializes in training unkempt soldiers and staff to become proper ladies and gentlemen; how to dress, speak, behave, dance, and handle a wide variety of decidedly civilian scenarios in the classiest manner possible.\n`;
@@ -965,7 +965,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`)
 						text += `\nOn the longest wall of the garage is a cartoonish motion picture illustration depicting quite a lovely, lavish scene; every fighting vehicle used in the Firebase is depicted as being on parade, streaming past the arcology in precise rows of vehicles that form an endless tide of disciplined armor units obviously on their way to their next victory. Flanking the armor columns are a long crowd of women throwing colorful flowers of all kinds\n`;
 					}
 					if (textDisplay === 65 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
-						text += `\nYour crewmen feel very attached to the vehicles they have been given charge of, as as such every single vehicle is the garage has a feminine name and is affectionately regarded as 'female'. To celebrate this, every vehicle hull has been decorated with a beautiful high-resolution pin-up illustration of a unique, sexy, sassy, scantily-clad lady with her name (and thus that vehicle's name) drawn right next to her.\n`;
+						text += `\nYour crewmen feel very attached to the vehicles they have been given charge of, and as such every single vehicle is the garage has a feminine name and is affectionately regarded as 'female'. To celebrate this, every vehicle hull has been decorated with a beautiful high-resolution pin-up illustration of a unique, sexy, sassy, scantily-clad lady with her name (and thus that vehicle's name) drawn right next to her.\n`;
 					}
 					if (textDisplay === 70 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
 						text += `\nWith its high-ceiling and many light fixtures, the hangar is distinctive in its appearance and function; the conventional overhead lighting has been replaced with elegant chandelier lighting that makes the work stations below perpetually look like tables at a classy gala. And in a way, they are. Well-stocked juice bars occupy the hangar's busier corners, while the bathroom's many stalls are kept spotless by a well-staffed janitorial outfit. An inviting but expensive deli-grocery shop and adjacent ATM machine lie near the entrance too, their clean presentation almost beckoning to the staff and pilots of the hangar to enter.\n`;
@@ -1027,7 +1027,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`)
 						text += `\nIt is worth noting that the garage has taken on many characteristics of a sandy beach, harkening back to the amphibious landings of times both past and present. The entire garage floor is covered in a thick blanket of sand, complete with small sand dunes, patches of marram grass, rocky outcroppings, an enormous overhead fluorescent light fixture to mimic the sun, and even an artificial breeze from powerful new air filtration systems. Work stations are protectively sectioned off with hand-crafted wooden palisades, and vehicles are tended to on raised wooden platforms meant to help keep the sand out of the machinery. Meanwhile tiny communities of crabs, lobsters, frogs, and other natural amphibians gravitate towards the small refillable pool installed next to the far wall of the building.\n`;
 					}
 					if (textDisplay === 65 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
-						text += `\nWithin the garage, extreme attention to detail is paid to the subject of camouflage. Every ground vehicle is camouflaged extremely well, with a hefty reserve supply of custom handmade and semi-adhesive frost, mud, foliage, rubble, and many other forms of concealment kept on stock at all times to tailor the appearance of each vehicle precisely to the mission. The staff of the the garage are some of the best vehicle camouflage outfitters in the world, and your ground vehicles are often not spotted by enemy combatants until it is far too late.\n`;
+						text += `\nWithin the garage, extreme attention to detail is paid to the subject of camouflage. Every ground vehicle is camouflaged extremely well, with a hefty reserve supply of custom handmade and semi-adhesive frost, mud, foliage, rubble, and many other forms of concealment kept on stock at all times to tailor the appearance of each vehicle precisely to the mission. The staff of the garage are some of the best vehicle camouflage outfitters in the world, and your ground vehicles are often not spotted by enemy combatants until it is far too late.\n`;
 					}
 					if (textDisplay === 70 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
 						text += `\nThe floor of the hangar is a thick bed of rich, moist brown soil, complete with its own grass patches, stone footpaths, and flowerbeds. It is a lively place, and spaces that are not filled with clean and filtered air are rather filled with the smell of burning hemp and soft melodic music. The hangar's breakroom has become a yoga room, complete with hired instructors, and the various workstations often feature little potted plants that have been given pet names by the staff. Moss and vines are covering many of the walls in the hangar, with overgrowth being regularly pruned by on-slaves when there are no other duties to perform. The same can be said for the weeds that frequently crop up throughout the facility.\n`;
@@ -1446,7 +1446,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`)
 						text += `\nCushioned couches, lounge chairs, and futons lie all around the armory, and on every last one of them lies a debriefed soldier sleeping off their last deployment with the help of some opium. Most of them haven't even bothered to change out of their fatigues, and many have their weapons and body armor strewn carelessly on the floor beside them. Further still, a few have their pants pulled down to their ankles, whilst an intoxicated slave-whore lazily rides them. Heavy smoke fills the air, and adjacent to the central quartermaster's booth is a tidy fast food bar where shots of soft drinks, small plates of fried foods, and tiny condiments are always in quick supply for those that the time to spare.\n`;
 					}
 					if (textDisplay === 40 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
-						text += `\nThere are are drug platters, snack bowls, and punch bowls for every battle station of the command center. During combat maneuvers the staff here are especially ravenous, chugging down large amounts of substance while they send messages that carry power over life and death. The pressure to succeed and secure victory is high, and in order to cope, the staff consume.\n`;
+						text += `\nThere are drug platters, snack bowls, and punch bowls for every battle station of the command center. During combat maneuvers the staff here are especially ravenous, chugging down large amounts of substance while they send messages that carry power over life and death. The pressure to succeed and secure victory is high, and in order to cope, the staff consume.\n`;
 					}
 					if (textDisplay === 45 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
 						text += `\nThe distribution point of the drug laboratory is an eerie place, with a very thick white mist for soldiers to stroll through on their way to the drug selection buffet. The mist is so dense and rich that many soldiers report feeling either high or buzzed after just a few minutes inside of it.\n`;
@@ -1523,7 +1523,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`)
 						text += `\nThe garage resembles a large farm's toolshed, only this toolshed is very big, and it definitely has more than one tractor. Most of the walls of the garage have been covered with decorative wooden planks to resemble the walls of a barn, as have most of its tables and counterspaces. Duty stations have been separated by imperfect high wooden gates and fences as well, to give the impression of having 'stables' for the various vehicle 'steeds' around as well. Naturally, there are a few cows tied down to some of the workstations, next to wooden tables stacked with cups. After all what hardworking mechanics doesn't want a sweet warm glass of milk after completing a job well done?\n`;
 					}
 					if (textDisplay === 65 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
-						text += `\nTo their good credit, the mechanics have also managed to affix compact chilled human milk dispensers to the interiors of the ground vehicles too. The seating for pilots have been reupholstered with tanned hide materials upon request, many of the the interiors have been repainted with farmland or bovine designs, and even the floors have been given a light blanket of straw covering.\n`;
+						text += `\nTo their good credit, the mechanics have also managed to affix compact chilled human milk dispensers to the interiors of the ground vehicles too. The seating for pilots have been reupholstered with tanned hide materials upon request, many of the interiors have been repainted with farmland or bovine designs, and even the floors have been given a light blanket of straw covering.\n`;
 					}
 					if (textDisplay === 70 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
 						text += `\nThe hangar's appearance is somewhat reminiscent of that of improvised rural airfields of the sort found in farmland countrysides all over the world; tall rows of crops and ploughed fields of dirt now surround or flank the runways and landing pads of the hangar, while the walls themselves are mostly covered in an active illustration wallpaper that depicts the outdoor sky in colors that change to reflect the actual time of day.\n`;
@@ -1670,7 +1670,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 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`;
@@ -1756,7 +1756,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`)
 						text += `\nThe men and women of the Firebase are always encouraged to expand upon their weaponry, and for most, the armory is the place to do exactly that. In the center of the armory lies a massive table that hosts a dizzying and splendid assortment of magnetic picatinny rails, huge under-barrel shotguns or grenade launchers, tritium iron sights, broad and adjustable laser sights, large zoomable scopes, collapsible tactical bipods and tripods, extended or reinforced gun barrels, adjustable stocks, extended magazines, massive drum magazines, terrifyingly large bayonets and combat knives, bulky grenades with extra fragmentation effects, and so on, and so forth. Troops are encouraged to pile as many attachments and accessories onto their weapons as practically possible, and by the time they are done, you could swear that their weapons are almost as big as they are.\n`;
 					}
 					if (textDisplay === 40 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
-						text += `\nBattlestations within the command center are twice as tall as they were before, due to the implementation of universal equipment redundancies. Every wall-mounted machine, holographic operations table, computer console, digital archive, and backup hard drive has been bolstered with the existence of new identical back up copies, ensuring that no data is lost should some terrible accident, physical attack, or cyber breach occur. These backups have been been stacked vertically to avoid taking up precious floorspace.\n`;
+						text += `\nBattlestations within the command center are twice as tall as they were before, due to the implementation of universal equipment redundancies. Every wall-mounted machine, holographic operations table, computer console, digital archive, and backup hard drive has been bolstered with the existence of new identical back up copies, ensuring that no data is lost should some terrible accident, physical attack, or cyber breach occur. These backups have been stacked vertically to avoid taking up precious floorspace.\n`;
 					}
 					if (textDisplay === 45 && V.SF.FS[FS_OPTIONS[i]].lv >= textDisplay) {
 						text += `\nThe drug lab facility has a built-up topless bar extension where off duty personnel can come and drink themselves silly. All manner of typical bar snacks and games can be found, with darts, beer pong, and other games of marksmanship being particularly popular. Of course, the men will sometimes tire of these games and decide to play with one of the numerous big-tittied barmaids instead. Spicing up the festivities is the abundance of newfangled trial drugs freely given to those who come, since your chemical engineers are happy to let bar patrons be their second test population for the effects of their newer substances. After each event, lots of empty syringes and spilt beer alike can be seen all over the floors.\n`;
@@ -2227,7 +2227,7 @@ App.SF.fsIntegration = function(input = 'Menu', textDisplay = 100, text = `\n`)
 				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 += `\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 a 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 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 += `\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.`;
 				break;
 			case "Shell-Shocked":
diff --git a/src/SpecialForce/WeeklyChoices.tw b/src/SpecialForce/WeeklyChoices.tw
index 4ebdc86b410..6456bc9a421 100644
--- a/src/SpecialForce/WeeklyChoices.tw
+++ b/src/SpecialForce/WeeklyChoices.tw
@@ -92,7 +92,7 @@
 				pastoralist shop, helping the Colonel select a more comfortable breast pump.
 			<<else>>
 				shop that catches the Colonel's eye.
-			 <</if>>
+			<</if>>
 			<<if $PC.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.
 				<<if $arcologies[0].prosperity < $AProsperityCap>> <<set $arcologies[0].prosperity++>> <</if>>
diff --git a/src/js/assignJS.js b/src/js/assignJS.js
index e36c6b3e5bf..5062946543e 100644
--- a/src/js/assignJS.js
+++ b/src/js/assignJS.js
@@ -574,7 +574,7 @@ App.UI.jobLinks = function() {
 
 	/**
 	 * Generates assignment links
-	 * @param {number} index index in the slaves array or -1 for the activeSlave
+	 * @param {number} index in the slaves array or -1 for the activeSlave
 	 * @param {string} [passage] optional next passage to go to
 	 * @param {linkCallback} [callback]
 	 * @returns {string}
diff --git a/src/js/generateMarketSlave.js b/src/js/generateMarketSlave.js
index 7ec26382f74..30bf3581877 100644
--- a/src/js/generateMarketSlave.js
+++ b/src/js/generateMarketSlave.js
@@ -2039,11 +2039,11 @@ window.generateMarketSlave = function(market = "kidnappers", numArcology = 1) {
 			V.activeSlave.balls = 0;
 			V.activeSlave.preg = 0;
 			V.activeSlave.eyebrowHStyle = "bald";
-			V.activeSlave.armpitHStyle = "bald";
+			V.activeSlave.underArmHStyle = "bald";
 			V.activeSlave.pubicHStyle = "bald";
 			V.activeSlave.hStyle = "bald";
 			V.activeSlave.behavioralFlaw = jsEither(["none", "odd"]);
-			V.activeSlave.customTat = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder.";
+			V.activeSlave.custom.tattoo = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder.";
 			break;
 		case "gangs and smugglers":
 			if (V.pedo_mode === 1) {
diff --git a/src/js/utilJS.js b/src/js/utilJS.js
index c7c75937b56..cd73d409bc2 100644
--- a/src/js/utilJS.js
+++ b/src/js/utilJS.js
@@ -914,19 +914,19 @@ window.num = function(x) {
 	const SCALES = ["thousand", "million", "billion", "trillion"];
 
 	/**
-	 * helper function for use with Array.filter
-	 * @param {any} item
-	 * @returns {boolean}
-	 */
+	* helper function for use with Array.filter
+	* @param {any} item
+	* @returns {boolean}
+	*/
 	function isTruthy(item) {
 		return !!item;
 	}
 
 	/**
-	 * convert a number into "chunks" of 0-999
-	 * @param {number} number
-	 * @returns {number[]}
-	 */
+	* convert a number into "chunks" of 0-999
+	* @param {number} number
+	* @returns {number[]}
+	*/
 	function chunk(number) {
 		const thousands = [];
 
@@ -939,10 +939,10 @@ window.num = function(x) {
 	}
 
 	/**
-	 * translate a number from 1-999 into English
-	 * @param {number} number
-	 * @returns {string}
-	 */
+	* translate a number from 1-999 into English
+	* @param {number} number
+	* @returns {string}
+	*/
 	function inEnglish(number) {
 		let hundreds;
 		let tens;
@@ -972,11 +972,11 @@ window.num = function(x) {
 	}
 
 	/**
-	 * append the word for a scale. Made for use with Array.map
-	 * @param {string} chunk
-	 * @param {number} exp
-	 * @returns {string}
-	 */
+	* append the word for a scale. Made for use with Array.map
+	* @param {string} chunk
+	* @param {number} exp
+	* @returns {string}
+	*/
 	function appendScale(chunk, exp) {
 		let scale;
 		if (!chunk) {
@@ -987,9 +987,9 @@ window.num = function(x) {
 	}
 
 	/**
-	 * @param {number} s
-	 * @returns {string}
-	 */
+	* @param {number} s
+	* @returns {string}
+	*/
 	function commaNum(s) {
 		if (!s) {
 			return "0";
diff --git a/src/npc/agent/agentFramework.js b/src/npc/agent/agentFramework.js
index aa5e80c1b78..2dff5de1bf1 100644
--- a/src/npc/agent/agentFramework.js
+++ b/src/npc/agent/agentFramework.js
@@ -3,7 +3,7 @@ App.Data.Facilities.arcologyAgent = {
 	genericName: null,
 	jobs: {
 		agentsSlave: {
-			position: "agents's toy",
+			position: "agent's toy",
 			assignment: "live with your agent",
 			publicSexUse: true,
 			fuckdollAccepted: false
@@ -29,9 +29,9 @@ App.Data.Facilities.arcologyAgent = {
 
 App.Entity.Facilities.AgentJob = class extends App.Entity.Facilities.ManagingJob {
 	/**
-	 * @param {App.Entity.SlaveState} slave
-	 * @returns {string[]}
-	 */
+	* @param {App.Entity.SlaveState} slave
+	* @returns {string[]}
+	*/
 	canEmploy(slave) {
 		let r = super.canEmploy(slave);
 		if (slave.intelligence + slave.intelligenceImplant <= 15) {
diff --git a/src/npc/fDance.tw b/src/npc/fDance.tw
index 388fa4b9e8b..64921408944 100644
--- a/src/npc/fDance.tw
+++ b/src/npc/fDance.tw
@@ -366,7 +366,7 @@ But it's not over yet. You tell your slave that it's time to incorporate some st
 <<elseif ($activeSlave.sexualFlaw == "attention whore")>>
 	As an attention whore, this is what $he lives for.
 	<<if ($activeSlave.skill.entertainment >= 99)>>
-		Your slave is a masterful entertainer, able to keep anyone entertained for even the most lengthy of strip teases. Being a an attention whore, $he is obsessed with attracting the sexual arousal of others. $He begins by writhing $his hips and rolling $his ass. $He knows how to use $his hips and ass to draw and keep your attention while slowly moving up to $his chest. $His body is nothing more than an object for your desire, and $he knows how to fulfill $his purpose, even though $he is also fulfilled by the event $he knows that your desire is all that matters. You keep trying to get back to work, but your slave's movements are so enthralling that you cannot seem to break free.
+		Your slave is a masterful entertainer, able to keep anyone entertained for even the most lengthy of strip teases. Being an attention whore, $he is obsessed with attracting the sexual arousal of others. $He begins by writhing $his hips and rolling $his ass. $He knows how to use $his hips and ass to draw and keep your attention while slowly moving up to $his chest. $His body is nothing more than an object for your desire, and $he knows how to fulfill $his purpose, even though $he is also fulfilled by the event $he knows that your desire is all that matters. You keep trying to get back to work, but your slave's movements are so enthralling that you cannot seem to break free.
 	<<elseif ($activeSlave.skill.entertainment >= 60)>>
 		Your slave is a skilled entertainer, well above average. Being an attention whore, $he is obsessed with attracting the sexual arousal of others. $He begins by writhing $his hips and rolling $his ass. $He knows how to use $his hips and ass to draw and keep your attention while slowly moving up to $his chest. $His body is nothing more than an object for your desire, and $he is learning to fulfill $his purpose. $He surely wishes $he were a better entertainer so you would call on $him to strip more often.
 	<<elseif ($activeSlave.skill.entertainment >= 40)>>
diff --git a/src/npc/fPCImpreg.tw b/src/npc/fPCImpreg.tw
index 8b4e7fe90c5..4425c140df1 100644
--- a/src/npc/fPCImpreg.tw
+++ b/src/npc/fPCImpreg.tw
@@ -132,7 +132,7 @@ You call $him over so you can
 	<<else>>
 		You take $him from behind against your desk. $He steadies $himself as $he feels your hands roaming across $his _belly belly. As the sex reaches its climax, $his breaths grow short and $his moans passionate. $He pushed against you,
 	<</if>>
-	 As the sex reaches its climax your semen<<if $PC.balls == 3>> fills $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pours into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pours into $him<<else>> jets into $his welcoming depths<</if>> as $he begs you to use $his unworthy body to make a new slave.
+	As the sex reaches its climax your semen<<if $PC.balls == 3>> fills $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pours into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pours into $him<<else>> jets into $his welcoming depths<</if>> as $he begs you to use $his unworthy body to make a new slave.
 <<elseif $activeSlave.devotion < -20>>
 	$He tries to refuse, so you bend the disobedient slave over your desk and take $him hard from behind. $His breasts slide back and forth across the desk. You give $his buttocks some nice hard swats as you pound $him. $He grunts and moans but knows better than to try to get away. $He begs you not to cum inside $him, knowing $he's fertile, and sobs when $he feels you<<if $PC.balls == 3>> filling $him until $his stomach is distended and wobbling with your cum<<elseif $PC.balls == 2>> pouring into $him until $he is stuffed with your cum<<elseif $PC.balls == 1>> pouring into $him<<else>> blow your load<</if>> despite $his pleas.
 <<elseif $activeSlave.devotion <= 20>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 64ab29229e4..0f03cc9220d 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -9878,7 +9878,7 @@ brought in to you. This time <<EventNameLink>> has been sent to deliver it. $He
 			<<else>>
 				to plan $his pregnancies.
 			<</if>>
-			 They'll happen when they happen, and until then $he'll take it up the butt like a good slut. $He @@.gold;nods and wipes $his eyes@@ even as
+			They'll happen when they happen, and until then $he'll take it up the butt like a good slut. $He @@.gold;nods and wipes $his eyes@@ even as
 			<<if ($activeSlave.anus == 1)>>
 				$he grimaces involuntarily at your painful use of $his tight butthole.
 			<<elseif ($activeSlave.anus == 2)>>
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index d8e0843c616..6f372e433b9 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -200,7 +200,7 @@
 			<<else>>
 				<<run saWhore($slaves[$i])>>
 			<</if>>
-			<br>&nbsp;&nbsp;&nbsp;&nbsp;$He whores $himself because $he doesn't have enough whores to manage to keep $him busy, and makes @@.yellowgreen;<<print cashFormat($Madam.lastWeeksCashIncome)>>@@. $He can charge more for $his time, since many citizens find it erotic to fuck the Madam.
+			<br>&nbsp;&nbsp;&nbsp;&nbsp;$He whores $himself because $he doesn't have enough whores to manage to keep $him busy, and makes @@.yellowgreen;<<print cashFormat($Madam.lastWeeksCashIncome)>>.@@ $He can charge more for $his time, since many citizens find it erotic to fuck the Madam.
 			<<set _profits += $cash-_oldCash, _oldCash = $cash>>
 		<</if>>
 	<</if>>
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index 4e84a795b3c..fa78401819a 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -190,7 +190,7 @@
 		<</if>>
 	<</if>>
 	<<if $slaves[_i].missingLegs == 3>>
-		<<set $slaves[_i].heels = 0, $slaves[_i].shoes = "none", $slaves[_i].legsAccessory = "none", $slaves[_i].legsTat = 0,  $slaves[_i].heightImplant = 0>>
+		<<set $slaves[_i].heels = 0, $slaves[_i].shoes = "none", $slaves[_i].legAccessory = "none", $slaves[_i].legsTat = 0,  $slaves[_i].heightImplant = 0>>
 		<<if (["ankles", "calves", "feet", "left ankle", "left calf", "left foot", "left thigh", "right ankle", "right calf", "right foot", "right thigh", "thighs"]includes($slaves[_i].brandLocation))>>
 			<<set $slaves[_i].brand = 0>>
 			<<set $slaves[_i].brandLocation = 0>>
diff --git a/src/uncategorized/nonRandomEvent.tw b/src/uncategorized/nonRandomEvent.tw
index 53b1c01c423..bbe8026d2aa 100644
--- a/src/uncategorized/nonRandomEvent.tw
+++ b/src/uncategorized/nonRandomEvent.tw
@@ -173,7 +173,7 @@
 	<<goto "secExpSmilingMan">>
 <<elseif $rivalOwner == 0 && $smilingManProgress == 3 && $secExp == 1>>
 	<<goto "secExpSmilingMan">>
-<<elseif ($rivalOwner == 0) && ($FCNNstation == 0) && ($week > 95) && ($cash > 200000) && ($rep > 7500)>>
+<<elseif ($rivalOwner == 0) && ($seeFCNN == 1) && ($FCNNstation == 0) && ($week > 95) && ($cash > 200000) && ($rep > 7500)>>
 	<<goto "SE FCNN Station">>
 <<else>>
 	<<if random(1,100) > _effectiveWeek+25>>
diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw
index 697477e0adb..7039c783092 100644
--- a/src/uncategorized/options.tw
+++ b/src/uncategorized/options.tw
@@ -95,7 +95,7 @@ Image display
 		<</if>><br>
 		Clothing erection bulges
 		<<if $showClothingErection>>
-			@@.cyan;ENABLED@@. [[Disable|Options][$showClothingErection = 0]]
+			@@.cyan;ENABLED.@@ [[Disable|Options][$showClothingErection = 0]]
 		<<else>>
 			@@.red;DISABLED.@@ [[Enable|Options][$showClothingErection = 1]]
 		<</if>>
diff --git a/src/uncategorized/recETS.tw b/src/uncategorized/recETS.tw
index 97a274340dc..69841a11dcc 100644
--- a/src/uncategorized/recETS.tw
+++ b/src/uncategorized/recETS.tw
@@ -34,8 +34,9 @@
 	<<set _races = setup.filterRacesLowercase.filter(race => race !== $arcologies[0].FSSubjugationistRace)>>
 	<<set $fixedRace = _races.random()>>
 <</if>>
-<<set $activeSlave = GenerateNewSlave()>>
-<<set $activeSlave.origin = "She sold herself into slavery to escape addiction debts.">>
+<<set $activeSlave = GenerateNewSlave("XX")>>
+<<set $activeSlave.origin = "$He sold $himself into slavery to escape addiction debts.">>
+<<set $activeSlave.career = setup.uneducatedCareers.random()>>
 <<set $activeSlave.devotion = random(-15,15)>>
 <<set $activeSlave.trust = random(-15,15)>>
 <<set $activeSlave.oldDevotion = $activeSlave.devotion>>
@@ -744,7 +745,8 @@
 
 <<case "addict mother daughter">>
 
-<<set $activeSlave.origin = "You tricked her mother into selling her into slavery to clear addiction debts.">>
+<<set $activeSlave.origin = "You tricked $his mother into selling $him into slavery to clear addiction debts.">>
+<<set $activeSlave.career = setup.uneducatedCareers.random()>>
 <<set $activeSlave.slaveName = $activeSlave.birthName>>
 <<set $activeSlave.ID = $activeSlave.ID + 1000>>
 <<set $activeSlave.devotion += 10>>
@@ -1799,7 +1801,7 @@ This call is coming from a public kiosk, which is usually an indication that the
 	<<case "incest sister sister">>
 		They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse.
 	<<case "incest twin brother">>
-		They hug each other tightly as the they slip a hand down the other's pants. They ought to be an interesting addition to your penthouse.
+		They hug each other tightly as they slip a hand down the other's pants. They ought to be an interesting addition to your penthouse.
 	<<case "incest twin sister">>
 		They cheer happily and hug each other tightly. They ought to be an interesting addition to your penthouse.
 	<<case "incest twins mixed">>
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index d8a5ee9159c..50bdc8a4c0d 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -1483,7 +1483,7 @@ Deal with $his hair:
 	$He is no longer capable of growing hair on $his head.
 <</if>>
 <br>&nbsp;&nbsp;&nbsp;&nbsp;
-<<if ($activeSlave.eyebrowStyle != "bald")>>
+<<if ($activeSlave.eyebrowHStyle != "bald")>>
 	$He has $activeSlave.origHColor eyebrows.
 	[["Surgically remove " + $his + " ability to grow eyebrows"|Surgery Degradation][cashX(forceNeg($surgeryCost), "slaveSurgery", $activeSlave),$surgeryType = "eyebrow removal"]]
 <<else>>
diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw
index eba52bb6c8d..326b8ec64e6 100644
--- a/src/uncategorized/resFailure.tw
+++ b/src/uncategorized/resFailure.tw
@@ -372,7 +372,7 @@
 		<<set $activeSlave.health = random(60,80)>>
 		<<set $activeSlave.devotion = random(60,75)>>
 		<<set $activeSlave.trust = random(60,75)>>
-		<<set $activeSlave.intelligenceImplant = 30;
+		<<set $activeSlave.intelligenceImplant = 30>>
 		<<if $NUL.schoolUpgrade == 1>>
 			<<set $activeSlave.intelligence = random(50, 70)>>
 			<<set $activeSlave.skill.whoring = random(70, 80)>>
@@ -385,7 +385,7 @@
 		<<if $NUL.schoolUpgrade == 2>>
 			<<set $activeSlave.skill.anal = random(60, 80)>>
 			<<set $activeSlave.skill.oral = random(70, 90)>>
-			<<set $activeSlave.anus = random(1, 3);
+			<<set $activeSlave.anus = random(1, 3)>>
 		<<else>>
 			<<set $activeSlave.skill.anal = random(10, 30)>>
 			<<set $activeSlave.skill.oral = random(20, 40)>>
@@ -402,10 +402,10 @@
 		<<set $activeSlave.balls = 0>>
 		<<set $activeSlave.preg = 0>>
 		<<set $activeSlave.eyebrowHStyle = "bald">>
-		<<set $activeSlave.armpitHStyle = "bald">>
+		<<set $activeSlave.underArmHStyle = "bald">>
 		<<set $activeSlave.pubicHStyle = "bald">>
 		<<set $activeSlave.hStyle = "bald">>
-		<<set $activeSlave.customTat = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder.">>
+		<<set $activeSlave.custom.tattoo = "$He has the abstract symbol of Nueva Universidad de Libertad tattooed on $his left shoulder.">>
 		<<run newSlave($activeSlave)>> /* skip New Slave Intro */
 	<</for>>
 <<elseif $RESFailure == "TGA">>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index bd587df7dac..b17f823c62a 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -1068,7 +1068,7 @@
 			<</if>>
 		<</if>>
 		<<if $growthStim == 1>>
-			<<if ($activeSlave.height < 274 || ($activeSlave.height < 160 && $activeSlave.geneticQruirks.dwarfism == 2 && $activeSlave.geneticQruirks.gigantism != 2)) && $activeSlave.height < Math.clamp((Height.mean($activeSlave) * 1.25),0,274)>>
+			<<if ($activeSlave.height < 274 || ($activeSlave.height < 160 && $activeSlave.geneticQuirks.dwarfism == 2 && $activeSlave.geneticQuirks.gigantism != 2)) && $activeSlave.height < Math.clamp((Height.mean($activeSlave) * 1.25),0,274)>>
 				| <<link "Growth stimulants">><<set $activeSlave.drugs = "growth stimulants">><<SlaveInteractDrugs>><</link>>
 			<<else>>
 				| Growth stimulants
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index d6741490e41..2feac3836f0 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -193,7 +193,7 @@
 			<</if>>
 		<</if>>
 		<<if $growthStim == 1>>
-			<<if ($activeSlave.height < 274 || ($activeSlave.height < 160 && $activeSlave.geneticQruirks.dwarfism == 2 && $activeSlave.geneticQruirks.gigantism != 2)) && $activeSlave.height < Math.clamp((Height.mean($activeSlave) * 1.25),0,274)>>
+			<<if ($activeSlave.height < 274 || ($activeSlave.height < 160 && $activeSlave.geneticQuirks.dwarfism == 2 && $activeSlave.geneticQuirks.gigantism != 2)) && $activeSlave.height < Math.clamp((Height.mean($activeSlave) * 1.25),0,274)>>
 				| <<link "Growth Stimulants">><<set $activeSlave.drugs = "growth stimulants">><<SlaveInteractDrugs>><</link>>
 			<<else>>
 				| Growth Stimulants
-- 
GitLab