diff --git a/src/Mods/SpecialForce/TrickShotNight.js b/src/Mods/SpecialForce/TrickShotNight.js
new file mode 100644
index 0000000000000000000000000000000000000000..5e4706f35248ed0e372926c8e0672d121aaff36f
--- /dev/null
+++ b/src/Mods/SpecialForce/TrickShotNight.js
@@ -0,0 +1,305 @@
+
+App.Events.TrickShotNight = class TrickShotNight extends App.Events.BaseEvent {
+	eventPrerequisites() {
+		return [
+			() => V.SF.Toggle,
+			() => V.SF.Active >= 1
+		];
+	}
+
+	execute(node) {
+		V.nextButton = "Continue";
+		V.nextLink = "RIE Eligibility Check";
+		let r = [];
+		const buyIn = 50000;
+		const {
+			HeA
+		} = getPronouns(assistant.pronouns().main).appendSuffix("A");
+		let _shootChance;
+		if (V.PC.skill.warfare === -100) {
+			_shootChance = 5;
+		} else if (V.PC.skill.warfare <= -75) {
+			_shootChance = 10;
+		} else if (V.PC.skill.warfare <= -50) {
+			_shootChance = 15;
+		} else if (V.PC.skill.warfare <= -25) {
+			_shootChance = 20;
+		} else if (V.PC.skill.warfare === 0) {
+			_shootChance = 25;
+		} else if (V.PC.skill.warfare <= 25) {
+			_shootChance = 45;
+		} else if (V.PC.skill.warfare <= 50) {
+			_shootChance = 60;
+		} else if (V.PC.skill.warfare <= 75) {
+			_shootChance = 85;
+		} else if (V.PC.skill.warfare >= 100) {
+			_shootChance = 90;
+		}
+
+		App.Events.addParagraph(node, [`Despite your direct elevator, interaction with the majority of your security force is relatively scarce. Aside from mutually exchanged nods in the firebase and the occasional briefing, your V.SF.Lower enjoy a degree of autonomy.`]);
+		
+
+		r.push(`On a particularly lackadaisical evening, you find yourself alerted to a message alert by ${V.assistant.name}.`);
+		if (V.assistant.personality > 0) {		
+			r.push(`"${properMaster()}, a message from ${V.SF.Lower}." ${HeA} pauses before continuing. "It seems they're asking if you'd like to join their trick shot night."`);
+		} else {
+			r.push(`It informs you that ${V.SF.Lower} have sent a message asking you to join them at their trick shot night.`);
+		}
+
+		
+		const choices = [];
+		choices.push(new App.Events.Result(`Politely decline`, decline));
+		if (V.cash < buyIn) {
+			choices.push(new App.Events.Result(null, null, "You lack the necessary funds to attend a high stakes poker game."));
+		} else {
+			choices.push(new App.Events.Result(`Attend the poker night`, attend, `It will cost ${cashFormat(buyIn)} to participate in the poker night.`));
+		}
+		App.Events.addResponses(node, choices);
+
+		function decline() {
+			return `You inform ${V.SF.Lower} that you aren't planning to attend. A short while later, you receive a message from them stating that their invitation is an open one and that you're welcome to join in another night.`;
+		}
+
+		function attend() {
+			const frag = new DocumentFragment();
+			let r = [];
+			r.push(`You instruct ${V.assistant.name} to inform V.SF.Lower that you will be attending their trick shot night, and after settling your affairs in the penthouse you head down to the firebase. The atmosphere in the firebase is casual, especially in comparison to the usual situations you meet them, though your security force still maintain some measure of decorum towards you as their employer. Eventually, you settle in at the table with a handful of ${V.SF.Lower} officers and turn your <span class="cash">${cashFormat(buyIn)}</span> into bullets. All that remains is to decide your strategy for the night.`);
+			App.Events.addParagraph(frag, r);
+
+			const choices = [];
+			choices.push(new App.Events.Result(`Play it safe`, safe));
+			choices.push(new App.Events.Result(`Up the ante`, ante));
+			App.Events.addResponses(frag, choices);
+			return frag;
+
+			function safe() {
+				const frag = new DocumentFragment();
+				let r = [];
+				if (random(1, 100) > 50) {
+					r.push(`Despite your attempts to mitigate risk and play the safest hands possible, it seems lady luck has conspired against you this evening. However, even when your last chip is spent, your mercenaries pitch you a few chips to keep you in the game for the rest of the night. You may have lost most of your ¤, but it seems you've <span class="reputation inc">made some friends.</span>`);
+					repX(5000, "event");
+					cashX(-2500, "event");
+				} else {
+					r.push(`While a careful eye for risk has buoyed you through the evening, ultimately lady luck is the decider in handing you the win in a number of close hands. Unfortunately your meticulous play limited your chance at a larger payout, and you only come away from the evening with ${cashFormat(1000)} more than you arrived with and <span class="reputation inc">the respect of your mercenaries.</span>`);
+					repX(500, "event");
+					cashX(1000, "event");
+				}
+				App.Events.addParagraph(frag, r);
+				return frag;
+			}
+
+			function ante() {
+				const frag = new DocumentFragment();
+				let r = [];
+				const genParam = {
+					minAge: 38, maxAge: 43, ageOverridesPedoMode: 1, race: "nonslave", disableDisability: 1
+				};
+				const slave = GenerateNewSlave((V.seeDicks !== 100) ? "XX" : "XY", genParam);
+				slave.origin = "$He put $himself up as collateral at a poker game, and lost.";
+				slave.career = "a soldier";
+				slave.indentureRestrictions = 2;
+				slave.indenture = 52;
+				slave.devotion = random(25, 40);
+				slave.trust = random(35, 45);
+				setHealth(slave, jsRandom(60, 80), 0, undefined, 0, 10);
+				slave.muscles = 50;
+				if (slave.weight > 130) {
+					slave.weight -= 100;
+					slave.waist = random(-10, 50);
+				}
+				slave.anus = 0;
+				slave.skill.anal = 0;
+				slave.skill.whoring = 0;
+				slave.skill.combat = 1;
+				slave.accent = random(0, 1);
+				slave.behavioralFlaw = "arrogant";
+				slave.hLength = 1;
+				slave.hStyle = "shaved into a mohawk";
+				slave.custom.tattoo = "$He has a number of tattoos from a variety of mercenary companies.";
+				slave.clothes = "a military uniform";
+				App.Events.drawEventArt(frag, slave);
+
+				const {
+					He,
+					he, his
+				} = getPronouns(slave);
+
+				r.push(`Some aggressive play and an eye for riling up your fellow players has resulted in an immense payout, and all but one of your adversaries have folded as the situation has escalated. The only player still in contention is a wily old mercenary, the veteran of ${his} fair share of battles on the battlefield and at the poker table. ${He}'s short on chips, however, and ${he}'ll have to buy in with something else as collateral.`);
+				App.Events.addParagraph(frag, r);
+
+				const choices = [];
+				choices.push(new App.Events.Result(`A year of servitude`, serve));
+				choices.push(new App.Events.Result(`Dock ${his} wages`, wages));
+				App.Events.addResponses(frag, choices);
+				return frag;
+
+				function serve() {
+					const frag = new DocumentFragment();
+					let r = [];
+					if (random(1, 100) > 50) {
+						r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up ${his} spoils, the other mercenaries clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've <span class="reputation inc">made some friends.</span>`);
+						repX(5000, "event");
+						cashX(-5000, "event");
+					} else {
+						slave.clothes = "no clothing";
+						App.Art.refreshSlaveArt(slave, 3, "art-frame");
+						r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. A silence falls over the room as the result is declared, but after some time your opponent breaks the hush by joking that life as your slave is probably easier than fighting for ${V.arcologies[0].name}. After some awkward laughter the night continues, and at the end your former mercenary joins you on your trip back to the penthouse to submit to processing and to begin ${his} new life as your sexual servant. ${He}'s not young, but ${he}'s tough and not distrusting of you due to ${his} service in the ${V.mercenariesTitle}.`);
+						r.push(App.UI.newSlaveIntro(slave));
+					}
+					App.Events.addParagraph(frag, r);
+					return frag;
+				}
+
+				function wages() {
+					const frag = new DocumentFragment();
+					let r = [];
+					if (random(1, 100) > 50) {
+						r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up ${his} spoils, the other mercenaries clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've <span class="reputation inc">made some friends.</span>`);
+						repX(5000, "event");
+						cashX(-5000, "event");
+					} else {
+						r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. Your opponent accepts ${his} defeat with grace and jokes to ${his} comrades that ${he}'ll be fighting in ${his} underwear for the next few months, and their uproar of laughter fills the room. Though you take the lion's share of the ¤, your mercenaries also <span class="reputation inc">had a good time fraternizing with you.</span>`);
+						repX(1000, "event");
+						cashX(5000, "event");
+					}
+					App.Events.addParagraph(frag, r);
+					return frag;
+				}
+			}
+		}
+	}
+};
+
+
+
+		//<<link "Attend the trick shot night">>
+				//<<replace "#result">>
+					r.push();
+					//<br><br>
+					//<span id="bounty-result">
+
+					//<<link "Play it safe">>
+						//<<replace "#bounty-result">>
+							if (random(1,100) > _shootChance) {
+								r.push(`Despite your attempts to mitigate risk and play the safest shots possible, it seems lady luck has conspired against you this evening. However, even when your last bullet is shot, your security force pitch you a few bullets to keep you in the game for the rest of the night. You may have lost most of your ¤, but it seems you've <span class="green">made some friends.</span>`);
+								repX(5000, "event");
+								cashX(-25000, "event");
+							} else {
+								r.push(`While a careful eye for accuracy has buoyed you through the evening, ultimately lady luck is the decider in handing you the win in a number of close shots. Unfortunately your meticulous play limited your chance at a larger payout, and you only come away from the evening with <span class="yellowgreen">`);
+		V.cashFormat(100000)
+			r.push(`</span> more than you arrived with and <span class="green">the respect of your security force.</span>`);
+								repX(5000, "event");
+								cashX(100000, "event");
+							}
+						//<</replace>>
+					//<</link>>
+
+					if (random(1,100) < _shootChance) {
+						//<br> 
+		//<<link "Up the ante">>
+							//<<replace "#bounty-result">>
+								_genParam = {minAge: 25, maxAge: 35, ageOverridesPedoMode: 1, race: "nonslave", disableDisability: 1};
+								if (V.seeDicks !== 100) {
+									_soldier = GenerateNewSlave("XX", _genParam);
+								} else {
+									_soldier = GenerateNewSlave("XY", _genParam);
+								}
+								_soldier.origin = "${He} put ${himself} up as collateral at a trick shot game, and lost.";
+								_soldier.career = "a soldier";
+								_soldier.indentureRestrictions = 2;
+								_soldier.indenture = 52;
+								_soldier.devotion = random(45,60);
+								_soldier.trust = random(55,65);
+								setHealth(_soldier, jsRandom(60, 80), 0, undefined, 0, jsRandom(10, 30));
+								_soldier.muscles = 60;
+								if (_soldier.weight > 130) {
+									_soldier.weight -= 100;
+									_soldier.waist = random(-10,50);
+								}
+								_soldier.anus = 0;
+								_soldier.skill.anal = 0;
+								_soldier.skill.whoring = 0;
+								_soldier.skill.combat = 1;
+								_soldier.accent = random(0,1);
+								_soldier.behavioralFlaw = "arrogant";
+								_soldier.hLength = 1;
+								_soldier.hStyle = "buzzcut";
+								_soldier.clothes = "a military uniform";
+								App.Utils.setLocalPronouns(_soldier);
+								//<span id="art-frame">
+								/* 000-250-006 */
+								if (V.seeImages === 1) {
+									if (V.imageChoice === 1) {
+										//<div class="imageRef medImg">
+		//<<SlaveArt _soldier 2 0>></div>
+									} else {
+										//<div class="imageRef medImg">
+		//<<SlaveArt _soldier 2 0>></div>
+									}
+								}
+								/* 000-250-006 */
+								//</span>
+								r.push(`Some aggressive play and an eye for riling up your fellow players has resulted in an immense payout, and all but one of your adversaries have folded as the situation has escalated. The only player still in contention is a wily old mercenary, the veteran of ${his} fair share of battles on the battlefield and at the firing range. ${He}'s short on bullets, however, and ${he}'ll have to buy in with something else as collateral.`);
+								//<br><br>
+								//<span id="alive-result">
+
+									//<<link "A year of servitude">>
+										_soldier.clothes = "no clothing";
+										//<<replace "#alive-result">>
+											if (random(1,100) > _shootChance) {
+												r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up ${his} spoils, the other security force clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've <span class="green">made some friends.</span>`);
+												repX(5000, "event");
+												cashX(-buyIn, "event");
+											} else {
+												//<<replace "#art-frame">>
+													//<span id="art-frame">
+													/* 000-250-006 */
+													if (V.seeImages === 1) {
+														if (V.imageChoice === 1) {
+															//<div class="imageRef medImg">
+		//<<SlaveArt _soldier 2 0>></div>
+														} else {
+															//<div class="imageRef medImg">
+		//<<SlaveArt _soldier 2 0>></div>
+														}
+													}
+													/* 000-250-006 */
+													//</span>
+												//<</replace>>
+												r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. A silence falls over the room as the result is declared, but after some time your opponent breaks the hush by joking that life as your slave is probably easier than fighting for ${V.arcologies[0].name}. After some awkward laughter the night continues, and at the end your former mercenary joins you on your trip back to the penthouse to submit to processing and to begin ${his} new life as your sexual servant. ${He}'s not young, but ${he}'s tough and not distrusting of you due to ${his} service in V.SF.Lower.`);
+												//<br>
+												//<<includeDOM App.UI.newSlaveIntro(_soldier)>>
+											}
+											r.push(`${V.IncreasePCSkills(}'warfare', 1)`);
+										//<</replace>>
+									//<</link>>
+
+									//<br> 
+		//<<link "Dock ${his} wages">>
+										//<<replace "#alive-result">>
+											if (random(1,100) > _shootChance) {
+												r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up ${his} spoils, the other security force members clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've <span class="green">made some friends.</span>`);
+												repX(5000, "event");
+												cashX(-buyIn, "event");
+											} else {
+												r.push(`For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. Your opponent accepts ${his} defeat with grace and jokes to ${his} comrades that ${he}'ll be fighting in ${his} underwear for the next few months, and their uproar of laughter fills the room. Though you take the lion's share of the ¤, your security force also <span class="green">had a good time fraternizing with you.</span>`);
+												repX(10000, "event");
+												cashX(buyIn, "event");
+											}
+											r.push(`${V.IncreasePCSkills(}'warfare', 1)`);
+										//<</replace>>
+									//<</link>>
+
+								//</span>
+							//<</replace>>
+						//<</link>>
+					}
+
+					//</span>
+				//<</replace>>
+			//<</link>>
+			r.push(`// It will cost`);
+		V.cashFormat(buyIn)
+			r.push(`to participate in the trick shot night.//`);
+		}
+		//</span>
diff --git a/src/Mods/SpecialForce/TrickShotNight.tw b/src/Mods/SpecialForce/TrickShotNight.tw
deleted file mode 100644
index 31d4786bf7ad65ed8b65cbdd08e1d808794a2f09..0000000000000000000000000000000000000000
--- a/src/Mods/SpecialForce/TrickShotNight.tw
+++ /dev/null
@@ -1,166 +0,0 @@
-:: Trick Shot Night [nobr]
-
-<<set $nextButton = "Continue", $nextLink = "RIE Eligibility Check", $returnTo = "RIE Eligibility Check">>
-
-<<setAssistantPronouns>>
-
-<<if $PC.skill.warfare == -100>>
-	<<set _shootChance = 5>>
-<<elseif $PC.skill.warfare <= -75>>
-	<<set _shootChance = 10>>
-<<elseif $PC.skill.warfare <= -50>>
-	<<set _shootChance = 15>>
-<<elseif $PC.skill.warfare <= -25>>
-	<<set _shootChance = 20>>
-<<elseif $PC.skill.warfare == 0>>
-	<<set _shootChance = 25>>
-<<elseif $PC.skill.warfare <= 25>>
-	<<set _shootChance = 45>>
-<<elseif $PC.skill.warfare <= 50>>
-	<<set _shootChance = 60>>
-<<elseif $PC.skill.warfare <= 75>>
-	<<set _shootChance = 85>>
-<<elseif $PC.skill.warfare >= 100>>
-	<<set _shootChance = 90>>
-<</if>>
-
-Despite your direct elevator, interaction with the majority of your security force is relatively scarce. Aside from mutually exchanged nods in the firebase and the occasional briefing, your $SF.Lower enjoy a degree of autonomy.
-
-<br><br>On a particularly lackadaisical evening, you find yourself alerted to a message alert by $assistant.name.
-<<if $assistant.personality > 0>>
-	"<<= properMaster()>>, a message from $SF.Lower." _HeA pauses before continuing. "It seems they're asking if you'd like to join their trick shot night."
-<<else>>
-	It informs you that $SF.Lower have sent a message asking you to join them at their trick shot night.
-<</if>>
-
-<br><br>
-<span id="result"> <<link "Politely decline">>
-	<<replace "#result">>
-		You inform $SF.Lower that you aren't planning to attend. A short while later, you receive a message from them stating that their invitation is an open one and that you're welcome to join in another night.
-	<</replace>>
-<</link>>
-
-<<if $cash < 50000>>
-	<br>//You lack the necessary funds to attend.//
-<<else>> /* cash >= 50000 */
-
-	<br><<link "Attend the trick shot night">>
-		<<replace "#result">>
-			You instruct $assistant.name to inform $SF.Lower that you will be attending their trick shot night, and after settling your affairs in the penthouse you head down to the firebase. The atmosphere in the firebase is casual, especially in comparison to the usual situations you meet them, though your security force still maintain some measure of decorum towards you as their employer. Eventually, you settle in at the table with a handful of $SF.Lower officers and turn your @@.yellowgreen;<<print cashFormat(50000)>>@@ into bullets. All that remains is to decide your strategy for the night.
-			<br><br>
-			<span id="bounty-result">
-
-			<<link "Play it safe">>
-				<<replace "#bounty-result">>
-					<<if random(1,100) > _shootChance>>
-						Despite your attempts to mitigate risk and play the safest shots possible, it seems lady luck has conspired against you this evening. However, even when your last bullet is shot, your security force pitch you a few bullets to keep you in the game for the rest of the night. You may have lost most of your ¤, but it seems you've @@.green;made some friends.@@
-						<<run repX(5000, "event")>>
-						<<run cashX(-25000, "event")>>
-					<<else>>
-						While a careful eye for accuracy has buoyed you through the evening, ultimately lady luck is the decider in handing you the win in a number of close shots. Unfortunately your meticulous play limited your chance at a larger payout, and you only come away from the evening with @@.yellowgreen;<<print cashFormat(100000)>>@@ more than you arrived with and @@.green;the respect of your security force.@@
-						<<run repX(5000, "event")>>
-						<<run cashX(100000, "event")>>
-					<</if>>
-				<</replace>>
-			<</link>>
-
-			<<if random(1,100) < _shootChance>>
-				<br> <<link "Up the ante">>
-					<<replace "#bounty-result">>
-						<<set _genParam = {minAge: 25, maxAge: 35, ageOverridesPedoMode: 1, race: "nonslave", disableDisability: 1}>>
-						<<if $seeDicks != 100>>
-							<<set _soldier = GenerateNewSlave("XX", _genParam)>>
-						<<else>>
-							<<set _soldier = GenerateNewSlave("XY", _genParam)>>
-						<</if>>
-						<<set _soldier.origin = "$He put $himself up as collateral at a trick shot game, and lost.">>
-						<<set _soldier.career = "a soldier">>
-						<<set _soldier.indentureRestrictions = 2>>
-						<<set _soldier.indenture = 52>>
-						<<set _soldier.devotion = random(45,60)>>
-						<<set _soldier.trust = random(55,65)>>
-						<<run setHealth(_soldier, jsRandom(60, 80), 0, undefined, 0, jsRandom(10, 30))>>
-						<<set _soldier.muscles = 60>>
-						<<if _soldier.weight > 130>>
-							<<set _soldier.weight -= 100>>
-							<<set _soldier.waist = random(-10,50)>>
-						<</if>>
-						<<set _soldier.anus = 0>>
-						<<set _soldier.skill.anal = 0>>
-						<<set _soldier.skill.whoring = 0>>
-						<<set _soldier.skill.combat = 1>>
-						<<set _soldier.accent = random(0,1)>>
-						<<set _soldier.behavioralFlaw = "arrogant">>
-						<<set _soldier.hLength = 1>>
-						<<set _soldier.hStyle = "buzzcut">>
-						<<set _soldier.clothes = "a military uniform">>
-						<<run App.Utils.setLocalPronouns(_soldier)>>
-						<span id="art-frame">
-						/* 000-250-006 */
-						<<if $seeImages == 1>>
-							<<if $imageChoice == 1>>
-								<div class="imageRef medImg"><<SlaveArt _soldier 2 0>></div>
-							<<else>>
-								<div class="imageRef medImg"><<SlaveArt _soldier 2 0>></div>
-							<</if>>
-						<</if>>
-						/* 000-250-006 */
-						</span>
-						Some aggressive play and an eye for riling up your fellow players has resulted in an immense payout, and all but one of your adversaries have folded as the situation has escalated. The only player still in contention is a wily old mercenary, the veteran of $his fair share of battles on the battlefield and at the firing range. $He's short on bullets, however, and $he'll have to buy in with something else as collateral.
-						<br><br>
-						<span id="alive-result">
-
-							<<link "A year of servitude">>
-								<<set _soldier.clothes = "no clothing">>
-								<<replace "#alive-result">>
-									<<if random(1,100) > _shootChance>>
-										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other security force clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@
-										<<run repX(5000, "event")>>
-										<<run cashX(-50000, "event")>>
-									<<else>>
-										<<replace "#art-frame">>
-											<span id="art-frame">
-											/* 000-250-006 */
-											<<if $seeImages == 1>>
-												<<if $imageChoice == 1>>
-													<div class="imageRef medImg"><<SlaveArt _soldier 2 0>></div>
-												<<else>>
-													<div class="imageRef medImg"><<SlaveArt _soldier 2 0>></div>
-												<</if>>
-											<</if>>
-											/* 000-250-006 */
-											</span>
-										<</replace>>
-										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. A silence falls over the room as the result is declared, but after some time your opponent breaks the hush by joking that life as your slave is probably easier than fighting for $arcologies[0].name. After some awkward laughter the night continues, and at the end your former mercenary joins you on your trip back to the penthouse to submit to processing and to begin $his new life as your sexual servant. $He's not young, but $he's tough and not distrusting of you due to $his service in $SF.Lower.
-										<br>
-										<<includeDOM App.UI.newSlaveIntro(_soldier)>>
-									<</if>>
-									<<= IncreasePCSkills('warfare', 1)>>
-								<</replace>>
-							<</link>>
-
-							<br> <<link "Dock $his wages">>
-								<<replace "#alive-result">>
-									<<if random(1,100) > _shootChance>>
-										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck was not on your side. As the victor sweeps up $his spoils, the other security force members clap you on the back and offer their condolences for your defeat. Though you may have lost your ¤, it seems you've @@.green;made some friends.@@
-										<<run repX(5000, "event")>>
-										<<run cashX(-50000, "event")>>
-									<<else>>
-										For all your skillful maneuvering to reach this position, ultimately the win comes down to chance. This time, however, luck has rendered you the victor. Your opponent accepts $his defeat with grace and jokes to $his comrades that $he'll be fighting in $his underwear for the next few months, and their uproar of laughter fills the room. Though you take the lion's share of the ¤, your security force also @@.green;had a good time fraternizing with you.@@
-										<<run repX(10000, "event")>>
-										<<run cashX(50000, "event")>>
-									<</if>>
-									<<= IncreasePCSkills('warfare', 1)>>
-								<</replace>>
-							<</link>>
-
-						</span>
-					<</replace>>
-				<</link>>
-			<</if>>
-
-			</span>
-		<</replace>>
-	<</link>> // It will cost <<print cashFormat(50000)>> to participate in the trick shot night.//
-<</if>>
-</span>
diff --git a/src/events/RE/rePokerNight.js b/src/events/RE/rePokerNight.js
index 84a317f757667b083a10c4a4337fd6348c86b534..fe4409fb1fce8a9402c6c7a8746318d476946793 100644
--- a/src/events/RE/rePokerNight.js
+++ b/src/events/RE/rePokerNight.js
@@ -6,10 +6,6 @@ App.Events.REPokerNight = class REPokerNight extends App.Events.BaseEvent {
 		];
 	}
 
-	get weight() {
-		return either(0, 1); // Originally rolled opposed to "RE Poker Night"
-	}
-
 	execute(node) {
 		V.nextButton = "Continue";
 		V.nextLink = "RIE Eligibility Check";
@@ -35,7 +31,7 @@ App.Events.REPokerNight = class REPokerNight extends App.Events.BaseEvent {
 
 		const choices = [];
 		choices.push(new App.Events.Result(`Politely decline`, decline));
-		if (V.cash < 5000) {
+		if (V.cash < buyIn) {
 			choices.push(new App.Events.Result(null, null, "You lack the necessary funds to attend a high stakes poker game."));
 		} else {
 			choices.push(new App.Events.Result(`Attend the poker night`, attend, `It will cost ${cashFormat(buyIn)} to participate in the poker night.`));
diff --git a/src/events/randomEvent.js b/src/events/randomEvent.js
index 72003fb1f58595872c3606ee9d3dcf65966f5d24..05a010ba18f602ec9bc8b0d756f984319f2a2ec3 100644
--- a/src/events/randomEvent.js
+++ b/src/events/randomEvent.js
@@ -161,6 +161,7 @@ App.Events.getNonindividualEvents = function() {
 		new App.Events.REMilfTourist(),
 		new App.Events.REAWOL(),
 		new App.Events.REPokerNight(),
+		new App.Events.TrickShotNight(),
 		new App.Events.REShippingContainer(),
 		new App.Events.REFemaleArcologyOwner(),
 		new App.Events.REBrothelFunction(),
diff --git a/src/uncategorized/randomNonindividualEvent.tw b/src/uncategorized/randomNonindividualEvent.tw
index fb3c26d0e7313277708f51b39316cc02e27e0ed4..1826f92891ac981c25a5be36980468fe1139339e 100644
--- a/src/uncategorized/randomNonindividualEvent.tw
+++ b/src/uncategorized/randomNonindividualEvent.tw
@@ -198,10 +198,6 @@
 		<<set $RecETSevent.push("addict mother daughter")>>
 	<</if>>
 
-	<<if $SF.Toggle && $SF.Active >= 1>>
-		<<set $events.push("Trick Shot Night")>>
-	<</if>>
-
 	/* FUTURE SOCIETY EVENTS */
 
 	<<if $arcologies[0].FSBodyPurist > (random(25,100) || _oneIfDebug+24)>>