From b3a591bf2b9ddac839fe3b5106b4a505584871c2 Mon Sep 17 00:00:00 2001
From: lowercase-donkey <lowercasedonkey@gmail.com>
Date: Mon, 14 Jan 2019 17:28:38 -0500
Subject: [PATCH] The rest of the changes

---
 src/Mods/DinnerParty/dinnerPartyExecution.tw |  2 +-
 src/SecExp/attackReport.tw                   |  6 +--
 src/SecExp/securityReport.tw                 |  6 +--
 src/SpecialForce/Report.tw                   |  6 ++-
 src/SpecialForce/TrickShotNight.tw           | 12 +++--
 src/SpecialForce/WeeklyChoices.tw            | 16 +++++--
 src/endWeek/saRest.tw                        |  2 +-
 src/facilities/farmyard/farmyardReport.tw    | 49 +++++++++++++-------
 src/facilities/nursery/nurseryReport.tw      |  2 +-
 src/js/assayJS.tw                            | 10 ++--
 src/npc/acquisition.tw                       |  2 +-
 src/pregmod/birthStorm.tw                    |  2 +-
 src/pregmod/csec.tw                          |  2 +-
 src/pregmod/huskSlave.tw                     |  2 +-
 src/pregmod/pAssociatesPublicSlut.tw         |  2 +-
 src/pregmod/saPorn.tw                        |  2 +-
 src/pregmod/sePlayerBirth.tw                 |  2 +-
 src/pregmod/widgets/pregmodBirthWidgets.tw   |  2 +-
 src/pregmod/widgets/seBirthWidgets.tw        |  4 +-
 src/uncategorized/RECI.tw                    |  4 +-
 src/uncategorized/RESS.tw                    | 26 ++++++-----
 src/uncategorized/RETS.tw                    |  2 +-
 src/uncategorized/buildingWidgets.tw         |  2 +-
 src/uncategorized/completeCatalog.tw         |  6 ++-
 src/uncategorized/corporateMarket.tw         |  2 +-
 src/uncategorized/genericPlotEvents.tw       | 14 +++---
 src/uncategorized/jeSlaveDispute.tw          | 12 ++---
 src/uncategorized/minorInjuryResponse.tw     | 16 +++----
 src/uncategorized/neighborInteract.tw        |  4 +-
 src/uncategorized/neighborsDevelopment.tw    |  4 +-
 src/uncategorized/options.tw                 |  2 +-
 src/uncategorized/pCoupAftermath.tw          |  4 +-
 src/uncategorized/pCoupAttempt.tw            |  2 +-
 src/uncategorized/pInvasion.tw               |  2 +-
 src/uncategorized/pMercenaryRomeo.tw         |  2 +-
 src/uncategorized/pRaidResult.tw             |  2 +-
 src/uncategorized/pRivalryVictory.tw         |  2 +-
 src/uncategorized/peHeadgirlConcubine.tw     |  2 +-
 src/uncategorized/pePitFight.tw              |  4 +-
 src/uncategorized/persBusiness.tw            | 36 +++++++-------
 src/uncategorized/reBoomerang.tw             |  2 +-
 src/uncategorized/reBrothelFunction.tw       |  7 +--
 src/uncategorized/reDevotees.tw              |  6 ++-
 src/uncategorized/reFSAcquisition.tw         |  2 +-
 src/uncategorized/reFormerAbolitionist.tw    |  2 +-
 src/uncategorized/reLegendaryWhore.tw        |  2 +-
 src/uncategorized/reMalefactor.tw            |  4 +-
 src/uncategorized/rePokerNight.tw            |  6 ++-
 src/uncategorized/reRecruit.tw               |  4 +-
 src/uncategorized/reShippingContainer.tw     |  6 +--
 src/uncategorized/reputation.tw              |  2 +-
 src/uncategorized/resFailure.tw              | 16 +++----
 src/uncategorized/scheduledEvent.tw          |  3 +-
 src/uncategorized/schoolroomReport.tw        |  2 +-
 src/uncategorized/seLethalPit.tw             | 42 ++++++++---------
 src/uncategorized/seNonlethalPit.tw          | 40 ++++++++--------
 src/uncategorized/seRecruiterSuccess.tw      |  4 +-
 src/utility/birthWidgets.tw                  |  2 +-
 58 files changed, 238 insertions(+), 195 deletions(-)

diff --git a/src/Mods/DinnerParty/dinnerPartyExecution.tw b/src/Mods/DinnerParty/dinnerPartyExecution.tw
index 82258a88f01..e6ec94c51ad 100644
--- a/src/Mods/DinnerParty/dinnerPartyExecution.tw
+++ b/src/Mods/DinnerParty/dinnerPartyExecution.tw
@@ -6,7 +6,7 @@
 	<<set $nextButton = "Back to Main", $nextLink = "Main", $returnTo = "Main", $showEncyclopedia = 1, $encyclopedia = "Personal Assistant">>
 
 	<<set _generateEnemies to 0>>
-	<<set $cash -= 1000>>
+	<<run cashX(-1000, "event")>>
 	<<set _dinnerRating = 0>>
 
 	/* 000-250-006 */
diff --git a/src/SecExp/attackReport.tw b/src/SecExp/attackReport.tw
index 3049493a906..d1d8716a48c 100644
--- a/src/SecExp/attackReport.tw
+++ b/src/SecExp/attackReport.tw
@@ -433,7 +433,7 @@
 		<<set _captives = Math.trunc(_captives * 0.6)>>
 		<<set _loot = Math.trunc(_loot * 0.6)>>
 	<</if>>
-	<<set $cash += _loot>>
+	<<run cashX(_loot, "war")>>
 	<br>
 	Damage to the infrastructure was @@.yellow;virtually non-existent,@@ costing only pocket cash to bring the structure back to normal. The inhabitants as well reported little to no injuries, because of this the prosperity of the arcology did not suffer.
 	<<set $cash -= 1000 * _majorBattleMod, $PC.engineering += .1>>
@@ -540,7 +540,7 @@
 		Part of the loot is distributed to your mercenaries.
 		<<set _loot = Math.trunc(_loot * 0.6)>>
 	<</if>>
-	<<set $cash += _loot>>
+	<<run cashX(_loot, "war")>>
 	<br>
 	Damage to the city was @@.red;limited,@@ it won't take much to rebuild. Very few citizens or slaves were involved in the fight and even fewer met their end, safeguarding the prosperity of the arcology.
 	<<set $cash -= 2000 * _majorBattleMod, $PC.engineering += .1>>
@@ -1561,7 +1561,7 @@
 	<br>
 	<span id="captOptions">
 	<<link "sell them all immediately">>
-		<<set $cash += _menialPrice * _captives>>
+		<<run cashX((_menialPrice * _captives), "menialTradesTransfer")>>
 		<<replace "#captOptions">>Captives sold<</replace>>
 	<</link>>
 	|
diff --git a/src/SecExp/securityReport.tw b/src/SecExp/securityReport.tw
index 0c1f5154dcc..7b4c7e2c639 100644
--- a/src/SecExp/securityReport.tw
+++ b/src/SecExp/securityReport.tw
@@ -332,7 +332,7 @@
 		<<if $militaryExemption == 1>>
 			Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum@@.
 			<<set _recruits -= random(1,2)>>
-			<<set $cash += 250>>
+			<<run cashX(250, "securityExpansion")>>
 		<</if>>
 		<<if $lowerRquirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
@@ -359,7 +359,7 @@
 		<<if $militaryExemption == 1>>
 			Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum@@.
 			<<set _recruits -= random(1,2)>>
-			<<set $cash += 250>>
+			<<run cashX(250, "securityExpansion")>>
 		<</if>>
 		<<if $lowerRquirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
@@ -386,7 +386,7 @@
 		<<if $militaryExemption == 1>>
 			Some citizens prefer to contribute to the arcology's defense through financial support rather than military service, making you @@.yellowgreen;a small sum@@.
 			<<set _recruits -= random(1,2)>>
-			<<set $cash += 250>>
+			<<run cashX(250, "securityExpansion")>>
 		<</if>>
 		<<if $lowerRquirements == 1>>
 			Your lax physical requirements to enter the militia allows for a greater number of citizens to join.
diff --git a/src/SpecialForce/Report.tw b/src/SpecialForce/Report.tw
index 09269e573cb..c19f2835d46 100644
--- a/src/SpecialForce/Report.tw
+++ b/src/SpecialForce/Report.tw
@@ -122,7 +122,8 @@
 	<<if $arcologies[0].prosperity > $AProsperityCap>>
 		<<set $arcologies[0].prosperity = $AProsperityCap>> <</if>>
 	<<if _SFIncome >= _target>>
-		<<set _Profitable = 1,$SF.Subsidy = 0,$cash += _SFIncome>>
+		<<set _Profitable = 1,$SF.Subsidy = 0>>
+		<<run cashX(_SFIncome, "specialForces")>>
 	<<else>> <<set _Profitable = 0>> <</if>>
 
 	<<if $SF.Squad.Drugs >= 8 || $SF.Squad.Drugs >= 10>> <<set _Deaths = 0,_SurvivalChance = 50>>
@@ -193,7 +194,8 @@ $SF.Caps managed to recruit <<print Math.round(_FNGs/2)>> new soldiers this week
 	During a break, The Colonel managed to sell some generic schematics to the _TradeShowAttendes attendees, some decided to also give her some menial slaves as a bonus.<br>
 	<<set $menials += _MenialSlaves>>
 	<<set $SF.MercCon.Menials += _MenialSlaves,$SF.MercCon.TotalMenials += _MenialSlaves>>
-	<<set $cash += _TSProfit,$SF.MercCon.Income += _TSProfit>>
+	<<set $SF.MercCon.Income += _TSProfit>>
+	<<run cashX(_TSProfit, "specialForces")>>
 	<<set $SF.MercCon.Revenue += _TSProfit>>
 	<<if $secExp > 0 && $mercenaries > 0>> <<set $SF.MercCon.Mercs = 0>>
 		<<set _NewMercs = random(1,(_TradeShowAttendes/10))>>
diff --git a/src/SpecialForce/TrickShotNight.tw b/src/SpecialForce/TrickShotNight.tw
index d790ed02121..44f85264a25 100644
--- a/src/SpecialForce/TrickShotNight.tw
+++ b/src/SpecialForce/TrickShotNight.tw
@@ -30,10 +30,12 @@ Despite your direct elevator, interaction with the majority of your security for
 		<<replace "#bountyresult">>
 			<<if random(1,100) > 50>>
 				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.@@
-				<<set $rep += 1000, $cash -= 250000>>
+				<<set $rep += 1000>>
+				<<run cashX(-250000, "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.@@
-				<<set $rep += 1000, $cash += 100000>>
+				<<set $rep += 1000>>
+				<<run cashX(100000, "event")>>
 			<</if>>
 		<</replace>>
 	<</link>>
@@ -92,10 +94,12 @@ Despite your direct elevator, interaction with the majority of your security for
 					<<replace "#aliveresult">>
 						<<if random(1,100) > 50>>
 							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.@@
-							<<set $rep += 1000, $cash -= 500000>>
+							<<set $rep += 1000>>
+							<<run cashX(-500000, "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.@@
-							<<set $rep += 2000, $cash += 500000>>
+							<<set $rep += 2000>>
+							<<run cashX(500000, "event")>>
 						<</if>>
 					<</replace>>
 				<</link>>
diff --git a/src/SpecialForce/WeeklyChoices.tw b/src/SpecialForce/WeeklyChoices.tw
index fa36c3c6181..0ae30248eb5 100644
--- a/src/SpecialForce/WeeklyChoices.tw
+++ b/src/SpecialForce/WeeklyChoices.tw
@@ -5,7 +5,8 @@
 	<br>We've had some good prizes turn up, that's made us some extra money we could turn over. | <<link "Request cash""Firebase">>
 	/*<<set $CashGift = ((Math.ceil((Math.abs($cash)*0.05)*(Math.max(0.99,$SF.Size))))*($arcologies[0].prosperity/100))*_Env>> OLD*/
 	<<set $CashGift = Math.ceil(25000*($SF.Size/10)*_Env),$SF.Gift = 1,$choice = 1>>
-	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000),$cash += $CashGift>>
+	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000)>>
+	<<run cashX($CashGift, "specialForces")>>
 	<</link>>
 	<<if $rep < 20000>>
 		<br>If you want we could throw a quick military parade, get the people feeling extra patriotic. | <<link "Request military parade""Firebase">>
@@ -25,7 +26,9 @@
 	<br>He looks down a list on his tablet. "<<= properTitle()>>, how can $SF.Lower help you this week?
 	<br>$SF.Caps can spare some profits from our recent operations. | <<link "Request cash""Firebase">>
 	<<set $CashGift = 25000*($SF.Size/10)*_Env,$SF.Gift = 1,$choice = 1>>
-	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000),$cash += Math.ceil($CashGift * 0.8)>>
+	<<set $CashGift = ($CashGift > 5000 ? $CashGift : 5000)>>
+	<<run cashX(Math.ceil($CashGift * 0.8), "specialForces")>>
+
 	<</link>>
 	<<if $rep < 20000>>
 		<br>We can set some units aside for a ceremonial march through the arcology. | <<link "Request a parade""Firebase">>
@@ -51,10 +54,12 @@
 			<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.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.
-				<<set $rep += 10, $cash += _EnvCash2>>
+				<<set $rep += 10>>
+				<<run cashX(_EnvCash2, "specialForces")>>
 			<<elseif $PC.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.
-				<<set $rep += 5, $cash += _EnvCash3>>
+				<<set $rep += 5>>
+				<<run cashX(_EnvCash3, "specialForces")>>
 			<<elseif $PC.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.
 			<<elseif $PC.warfare >= 30>>
@@ -90,7 +95,8 @@
 			<<if random(1,100) > 50>>Along the route you see a homeless citizen with a serious injury begging for help.
 				<<if $PC.medicine >= 100 && $PC.career == "medicine">>
 					Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. They are so grateful that they are more than happy to try and compensate your time. Word quickly spreads of the kindly medically trained arcology owner who took the time to heal a citizen, providing confidence to the rest of the citizens.
-					<<set $rep += 10, $cash += _EnvCash4>>
+					<<set $rep += 10>>
+					<<run cashX(_EnvCash4, "specialForces")>>
 				<<elseif $PC.medicine >= 100>>
 					Your expertise in surgery ensures that the citizen receives the best care they'll ever experience in their life. Word quickly spreads of the kindly arcology owner who took the time to heal a citizen.
 					<<set $rep += 5>>
diff --git a/src/endWeek/saRest.tw b/src/endWeek/saRest.tw
index 747068ea1f9..7d989c88391 100644
--- a/src/endWeek/saRest.tw
+++ b/src/endWeek/saRest.tw
@@ -64,7 +64,7 @@ window.saRest = function saRest(slave) {
 			} else {
 				t += `an incident without lasting effect.`;
 			}
-			V.cash += Math.trunc(V.FResult*_vignette.effect);
+			cashX(Math.trunc(V.FResult*_vignette.effect), "rest", slave);
 		} else if (_vignette.type == "devotion") {
 			if (_vignette.effect > 0) {
 				if (slave.devotion > 50) {
diff --git a/src/facilities/farmyard/farmyardReport.tw b/src/facilities/farmyard/farmyardReport.tw
index b8ed59817a9..7eec38c7092 100644
--- a/src/facilities/farmyard/farmyardReport.tw
+++ b/src/facilities/farmyard/farmyardReport.tw
@@ -11,6 +11,7 @@
 
 <<SlaveSort $DairyiIDs>>
 <<set _DL = $DairyiIDs.length, $dairySlaves = _DL, _SL = $slaves.length, $bioreactorPerfectedID = 0, $legendaryBallsID = 0, $legendaryCowID = 0, $milkmaidDevotionBonus = 1, $milkmaidHealthBonus = 0, $milkmaidTrustBonus = 1, $milkmaidDevotionThreshold = 45, $milkmaidTrustThreshold = 35, _anusesStretched = 0, _birthers = 0, _births = 0, _cumWeek = 0, _femCumWeek = 0, _FLsFetish = 0, _milkWeek = 0, _balltacular = 0, _boobtacular = 0, _careerForgotten = 0, _chemMinor = 0, _chemSevere = 0, _desterilized = 0, _hatefilled = 0, _horrified = 0, $intelligenceLost = 0, _mindbroken = 0, _profits = 0, _skillsLost = 0, _stupidified = 0, _vaginasStretched = 0>>
+<<set _surgeryCost forceNeg($surgeryCost)>>
 
 <!-- Statistics gathering -->
 <<set $facility = $facility || {}, $facility.dairy = initFacilityStatistics($facility.dairy)>>
@@ -405,14 +406,17 @@
 		<<set $slaves[$i].boobs += _growth>>
 	<</if>>
 	<<if $slaves[$i].prostate == 1>>
-		<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+		<<set $slaves[$i].prostate = 2, $slaves[$i].health -= 10>>
+		<<run cashX(_surgeryCost, "slaveSurgery", $slaves[$i])>>
 	<</if>>
 	<<if $slaves[$i].vasectomy == 1>>
-		<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+		<<set $slaves[$i].vasectomy = 0, $slaves[$i].health -= 10>>
+		<<run cashX(_surgeryCost, "slaveSurgery", $slaves[$i])>>
 	<</if>>
 	<<if ($dairySlimMaintain == 0)>>
 		<<if ($slaves[$i].lactation < 2) && ($slaves[$i].boobs > 300 || $slaves[$i].dick == 0 || $slaves[$i].lactation == 1 || $dairyImplantsSetting == 1) && $dairyImplantsSetting != 2>>
-			<<set $slaves[$i].lactation = 2, $slaves[$i].health -= 10, $cash -= $surgeryCost>>
+			<<set $slaves[$i].lactation = 2, $slaves[$i].health -= 10>>
+			<<run cashX(_surgeryCost, "slaveSurgery", $slaves[$i])>>
 		<</if>>
 	<</if>>
 	<<if ($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0)>>
@@ -791,11 +795,11 @@
 				<</if>>
 			<<elseif ($slaves[$i].pregKnown == 1)>>
 				<<if ($dairyPregSetting > 2)>>
-					<<set $cash += 100>>
+					<<run cashX(100, "Milked", $slaves[$i])>>
 				<<elseif ($dairyPregSetting > 1)>>
-					<<set $cash += 50>>
+					<<run cashX(50, "Milked", $slaves[$i])>>
 				<<else>>
-					<<set $cash += 25>>
+					<<run cashX(25, "Milked", $slaves[$i])>>
 				<</if>>
 				<<if ($dairyPregSetting > 1) && ($slaves[$i].vagina < 4)>>
 					<<set $slaves[$i].vagina++>>
@@ -824,36 +828,47 @@
 	<<set _tempCash = $cash>>
 	<<set _seed = (100*$bioreactorsXY) + (100*$bioreactorsHerm), _cumWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*random(40,50)>>
+		<<set _cashX = _seed*random(40,50)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*random(25,35)>>
+		<<set _cashX = _seed*random(25,35)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<<set _seed = (2*$bioreactorsXX) + (2*$bioreactorsHerm), _femCumWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*random(40,50)>>
+		<<set _cashX = _seed*random(40,50)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<set _cashX = _seed*(random(25,35)+Math.trunc($arcologies[0].FSPastoralist/10))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*random(25,35)>>
+		<<set _cashX = _seed*random(25,35)>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<<set _seed = (800*$bioreactorsXX) + (700*$bioreactorsBarren) + (600*$bioreactorsXY) + (600*$bioreactorsHerm), _milkWeek += _seed>>
 	<<if ($arcologies[0].FSPastoralistLaw == 1)>>
-		<<set $cash += _seed*(13+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<set _cashX = _seed*(13+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<elseif ($arcologies[0].FSPastoralist != "unset")>>
-		<<set $cash += _seed*(8+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<set _cashX = _seed*(8+Math.trunc($arcologies[0].FSPastoralist/30))>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<<else>>
-		<<set $cash += _seed*9>>
+		<<set _cashX = _seed*9>>
+		<<run cashX(_cashX, "menialBioreactors")>>
 	<</if>>
 	<br><br>_Tadd permanently converted biological "machine<<if _Tadd > 1>>s<</if>>" produce<<if _Tadd == 1>>s<</if>> @@.yellowgreen;<<print cashFormat($cash-_tempCash)>>@@ income.
 <</if>>
 
 <<if $inflatedSlavesMilk > 0>>
-	<<set $cash -= Math.trunc(((600*($inflatedSlavesMilk)+8)+random(50,200)))>>
+	<<set _cashX -= Math.trunc(((600*($inflatedSlavesMilk)+8)+random(50,200)))>>
+	<<run cashX(_cashX, "milked")>>
 <</if>>
 <<if $inflatedSlavesCum > 0>>
-	<<set $cash -= Math.trunc(((300*($inflatedSlavesCum+8))+random(25,100)))>>
+	<<set _cashX -= Math.trunc(((300*($inflatedSlavesCum+8))+random(25,100)))>>
+	<<run cashX(_cashX, "milked")>>
 <</if>>
 
 <<set _profits = $cash-_oldCash>>
diff --git a/src/facilities/nursery/nurseryReport.tw b/src/facilities/nursery/nurseryReport.tw
index c7c90d47992..0ceaa3bdc16 100644
--- a/src/facilities/nursery/nurseryReport.tw
+++ b/src/facilities/nursery/nurseryReport.tw
@@ -81,7 +81,7 @@
 	<</if>>
 	<<if (_NL < $nursery)>>
 		<<set _seed = random(1,10)+(($nursery-_NL)*(random(150,170)+(_idleBonus*10)))>>
-		<<set $cash += _seed>>
+		<<run cashX(_seed, "nursery", $Matron)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Since $he doesn't have enough children to occupy all $him time, the nursery takes in citizens' children on a contract basis and $he cares for them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@
 		<<if ($arcologies[0].FSRepopulationFocus > 0) && (_NL == 0)>>
 			Society @@.green;loves@@ the way you are raising more children for $arcologies[0].name.
diff --git a/src/js/assayJS.tw b/src/js/assayJS.tw
index ce69df0e179..bbf29cb494f 100644
--- a/src/js/assayJS.tw
+++ b/src/js/assayJS.tw
@@ -2069,13 +2069,13 @@ window.MenialPopCap = function MenialPopCap () {
 		let price = menialSlaveCost(-overMenialCap);
 		if (V.menials > 0) {
 			if (V.menials > overMenialCap) {
-				V.cash += overMenialCap * price;
+				cashX((overMenialCap * price), "menialTrades");
 				V.menialDemandFactor -= overMenialCap;
 				V.menials -= overMenialCap;
 				overMenialCap = 0;
 				r += "You don't have enough room for all your menials and are obliged to sell some.";
 			} else {
-				V.cash += V.menials * price;
+				cashX((V.menials * price), "menialTrades");
 				V.menialDemandFactor -= V.menials;
 				overMenialCap -= V.menials;
 				V.menials = 0;
@@ -2084,13 +2084,13 @@ window.MenialPopCap = function MenialPopCap () {
 		}
 		if (overMenialCap > 0 && V.fuckdolls > 0) {
 			if (V.fuckdolls > overMenialCap) {
-				V.cash += overMenialCap * (price * 2);
+				cashX(overMenialCap * (price * 2), "menialTrades");
 				V.menialDemandFactor -= overMenialCap;
 				V.fuckdolls -= overMenialCap;
 				overMenialCap = 0;
 				r += "You don't have enough room for all your Fuckdolls and are obliged to sell some.";
 			} else {
-				V.cash += V.fuckdolls * (price * 2);
+				cashX(V.fuckdolls * (price * 2), "menialTrades");
 				V.menialDemandFactor -= V.fuckdolls;
 				overMenialCap -= V.fuckdolls;
 				V.fuckdolls = 0;
@@ -2098,7 +2098,7 @@ window.MenialPopCap = function MenialPopCap () {
 			}
 		}
 		if (overMenialCap > 0 && V.menialBioreactors > 0) {
-			V.cash += overMenialCap * (price - 100);
+			cashX(overMenialCap * (price - 100), "menialTrades");
 			V.menialDemandFactor -= overMenialCap;
 			V.menialBioreactors -= overMenialCap;
 			r += "You don't have enough room for all your menial bioreactors and are obliged to sell some.";
diff --git a/src/npc/acquisition.tw b/src/npc/acquisition.tw
index 33fcb0d1e84..82b7b70ec74 100644
--- a/src/npc/acquisition.tw
+++ b/src/npc/acquisition.tw
@@ -661,7 +661,7 @@ The previous owner seems to have left in something of a hurry.
 <</if>>
 <<if _valueOwed-_valueGiven > 0>>
 	There are some valuables present, worth <<print cashFormat(_valueOwed-_valueGiven)>>.
-	<<set $cash += _valueOwed-_valueGiven>>
+	<<run cashX((_valueOwed-_valueGiven), "event", $activeSlave)>>
 <</if>>
 //
 
diff --git a/src/pregmod/birthStorm.tw b/src/pregmod/birthStorm.tw
index d9d1fec6175..3604d1bbf26 100644
--- a/src/pregmod/birthStorm.tw
+++ b/src/pregmod/birthStorm.tw
@@ -59,7 +59,7 @@ The remote surgery allows the removal of the pregnancy generator through convent
 <</if>>
 <<if $Cash4Babies == 1 && _curBabies > 0>>
 	$His surviving <<if _curBabies > 1>>children<<else>>child<</if>> sold for a total of @@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyPrice))>>.@@
-	<<set $cash += _curBabies*(50+_babyPrice)>>
+	<<run cashX((_curBabies*(50+_babyPrice)), "slaveTransfer", $activeSlave)>>
 <</if>>
 <<set $activeSlave.births += _curBabies>>
 <<set $activeSlave.birthsTotal += _curBabies>>
diff --git a/src/pregmod/csec.tw b/src/pregmod/csec.tw
index 1bb2a94d7ec..e1558e5f689 100644
--- a/src/pregmod/csec.tw
+++ b/src/pregmod/csec.tw
@@ -212,7 +212,7 @@ Performing a cesarean section is trivial for the remote surgery to carry out. $a
 	<<elseif $Cash4Babies == 1 && ($activeSlave.relationship != -3) && ($activeSlave.assignment != "serve in the master suite") && ($activeSlave.assignment != "be your Concubine")>>
 		<<set _lostBabies = 1, _babyCost = random(-12,12)>>
 		sold for a total of @@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@
-		<<set $cash += _curBabies*(50+_babyCost)>>
+		<<run cashX((_curBabies*(50+_babyCost)), "slaveTransfer", $activeSlave)>>
 	<<elseif $universalRulesChildrenBecomeBreeders > 0 && $arcologies[0].FSRepopulationFocus > 40 && $DefaultBirthDestination === "individually decided fates">>
 		<<set _lostBabies = 1>>
 		<<= BirthDestinationText("Orphanage",$activeSlave)>>
diff --git a/src/pregmod/huskSlave.tw b/src/pregmod/huskSlave.tw
index 2e3d5be59a9..9d82ade5804 100644
--- a/src/pregmod/huskSlave.tw
+++ b/src/pregmod/huskSlave.tw
@@ -51,7 +51,7 @@ Virginity:
 <br><br><br>
 Reserving a body will cost <<print cashFormat(10000)>> up front. Canceling an order will refund your money, however if a delivered body is rejected; your money will not be refunded.
 <<if $huskSlaveOrdered == 1>>
-[[Withdraw body order|Main][$huskSlaveOrdered = 0, $cash += 10000]]
+[[Withdraw body order|Main][$huskSlaveOrdered = 0, cashX(10000, "slaveTransfer")]]
 <<elseif $cash < 10000>>
 	//You lack the credits to place a body reservation.//
 <<else>>
diff --git a/src/pregmod/pAssociatesPublicSlut.tw b/src/pregmod/pAssociatesPublicSlut.tw
index 2b92c9e1c66..6879dcf85de 100644
--- a/src/pregmod/pAssociatesPublicSlut.tw
+++ b/src/pregmod/pAssociatesPublicSlut.tw
@@ -48,7 +48,7 @@ You take a detour down one of the minor byways that feed into the Promenade prop
 			You decline his offer, but instead offer to buy him coffee at the nearby café. You enjoy some especially delicious coffee together while admiring the view of his slave's pussy being broken in by a trickle of curious parties, who also occasionally avail of her ass or walk around to the other side of the helpless slut to use her mouth.
 		<</if>>
 		You trade friendly chit-chat and end up discussing business after a while, eventually striking a minor bargain over some outstanding orders that were causing some grief to your holdings, earning you some @@.yellowgreen;extra cash.@@
-		<<set $cash += random(250,1000)>>
+		<<run cashX(random(250,1000), "event")>>
 	<</replace>>
 <</link>>
 </span>
\ No newline at end of file
diff --git a/src/pregmod/saPorn.tw b/src/pregmod/saPorn.tw
index 9b32d62a4aa..1d575d17515 100644
--- a/src/pregmod/saPorn.tw
+++ b/src/pregmod/saPorn.tw
@@ -1049,7 +1049,7 @@
 		<<set _donations = Math.floor($slaves[$i].pornFame/(random(10,15+_viewerSoaking)))>>
 		<<if _donations > 0>>
 			Fans donated a total of @@.yellowgreen;<<print cashFormat(_donations)>>@@ to $his account this week.
-			<<set $cash += _donations>>
+			<<run cashX(_donations, "porn", $slaves[$i])>>
 		<</if>>
 	<</if>>
 
diff --git a/src/pregmod/sePlayerBirth.tw b/src/pregmod/sePlayerBirth.tw
index 339cb70686e..908278bb095 100644
--- a/src/pregmod/sePlayerBirth.tw
+++ b/src/pregmod/sePlayerBirth.tw
@@ -623,7 +623,7 @@ You arrange yourself to give birth, relaxing until your body urges you to begin
 		<<if $arcologies[0].FSRepopulationFocus > 40>>
 			| <<link "Breeding School">><<replace "#choice">><<print "You have decided to send them to be raised into a proper breeder. Perhaps you'll even see them again, though it's unlikely you'll recognize them with their reproduction focused body.">><</replace>><<set $breederOrphanageTotal += _curBabies>><</link>>
 		<</if>>
-		<<if $Cash4Babies == 1>> | <<link "Auction Them">><<replace "#choice">><<print "You send the child<<if _curBabies > 1>>ren<</if>> to be sold at auction amongst other prestigious slaves. The winning bid for your offspring came in at @@.yellowgreen;<<print cashFormat(1000*_seed*_curBabies)>>.@@">><</replace>><<set $cash += 1000*_seed*_curBabies>><</link>><</if>>
+		<<if $Cash4Babies == 1>> | <<link "Auction Them">><<replace "#choice">><<print "You send the child<<if _curBabies > 1>>ren<</if>> to be sold at auction amongst other prestigious slaves. The winning bid for your offspring came in at @@.yellowgreen;<<print cashFormat(1000*_seed*_curBabies)>>.@@">><</replace>><<run cashX((1000*_seed*_curBabies), "slaveTransfer")>><</link>><</if>>
 		</span>
 	<</if>>
 
diff --git a/src/pregmod/widgets/pregmodBirthWidgets.tw b/src/pregmod/widgets/pregmodBirthWidgets.tw
index d888e045c7f..afc3ea96981 100644
--- a/src/pregmod/widgets/pregmodBirthWidgets.tw
+++ b/src/pregmod/widgets/pregmodBirthWidgets.tw
@@ -967,7 +967,7 @@
 		<<set $humiliation = 1>>
 		<<ClothingBirth>>
 		Upon completing $his show, $he reclines with <<if $slaves[$i].birthsTotal == 0>>$his first<<else>>this week's<</if>> child and begins counting the credits $he bought in. In total $he made <<print cashFormat(100*_birthScene)>> and feels that business will be up in the brothel as patrons line up hoping another showing.
-		<<set $cash += 100*_birthScene>>
+		<<run cashX((100*_birthScene), "birth")>>
 	<</if>>
 
 <<case "be the Stewardess">>
diff --git a/src/pregmod/widgets/seBirthWidgets.tw b/src/pregmod/widgets/seBirthWidgets.tw
index cc7110f3a2d..46dd288315f 100644
--- a/src/pregmod/widgets/seBirthWidgets.tw
+++ b/src/pregmod/widgets/seBirthWidgets.tw
@@ -913,7 +913,7 @@ All in all,
 			<<set _lostBabies = 0>>
 		<<else>>
 			$His <<if _curBabies > 1>>babies<<else>>baby<</if>> sold for <<if _curBabies > 1>>a total of <</if>>@@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@<<if $slaves[$i].prematureBirth == 1>> A low price due to the added costs of caring for them.<</if>>
-			<<set $cash += _curBabies*(50+_babyCost)>>
+			<<run cashX((_curBabies*(50+_babyCost)), "slaveTransfer")>>
 		<</if>>
 	<</if>>
 	<<if _lostBabies != 1 && $universalRulesChildrenBecomeBreeders > 0 && $arcologies[0].FSRepopulationFocus > 40 && $DefaultBirthDestination === "individually decided fates">>
@@ -972,7 +972,7 @@ All in all,
 	<<set _babyCost = random(-12,12)>>
 	<<if $slaves[$i].prematureBirth == 1>><<set _babyCost = -45>><</if>>
 	$His <<if _curBabies > 1>>babies<<else>>baby<</if>> were sold for <<if _curBabies > 1>>a total of <</if>>@@.yellowgreen;<<print cashFormat(_curBabies*(50+_babyCost))>>.@@<<if $slaves[$i].prematureBirth == 1>> A low price due to the added costs of caring for them.<</if>>
-	<<set $cash += _curBabies*(50+_babyCost)>>
+	<<run cashX((_curBabies*(50+_babyCost)), "slaveTransfer")>>
 <</if>>
 
 <</widget>>
diff --git a/src/uncategorized/RECI.tw b/src/uncategorized/RECI.tw
index 98fc0803527..cca8ca60794 100644
--- a/src/uncategorized/RECI.tw
+++ b/src/uncategorized/RECI.tw
@@ -480,7 +480,7 @@ $He looks pensive, and goes through two false starts before $he clears $his thro
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You tell $him that you've hired $him out for a party hosted by a prominent citizen's son, home from college, and that $he should be saving it for that. $He promises that $he will, bringing $his legs together again and clearly already imagining it. You check in on $him later, using the video feeds, and are treated to the sight of $him wearing a recently-acquired, too-tight t-shirt with an old world college's mascot on it as $he rides a dick young enough to be $his son's. There's some drunken yelling, which $he responds to by blowing kisses and licking $his <<if $activeSlave.lips > 0>>plump <</if>>lips until another cock finds its way into $his mouth. $His fee for the night is @@.yellowgreen;substantial,@@ and the student's father attaches a note to the payment. Apparently $he got him too, and he's interested in hiring $him for a business meeting next month.
-	<<set $cash += 500>>
+	<<run cashX(500, "event", $activeSlave)>>
 	<<set $activeSlave.analCount += 5>>
 	<<set $analTotal += 5>>
 	<<set $activeSlave.oralCount += 5>>
@@ -528,7 +528,7 @@ $He looks pensive, and goes through two false starts before $he clears $his thro
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You tell $him that you've hired $him out for a party a prominent citizen is throwing, and that $he should be a good slave girl by saving $himself for that. $He trips all over $himself promising that $he will. You check in on $him later, using the video feeds, and are treated to the sight of $him wearing a slinky cocktail dress, although wearing is perhaps the wrong term. $He's bent over a barstool with the top of the dress pulled down <<if ($activeSlave.boobs > 1000)>>over $his huge tits<<elseif ($activeSlave.boobs > 300)>>to bare $his boobs<<else>>to reveal $his sissy chest<</if>> and the bottom of $his dress hiked up so a guest can fuck $his ass. $He's obviously enjoying $himself, happy to be getting some at last. $His fee for the night is @@.yellowgreen;substantial,@@ and the host attaches a note to the payment, complimenting $his eagerness to get assfucked and $his willingness to suck cock, and asking when $he'll be available next.
-	<<set $cash += 500>>
+	<<run cashX(500, "event", $activeSlave)>>
 	<<set $activeSlave.analCount += 5>>
 	<<set $analTotal += 5>>
 	<<set $activeSlave.oralCount += 5>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 1dbb41d5bea..65e641f439e 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -5740,7 +5740,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 		<<set _meetingBonus = 1000>>
 	<</if>>
 	You finish the motion and get on with your day. $He burrows into the warm place on the bed where your body lay, which is actually an excellent sign of $his mental state. It suggests that $his dreaming mind is quite comfortable with your presence and even smell. You make the meeting, consoling yourself with the thought that you're hardly lacking for opportunities to <<if $PC.dick == 1>>stick your dick in<<else>>have sex with<</if>> $activeSlave.slaveName. The business opportunity turns out to be @@.yellowgreen;quite profitable;@@ you're glad you didn't pass it up.
-	<<set $cash += _meetingBonus>>
+	<<run cashX(_meetingBonus, "event")>>
 	<</replace>>
 <</link>>
 <br><<link "Call in from where you are">>
@@ -5764,7 +5764,7 @@ brought in to you. This time <<EventNameLink $activeSlave>> has been sent to del
 	<</if>>
 	draped across you. The meeting is long enough that your interlocutors eventually realize that something unusual is going on, especially once $he wakes up and starts sleepily <<if $PC.dick == 1>>sucking your dick<<if $PC.vagina == 1>> and <</if>><</if>><<if $PC.vagina == 1>>eating you out<</if>>, out of frame. They're @@.red;slightly annoyed,@@ since having sex during meetings is still considered a minor faux pas, but you @@.yellowgreen;close the deal,@@ and $activeSlave.slaveName is @@.hotpink;very pleased@@ that you would rearrange your affairs to make time for <<if $PC.dick == 1>>one of $his blowjobs<<else>>oral sex with $him<</if>>.
 	<<set $activeSlave.oralCount++, $oralTotal++>>
-	<<set $cash += _meetingBonus>>
+	<<run cashX(_meetingBonus, "event")>>
 	<<set $rep -= 50>>
 	<<set $activeSlave.devotion += 4>>
 	<</replace>>
@@ -7451,7 +7451,8 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 			<</if>>
 		<</if>>
 	<</if>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
+
 	<</replace>>
 <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <</if>>
@@ -7771,7 +7772,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		<</if>>
 	<</if>>
 	<<set $activeSlave.devotion += 4, $activeSlave.publicCount += 20>>
-	<<set $cash += 50>>
+	<<run cashX(50, "event")>>
 	<</replace>>
 <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <</if>>
@@ -7821,7 +7822,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<</if>>
 	By the end of the night, $he's been fucked by almost everyone in the bar, and $his itch for humiliation has been well and truly scratched. As you collect $his earnings from the thoroughly pleased bartender, $he lies quiescent in a puddle of cum and exhaustion. @@.yellowgreen;You've collected a decent fee,@@ and @@.green;your reputation has increased.@@
 	<<set $rep += 100>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
 	<<if canDoVaginal($activeSlave) && canDoAnal($activeSlave)>>
 		<<set $activeSlave.vaginalCount += 10, $vaginalTotal += 10, $activeSlave.analCount += 10, $analTotal += 10>>
 		<<if $activeSlave.eggType == "human" && canGetPregnant($activeSlave)>>
@@ -8007,7 +8008,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 		You let $him know you have a sexual accessory for $him to use. This isn't too unusual, so $he comes to your office without much anticipation. $He doesn't understand why you have an enormous sealed canister of fresh cum on your desk, but when you explain that it's $hers to play with on the job, $he starts to bounce with excitement. Not all of $his customers are interested in cum play, but quite a few are, and $he spends almost as much time cleaning up the gorgeous messes that get made as $he does making them. It's a valuable and @@.yellowgreen;profitable@@ whore who @@.hotpink;looks forward@@ to $his next customer.
 		<<set $activeSlave.devotion += 10>>
-		<<set $cash += random(500,1000)>>
+		<<run cashX(random(500,1000), "event")>>
 		<</replace>>
 <</link>>
 <</if>>
@@ -8600,7 +8601,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 		slapping $him until $he cries and then making out with the weeping whore. Much later, $activeSlave.slaveName limps tiredly into your office and gives you your @@.yellowgreen;<<print cashFormat(200)>>.@@ You ask $him how $he's feeling, and $he mumbles, "I'm OK, <<Master>>. My jaw kinda hurt<<s>> and my leg<<s>> are really <<s>>ore."
 	<</if>>
 	You tell $him that's of little concern, since $he has relatively few years of use left: you may as well extract what value you can from $him. $He's too exhausted to hide $his response, and collapses, @@.gold;sobbing.@@
-	<<set $cash += 200>>
+	<<run cashX(200, "event")>>
 	<<set $activeSlave.trust -= 5, $activeSlave.publicCount++>>
 	<<if _didAnal == 1>>
 		<<set $activeSlave.analCount++, $activeSlave.anus++, $analTotal++>>
@@ -9673,7 +9674,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<replace "#result">>
 	There's all sorts of business going on in $arcologies[0].name, from flesh rented or bought down to more pedestrian affairs. Advertisement never goes amiss. You place $activeSlave.slaveName naked on a slowly rotating pedestal surrounded by a clear plastiglass tube on a busy thoroughfare in the lower parts of $arcologies[0].name. These devices are often used to display slaves for sale or slave whores for rent; $activeSlave.slaveName is simply identified by your name as arcology owner, which is thus @@.yellowgreen;identified with business prosperity.@@ $He spends the day serving as eye candy for passersby, rotating gently on the pedestal as $he shows off $his body, giving pride of place to $his $activeSlave.areolaeShape-shaped areolae. $He loves all the attention, and @@.hotpink;$his devotion to you has increased.@@
 	<<set $activeSlave.devotion += 4>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
 	<</replace>>
 <</link>>
 
@@ -11242,7 +11243,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<</if>>
 	When $he comes, the milkers detect $his orgasm to your fucking and shunt the milk into different reservoirs. Though you've never been able to taste much difference, there's a belief out there that 'milk-cum,' the squirts of milk a slave milk girl produces when climaxing with $his <<= WrittenMaster()>>, have special aphrodisiac powers. @@.yellowgreen;It can be sold at a special premium.@@ Naturally, @@.hotpink;$his devotion to you has also increased.@@
 	<</replace>>
-	<<set $cash += 100>>
+	<<run cashX(100, "event")>>
 	<<set $activeSlave.devotion += 4>>
 <</link>><<if ($activeSlave.anus == 0 && canDoAnal($activeSlave)) || ($activeSlave.vagina == 0 && canDoVaginal($activeSlave))>> //This option will take virginity//<</if>>
 <br><<link "Delay $his milking and then fuck $him in public">>
@@ -11986,7 +11987,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You thank $him kindly, tell $him to put $his offering on your desk, and go back to your work. $He flees, and once $he's gone, you <<if $HeadGirl != 0>>have $assistantName pass a note to your Head Girl instructing $him<<else>>instruct $assistantName<</if>> to tighten up your slaves' schedules, since you feel that they have too much time on their hands. Then you direct another slave to return the napkin to its proper place. Your slaves find their spare moments occupied by household minutiae during the coming week, @@.yellowgreen;saving you some money@@ on penthouse and slave upkeep.
-	<<set $cash += 2000>>
+	<<run cashX(2000, "event")>>
 	<</replace>>
 <</link>>
 <<if $activeSlave.fetishKnown == 1 && $activeSlave.fetish != "none">>
@@ -15215,7 +15216,7 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	Your tenant knows that abject surrender is his only hope once you make it clear to him that his scheme is known to you. He complies all too eagerly with your demand that he @@.yellowgreen;repay double what he owes.@@
-	<<set $cash += random(150,200)*10>>
+	<<run cashX(random(150,200)*10, "event")>>
 	<</replace>>
 <</link>>
 <br><<link "Require double repayment and spend it on $him">>
@@ -19461,7 +19462,8 @@ You tell $him kindly that you understand, and that $he'll be trained to address
 	<<if $activeSlave.eggType == "human" && canGetPregnant($activeSlave)>>
 		<<= knockMeUp($activeSlave, 15, 2, 0, 1)>>
 	<</if>>
-	<<set $activeSlave.oralCount += 2, $oralTotal += 2, $cash += 2000>>
+	<<set $activeSlave.oralCount += 2, $oralTotal += 2>>
+	<<run cashX(2000, "event")>>
 	<<set $activeSlave.publicCount += 2>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/RETS.tw b/src/uncategorized/RETS.tw
index 6bad4afd4fd..33ee6cb66a6 100644
--- a/src/uncategorized/RETS.tw
+++ b/src/uncategorized/RETS.tw
@@ -1598,7 +1598,7 @@ $he adds impishly. Hearing this, $subSlave.slaveName lets the breast pop free of
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You tell $him that $his butt is your property, just like $subSlave.slaveName's. $He looks @@.gold;terrified,@@ but this is nothing to $his reaction when another slave arrives to bring $him out for an auction of $his virgin anus. $He's dragged out, whining, "P-plea<<s>>e, <<Master>>, plea<<s>>e don't <<s>>ell my butthole! I'll do anything! Plea<<s>>e!" $His pleas are unavailing. <<if $assistantName == "your personal assistant">>Your personal assistant<<else>>$assistantName<</if>> conducts a brisk streetside auction of the weeping slave $girl, using compliance systems to force $him to spread $his quivering buttocks for the crowd. The @@.yellowgreen;winning bidder@@ uses a public stall to do the deed; its thin walls are nowhere near enough to disguise $his whining and sobbing as he @@.lime;takes $his anal virginity.@@ $He now @@.red;hates anal.@@
-	<<set $cash += 500>>
+	<<run cashX(500, "whore", $activeSlave)>>
 	<<set $activeSlave.sexualFlaw = "hates anal", $activeSlave.trust -= 5, $activeSlave.anus += 1, $activeSlave.analCount++, $activeSlave.publicCount++>>
 	<<set $analTotal++>>
 	<<if canGetPregnant($activeSlave) && $activeSlave.eggType == "human">>
diff --git a/src/uncategorized/buildingWidgets.tw b/src/uncategorized/buildingWidgets.tw
index a40324fd039..ecb0befa454 100644
--- a/src/uncategorized/buildingWidgets.tw
+++ b/src/uncategorized/buildingWidgets.tw
@@ -202,7 +202,7 @@ if(!Macro.has('sectorblock')) {
 <<set $price = 1000*Math.trunc($arcologies[0].prosperity*(1+($arcologies[0].demandFactor/100)))>>
 Selling this sector would relinquish a 4% interest in $arcologies[0].name. Such an interest is worth <<print cashFormat($price)>>.
 <<if $arcologies[0].ownership >= 4>>
-	[[Sell|Main][$cash += $price, $arcologies[0].ownership -= 4, $arcologies[0].demandFactor += 40, $sectors[$AS].ownership = 0]]
+	[[Sell|Main][cashX($price, "capEx"), $arcologies[0].ownership -= 4, $arcologies[0].demandFactor += 40, $sectors[$AS].ownership = 0]]
 <</if>>
 
 <</widget>>
diff --git a/src/uncategorized/completeCatalog.tw b/src/uncategorized/completeCatalog.tw
index 3cc9e3d33f2..f9b2a9e9669 100644
--- a/src/uncategorized/completeCatalog.tw
+++ b/src/uncategorized/completeCatalog.tw
@@ -100,4 +100,8 @@
 
 The offered price is <<print cashFormat($slaveCost)>>.
 
-<<link "Buy $his slave contract" "New Slave Intro">><<set $cash -= $slaveCost, $activeSlave.weekAcquired = $week, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main", $specialSlave = 1>><</link>>
+<<link "Buy $his slave contract" "New Slave Intro">>
+	<<set $cash -= $slaveCost, $activeSlave.weekAcquired = $week, $nextButton = "Continue", $nextLink = "AS Dump", $returnTo = "Main", $specialSlave = 1>>
+	<<set _cashX = forceNeg($slaveCost)>>
+	<<run cashX(_cashX, "slaveTransfer", $activeSlave)>>
+<</link>>
diff --git a/src/uncategorized/corporateMarket.tw b/src/uncategorized/corporateMarket.tw
index 1f5d4f75015..99152ad2974 100644
--- a/src/uncategorized/corporateMarket.tw
+++ b/src/uncategorized/corporateMarket.tw
@@ -87,7 +87,7 @@ while you browse.
 The offered price is <<print cashFormat($slaveCost)>>.<<if $slavesSeen > $slaveMarketLimit>> You have cast such a wide net for slaves this week that it is becoming more expensive to find more for sale. Your reputation helps determine your reach within the slave market.<</if>>
 <br>
 <<if $cash >= $slaveCost>>
-	[["Buy " + $his + " slave contract"|New Slave Intro][$cash -= $slaveCost,$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
+	[["Buy " + $his + " slave contract"|New Slave Intro][cashX($slaveCost, "slaveTransfer", $activeSlave),$nextButton = "Continue",$nextLink = "AS Dump",$returnTo = "Main"]]
 <<else>>
 	//You lack the necessary funds to buy this slave.//
 <</if>>
diff --git a/src/uncategorized/genericPlotEvents.tw b/src/uncategorized/genericPlotEvents.tw
index 96a748aeb64..a789d5ccf95 100644
--- a/src/uncategorized/genericPlotEvents.tw
+++ b/src/uncategorized/genericPlotEvents.tw
@@ -20,7 +20,7 @@
 <<else>>
 	<<goto "Random Nonindividual Event">>
 <</if>>
-<<set $cash += 500*$slaves.length>>
+<<run cashX(500*$slaves.length, "events")>>
 
 Early one morning, you hear convulsive dry heaving coming from one of the bathrooms. On investigation, it seems that $slaves[_genPlot].slaveName woke up feeling terribly nauseous. $He's in no danger, but you've hardly checked $him over before more slaves stagger in. Every one of your slaves on curatives has been struck by the mysterious malady and has @@.red;sickened.@@
 <br><br>
@@ -857,7 +857,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <br><<link "Demand further compensation">>
 	<<replace "#result">>
 	You muster all the contractual remedies available to you and join the crowd of slaveowners laying into the hapless manufacturer. Of course, with so many attackers, there is as much infighting between them as conflict with the helpless enemy, since everyone knows the business will go bankrupt before everyone gets paid. Nevertheless you @@.yellowgreen;approximately double@@ the money you make out of the situation.
-	<<set $cash += 500*$slaves.length>>
+	<<run cashX(500*$slaves.length, "events")>>
 	<</replace>>
 <</link>>
 <br><<link "Force surgical repairs">>
@@ -978,7 +978,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <br><<link "Demand further compensation">>
 	<<replace "#result">>
 	You muster all the contractual remedies available to you and join the crowd of slaveowners laying into the hapless manufacturer. Of course, with so many attackers, there is as much infighting between them as conflict with the helpless enemy, since everyone knows the business will go bankrupt before everyone gets paid. Nevertheless you @@.yellowgreen;approximately double@@ the money you make out of the situation, plenty to deal with the pregnancies.
-		<<set $cash += 2000*$slaves.length>>
+		<<run cashX(2000*$slaves.length, "events")>>
 	<</replace>>
 <</link>>
 <br><<link "Force surgical repairs and compensation">>
@@ -1065,14 +1065,14 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 		<<replace "#result">>
 		The cubicle _heU takes you back into is small, but clean and well-kept. _HeU gives you a kiss on the cheek. "That's not part of the Arcology Tour. Sorry. Here's the start of the real tour." <<if $PC.dick == 1>>_HeU sucks you to full mast while shucking off _hisU skimpy clothing<<if $PC.vagina == 1>>, giggling appreciatively at your pussy and lavishing attention on it with _hisU hands<</if>>. Then _heU turns around and slides you into _hisU <<if _heU == "he">>ass<<else>>pussy<</if>> with the ease of long practice. After a good long standing fuck, _heU begs you to "finish the tour" in _hisU ass and then "pay the tour guide" by coming in _hisU mouth.<<else>>_HeU giggles. "Tour's a little different for a lady like you, Ma'am. Here," _heU says, and starts to make out with you, pressing you back down onto a bench. _HeU lavishes expert oral attention on your pussy in a series of clever positions that offer every part of _hisU body to you in turn for you to grope, squeeze, and penetrate with your fingers.<</if>> Afterward, as _heU's hurrying back into _hisU clothes, _heU says, "We've got the money you paid to set those rooms up, @@.yellowgreen;here it is.@@ And we're doing pretty good, so we could use a little more working space. We'd like the vacant space next door. We'll furnish it, if you'll let us have it?" @@.green;$arcologies[0].name's prosperity has increased.@@
 		<<set $arcologies[0].prosperity += 2>>
-		<<set $cash += 500>>
+		<<run cashX(500, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Politely decline">>
 		<<replace "#result">>
 		"Aw," _heU says, "you're no fun. Well anyway, we've got the money you paid to set those rooms up, @@.yellowgreen;here it is.@@ And we're doing pretty good, so we could use a little more working space. We'd like the vacant space next door. We'll furnish it, if you'll let us have it?" @@.green;$arcologies[0].name's prosperity has increased.@@
 		<<set $arcologies[0].prosperity += 2>>
-		<<set $cash += 500>>
+		<<run cashX(500, "events")>>
 		<</replace>>
 	<</link>>
 <</if>>
@@ -1302,7 +1302,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 <<link "Agree">>
 	<<replace "#result">>
 	You dispatch your personal VTOL bird immediately. It lands <<if $PAidTarget == "volleyballTeam">>beside the bus<<else>>on the roof of the building<</if>> they're sheltering in, and brings them across the closest border and into a more functional country. You receive a call expressing their heartfelt thanks and promising to @@.green;spread the word@@ about how you helped them escape, and a wire transfer of their @@.yellowgreen;payment@@ for the airlift.
-	<<set $cash += 2000>>
+	<<run cashX(2000, "events")>>
 	<<set $rep += 100>>
 	<</replace>>
 <</link>>
@@ -1333,7 +1333,7 @@ A screen opposite your desk springs to life, <<if $assistant == 0>>showing your
 	<<replace "#result">>
 	<<for _genPlot = 0; _genPlot < _newSlaves.length; _genPlot++>>
 		<<slaveCost _newSlaves[_genPlot]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 	<</for>>
 	Prisoners @@.green;sold.@@
 	<</replace>>
diff --git a/src/uncategorized/jeSlaveDispute.tw b/src/uncategorized/jeSlaveDispute.tw
index bbf51f45434..1aa991393bd 100644
--- a/src/uncategorized/jeSlaveDispute.tw
+++ b/src/uncategorized/jeSlaveDispute.tw
@@ -221,7 +221,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive a single notice of escrow payment contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although she isn't stupid enough to make a public accusation of corruption, the older woman made use of her few remaining hours of freedom to @@.red;slander@@ your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the older woman">>
@@ -253,7 +253,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payments contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two,@@ a clear choice, and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the loser is proclaiming that he is @@.red;not pleased@@ with your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the accuser">>
@@ -289,7 +289,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payments contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the loser is proclaiming that he is @@.red;not pleased@@ with your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the accuser">>
@@ -321,7 +321,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payments contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the loser is proclaiming that he is @@.red;not pleased@@ with your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the accuser">>
@@ -353,7 +353,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive a single notice of escrow payment contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although she isn't stupid enough to make a public accusation, the whore has been @@.red;whispering@@ to her peers that you helped the trader cheat her into prostitution. Few citizens care, but there is a faint scent of corruption.
 		<<set $rep -= 50>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the indentured whore">>
@@ -385,7 +385,7 @@
 		<<replace "#result">>
 		You privately inform both parties you'll settle this in favor of the most generous. You instantly receive two notices of escrow payment contingent on the case going the payer's way. You select the @@.yellowgreen;bigger of the two@@ and decide the matter before returning to bed in a good mood. However, the next day it becomes apparent that although he isn't stupid enough to make a public accusation of corruption, the buyer is furious at paying virgin prices for a defiled slave, and is privately @@.red;slandering@@ your administration of justice.
 		<<set $rep -= 100>>
-		<<set $cash += random(150,200)*10>>
+		<<run cashX(random(150,200)*10, "events")>>
 		<</replace>>
 	<</link>>
 	<br><<link "Settle the dispute in favor of the prospective buyer">>
diff --git a/src/uncategorized/minorInjuryResponse.tw b/src/uncategorized/minorInjuryResponse.tw
index 468303ad918..3fa3911dc5b 100644
--- a/src/uncategorized/minorInjuryResponse.tw
+++ b/src/uncategorized/minorInjuryResponse.tw
@@ -8,32 +8,32 @@ $He carries on, knowing that in your degradationist arcology, this is accepted b
 
 <<if ($arcologyUpgrade.drones == 1) && (random(1,100) > 50)>>
 	The security drones successfully detain him and oblige him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($arcologyUpgrade.grid == 1) && (random(1,100) > 50)>>
 	The computer systems successfully detain him and require him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].whoreSkill > random(1,100))>>
 	$slaves[$i].slaveName is used to this sort of thing, and convinces him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].combatSkill > 0)>>
 	$slaves[$i].slaveName can take care of $himself, and $he successfully forces him to pay significant @@.yellowgreen;compensation,@@ since abusing slaves is discouraged here.
-	<<set $cash += 50>>
+	<<run cashX(50, "slaveUpkeep", $slaves[$i])>>
 <</if>>
 
 <<else>>
 
 <<if ($arcologyUpgrade.drones == 1) && (random(1,100) > 50)>>
 	The security drones successfully detain him and oblige him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($arcologyUpgrade.grid == 1) && (random(1,100) > 50)>>
 	The computer systems successfully detain him and require him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].whoreSkill > random(1,100))>>
 	$slaves[$i].slaveName is used to this sort of thing, and convinces him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <<elseif ($slaves[$i].combatSkill > 0)>>
 	$slaves[$i].slaveName can take care of $himself, and $he successfully forces him to pay minor @@.yellowgreen;compensation.@@
-	<<set $cash += 10>>
+	<<run cashX(10, "slaveUpkeep", $slaves[$i])>>
 <</if>>
 
 <</if>>
diff --git a/src/uncategorized/neighborInteract.tw b/src/uncategorized/neighborInteract.tw
index 082cf4221d6..050a53e5221 100644
--- a/src/uncategorized/neighborInteract.tw
+++ b/src/uncategorized/neighborInteract.tw
@@ -13,7 +13,7 @@
 
 <<if $buyArcologyDirection != 0 && def $buyArcologyDirection>>
 	<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $buyArcologyDirection; })>>
-	<<set $cash -= $transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))>>
+	<<run cashX(forceNeg($transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100)))))_meetingBonus, "war")>>
 	<<set $cash -= 10000>>
 	<<set $arcologies[_nei].PCminority += $transaction>>
 	<<set $arcologies[_nei].demandFactor += $transaction*5>>
@@ -21,7 +21,7 @@
 <<set $buyArcologyDirection = 0>>
 <<if $sellArcologyDirection != 0 && def $sellArcologyDirection>>
 	<<set _nei = $arcologies.findIndex(function(s) { return s.direction == $sellArcologyDirection; })>>
-	<<set $cash += $transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))>>
+	<<run cashX(($transaction*(500*Math.trunc($arcologies[_nei].prosperity*(1+($arcologies[_nei].demandFactor/100))))), "war")>>
 	<<set $arcologies[_nei].PCminority -= $transaction>>
 	<<set $arcologies[_nei].demandFactor -= $transaction*2>>
 	<<if $arcologies[_nei].government != "your agent" && $arcologies[_nei].government != "your trustees" && $arcologies[_nei].rival != 1>>
diff --git a/src/uncategorized/neighborsDevelopment.tw b/src/uncategorized/neighborsDevelopment.tw
index 1b0b5f131a4..53010fd8953 100644
--- a/src/uncategorized/neighborsDevelopment.tw
+++ b/src/uncategorized/neighborsDevelopment.tw
@@ -480,7 +480,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 
 <<if $arcologies[$i].PCminority > 0>>
 	<<set _rents = ($arcologies[$i].prosperity*$arcologies[$i].PCminority*2)+random(1,100)>>
-	<<set $cash += _rents>>
+	<<run cashX(_rents, "rents")>>
 	This week, you made @@.yellowgreen;<<print cashFormat(_rents)>>@@ from your holdings in this arcology.
 <</if>>
 
@@ -516,7 +516,7 @@ has an estimated GSP of @@.yellowgreen;<<print cashFormat(Math.trunc((0.1*$arcol
 		<<set $arcologies[0].prosperity = Math.clamp($arcologies[0].prosperity, 1, 300)>>
 	<</if>>
 	You target $arcologies[$i].name for @@.yellow;digital economic warfare,@@ successfully raiding its coffers for @@.yellowgreen;<<print cashFormat(_WarSpoils)>>@@ this week.
-	<<set $cash += _WarSpoils>>
+	<<run cashX(_WarSpoils, "war")>>
 	<<if _redHanded == 1>>
 		A successful trace back to your arcology has exposed your actions, @@.red;damaging your reputation@@ and @@.red;scaring away potential investors.@@
 		<<if $secExp == 1>>
diff --git a/src/uncategorized/options.tw b/src/uncategorized/options.tw
index 0c06b2877b4..db94ca6b950 100644
--- a/src/uncategorized/options.tw
+++ b/src/uncategorized/options.tw
@@ -555,7 +555,7 @@ Assignment performance vignettes on the end week report are
 	//This will allow manual selection of events and unlock some options that would usually be restricted by progress//
 <</if>>
 <br>
-&nbsp;&nbsp;&nbsp;&nbsp;[[Add money|Options][$cheater = 1, $cash += 100000]] | [[Add rep|Options][$cheater = 1, $rep += 10000]] //Cheating will be flagged in your save//
+&nbsp;&nbsp;&nbsp;&nbsp;[[Add money|Options][$cheater = 1, cashX(100000, "cheating")]] | [[Add rep|Options][$cheater = 1, $rep += 10000]] //Cheating will be flagged in your save//
 <br>
 
 <<if ($debugMode == 1)>>
diff --git a/src/uncategorized/pCoupAftermath.tw b/src/uncategorized/pCoupAftermath.tw
index d1de2f9b663..67c1bed78d3 100644
--- a/src/uncategorized/pCoupAftermath.tw
+++ b/src/uncategorized/pCoupAftermath.tw
@@ -33,7 +33,7 @@ You inquire as to whether there's any identifiable cause for the evident dislike
 	<<set $nextButton = "Continue">><<UpdateNextButton>> /* unlock Continue button */
 	<<replace "#result">>
 	Your fellow arcology owner proves very receptive to your missive, as well they might. Your defeat of the Daughters has made a major impact on the willingness of slaveowners to discuss slave revolts in public, and any arcology owner who was proved to be funding anti-slaver violence, even under duress, would be shunned. With very little prompting, <<if _num < $seeDicks>>he<<else>>she<</if>> forwards a @@.yellowgreen;huge indemnity payment.@@ It's nowhere near enough to cause bankruptcy, but it's enough to give you a massive advantage should you find yourselves at odds again.
-	<<set $cash += 100000>>
+	<<run cashX(100000, "war")>>
 	<</replace>>
 <</link>>
 <br><<link "Reveal the evidence publicly">>
@@ -41,7 +41,7 @@ You inquire as to whether there's any identifiable cause for the evident dislike
 	<<replace "#result">>
 	Free Cities society is understandably reluctant to condemn, never mind depose, arcology owners. The precedent of removing one would be bad, even if the public brought enough strength together to accomplish it. Your evidence looks quite bad, but isn't so incontrovertible as to cause your fellow aristocrats to take such a drastic measure. Nonetheless, the public is aghast at the spectacle of an arcology owner funding an attack on another. Opinion @@.green;rallies@@ around you, and you even receive some discreet @@.yellowgreen;donations,@@ delivered with the intimation that they are to be used against your enemy. There is stony silence from the Daughters' backer; today, you began a real inter-arcology war.
 	<<set $rep += 1000>>
-	<<set $cash += 10000>>
+	<<run cashX(10000, "war")>>
 	<<set $rivalryPower = 1>>
 	<<if $rivalSet != 0>>
 		<<for $i = 0; $i < $arcologies.length; $i++>>
diff --git a/src/uncategorized/pCoupAttempt.tw b/src/uncategorized/pCoupAttempt.tw
index 14bb3c413c7..3d557a5f3c9 100644
--- a/src/uncategorized/pCoupAttempt.tw
+++ b/src/uncategorized/pCoupAttempt.tw
@@ -262,7 +262,7 @@ You are awakened in the middle of the night by a jolt that shakes the entire arc
 	<<replace "#result">>
 	<<for _pca = 0; _pca < _newSlaves.length; _pca++>>
 		<<slaveCost _newSlaves[_pca]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 	<</for>>
 	Prisoners sold.
 	<</replace>>
diff --git a/src/uncategorized/pInvasion.tw b/src/uncategorized/pInvasion.tw
index a2e0f4e86c8..0a46fb9ff04 100644
--- a/src/uncategorized/pInvasion.tw
+++ b/src/uncategorized/pInvasion.tw
@@ -116,7 +116,7 @@ The loose militia lately organized by the arcology owners has been called out to
 	<<replace "#result">>
 	<<for _i = 0; _i < _newSlaves.length; _i++>>
 		<<slaveCost _newSlaves[_i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 	<</for>>
 	Prisoners sold.
 	<</replace>>
diff --git a/src/uncategorized/pMercenaryRomeo.tw b/src/uncategorized/pMercenaryRomeo.tw
index acdbf2d91ac..67ce4b964c2 100644
--- a/src/uncategorized/pMercenaryRomeo.tw
+++ b/src/uncategorized/pMercenaryRomeo.tw
@@ -103,7 +103,7 @@ proffered by an attentive slave girl, he seems almost bashful.
 					As he picks up her limbless form to give her a hug,
 				<</if>>
 				she gives the nearest camera a little nod and silently mouths the words "Thank you, <<= WrittenMaster($activeSlave)>>." Soon the romantic story of The Mercenary and the Slave Girl is being told in bars and brothels across the Free City, with you naturally playing @@.green;a supporting role.@@
-				<<set $rep += 500, $cash += $slaveCost>>
+				<<run cashX($slaveCost, "slaveTransfer")>>
 				<<include "Remove activeSlave">>
 			<</if>>
 			<<unset $romeoID>>
diff --git a/src/uncategorized/pRaidResult.tw b/src/uncategorized/pRaidResult.tw
index 2cdb76de521..4e1460f643a 100644
--- a/src/uncategorized/pRaidResult.tw
+++ b/src/uncategorized/pRaidResult.tw
@@ -50,7 +50,7 @@ Out ahead of the main body of refugees there is a small knot moving quickly and
 	<<replace "#result">>
 	<<for _prr = 0; _prr < _newSlaves.length; _prr++>>
 		<<slaveCost _newSlaves[_prr]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 	<</for>>
 	Prisoners sold.
 	<</replace>>
diff --git a/src/uncategorized/pRivalryVictory.tw b/src/uncategorized/pRivalryVictory.tw
index 06502fef173..7bdfe3d3cac 100644
--- a/src/uncategorized/pRivalryVictory.tw
+++ b/src/uncategorized/pRivalryVictory.tw
@@ -33,7 +33,7 @@ For the first time, you receive a direct call from your rival. You pictured the
 		<<if $hostageAnnounced == 1>><<set $hostageRescued = 1>><</if>>
 	<<else>>
 		<<if _num < $seeDicks>>His<<else>>Her<</if>> arcology will go to satisfy her great debts, but you will still profit @@.yellowgreen;immensely@@ from your victory<<if $hostageAnnounced == 1>>, and acquire $hostage.slaveName as a slave<</if>>.
-		<<set $cash += random(100000,250000)>>
+		<<run cashX(random(100000,250000), "war")>>
 	<</if>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/peHeadgirlConcubine.tw b/src/uncategorized/peHeadgirlConcubine.tw
index cacee3dc82b..4a23a8688e3 100644
--- a/src/uncategorized/peHeadgirlConcubine.tw
+++ b/src/uncategorized/peHeadgirlConcubine.tw
@@ -179,7 +179,7 @@ and it's also obvious that they've been filling the few minutes they've been wai
 		along your Concubine's <<if $Concubine.bald == 1>>bald<<else>>shaved<</if>> head.
 	<</if>>
 	Your Head Girl's confident assistance managing your chattel and your Concubine's devoted comfort as you work allows you to @@.yellowgreen;be unusually productive@@ all morning.
-	<<set $cash += 1000>>
+	<<run cashX(1000, "event", $HeadGirl)>>
 	<</replace>>
 <</link>>
 <br><<link "Tease them while they meet with you">>
diff --git a/src/uncategorized/pePitFight.tw b/src/uncategorized/pePitFight.tw
index 6e9418848e6..09af6791d59 100644
--- a/src/uncategorized/pePitFight.tw
+++ b/src/uncategorized/pePitFight.tw
@@ -172,13 +172,13 @@ The umpire announces gravely that the fight is to the death and rings a bell.
 <<if $deadliness > (_opponent + 1)>>
 	$activeSlave.slaveName senses that $he is greatly superior, and decides to make a quick end before $his opponent can try something foolish. $He feints high and stabs low; $his enemy just manages to parry the low stab, but is so much weaker that $activeSlave.slaveName simply overpowers _himU, so that _heU falls onto _hisU back with the force of the clash. $activeSlave.slaveName takes one step forward and runs $his sword through the prostrate slave's heart. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators.
 	<<set $rep += 500>>
-	<<set $cash += 5000>>
+	<<run cashX(5000, "pit", $activeSlave)>>
 	<<set $activeSlave.pitKills += 1>>
 	<<set $pitKillsTotal += 1>>
 <<elseif $deadliness > (_opponent)>>
 	The combat is long and exhausting. $activeSlave.slaveName and $his opponent are closely matched in terms of skill, so neither takes foolish risks and a protracted, bloody fight results as both slaves take horrible but non-life-threatening cuts. Finally, $activeSlave.slaveName's superior physical condition wins out and $his opponent falls from exhaustion and blood loss. $activeSlave.slaveName stumbles over to open _hisU throat. This victory has @@.green;won you some renown@@ and @@.yellowgreen;a sum of money@@ from each of the spectators, though $activeSlave.slaveName is @@.red;badly hurt.@@
 	<<set $rep += 500>>
-	<<set $cash += 5000>>
+	<<run cashX(5000, "pit", $activeSlave)>>
 	<<set $activeSlave.health = -50>>
 	<<set $activeSlave.pitKills += 1>>
 	<<set $pitKillsTotal += 1>>
diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw
index dc88791373b..48b57972357 100644
--- a/src/uncategorized/persBusiness.tw
+++ b/src/uncategorized/persBusiness.tw
@@ -50,39 +50,39 @@
 	<<if $PC.belly >= 1500>>
 		<<if $arcologies[0].FSRepopulationFocus != "unset">>
 			You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly)))>>@@ for your body, much more than usual; guess your pregnancy focused population wants your baby rounded body more than ever. However, doing such things @@.red;damages your reputation@@.
-			<<set $cash += Math.trunc((_income*($rep/500))+($PC.belly))>>
+			<<run cashX(Math.trunc((_income*($rep/500))+($PC.belly)), "personalBusiness")>>
 			<<set $rep = Math.trunc($rep*.90)>>
 		<<elseif $arcologies[0].FSRepopulationFocusPregPolicy == 1>>
 			You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc((_income*($rep/500))+($PC.belly/2)))>>@@ for your body, more than usual; but that's to be expected, after all, pregnancy is trendy right now. Event still, doing such things @@.red;damages your reputation@@.
-			<<set $cash += Math.trunc((_income*($rep/500))+($PC.belly/2))>>
+			<<run cashX(Math.trunc((_income*($rep/500))+($PC.belly/2)), "personalBusiness")>>
 			<<set $rep = Math.trunc($rep*.90)>>
 		<<elseif $arcologies[0].FSRestart != "unset">>
 			<<if $PC.pregSource != -1 && $PC.pregSource != -6>>
 				You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(25)>>,@@ barely enough to cover the abortion the john that gave it to you told you to get. Showing off your gravid body @@.red;infuriates your citizens and cripples your reputation@@.
-				<<set $cash += 25>>
+				<<run cashX(25, "personalBusiness")>>
 				<<set $rep = Math.trunc($rep*.25)>>
 				<<if $eugenicsFullControl != 1>>
 					<<set $failedElite += 25>>
 				<</if>>
 			<<else>>
 				You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income($rep/500)))>>@@ for your body. However, doing such things @@.red;damages your reputation@@.
-				<<set $cash += Math.trunc(_income*($rep/500))>>
+				<<run cashX(Math.trunc(_income*($rep/500)), "personalBusiness")>>
 				<<set $rep = Math.trunc($rep*.75)>>
 			<</if>>
 		<<else>>
 			<<set _income = random(5,2500)>>
 			You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income*($rep/800)))>>@@ for your body, much less than usual; your pregnancy must be turning off potential clients. However, doing such things @@.red;damages your reputation@@.
-			<<set $cash += Math.trunc(_income*($rep/800))>>
+			<<run cashX(Math.trunc(_income*($rep/800)), "personalBusiness")>>
 			<<set $rep = Math.trunc($rep*.75)>>
 		<</if>>
 	<<else>>
 		You focus on finding "dates" this week and earn @@.yellowgreen;<<print cashFormat(Math.trunc(_income*($rep/500)))>>@@ for your body. However, doing such things @@.red;damages your reputation@@.
-		<<set $cash += Math.trunc(_income*($rep/500))>>
+		<<run cashX(Math.trunc(_income*($rep/500)), "personalBusiness")>>
 		<<set $rep = Math.trunc($rep*.75)>>
 		<<if isPlayerFertile($PC)>>
 			<<if $arcologies[0].FSRepopulationFocus != "unset" && random(1,100) > 80>>
 				A horny client offered you an extra @@.yellowgreen;<<print cashFormat(1000)>>@@ for downing some fertility drugs. You're already forgoing birth control, so what harm could an extra baby do?
-				<<set $cash += 1000>>
+				<<run cashX(1000, "personalBusiness")>>
 				<<set $PC.forcedFertDrugs += 2>>
 			<<elseif random(1,100) > 90>>
 				Your client this week offered you some free pills to make sex more fun. He was right; it made bareback sex feel amazing.
@@ -333,7 +333,7 @@
 	<</if>>
 	<<set _income += Math.trunc(Math.min(3000 * Math.log($cash+1), $cash * 0.07))>>
 	This week, your illicit and legitimate business dealings earned you a combined total of @@.yellowgreen;<<print cashFormat(_income)>>@@.
-	<<set $cash += _income>>
+	<<run cashX(_income, "personalBusiness")>>
 <<elseif ($cash > 1000) && ($personalAttention == "business")>>
 	<<if $PC.belly >= 1500>>
 		<<set _income = random(500,1000)>>
@@ -351,7 +351,7 @@
 		<<set _income += Math.trunc(Math.min(3500 * Math.log($cash), $cash * 0.07))>>
 	<</if>>
 	@@.yellowgreen;<<print cashFormat(_income)>>.@@
-	<<set $cash += _income>>
+	<<run cashX(_income, "personalBusiness")>>
 	<<if $arcologies[0].FSRomanRevivalist != "unset">>
 		Society @@.green;approves@@ of your close attention to your own affairs; this advances your image as a <<if $PC.title == 1>>well-rounded Roman man<<else>>responsible Roman lady<</if>>.
 		<<= FSChange("RomanRevivalist", 2)>>
@@ -359,7 +359,7 @@
 <<elseif ($cash > 1000)>>
 	<<set _income = Math.trunc(Math.min(3000 * Math.log($cash), $cash * 0.07))>>
 	This week, your business endeavors made you @@.yellowgreen;<<print cashFormat(_income)>>.@@
-	<<set $cash += _income>>
+	<<run cashX(_income, "personalBusiness")>>
 <<else>>
 	You have enough cash to manage your affairs, but not enough to do much business.
 <</if>>
@@ -644,7 +644,7 @@
 	<<if $PC.hacking < 100>>
 		<<set $PC.hacking += .5>>
 	<</if>>
-	<<set $cash += _windfall>>
+	<<run cashX(_windfall, "personalBusiness")>>
 
 <</switch>>
 <</if>>
@@ -672,7 +672,8 @@
 <<if $rep > 100>>
 	<<if $RepForCash == 1>>
 		This week you used your position to secure business opportunities worth <<print cashFormat($policyCost)>> at the expense of citizens, @@.red;damaging your reputation.@@
-		<<set $rep -= 100, $cash += $policyCost>>
+		<<set $rep -= 100>>
+		<<run cashX($policyCost, "personalBusiness")>>
 	<</if>>
 <</if>>
 <<if $rep <= 18000>>
@@ -689,7 +690,7 @@
 <<if $secExp == 1>>
 	<<if $smilingManFate == 0 && random(1,100) >= 85>>
 		This week one of the offside adventures of The Smiling Man produced a copious amount of money, of which @@.yellowgreen;you receive your share@@.
-		<<set $cash += random(10,20) * 1000>>
+		<<run cashX(random(10,20) * 1000, "personalBusiness")>>
 	<</if>>
 
 	<<if $sellData == 1>>
@@ -732,7 +733,7 @@
 			<br>@@.red;Error, dataGain is NaN@@
 		<<else>>
 			You are selling the data collected by your security department, which earns a discreet sum of @@.yellowgreen;<<print cashFormat(_dataGain)>>@@.
-			<<set $cash += _dataGain>>
+			<<run cashX(_dataGain, "personalBusiness")>>
 			Many of your citizens are not enthusiastic of this however, @@.red;damaging your authority@@.
 			<<set $authority -= 50>>
 		<</if>>
@@ -801,7 +802,8 @@ Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@
 <<if !isInt($costs)>>
 	<br>@@.red;Error, costs is NaN@@
 <</if>>
-<<set $cash -= $costs>>
+
+<<set $costs = (getCost($slaves)*-1)>> //overwrite the prediction and actually pay the bill.  GetCost should return a negative.
 
 <<if $secExp == 1>>
 	<<if $weapManu == 1>>
@@ -848,13 +850,13 @@ Routine upkeep of your demesne costs @@.yellow;<<print cashFormat($costs)>>.@@
 		<<if !isInt(_income)>>
 			<br>@@.red;Error failed to calculate income@@
 		<<else>>
-			<<set $cash += _income>>
+			<<run cashX(_income, "personalBusiness")>>
 		<</if>>
 	<</if>>
 
 	<<if $taxTrade == 1>> <<set _tradeTax = Math.ceil($trade * random(80,120))>>
 		<br>Fees on transitioning goods this week made @@.yellowgreen;<<print cashFormat(_tradeTax)>>.@@
-		<<set $cash += Math.ceil(_tradeTax)>>
+		<<run cashX(Math.ceil(_tradeTax), "personalBusiness")>>
 	<</if>>
 	<br>
 <</if>>
diff --git a/src/uncategorized/reBoomerang.tw b/src/uncategorized/reBoomerang.tw
index d387056486d..eac50cd9b6f 100644
--- a/src/uncategorized/reBoomerang.tw
+++ b/src/uncategorized/reBoomerang.tw
@@ -468,7 +468,7 @@ It isn't obvious how $he managed to escape, though no doubt you could review the
 	<</replace>>
 <</link>> //This will cost in <<print cashFormat($contractCost)>>.//
 <br><<link "Sell $him immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX($slaveCost, "slaveTransfer")>>
 	<<replace "#result">>
 		The penthouse opens, and $activeSlave.slaveName stumbles inside, sobbing $his thanks. $He's immediately conducted to the autosurgery for some quick cosmetic surgery, while you and $assistantName do the necessary work to falsify the arcology records and conceal $his origins. Before $he's even out from under anesthesia, $he's bundled off into one of the hundreds of slave shipments that move between arcologies every day. This time $he'll be sold far enough away that no matter how much of an escape artist $he is, you won't be seeing any more of $him. $He can whine elsewhere.
 		<<set $boomerangStats = 0>>
diff --git a/src/uncategorized/reBrothelFunction.tw b/src/uncategorized/reBrothelFunction.tw
index 50eba5edac9..58268aef3d0 100644
--- a/src/uncategorized/reBrothelFunction.tw
+++ b/src/uncategorized/reBrothelFunction.tw
@@ -22,7 +22,8 @@ The last of these requests comes in the form of a letter, stamped with the heral
 			<<set $slaves[$i].devotion += 4>>
 		<</if>>
 	<</for>>
-	<<set $cash += 10000>>
+	<<run cashX(10000, "brothel")>>
+
 	<</replace>>
 <</link>> //This will earn you <<print cashFormat(10000)>>//
 <br><<link "Give this lady-killing rake a proper send off into retirement">>
@@ -49,7 +50,7 @@ The last of these requests comes in the form of a letter, stamped with the heral
 			<</if>>
 		<</if>>
 	<</for>>
-	<<set $cash += 2000>>
+	<<run cashX(2000, "brothel")>>
 	<</replace>>
 <</link>> //This will earn you <<print cashFormat(2000)>>//
 <br><<link "Welcome the boy into manhood in Free Cities fashion">>
@@ -72,7 +73,7 @@ The last of these requests comes in the form of a letter, stamped with the heral
 			<</if>>
 		<</if>>
 	<</for>>
-	<<set $cash += 1000>>
+	<<run cashX(1000, "brothel")>>
 	<<set $rep += 500>>
 	<</replace>>
 <</link>> //This will earn you <<print cashFormat(1000)>>//
diff --git a/src/uncategorized/reDevotees.tw b/src/uncategorized/reDevotees.tw
index 0e341fd9ee3..53aa88c3783 100644
--- a/src/uncategorized/reDevotees.tw
+++ b/src/uncategorized/reDevotees.tw
@@ -37,11 +37,15 @@ You have a mature, well-trained household of slaves. $slaves[_red1].slaveName, $
 <br><<link "Visit a casino in good company">>
 	<<replace "#result">>
 	The croupiers, bouncers and regulars down at the nearest casino hardly know what to think when you appear with a chit full of cash and twice as many girls as you have arms. You live the night big, starting at the poker table with so many tits and asses on display behind you that, @@.yellowgreen;baby, you make a killing.@@ $slaves[_red1].slaveName, $slaves[_red2].slaveName, $slaves[_red3].slaveName, and $slaves[_red4].slaveName quickly catch the rhythm of the place: slaves can get away with a little more in the smoky, whiskey soaked, money tinted atmosphere, and they @@.hotpink;enjoy themselves immensely.@@ They flirt, flash, giggle, kiss each other, and generally destroy the concentration of everyone within twenty <<if $showInches == 2>>yards<<else>>meters<</if>> — except you. Ring-a-ding-ding.
+	<<set _cashX = random(30,100)*3>>
 	<<set $slaves[_red1].devotion += 4>>
+	<<run cashX(_cashX, "event", $slaves[_red1])>>
 	<<set $slaves[_red2].devotion += 4>>
+	<<run cashX(_cashX, "event", $slaves[_red2])>>
 	<<set $slaves[_red3].devotion += 4>>
+	<<run cashX(_cashX, "event", $slaves[_red3])>>
 	<<set $slaves[_red4].devotion += 4>>
-	<<set $cash += random(30,100)*10>>
+	<<run cashX(_cashX, "event", $slaves[_red4])>>
 	<</replace>>
 <</link>>
 </span>
diff --git a/src/uncategorized/reFSAcquisition.tw b/src/uncategorized/reFSAcquisition.tw
index f17fa949dc1..72e0ec6ec1c 100644
--- a/src/uncategorized/reFSAcquisition.tw
+++ b/src/uncategorized/reFSAcquisition.tw
@@ -1421,7 +1421,7 @@ The call comes in from an office, and you suppress the urge to check whether $as
 	<</replace>>
 <</link>> //This will cost <<print cashFormat($contractCost)>>//
 <br><<link "Sell $him immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX($slaveCost, "slaveTransfer")>>
 	<<replace "#result">>
 	<<switch $FSAcquisitionEvents>>
 	<<case "Pastoralist">>
diff --git a/src/uncategorized/reFormerAbolitionist.tw b/src/uncategorized/reFormerAbolitionist.tw
index 4061207c960..7bf7c1258a5 100644
--- a/src/uncategorized/reFormerAbolitionist.tw
+++ b/src/uncategorized/reFormerAbolitionist.tw
@@ -34,7 +34,7 @@ You spend the week parading $activeSlave.slaveName around in public, letting eve
 You fasten $activeSlave.slaveName in a kneeling position in the center of your club, secured by shackles around $his wrists and ankles - purely decorative, since $he's so devoted $he'd perform $his role in this if you just hinted it would please you if $he did. In front of $him, you place a sign: "Fuck the mouth that preached abolitionism, <<print cashFormat(5)>>." In a few moments, the morning crowd will begin to arrive, and you have no doubt that $activeSlave.slaveName will be very, very popular. And $he is. Even with an extra dose of curatives and a check-up every night, the strain of a week of dicks and a diet of cum @@.red;has taken a toll on $his health.@@ But even after you pay to have the area that $activeSlave.slaveName worked thoroughly cleaned, you have made @@.yellowgreen;a tidy profit@@.
 	<<set $activeSlave.health -= 10>>
 	<<set $activeSlave.oralCount += random(410,440)>>
-	<<set $cash += 2000>>
+	<<run cashX(2000, "event", $activeSlave)>>
 	<</replace>>
 <</link>>
 <br><<link "Invest <<print cashFormat(5000)>> in making $him locally famous">>
diff --git a/src/uncategorized/reLegendaryWhore.tw b/src/uncategorized/reLegendaryWhore.tw
index eb794180b0f..5081385ce4f 100644
--- a/src/uncategorized/reLegendaryWhore.tw
+++ b/src/uncategorized/reLegendaryWhore.tw
@@ -23,7 +23,7 @@ This is a rare opportunity. Such popularity and fame is here today, and gone tom
 	<<EventNameDelink $activeSlave>>
 	<<replace "#result">>
 	You decide to limit your advantage on $his temporary popularity to a little marketing and some minor price increases. You've made some unexpected @@.yellowgreen;profits,@@ and gained a little @@.green;notoriety.@@
-	<<set $cash += 1000>>
+	<<run cashX(1000, "event", $slaves[$i])>>
 	<<set $rep += 100>>
 	<</replace>>
 <</link>>
diff --git a/src/uncategorized/reMalefactor.tw b/src/uncategorized/reMalefactor.tw
index 9a6b527c58d..e37f9e6d44f 100644
--- a/src/uncategorized/reMalefactor.tw
+++ b/src/uncategorized/reMalefactor.tw
@@ -590,9 +590,9 @@ $He is easily taken into custody and $his contraband confiscated once the jeerin
 <</link>>
 <</if>>
 <br><<link "Sell $him immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX($slaveCost, "slaveTransfer")>>
 	<<if $cash4Babies == 1 && $malefactor == "anchorBaby">>
-		<<set $cash += random(20,30)>>
+		<<run cashX(random(20,30), "slaveTransfer")>>
 	<</if>>
 	<<replace "#result">>
 		<<switch $malefactor>>
diff --git a/src/uncategorized/rePokerNight.tw b/src/uncategorized/rePokerNight.tw
index 23e00cb7bde..96108807608 100644
--- a/src/uncategorized/rePokerNight.tw
+++ b/src/uncategorized/rePokerNight.tw
@@ -45,7 +45,8 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 						<<set $rep += 1000, $cash -= 2500>>
 						<<else>>
 						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 <<print cashFormat(1000)>> more than you arrived with and @@.green;the respect of your mercenaries.@@
-						<<set $rep += 100, $cash += 1000>>
+						<<set $rep += 100>>
+						<<run cashX(1000, "event")>>
 						<</if>>
 					<</replace>>
 				<</link>>
@@ -120,7 +121,8 @@ On a particularly lackadaisical evening, you find yourself alerted to a message
 									<<set $rep += 1000, $cash -= 5000>>
 									<<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 mercenaries also @@.green;had a good time fraternizing with you.@@
-									<<set $rep += 200, $cash += 5000>>
+									<<set $rep += 200>>
+									<<run cashX(5000, "event")>>
 									<</if>>
 								<</replace>>
 							<</link>>
diff --git a/src/uncategorized/reRecruit.tw b/src/uncategorized/reRecruit.tw
index e9b0a64547b..a3931a077dc 100644
--- a/src/uncategorized/reRecruit.tw
+++ b/src/uncategorized/reRecruit.tw
@@ -2674,14 +2674,14 @@ He explains that one of his servant <<= $girl>>s was impregnated by his fool of
 	<<case "forbidden love">>
 	<<default>>
 	<br><<link "Sell $him immediately">>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<replace "#result">>
 		<<switch $recruit>>
 		<<case "held POW">>
 			You complete the legalities and biometric scanning quickly and without fuss; $his will to fight long since broken. Though you do catch a faint glimmer of joy in $his eyes as you tell $him $he's been purchased by a notorious Pit Master and will likely spend the rest of $his life in combat.
 		<<case "embryo appropriation">>
 			<<set _profit = $slaveCost*$activeSlave.pregType>>
-			<<set $cash += _profit>>
+			<<run cashX(_profit, "slaveTransfer")>>
 			$He sobs as the biometric scanners scrupulously record $his every particular as belonging not to a person but to a piece of human property. $He tries to resist placing $his biometric signature in testament to the truth of $his debt, but when you observe that the alternative is the death of $him and $his unborn, $he complies. A purchasing agent appears to take $him away, but not after the slave breeder that bought $him paid a ludicrous amount of ¤ per child. An additional @@.yellowgreen;¤<<print _profit>>@@ overall.
 		<<case "rogue cyborg">>
 			With your order received the target quickly seeks you out. After a huge sum of credits changes hands to render it safe, the legalities and biometric scanning are complete and it is sold off to a very eager robophile.
diff --git a/src/uncategorized/reShippingContainer.tw b/src/uncategorized/reShippingContainer.tw
index 0b1011cb804..14bec54bfd0 100644
--- a/src/uncategorized/reShippingContainer.tw
+++ b/src/uncategorized/reShippingContainer.tw
@@ -41,11 +41,11 @@ For now, the crowd around you is looking at the helpless human cargo with
 	<<replace "#result">>
 	<<for _reShip = 0; _reShip < _newSlaves.length; _reShip++>>
 		<<slaveCost _newSlaves[_reShip]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransaction")>>
 	<</for>>
 	Allowing humor into your voice, you announce an auction, to be held immediately. The crowd appreciates the wit, and @@.green;appreciates it even more@@ when you conduct the auction yourself. It's always good to take an opportunity to show off your understanding of the slave market in public. You @@.yellowgreen;sell them all,@@ sex slaves and menials alike. Welcome to the Free Cities.
 	<<set $menials -= 25>>
-	<<set $cash += 25*_bonusCash>>
+	<<run cashX((25*_bonusCash), "slaveTransaction")>>
 	<<set $rep += 100>>
 	<</replace>>
 <</link>>
@@ -76,7 +76,7 @@ For now, the crowd around you is looking at the helpless human cargo with
 	<<replace "#result">>
 	<<for _reShip = 0; _reShip < _newSlaves.length; _reShip++>>
 		<<slaveCost _newSlaves[_reShip]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransaction")>>
 	<</for>>
 	You hurry forward, beckoning the crowd to accompany you. The wretched slaves cringe with fear, but soon they're being comforted, offered water, and examined for injury. Once the most pressing needs are attended to, you call for everyone's attention. You pride yourself on knowing your citizens well, and you can pick good Paternalists out of the crowd at will. Calling them by name, you ask whether they'd be willing to take on one of these poor slaves. One by one, you pair slave and Master or Mistress, rewarding your best people with public approbation, not to mention a free slave. The initial gasps of surprise quickly grow into @@.green;thunderous applause.@@ Your people love you. Several of the slaves begin to cry, mostly from confusion or sheer exhaustion; they don't yet know how lucky they are.
 	<<set $menials -= 25>>
diff --git a/src/uncategorized/reputation.tw b/src/uncategorized/reputation.tw
index 558cbb0f32d..8f42ef9a5dc 100644
--- a/src/uncategorized/reputation.tw
+++ b/src/uncategorized/reputation.tw
@@ -737,7 +737,7 @@ On formal occasions, you are announced as $PCTitle.
 	<<set $PC.degeneracy -= 1>>
 	Rumors quelled as planned.
 <<else>>
-	<<set $cash += 1000>>
+	<<run cashX(1000, "policies")>>
 	Reputation subsidy reclaimed this week since your reputation is capped.
 <</if>>
 <</if>>
diff --git a/src/uncategorized/resFailure.tw b/src/uncategorized/resFailure.tw
index c17dc6710c6..b5fd4e4e3ca 100644
--- a/src/uncategorized/resFailure.tw
+++ b/src/uncategorized/resFailure.tw
@@ -804,56 +804,56 @@ The failure of a prominent organization within your arcology has @@.red;affected
 	<<if $RESFailure == "TSS">>
 		<<if ($slaves[$i].origin == "She was given to you by a failed branch campus of The Slavegirl School right after her majority.") || ($slaves[$i].origin == "She was given to you by a failed branch campus of The Slavegirl School after she was retrained as a slave girl.")>>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "GRI">>
 		<<if $slaves[$i].origin == "She was given to you by a failed subsidiary lab of the Growth Research Institute right after her use as a test subject ended.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "SCP">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of St. Claver Preparatory after she served as a plastic surgeon's passing final exam.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "LDE">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of the innovative École des Enculées right after her graduation.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "TGA">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of the intense Gymnasium-Academy right after her majority.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "HA">>
 		<<if $slaves[$i].origin == "She was given to you by a failed branch campus of the Hippolyta Academy right after her majority.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<elseif $RESFailure == "TCR">>
 		<<if $slaves[$i].origin == "She is a prized dairy cow given to you by a failed local pasture of The Cattle Ranch.">>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
 	<<else>>
 		<<if ($slaves[$i].origin == "She was the leader of your arcology's Futanari Sisters until you engineered her community's failure and enslavement.") || ($slaves[$i].origin == "She was a Futanari Sister until you engineered her early enslavement.")>>
 		<<slaveCost $slaves[$i]>>
-		<<set $cash += $slaveCost>>
+		<<run cashX($slaveCost, "slaveTransfer")>>
 		<<include "Remove activeSlave">>
 		<<set $i -= 1>>
 		<</if>>
diff --git a/src/uncategorized/scheduledEvent.tw b/src/uncategorized/scheduledEvent.tw
index 470d9c8e7f6..2263f8220c3 100644
--- a/src/uncategorized/scheduledEvent.tw
+++ b/src/uncategorized/scheduledEvent.tw
@@ -132,7 +132,8 @@
 	<</if>>
 	<</for>>
 	<<if _wedding == 0>>
-		<<set $weddingPlanned = 0, $cash += 10000>>
+		<<set $weddingPlanned = 0>>
+		<<run cashX(10000, "event")>>
 		<<goto "Scheduled Event">>
 	<</if>>
 <<elseif $playerBred == 1 && ($PC.preg == 0 || $PC.preg == -1) && $PC.pregWeek == 0 && $PC.vagina == 1>>
diff --git a/src/uncategorized/schoolroomReport.tw b/src/uncategorized/schoolroomReport.tw
index ce83005d1a9..5186a4d76fc 100644
--- a/src/uncategorized/schoolroomReport.tw
+++ b/src/uncategorized/schoolroomReport.tw
@@ -95,7 +95,7 @@
 	<</for>>
 	<<if (_DL < $schoolroom)>>
 		<<set _seed = random(1,10)+(($schoolroom-_DL)*(random(150,170)+(_idleBonus*10)))>>
-		<<set $cash += _seed>>
+		<<run cashX(_seed, "school", $Schoolteacher)>>
 		<br>&nbsp;&nbsp;&nbsp;&nbsp;Since she doesn't have enough students to occupy all of her time, $schoolroomName takes in citizens' slaves on a contract basis and she teaches them too, earning @@.yellowgreen;<<print cashFormat(_seed)>>.@@
 	<</if>>
 	<<if (_DL > 0)>><br><br><</if>>
diff --git a/src/uncategorized/seLethalPit.tw b/src/uncategorized/seLethalPit.tw
index a2f8859a690..521ba4fbd25 100644
--- a/src/uncategorized/seLethalPit.tw
+++ b/src/uncategorized/seLethalPit.tw
@@ -406,7 +406,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 50>>
 		<<if $pitAudience == "paid">>
 			The audience is surprised by the sudden violence after so much standing around, and your @@.yellowgreen;cut of the betting@@ is modest.
-			<<set $cash += 5000>>
+			<<run cashX(5000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;surprised@@ by the sudden violence after so much standing around.
 			<<set $rep += 250>>
@@ -415,7 +415,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		Upon your word the two combatants approach each other. _winner.slaveName drops $his sword as $he comes, raising only $his hands, but these are terrifying, modern weapons themselves. _loser.slaveName tries a probing sweep, but _winner.slaveName catches _his2 blade in one hand, slides it down to the hilt with a shriek of metal on metal, and snaps the blade cleanly. As _loser.slaveName watches this, dumbstruck, _winner.slaveName places a gentle hand under _his2 chin and then extends that arm's integral blade up and through $his opponent's skull. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 10000>>
+			<<run cashX(10000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 500>>
@@ -424,7 +424,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		Upon your word the two combatants approach each other. _winner.slaveName does not carry a sword, raising only $his hands, but these are terrifying, modern weapons themselves. _loser.slaveName tries a probing sweep, but _winner.slaveName catches _his2 blade in one hand, slides it down to the hilt with a shriek of metal on metal, and snaps the blade cleanly. _loser.slaveName watches this, dumbstruck, before regaining composure and taking a fighting stance again. _winner.slaveName manages to touch $his opponent's bare skin with $his own cybernetics, incapacitating _loser.slaveName with an electric shock. While _loser.slaveName is temporarily stunned, _winner.slaveName strikes _loser.slaveName on the head with deadly force, crushing $his opponent's skull. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 10000>>
+			<<run cashX(10000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 500>>
@@ -434,7 +434,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 80>>
 		<<if $pitAudience == "paid">>
 			The audience is awestruck by the blind $girl's triumph, and your @@.yellowgreen;cut of the betting@@ is enormous.
-			<<set $cash += 40000>>
+			<<run cashX(40000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;awestruck@@ by the blind $girl's triumph.
 			<<set $rep += 2000>>
@@ -444,7 +444,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 80>>
 		<<if $pitAudience == "paid">>
 			The audience found the fight embarrassing, and your @@.yellowgreen;cut of the betting@@ is pitiful.
-			<<set $cash += 40>>
+			<<run cashX(40, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.red;annoyed@@ by this waste of a fight.
 			<<set $rep -= 20>>
@@ -454,7 +454,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			_winner.slaveName wants to win, and $he opens the fight with a furious attack. _loser.slaveName manages to get _his2 blade up, blocking a strike with a ringing clash and a few sparks, but by doing so leaves _his2 abdomen open and obscures _his2 vision enough that _he2 is unprepared for the following horizontal slash, which opens _his2 belly wide. The stricken _girl2 collapses, feebly trying to push _his2 viscera back into place. Whether out of mercy or a desire to get it over with, _winner.slaveName quickly removes the dying _girl2's head.
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the gore, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 4000>>
+				<<run cashX(4000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the gore.
 				<<set $rep += 200>>
@@ -464,7 +464,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			<<set _winner.health -= 20>>
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the blood, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 4000>>
+				<<run cashX(4000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the blood.
 				<<set $rep += 200>>
@@ -475,7 +475,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _winner.health -= 20>>
 		<<if $pitAudience == "paid">>
 			The audience is quite impressed by the expert fight, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 10000>>
+			<<run cashX(10000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;very impressed@@ by the expert fight.
 			<<set $rep += 500>>
@@ -485,7 +485,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		<<set _loser.health -= 20>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the blood, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 4000>>
+			<<run cashX(4000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the blood.
 			<<set $rep += 200>>
@@ -494,7 +494,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName is so massively muscular that $he's actually impeded by $his lack of speed and flexibility. _loser.slaveName is properly afraid of _his2 strength, though, so _he2 tries to stay away as much as _he2 can. The few times their blades clash reinforces this approach, since _winner.slaveName is able to beat $his opponent's blocks out of the way with contemptuous ease. The fight takes a long, long time, but it takes more out of _loser.slaveName to survive than it takes out of _winner.slaveName to keep swinging. Eventually the gasping, weeping _loser.slaveName trips and does not struggle to _his2 feet in time. It takes _his2 tired opponent several overhead butcher's cleaves to end it.
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the show of strength, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the show of strength.
 			<<set $rep += 50>>
@@ -511,7 +511,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName walks over to the bleeding out slave and quickly cuts _his2 throat.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(slaveCost, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -520,7 +520,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName takes an extremely simple shortcut to victory. The instant the fight starts, $he slices _loser.slaveName right across _his2 huge tits, which are so large they cannot properly be defended. _loser.slaveName reflexively drops _his2 sword to clasp _his2 hands over _his2 ruined breasts, gushing blood<<if _loser.boobsImplant > 400>> and implant fluid<</if>>. _winner.slaveName's follow-up is neither artful nor particularly well planned, but it is effective. $He hits the distracted _girl2's neck from the side, almost but not quite separating _his2 head from _his2 body.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(slaveCost, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -529,7 +529,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName wants to live badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he furiously swings for _loser.slaveName's face. _loser.slaveName reflexively raises _his2 sword to block, at which point _winner.slaveName simply kicks _him2 in the dick. _loser.slaveName goes down like a marionette with cut strings, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes. _winner.slaveName walks over to the prostrate slave and cuts _his2 throat without much trouble.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -538,7 +538,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 		_winner.slaveName wants to live badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he furiously swings for _loser.slaveName's face. _loser.slaveName reflexively raises _his2 sword to block, at which point _winner.slaveName simply kicks _him2 in the cunt. _loser.slaveName goes down like a marionette with cut strings, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes. _winner.slaveName walks over to the prostrate slave and cuts _his2 throat without much trouble.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy kill.
 			<<set $rep += 100>>
@@ -662,7 +662,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			<<set _winner.health -= 80>>
 			<<if $pitAudience == "paid">>
 				The audience is awestruck by the blind $girl's triumph, and your @@.yellowgreen;cut of the betting@@ is enormous.
-				<<set $cash += 50000>>
+				<<run cashX(50000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;awestruck@@ by the blind $girl's triumph.
 				<<set $rep += 2000>>
@@ -671,7 +671,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			_winner.slaveName is so massively muscular that $he's actually impeded by $his lack of speed and flexibility. The _animal.species is suitably cautious, and it does its best to avoid $his sword. The two go back and forth for a while — the slave slashing and swinging, the animal leaping out of the way. $activeSlave.slaveName finally manages to get the better of the _animal.species, though, and manages to catch the tip of $his sword on the animal's leg. With a loud <<switch _animal.type>><<case "canine">>yelp<<case "hooved">>whinny<<case "feline">>howl<</switch>>, the _animal.species stumbles back, giving the slave a chance to bring $his sword down in an overhead swing, nearly removing the _animal.species's head.
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the show of strength, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 1000>>
+				<<run cashX(1000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the show of strength.
 				<<set $rep += 50>>
@@ -682,7 +682,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			The _animal.species isn't aware that its opponent is blind, and either way, it wouldn't have cared. It slowly paces around the flailing _loser.slaveName, looking for an opening. Seeing one, the _animal.species <<if _animal.type == "hooved">>rushes<<else>>lunges<</if>> at $him, ending $his life in one fell swoop.
 			<<if $pitAudience == "paid">>
 				The audience found the fight embarrassing, and your @@.yellowgreen;cut of the betting@@ is pitiful.
-				<<set $cash += 40>>
+				<<run cashX(40, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.red;annoyed@@ by this waste of a fight.
 				<<set $rep -= 20>>
@@ -706,7 +706,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			With a <<switch _animal.type>><<case "canine" "feline">>growl<<case "hooved">>snort<</switch>>, the _animal.species quickly finishes $him off<<if _animal.type == "hooved">> with a kick to the head<</if>>.
 			<<if $pitAudience == "paid">>
 				The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-				<<set $cash += 2000>>
+				<<run cashX(2000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				the audience is @@.green;not very impressed@@ by this easy kill.
 				<<set $rep += 100>>
@@ -715,7 +715,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 			_loser.slaveName's tits are too big to possibly defend, so $he can't help but watch in horror as the _animal.species lunges at $him, <<switch _animal.type>><<case "canine" "feline">>fangs and claws out<<case "hooved">>headfirst<</switch>>. _loser.slaveName's reflexively drops _his2 sword to clasp _his2 hands over _his2 ruined breasts, gushing blood<<if _loser.boobsImplant > 400>> and implant fluid<</if>>. The _animal.species follows up with a <<switch _animal.type>><<case "canine" "feline">>fierce bite to one of $his legs, causing $him to collapse. A second later, the animal has finished $him off.<<case "hooved">>swift kick to the head, causing $him to drop like a rock. Another blow to the head finishes $him off.<</switch>>
 			<<if $pitAudience == "paid">>
 				The audience is not very impressed by this easy kill, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-				<<set $cash += 2000>>
+				<<run cashX(2000, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;not very impressed@@ by this easy kill.
 				<<set $rep += 100>>
@@ -725,7 +725,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 				_loser.slaveName is reasonably confident in $his fighting abilities, but $he isn't sure how to go about attacking the _animal.species. $He decides to open with a series of wide horizontal slashes, but the beast manages to stay out of range of $his sword. Realizing this isn't working, $he lunges at the animal, leaving $his side exposed. The _animal.species sees this and <<switch _animal.type>><<case "canine" "feline">>leaves some @@.red;deep claw marks in $his side.@@ Bleeding<<case "hooved">>headbutts $him as hard as it can, sending $him flying into the side of $pitName. Battered<</switch>> and unable to stand, $activeSlave.slaveName can do little to stop the _animal.species from finishing $him off with a <<switch _animal.type>><<case "canine">>fierce bite of its fangs to $his throat.<<case "feline">>ferocious swipe of its claws to $his throat.<<case "hooved">>swift kick to the head.<</switch>>
 				<<if $pitAudience == "paid">>
 					The audience is reasonably impressed by the blood, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-					<<set $cash += 4000>>
+					<<run cashX(4000, "pit")>>
 				<<elseif $pitAudience == "free">>
 					The audience is @@.green;reasonably impressed@@ by the blood.
 					<<set $rep += 200>>
@@ -739,7 +739,7 @@ In any case, <<if $pitAnimal == 0>>both of the slaves have<<else>>the slave and
 				<</switch>>
 				<<if $pitAudience == "paid">>
 					The audience is reasonably impressed by the violence, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-					<<set $cash += 4000>>
+					<<run cashX(4000, "pit")>>
 				<<elseif $pitAudience == "free">>
 					The audience is @@.green;reasonably impressed@@ by the violence.
 					<<set $rep += 200>>
diff --git a/src/uncategorized/seNonlethalPit.tw b/src/uncategorized/seNonlethalPit.tw
index 5f43b9c59d6..a8b9834a8b5 100644
--- a/src/uncategorized/seNonlethalPit.tw
+++ b/src/uncategorized/seNonlethalPit.tw
@@ -364,7 +364,7 @@
 		_winner.slaveName and _loser.slaveName are both blind, making the fight a staredown. Neither slave wants to make the first move, especially with the drowning cacophony coming from the jeering crowd. Slowly, _winner.slaveName moves forward, waving feeling for $his opponent before $he $himself gets found. _loser.slaveName's hand meets _winner.slaveName's and the two move to grab each other in a headlock. The two slaves violently thrash against each other, suffering more and more strikes as the struggle goes on. Eventually, _loser.slaveName can take no more and releases _his2 grip on _winner.slaveName neck. It takes a moment for _winner.slaveName to stop wrestling the submitting _loser.slaveName and accept $his victory.
 		<<if $pitAudience == "paid">>
 			The audience is surprised by the sudden wrestling match, and your @@.yellowgreen;cut of the betting@@ is modest.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;surprised@@ by the impromptu wrestling match.
 			<<set $rep += 50>>
@@ -373,7 +373,7 @@
 		Upon your word the two combatants approach each other. _winner.slaveName keeps $his artificial limbs up in a protective position. _loser.slaveName probes $him with some light blows, puzzled by this ironclad defense. Gradually, _he2 hits harder and harder, _his2 opponent grunting under the impacts but holding steady. Finally, _loser.slaveName overcommits to a body blow, and _winner.slaveName grips _his2 forearm. That is the end. The augmented grip is effectively unbreakable, and _winner.slaveName uses it to pull $his opponent in and grab _his2 neck with the other hand, using it to exert just the right amount of pressure to choke _him2 out harmlessly. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 100>>
@@ -384,7 +384,7 @@
 		Upon your word the two combatants approach each other. _winner.slaveName keeps $his advanced cybernetic limbs up in a protective position. _loser.slaveName probes $him with some light blows, puzzled by this ironclad defense. Gradually, _he2 hits harder and harder, _his2 opponent grunting under the impacts but holding steady. Finally, _loser.slaveName tires, gets off balance, and _winner.slaveName manages to grab _his2 forearm. _winner.slaveName's limbs emit an electric shock that temporarily incapacitates $his opponent. _winner.slaveName uses $his grip to pull $his stunned opponent in and grab _his2 neck with the other hand, using it to exert just the right amount of pressure to choke _him2 out harmlessly. Though the fight was short,
 		<<if $pitAudience == "paid">>
 			the audience is quite impressed by the display, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			the audience is @@.green;very impressed@@ by the display.
 			<<set $rep += 100>>
@@ -395,7 +395,7 @@
 		_winner.slaveName centers $himself and hones in on _loser.slaveName's rapid breath. $He readies $himself, knowing $he has a single chance to win. With heavy steps, _loser.slaveName rushes $him, fully prepared to tackle the helpless combatant. _winner.slaveName gambles everything on a single high punch, a strike that slams _loser.slaveName's undefended neck. _loser.slaveName falls to the ground before the panicking _winner.slaveName, who quickly pins the coughing loser.
 		<<if $pitAudience == "paid">>
 			The audience is awestruck by the blind $girl's triumph, and your @@.yellowgreen;cut of the betting@@ is enormous.
-			<<set $cash += 4000>>
+			<<run cashX(4000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;awestruck@@ by the blind $girl's triumph.
 			<<set $rep += 200>>
@@ -404,7 +404,7 @@
 		_winner.slaveName grins at _loser.slaveName's random swings and poor form. $He centers in on $his favorite part of _loser.slaveName's body before rushing between _his2 strikes and tackling _him2 to the ground. _loser.slaveName lays there, helpless to stop _winner.slaveName from molesting _him2.
 		<<if $pitAudience == "paid">>
 			The audience found the fight embarrassing, and your @@.yellowgreen;cut of the betting@@ is pitiful.
-			<<set $cash += 40>>
+			<<run cashX(40, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.red;annoyed@@ by this lack of a fight.
 			<<set $rep -= 20>>
@@ -414,7 +414,7 @@
 			_winner.slaveName wants to win, and $he opens the fight with a furious attack. _loser.slaveName manages to get _his2 forearms up, blocking a few blows, but by doing so leaves _his2 abdomen open and obscures _his2 vision enough that _he2 is unprepared for the following kidney strike, which brings _him2 gasping to one knee. _winner.slaveName lets _him2 rise just a little before delivering a calculated hard right that sends _loser.slaveName to the mat.
 			<<if $pitAudience == "paid">>
 				The audience is not very impressed by this execution, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-				<<set $cash += 500>>
+				<<run cashX(500, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;not very impressed@@ by this execution.
 				<<set $rep += 25>>
@@ -424,7 +424,7 @@
 			<<set _loser.health -= 10>>
 			<<if $pitAudience == "paid">>
 				The audience is reasonably impressed by the beating, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-				<<set $cash += 100>>
+				<<run cashX(100, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;reasonably impressed@@ by the beating.
 				<<set $rep += 50>>
@@ -436,7 +436,7 @@
 		<<set _loser.health -= 50>>
 		<<if $pitAudience == "paid">>
 			The audience is very impressed by the showdown, and your @@.yellowgreen;cut of the betting@@ is good.
-			<<set $cash += 1500>>
+			<<run cashX(1500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;very impressed@@ by the showdown.
 			<<set $rep += 75>>
@@ -445,7 +445,7 @@
 		_loser.slaveName spies an easy win against _his2 massively bloated opponent and rushes in to topple _winner.slaveName. In an effort to defend $himself, _winner.slaveName hoists $his belly and turns suddenly, accidentally impacting _loser.slaveName with $his massive middle and knocking _him2 to the ground. Seeing an opportunity, _winner.slaveName releases $his grip and slams $his weighty womb down on _loser.slaveName, bashing the wind out of _him2. _loser.slaveName struggles to slip out from under the mass, but the weight is too great and _he2 passes out.
 		<<if $pitAudience == "paid">>
 			The audience is impressed by this absurd win, and your @@.yellowgreen;cut of the betting@@ is reasonably.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;impressed@@ by this absurd win.
 			<<set $rep += 50>>
@@ -456,7 +456,7 @@
 		<<set _winner.health -= 10>>
 		<<if $pitAudience == "paid">>
 			The audience is quite impressed by the expert fight, and your @@.yellowgreen;cut of the betting@@ is quite good.
-			<<set $cash += 2000>>
+			<<run cashX(2000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;very impressed@@ by the expert fight.
 			<<set $rep += 100>>
@@ -466,7 +466,7 @@
 		<<set _loser.health -= 10>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the takedown, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the takedown.
 			<<set $rep += 50>>
@@ -476,7 +476,7 @@
 		<<set _loser.health -= 10, _loser.eyebrowPiercing = 0>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the gory spectacle, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the gory spectacle.
 			<<set $rep += 50>>
@@ -486,7 +486,7 @@
 		<<set _loser.health -= 10>>
 		<<if $pitAudience == "paid">>
 			The audience is reasonably impressed by the show of strength, and your @@.yellowgreen;cut of the betting@@ is reasonable.
-			<<set $cash += 1000>>
+			<<run cashX(1000, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;reasonably impressed@@ by the show of strength.
 			<<set $rep += 50>>
@@ -495,7 +495,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he quickly knees _loser.slaveName in the stomach. The massively swollen _loser.slaveName goes down with a loud thud and plenty of jiggling. _winner.slaveName gloats over the struggling _loser.slaveName watching as _he2 is unable to pull _his2 bloated form off the ground.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 50>>
@@ -504,7 +504,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely simple shortcut to victory. The instant the fight starts, $he hits _loser.slaveName right in _his2 huge tits, as hard as $he can. This is a sucker punch of the worst kind; _loser.slaveName's boobs are so big that _he2 has no real chance of defending them. _He2 gasps with pain and wraps _his2 arms around _his2 aching bosom, giving _winner.slaveName a clear opening to deliver a free and easy blow to the jaw that sends the poor top-heavy slave to the mat. Any chance of _loser.slaveName rising is extinguished by _his2 breasts; it takes _him2 so long to muster an attempt to get up that _winner.slaveName can rain hits on _him2 while _he2 does.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -513,7 +513,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely brutal shortcut to victory. The instant the fight starts, $he furiously goes for _loser.slaveName's face. _loser.slaveName defends _himself2 with _his2 arms, at which point _winner.slaveName delivers a mighty kick to the dick. _loser.slaveName goes down like a marionette with cut strings, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes. _winner.slaveName winds up to kick _him2 again but hesitates, wondering whether it's even necessary.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -522,7 +522,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely unpleasant shortcut to victory. The instant the fight starts, $he furiously goes for _loser.slaveName's eyes, hands forming claws. _loser.slaveName defends _himself2 with _his2 arms, at which point _winner.slaveName delivers a mighty cunt punt. _loser.slaveName goes straight down, _his2 mouth soundlessly opening and closing and tears leaking from _his2 closed eyes while _his2 hands desperately shield _his2 outraged pussy. _winner.slaveName follows _him2 down and puts the unresisting girl's head in a simple lock.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -531,7 +531,7 @@
 		_winner.slaveName wants to win badly enough that $he takes an extremely unpleasant shortcut to victory. The instant the fight starts, $he furiously goes for _loser.slaveName's eyes, hands forming claws. _loser.slaveName defends _himself2 with _his2 arms, at which point _winner.slaveName delivers a clenched fist to _loser.slaveName's throat. _loser.slaveName staggers back, wheezing for breath with tears leaking from _his2 closed eyes. _winner.slaveName takes advantage of _loser.slaveName's vulnerability to quickly trip and pin the coughing loser.
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this easy win, and your @@.yellowgreen;cut of the betting@@ is unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this easy win.
 			<<set $rep += 25>>
@@ -1054,7 +1054,7 @@
 			$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.@@
-			<<set $cash += 2500>>
+			<<run cashX(2500, "pit")>>
 			<<elseif $pitAudience == "free">>
 				The audience is @@.green;fairly impressed@@ by this impressive display of sportsmanship.
 				<<set $rep += 100>>
@@ -1069,7 +1069,7 @@
 		<</if>>
 		<<if $pitAudience == "paid">>
 			The audience is not very impressed by this mediocre display, and your @@.yellowgreen;cut of the betting@@ is equally unimpressive.
-			<<set $cash += 500>>
+			<<run cashX(500, "pit")>>
 		<<elseif $pitAudience == "free">>
 			The audience is @@.green;not very impressed@@ by this mediocre display.
 			<<set $rep += 25>>
diff --git a/src/uncategorized/seRecruiterSuccess.tw b/src/uncategorized/seRecruiterSuccess.tw
index 564baf755b3..bf642b1b789 100644
--- a/src/uncategorized/seRecruiterSuccess.tw
+++ b/src/uncategorized/seRecruiterSuccess.tw
@@ -250,13 +250,13 @@ Your recruiter $Recruiter.slaveName has succeeded; $he's convinced a desperate o
 <span id="result">
 <<if $cash >= $contractCost>>
 <<link "Enslave _him2">>
-	<<set $cash -= $contractCost>>
+	<<run cashX(forceNeg($contractCost), "slaveCost", $slaves[$i])>>
 	<<replace "#result">>
 	<<include "New Slave Intro">>
 	<</replace>>
 <</link>> //This will cost <<print cashFormat($contractCost)>>//
 <br><<link "Sell _him2 immediately">>
-	<<set $cash += $slaveCost>>
+	<<run cashX($slaveCost, "slaveTransfer", $Recruiter)>>
 	<<replace "#result">>
 	$activeSlave.slaveName accepts being resold without much fuss. _He2's merely exchanged one unknown owner for another. For all _he2 knows _his2 new buyer will be less abusive than you would have been. _He2 would be less complacent if _he2 knew who _his2 buyers are; _he2'll be immured in an arcade within the hour.
 	<</replace>>
diff --git a/src/utility/birthWidgets.tw b/src/utility/birthWidgets.tw
index 557185b8d0e..118a47f9cb2 100644
--- a/src/utility/birthWidgets.tw
+++ b/src/utility/birthWidgets.tw
@@ -1081,7 +1081,7 @@
 	<<set $humiliation = 1>>
 	<<ClothingBirth>>
 	Upon completing $his show, $he reclines with $his $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>> and begins counting the credits $he bought in. In total $he made <<print cashFormat(100*_birthScene)>> and feels that business will be up in the brothel as patrons line up hoping another showing.
-	<<set $cash += 100*_birthScene>>
+	<<run cashX((100*_birthScene), "birth", $slaves[$i])>>
 
 <<case "be the Schoolteacher">>
 	<<if !canWalk($slaves[$i])>>
-- 
GitLab