diff --git a/src/js/sexActsJS.js b/src/js/sexActsJS.js
index 5342a4f4806319a91ac81dce73412f06e9c77bb7..0141ff1c5e34ca98cdfe291eef3502c094f84623 100644
--- a/src/js/sexActsJS.js
+++ b/src/js/sexActsJS.js
@@ -495,6 +495,9 @@ globalThis.actX = function(slave, act, count = 1) {
 		case "vaginal":
 			V.vaginalTotal += count;
 			break;
+		case "abortions":
+			V.abortionsTotal += count;
+			break;
 		default:
 			// Act was likely entered incorrectly.
 			return;
diff --git a/src/npc/generate/newSlaveIntro.js b/src/npc/generate/newSlaveIntro.js
index 0c618cf415c7c736798fc10a71a7cf0188021928..96267e23f3b796db859ca7f40ed4fac0dc83bbc3 100644
--- a/src/npc/generate/newSlaveIntro.js
+++ b/src/npc/generate/newSlaveIntro.js
@@ -844,8 +844,7 @@ App.UI.newSlaveIntro = function(slave) {
 
 		if (slave.breedingMark === 1) {
 			r.push(`${He} knows ${his} duty in life and playfully splays ${himself} across your desk with ${his} legs spread wide. Unfortunately, ${he} must first be unwrapped before any breeding can begin, so for the time being, ${he} rights ${himself} and makes ${his} way to your crotch to show you just how much ${he} was worth the ¤.`);
-			slave.counter.oral++;
-			V.oralTotal++;
+			actX(slave, "oral");
 		} else {
 			if (V.rulesAssistantAuto === 0) {
 				div = document.createElement("div");
@@ -904,8 +903,7 @@ App.UI.newSlaveIntro = function(slave) {
 							r.push(`with almost desperate enthusiasm. You stroke ${his} hair comfortingly as ${he} does, and inject the healing dose into ${his} shoulder. ${He} murmurs ${his} <span class="hotpink">gratitude</span> into your dick, but <span class="gold">fears</span> for ${his} pregnancy.`);
 							slave.devotion += 4;
 							slave.trust -= 10;
-							slave.counter.oral += 1;
-							V.oralTotal += 1;
+							actX(slave, "oral");
 							return r.join(" ");
 						},
 					});
@@ -928,8 +926,7 @@ App.UI.newSlaveIntro = function(slave) {
 							slave.devotion += 4;
 							slave.trust += 3;
 							TerminatePregnancy(slave);
-							slave.counter.abortions++;
-							V.abortionsTotal++;
+							actX(slave, "abortions");
 							return r.join(" ");
 						},
 					});
@@ -1146,8 +1143,7 @@ App.UI.newSlaveIntro = function(slave) {
 							}
 							r.push(`eating you out. ${He}'s badly discomfited but does ${his} best; ${he}'s <span class="mediumaquamarine">hopeful</span> that ${he} can do this, and slave life won't be so bad.`);
 							slave.trust += 4;
-							slave.counter.oral += 1;
-							V.oralTotal += 1;
+							actX(slave, "oral");
 							return r.join(" ");
 						},
 					});
@@ -1449,11 +1445,9 @@ App.UI.newSlaveIntro = function(slave) {
 							}
 							r.push(`Witnessing this display of servitude from ${his} big ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
-								slave.counter.anal += 1;
-								V.analTotal += 1;
+								actX(slave, "anal");
 							} else {
-								slave.counter.oral += 1;
-								V.oralTotal += 1;
+								actX(slave, "oral");
 							}
 							slave.devotion += 4;
 							slave.trust += 4;
@@ -1522,11 +1516,9 @@ App.UI.newSlaveIntro = function(slave) {
 							}
 							r.push(`Witnessing this display of servitude from ${his} little ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
-								slave.counter.anal += 1;
-								V.analTotal += 1;
+								actX(slave, "anal");
 							} else {
-								slave.counter.oral += 1;
-								V.oralTotal += 1;
+								actX(slave, "oral");
 							}
 							slave.devotion += 4;
 							slave.trust += 4;
@@ -1592,11 +1584,9 @@ App.UI.newSlaveIntro = function(slave) {
 							}
 							r.push(`Witnessing this display of servitude from ${his} twin ${sister2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
-								slave.counter.anal += 1;
-								V.analTotal += 1;
+								actX(slave, "anal");
 							} else {
-								slave.counter.oral += 1;
-								V.oralTotal += 1;
+								actX(slave, "oral");
 							}
 							slave.devotion += 4;
 							slave.trust += 4;
@@ -1659,11 +1649,9 @@ App.UI.newSlaveIntro = function(slave) {
 							}
 							r.push(`<span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
-								slave.counter.anal += 1;
-								V.analTotal += 1;
+								actX(slave, "anal");
 							} else {
-								slave.counter.oral += 1;
-								V.oralTotal += 1;
+								actX(slave, "oral");
 							}
 							slave.devotion += 4;
 							slave.trust += 4;
@@ -1726,11 +1714,9 @@ App.UI.newSlaveIntro = function(slave) {
 							}
 							r.push(`Witnessing this display of servitude from ${his} ${daughter2} <span class="hotpink">eases ${slave.slaveName} into ${his} new life,</span> and <span class="mediumaquamarine">gives ${him} hope</span> ${he} can find a place here.`);
 							if (slave.anus > 0 && slave.fetish !== "cumslut") {
-								slave.counter.anal += 1;
-								V.analTotal += 1;
+								actX(slave, "anal");
 							} else {
-								slave.counter.oral += 1;
-								V.oralTotal += 1;
+								actX(slave, "oral");
 							}
 							slave.devotion += 4;
 							slave.trust += 4;
@@ -1751,15 +1737,12 @@ App.UI.newSlaveIntro = function(slave) {
 										r.push(`fake`);
 									}
 									r.push(`cock down ${his} throat as far as it will go. Over the course of the next several hours, you ensure that ${he} understands the fine points of nonconsensual oral${slave.vagina > -1 ? `, vaginal,`: ``} and anal intercourse as intimately as possible. When you're finally too tired to continue,you unshackle ${his} <span class="red">bruised and bloody body</span> and ask ${him} what ${he} learned. ${His} voice hoarse from the same brutal fucking that has gaped ${his} <span class="lime">asshole</span> ${(slave.vagina > -1) ? `and <span class="lime">pussy</span>`: ``}, ${he} hesitantly replies that ${he} has <span class="hotpink">learned a great deal about true dominance,</span> before fainting on the spot from a mixture of total exhaustion and pure terror. You've taught your student well.`);
-									slave.counter.oral += 15;
-									V.oralTotal += 15;
+									actX(slave, "oral", 15);
 									slave.anus = 2;
-									slave.counter.anal += 15;
-									V.analTotal += 15;
+									actX(slave, "anal", 15);
 									if (slave.vagina > -1) {
 										slave.vagina = 2;
-										slave.counter.vaginal += 15;
-										V.vaginalTotal += 15;
+										actX(slave, "vaginal", 15);
 									}
 									if (isFertile(slave) && V.PC.dick > 0) {
 										knockMeUp(slave, 100, 0, -1, true);
@@ -1782,8 +1765,7 @@ App.UI.newSlaveIntro = function(slave) {
 									r.push(`${him} until ${his} arousal overwhelms ${his} wariness of you. Once ${he}'s finally relaxed, you climb on top of ${him}, and gently ease`);
 									if (V.PC.vagina > 0 && canPenetrate(slave)) {
 										r.push(`your pussy onto ${his} cock. ${He} shudders and moan softly as you slide yourself up and down ${his} shaft with steadily increasing speed. You keep your eyes locked on ${hers} all the while, as ${his} expression shifts from bewilderment to acceptance to ecstasy, as ${he} soon shoots ${his} seed up into you. Afterwards, you slip ${his} softening cock out of you, climb off of ${him}, and leave the exhausted and overwhelmed slave${girl} on your desk as you attend to business elsewhere. You think ${he}'s <span class="orangered">going to like it here.</span>`);
-										slave.counter.penetrative++;
-										V.penetrativeTotal++;
+										actX(slave, "penetrative");
 										if (canImpreg(V.PC, slave)) {
 											knockMeUp(V.PC, 100, 0, slave.ID, 1);
 										}
@@ -1809,15 +1791,13 @@ App.UI.newSlaveIntro = function(slave) {
 										r.push(`cock out of ${him}, climb off of ${him}, and leave the exhausted and overwhelmed slave${girl} on your desk as you attend to business elsewhere. You think ${he}'s <span class="orangered">going to like it here.</span>`);
 										if (slave.vagina > -1) {
 											VCheck.Vaginal();
-											slave.counter.vaginal++;
-											V.vaginalTotal++;
+											actX(slave, "vaignal");
 											if (isFertile(slave) && V.PC.dick > 0) {
 												knockMeUp(slave, 100, 0, -1, true);
 											}
 										} else {
 											VCheck.Anal();
-											slave.counter.anal++;
-											V.analTotal++;
+											actX(slave, "anal");
 										}
 									}
 									slave.trust += 100;
@@ -2187,8 +2167,7 @@ App.UI.newSlaveIntro = function(slave) {
 						TerminatePregnancy(slave);
 						slave.preg = -3;
 						slave.ovaries = 0;
-						slave.counter.abortions++;
-						V.abortionsTotal++;
+						actX(slave, "abortions");
 						surgeryDamage(slave, 10);
 						return r.join(" ");
 					},
@@ -2307,8 +2286,7 @@ App.UI.newSlaveIntro = function(slave) {
 						slave.ovaries = 0;
 						slave.preg = -2;
 						TerminatePregnancy(slave);
-						slave.counter.abortions++;
-						V.abortionsTotal++;
+						actX(slave, "abortions");
 						slave.vagina = -1;
 						slave.skill.vaginal = 0;
 						surgeryDamage(slave, 10);
@@ -2948,8 +2926,7 @@ App.UI.newSlaveIntro = function(slave) {
 						r.push(`on a cushion next to your chair.${He} learns obedience, but also learns that you are < span class="mediumaquamarine" > fair</span > and < span class="hotpink" > reasonable.</span >`);
 						slave.devotion += 4;
 						slave.trust += 4;
-						slave.counter.oral += 1;
-						V.oralTotal += 1;
+						actX(slave, "oral");
 						return r.join(" ");
 					},
 
@@ -3173,10 +3150,8 @@ App.UI.newSlaveIntro = function(slave) {
 										slave.devotion += 5;
 										slave.trust -= 15;
 									}
-									slave.counter.penetrative += 5;
-									V.penetrativeTotal += 5;
-									slave.counter.oral++;
-									V.oralTotal++;
+									actX(slave, "penetrative", 5);
+									actX(slave, "oral");
 
 									return r.join(" ");
 								},
@@ -3351,8 +3326,7 @@ App.UI.newSlaveIntro = function(slave) {
 												r.push(`Only once ${he} has swallowed the last of your cum do you allow ${him} to clean ${himself} up and <span class="hotpink">reflect on what ${he} just did.</span>`);
 											}
 											slave.devotion += 5;
-											slave.counter.oral++;
-											V.oralTotal++;
+											actX(slave, "oral");
 											jQuery("#introResult2").empty().append(r.join(" "));
 										}
 									));
@@ -3590,10 +3564,8 @@ App.UI.newSlaveIntro = function(slave) {
 							r.push(`Any resistance to you is <span class="mediumorchid">worn down</span> and replaced with a germ of <span class="gold">fear.</span> <span class="lime">The slave's holes are nicely stretched.</span>`);
 							slave.devotion -= 5;
 							slave.trust -= 10;
-							slave.counter.vaginal += 1;
-							V.vaginalTotal += 1;
-							slave.counter.anal += 1;
-							V.analTotal += 1;
+							actX(slave, "vaginal");
+							actX(slave, "anal");
 							slave.anus += 1;
 							slave.vagina += 1;
 
@@ -3638,8 +3610,7 @@ App.UI.newSlaveIntro = function(slave) {
 							// Written and coded by Boney M
 							slave.devotion -= 5;
 							slave.trust -= 10;
-							slave.counter.anal += 1;
-							V.analTotal += 1;
+							actX(slave, "anal");
 							slave.anus += 1;
 
 							return r.join(" ");
@@ -3710,17 +3681,14 @@ App.UI.newSlaveIntro = function(slave) {
 					result(slave) {
 						const r = [];
 						r.push(`You securely restrain your new slave${(V.dairyRestraintsSetting > 1)?`in a milking stall`:``}. A quick finger check of ${his} holes allows you to choose wisely from a selection of hollow phalluses, which push into your helpless new slave's mouth,`);
-						slave.counter.oral += 1;
-						V.oralTotal += 1;
+						actX(slave, "oral");
 						if (slave.vagina > 0) {
 							r.push(`vagina,`);
-							slave.counter.vaginal += 1;
-							V.vaginalTotal += 1;
+							actX(slave, "vaginal");
 						}
 						if (slave.anus > 0) {
 							r.push(`and squeeze into ${his} ass,`);
-							slave.counter.anal += 1;
-							V.analTotal += 1;
+							actX(slave, "anal");
 						}
 						r.push(`with no room to spare.`);
 						r.push(`Your choices attach to long tubes, and with a fiendish smile you turn a valve. The lines run white with a mixture of fluids from your other slaves, and your newest slave begins to fill.`);
@@ -3780,12 +3748,10 @@ App.UI.newSlaveIntro = function(slave) {
 						r.push(`You put a shock collar on ${him}. Its function isn't immediately obvious, at least until you test it on the lowest power setting, making ${him} jump and look at you fearfully. This concern is compounded when you throw a big dildo at ${him} and tell ${him} to rape ${himself}. ${He} gapes at you incredulously until you give ${him} a stronger jolt and peremptorily tell ${him} to`);
 						if (slave.vagina > 0) {
 							r.push(`pick it up and pound ${his} own pussy. <span class="mediumorchid">Reluctantly,</span> ${he} reaches down shakily, seats ${himself}, and slowly pushes the uncomfortably big phallus inside ${his} womanhood. ${He} starts to fuck ${himself}. Harder, you command. Wincing, ${he} works ${his} cunt faster. Harder, you repeat, giving ${him} another shock. <span class="gold">${He} begins to cry,</span> but obeys, sawing the big fake cock in and out, really raping ${himself}.`);
-							slave.counter.vaginal += 1;
-							V.vaginalTotal += 1;
+							actX(slave, "vaginal");
 						} else if (slave.anus > 0) {
 							r.push(`pick it up and pound ${his} own ass. <span class="mediumorchid">Reluctantly,</span> ${he} reaches down shakily, seats ${himself}, and gradually shoves the already-lubricated phallus into ${his} ass. It's uncomfortably big for ${his} butt, but ${he} can manage it, and slowly starts to sodomize ${himself}. Harder, you command. Wincing, ${he} fucks ${his} ass faster. Harder, you repeat, giving ${him} another shock. <span class="gold">${He} begins to cry,</span> but obeys, sawing the big fake cock in and out, really assraping ${himself}.`);
-							slave.counter.anal += 1;
-							V.analTotal += 1;
+							actX(slave, "anal");
 						} else {
 							r.push(`pick it up and facefuck ${himself}. <span class="mediumorchid">Reluctantly,</span> ${he} reaches down shakily, seats ${himself}, and slowly swallows the uncomfortably big phallus. ${He} has to start over several times as ${his} gag reflex kicks in, but ${he} finally manages to hilt it. Harder, you command. Eyes rolling fearfully, ${he} withdraws it a few`);
 							if (V.showInches === 2) {
@@ -3794,8 +3760,7 @@ App.UI.newSlaveIntro = function(slave) {
 								r.push(`centimeters`);
 							}
 							r.push(`and shoves it down ${his} throat again. Harder, you repeat, giving ${him} another shock. <span class="gold">${He} begins to weep and gag,</span> but obeys, sawing the big fake cock in and out, really molesting ${himself}.`);
-							slave.counter.oral += 1;
-							V.oralTotal += 1;
+							actX(slave, "oral");
 						}
 						slave.trust -= 10;
 						slave.devotion -= 5;
@@ -3845,8 +3810,7 @@ App.UI.newSlaveIntro = function(slave) {
 								if (slave.vagina > -1) {
 									slave.vagina = Math.clamp(slave.vagina, 3, 4);
 								}
-								slave.counter.anal += 10;
-								V.analTotal += 10;
+								actX(slave, "anal", 10);
 								assignJob(slave, "dairy");
 
 								r.push(`You order`);
@@ -3877,11 +3841,9 @@ App.UI.newSlaveIntro = function(slave) {
 								slave.anus = Math.clamp(slave.anus, 3, 4);
 								if (slave.vagina > -1) {
 									slave.vagina = Math.clamp(slave.vagina, 3, 4);
-									slave.counter.vaginal += 10;
-									V.vaginalTotal += 10;
+									actX(slave, "vaginal", 10);
 								}
-								slave.counter.anal += 10;
-								V.analTotal += 10;
+								actX(slave, "anal", 10);
 								assignJob(slave, "dairy");
 
 								r.push(`Making use of`);