diff --git a/src/cheats/mod_EditSlaveCheat.tw b/src/cheats/mod_EditSlaveCheat.tw
index 525c142dc31cd9271f0e88008b1b67a8cec44dad..318a59efc5d1fabccaf0d967e455223f78b39d2f 100644
--- a/src/cheats/mod_EditSlaveCheat.tw
+++ b/src/cheats/mod_EditSlaveCheat.tw
@@ -522,6 +522,8 @@ Custom sclera color: <<textbox "$tempSlave.sclerae" $tempSlave.sclerae>>
 	<<radiobutton "$tempSlave.teeth" "baby">> Baby
 <</if>>
 <<radiobutton "$tempSlave.teeth" "pointy">> Pointy
+<<radiobutton "$tempSlave.teeth" "fangs">> Fangs
+<<radiobutton "$tempSlave.teeth" "fang">> Fang
 <<radiobutton "$tempSlave.teeth" "crooked">> Crooked
 <<radiobutton "$tempSlave.teeth" "gapped">> Gapped
 <<radiobutton "$tempSlave.teeth" "straightening braces">> Straightening Braces
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index b4477b15319efc168ab8a48ba3aac1978ece791f..7ab16f23365a706197b52b04fc4edabbf5a0c02f 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -2225,6 +2225,8 @@
 		<<radiobutton "$tempSlave.teeth" "baby">> Baby
 	<</if>>
 	<<radiobutton "$tempSlave.teeth" "pointy">> Pointy
+	<<radiobutton "$tempSlave.teeth" "fangs">> Fangs
+	<<radiobutton "$tempSlave.teeth" "fang">> Fang
 	<<radiobutton "$tempSlave.teeth" "crooked">> Crooked
 	<<radiobutton "$tempSlave.teeth" "gapped">> Gapped
 	<<radiobutton "$tempSlave.teeth" "straightening braces">> Straightening Braces
diff --git a/src/endWeek/saServeThePublic.js b/src/endWeek/saServeThePublic.js
index 751e0227ef489b889de2f7e48658850e870a9616..8c75e23aa9c69e35b9334c36fd8b7942afea72dc 100644
--- a/src/endWeek/saServeThePublic.js
+++ b/src/endWeek/saServeThePublic.js
@@ -833,6 +833,8 @@ App.SlaveAssignment.serveThePublic = (function() {
 			r += ` The extra attention ${he} receives from ${his} ability to give toothless sucks is about balanced out by the citizens who are disgusted by it.`;
 		} else if (slave.teeth === "pointy") {
 			r += ` The extra attention ${he} receives due to ${his} sharp teeth is balanced by the citizens who are scared off by them.`;
+		} else if (slave.teeth === "fangs") {
+			r += ` The extra attention ${he} receives due to ${his} fangs is balanced by the citizens who are scared off by them.`;
 		}
 
 		if (slave.dick !== 0) {
diff --git a/src/endWeek/saWhore.js b/src/endWeek/saWhore.js
index 8b7b0670fc12654e33bdcc0c36149fa6771bfbf8..77eb9c98a065af29862900fcd6d22b9ea0e38e93 100644
--- a/src/endWeek/saWhore.js
+++ b/src/endWeek/saWhore.js
@@ -907,6 +907,8 @@ App.SlaveAssignment.whore = (function() {
 			r += ` The extra attention ${he} receives from ${his} ability to give toothless sucks is about balanced out by the customers who are disgusted by it.`;
 		} else if (slave.teeth === "pointy") {
 			r += ` The extra attention ${he} receives from ${his} terrifying mouth of sharp teeth is balanced by the customers who are scared off by them.`;
+		} else if (slave.teeth === "fangs") {
+			r += ` The extra attention ${he} receives due to ${his} prominent fangs is balanced by the customers who are scared off by them.`;
 		}
 
 		if (slave.dick !== 0) {
diff --git a/src/events/RESS/lazyEvening.js b/src/events/RESS/lazyEvening.js
index f7197cbc03837bf10aaa723cdd5f7aca9eea1a5e..462ba5758323f8ce0932e28c8019cffa67bdd24c 100644
--- a/src/events/RESS/lazyEvening.js
+++ b/src/events/RESS/lazyEvening.js
@@ -182,8 +182,12 @@ App.Events.RESSLazyEvening = class RESSLazyEvening extends App.Events.BaseEvent
 			}
 			if (eventSlave.teeth === "pointy") {
 				t.push(`Although most of your attention is focused on the intriguing drama unfolding on your wallscreen, you still feel the extreme care ${he} has to take to keep ${his} shark-like teeth clear of you.`);
+			} else if (eventSlave.teeth === "fangs") {
+				t.push(`Although most of your attention is focused on the intriguing drama unfolding on your wallscreen, you can feel the slight hesitations as ${he} takes care to not scratch you with ${his} fangs.`);
 			} else if (eventSlave.lips > 40) {
 				t.push(`${His} huge lips are soft and pillowy against you.`);
+			} else if (eventSlave.teeth === "fang") {
+				t.push(`Although most of your attention is focused on the intriguing drama unfolding on your wallscreen, you can feel the care ${he} is taking to keep ${his} fang from clipping you.`);
 			} else if (eventSlave.teeth === "gapped") {
 				t.push(`Although most of your attention is focused on the intriguing drama unfolding on your wallscreen, you can feel the slight hesitations as ${he} takes care to not pinch you between ${his} front teeth.`);
 			} else if ((eventSlave.teeth === "straightening braces") || (eventSlave.teeth === "cosmetic braces")) {
diff --git a/src/js/SlaveState.js b/src/js/SlaveState.js
index 7f969162582c014dfa9a17fadc99dfe0f11d8713..381f9e6605cabbdec98ea673e30f7015c99b242a 100644
--- a/src/js/SlaveState.js
+++ b/src/js/SlaveState.js
@@ -1106,6 +1106,8 @@ App.Entity.SlaveState = class SlaveState {
 		 * * "cosmetic braces"
 		 * * "removable"
 		 * * "pointy"
+		 * * "fangs"
+		 * * "fang"
 		 * * "baby"
 		 * * "mixed"
 		 */
diff --git a/src/js/slaveCostJS.js b/src/js/slaveCostJS.js
index 79849ba90569f875b576bc90fe8e5df8c8beec59..000d4d9ff23fd757c0c3454585975359a9f28c0e 100644
--- a/src/js/slaveCostJS.js
+++ b/src/js/slaveCostJS.js
@@ -255,6 +255,7 @@ globalThis.BeautyArray = (function() {
 				adjustBeauty("Teeth", -(3));
 				break;
 			case "gapped":
+			case "fang":
 				if (slave.faceShape === "cute") {
 					adjustBeauty("Teeth", (1));
 				} else {
@@ -269,6 +270,7 @@ globalThis.BeautyArray = (function() {
 				break;
 			case "removable":
 			case "pointy":
+			case "fangs":
 			case "baby":
 			case "mixed":
 				adjustBeauty("Teeth", -(1));
diff --git a/src/npc/interaction/fCaress.tw b/src/npc/interaction/fCaress.tw
index edffafc1990a2023198a75147928c622a07b4457..be2830bfe89b0c9dd64f2a783e9590d299ccfe3d 100644
--- a/src/npc/interaction/fCaress.tw
+++ b/src/npc/interaction/fCaress.tw
@@ -103,7 +103,14 @@ Then, you gently tilt $his <<if getSlave($AS).face > 95>>overwhelmingly stunning
 	<<else>>
 		non-existent breasts.
 	<</if>>
-	<<if (getSlave($AS).teeth == "pointy")>> $He's very careful to avoid spearing your tongue with $his sharp teeth.<</if>> $He achieves a weak orgasm before you stop caressing $him. <<if (getSlave($AS).accent >= 3)>>$He does $his best to communicate undiminished lust with $his <<= App.Desc.eyesColor(getSlave($AS))>>, since $he does not speak $language well enough to express $himself.<<elseif (!hasAnyArms(getSlave($AS))) && (!canTalk(getSlave($AS)))>>$He does $his best to communicate undiminished lust with $his <<= App.Desc.eyesColor(getSlave($AS))>>.<<elseif !canTalk(getSlave($AS))>>$He signs that $he liked that.<<else>>"That wa<<s>> fun, <<Master>>," $he <<say>>s lustfully.<</if>> $He looks at you as if $he wants more than your hands touching $him.
+	<<if (getSlave($AS).teeth == "pointy")>>
+		$He's very careful to avoid spearing your finger with $his sharp teeth.
+	<<elseif (getSlave($AS).teeth == "fangs")>>
+		$He holds perfectly still so you may trace $his fangs without getting poked.
+	<<elseif (getSlave($AS).teeth == "fang")>>
+		You give $his lone fang a little extra attention as you work.
+	<</if>>
+	$He achieves a weak orgasm before you stop caressing $him. <<if (getSlave($AS).accent >= 3)>>$He does $his best to communicate undiminished lust with $his <<= App.Desc.eyesColor(getSlave($AS))>>, since $he does not speak $language well enough to express $himself.<<elseif (!hasAnyArms(getSlave($AS))) && (!canTalk(getSlave($AS)))>>$He does $his best to communicate undiminished lust with $his <<= App.Desc.eyesColor(getSlave($AS))>>.<<elseif !canTalk(getSlave($AS))>>$He signs that $he liked that.<<else>>"That wa<<s>> fun, <<Master>>," $he <<say>>s lustfully.<</if>> $He looks at you as if $he wants more than your hands touching $him.
 <<elseif (getSlave($AS).devotion > 50)>>
 	$He accepts your touch with devotion, leaning $his head back at your gentle caress along $his face. $He leans $his body forward, pressing $himself against you, and you feel the intense heat from $his body against your
 	<<if $PC.boobs >= 1400>>
diff --git a/src/npc/interaction/fKiss.tw b/src/npc/interaction/fKiss.tw
index 46b416c20c3e17ac5b1d74814c663b4a65122daa..b89759204f93bf13569e8cac5aed477373499399 100644
--- a/src/npc/interaction/fKiss.tw
+++ b/src/npc/interaction/fKiss.tw
@@ -142,7 +142,7 @@ Then, you gently raise $his <<if getSlave($AS).face > 95>>heartrendingly beautif
 			$he exposes $himself to you, awaiting further use of $his body.
 		<</if>>
 	<<elseif getSlave($AS).devotion+getSlave($AS).trust >= 175>>
-		$His mouth accepts yours with love, matching itself perfectly to your insistent lips and tongue.<<if (getSlave($AS).teeth == "pointy")>> (Though you're quite careful around $his sharp dentition.)<</if>> $He melts into you, sighing ever so gently. When you finally break the kiss, $his mouth freezes in the shape it was in when last your lips touched, and a momentary look of longing crosses $his face.<<if hasAnyArms(getSlave($AS))>> A hand reaches dumbly up to $his mouth to trace $his lips where yours last touched.<</if>>
+		$His mouth accepts yours with love, matching itself perfectly to your insistent lips and tongue.<<if (getSlave($AS).teeth == "pointy") || (getSlave($AS).teeth == "fangs") || (getSlave($AS).teeth == "fang")>> (Though you're quite careful around $his sharp dentition.)<</if>> $He melts into you, sighing ever so gently. When you finally break the kiss, $his mouth freezes in the shape it was in when last your lips touched, and a momentary look of longing crosses $his face.<<if hasAnyArms(getSlave($AS))>> A hand reaches dumbly up to $his mouth to trace $his lips where yours last touched.<</if>>
 		<<if (getSlave($AS).accent >= 3)>>
 			$He does $his best to communicate love with $his <<if canSee(getSlave($AS))>><<= App.Desc.eyesColor(getSlave($AS))>><<else>>facial expressions<</if>>, since $he does not speak $language well enough to express $himself.
 		<<elseif !hasAnyArms(getSlave($AS)) && (!canTalk(getSlave($AS)))>>
@@ -188,7 +188,7 @@ Then, you gently raise $his <<if getSlave($AS).face > 95>>heartrendingly beautif
 		$he exposes $himself to you, awaiting further use of $his body.
 	<</if>>
 <<elseif (getSlave($AS).relationship == -2)>>
-	$His mouth accepts yours with love, matching itself perfectly to your insistent lips and tongue.<<if (getSlave($AS).teeth == "pointy")>> (Though you're quite careful around $his sharp dentition.)<</if>> $He melts into you, sighing ever so gently. When you finally break the kiss, $his mouth freezes in the shape it was in when last your lips touched, and a momentary look of longing crosses $his face.<<if hasAnyArms(getSlave($AS))>> A hand reaches dumbly up to $his mouth to trace $his lips where yours last touched.<</if>>
+	$His mouth accepts yours with love, matching itself perfectly to your insistent lips and tongue.<<if (getSlave($AS).teeth == "pointy") || (getSlave($AS).teeth == "fangs") || (getSlave($AS).teeth == "fang")>> (Though you're quite careful around $his sharp dentition.)<</if>> $He melts into you, sighing ever so gently. When you finally break the kiss, $his mouth freezes in the shape it was in when last your lips touched, and a momentary look of longing crosses $his face.<<if hasAnyArms(getSlave($AS))>> A hand reaches dumbly up to $his mouth to trace $his lips where yours last touched.<</if>>
 	<<if (getSlave($AS).accent >= 3)>>
 		$He does $his best to communicate love with $his <<if canSee(getSlave($AS))>><<= App.Desc.eyesColor(getSlave($AS))>><<else>>facial expressions<</if>>, since $he does not speak $language well enough to express $himself.
 	<<elseif !hasAnyArms(getSlave($AS)) && (!canTalk(getSlave($AS)))>>
@@ -199,7 +199,7 @@ Then, you gently raise $his <<if getSlave($AS).face > 95>>heartrendingly beautif
 		"I love you, <<Master>>," $he <<say>>s dreamily.
 	<</if>>
 <<elseif (getSlave($AS).devotion > 50) && (getSlave($AS).fetish == "dom") && (getSlave($AS).fetishKnown == 1) && (getSlave($AS).fetishStrength > 60)>>
-	$He giggles into you and kisses you back with vigor, $his head pressing insistently forward. The two of you make out rather aggressively<<if (getSlave($AS).teeth == "pointy")>>, $his sharp teeth drawing a bit of blood from your lips and tongue<</if>>. $He takes $his tendency towards sexual dominance right up to the edge of insubordination, $his active tongue only retreating when yours presses against it. When you finally shove $him away, $he's breathing hard through $his grin.
+	$He giggles into you and kisses you back with vigor, $his head pressing insistently forward. The two of you make out rather aggressively<<if (getSlave($AS).teeth == "pointy")>>, $his sharp teeth drawing a bit of blood from your lips and tongue<<elseif (getSlave($AS).teeth == "fangs")>>, $his fangs drawing a bit of blood from your lips and togue<<elseif (getSlave($AS).teeth == "fang")>>, $his pointy fang drawing a bit of blood from your lips and togue<</if>>. $He takes $his tendency towards sexual dominance right up to the edge of insubordination, $his active tongue only retreating when yours presses against it. When you finally shove $him away, $he's breathing hard through $his grin.
 	<<if (getSlave($AS).accent >= 3)>>
 		$He does $his best to communicate excitement with $his <<if canSee(getSlave($AS))>><<= App.Desc.eyesColor(getSlave($AS))>><<else>>facial expressions<</if>>, since $he does not speak $language well enough to express $himself.
 	<<elseif !hasAnyArms(getSlave($AS)) && (!canTalk(getSlave($AS)))>>
@@ -232,6 +232,10 @@ Then, you gently raise $his <<if getSlave($AS).face > 95>>heartrendingly beautif
 	<</if>>
 	<<if (getSlave($AS).teeth == "pointy")>>
 		$He's very careful to avoid spearing your tongue with $his sharp teeth.
+	<<elseif (getSlave($AS).teeth == "fangs")>>
+		$He's very careful to avoid spearing your tounge with $his fangs.
+	<<elseif (getSlave($AS).teeth == "fang")>>
+		$He's very careful to avoid poking you with $his fang.
 	<</if>>
 	$He achieves a weak orgasm before you tire of making out with $him.
 	<<if (getSlave($AS).accent >= 3)>>
@@ -244,7 +248,15 @@ Then, you gently raise $his <<if getSlave($AS).face > 95>>heartrendingly beautif
 		"That wa<<s>> fun, <<Master>>," $he <<say>>s lustfully.
 	<</if>>
 <<elseif (getSlave($AS).devotion > 50)>>
-	$His mouth accepts yours with devotion, matching itself carefully to your insistent lips and tongue.<<if (getSlave($AS).teeth == "pointy")>> $He is exquisitely careful to keep $his sharp teeth clear of you.<</if>> $He presses $himself against you, $his warmth wonderful against your
+	$His mouth accepts yours with devotion, matching itself carefully to your insistent lips and tongue.
+	<<if (getSlave($AS).teeth == "pointy")>>
+		$He is exquisitely careful to keep $his sharp teeth clear of you.
+	<<elseif (getSlave($AS).teeth == "fangs")>>
+		$He is exquisitely careful to keep $his fangs from poking you.
+	<<elseif (getSlave($AS).teeth == "fang")>>
+		$He is exquisitely careful to keep $his fang from getting into trouble.
+	<</if>>
+	$He presses $himself against you, $his warmth wonderful against your
 	<<if $PC.boobs >= 1400>>
 		expansive <<if $PC.boobsImplant/$PC.boobs >= .60>>firm<<else>>soft<</if>> chest.
 	<<elseif $PC.boobs >= 1200>>
diff --git a/src/npc/interaction/fLips.tw b/src/npc/interaction/fLips.tw
index d535ca8b2f58b9441dfb1dc4f8b016a397c77937..5c674dfa777d8631e0ba946634f91965fcd7ba9d 100644
--- a/src/npc/interaction/fLips.tw
+++ b/src/npc/interaction/fLips.tw
@@ -149,15 +149,55 @@ You tell <<= getSlave($AS).slaveName>> to
 	<</if>>
 <</if>>
 
-<<if (getSlave($AS).teeth == "pointy") || (getSlave($AS).teeth == "straightening braces") || (getSlave($AS).teeth == "cosmetic braces")>>
+<<if ["pointy", "fangs", "fang", "straightening braces", "cosmetic braces"].includes(getSlave($AS).teeth)>>
 	<<if (getSlave($AS).skill.oral >= 100)>>
-		$He's so orally skilled that $he had the confidence to lightly graze you with $his <<if (getSlave($AS).teeth == "pointy")>>sharp teeth<<else>>braces<</if>> on occasion, a delightfully scary sensation.
+		$He's so orally skilled that $he had the confidence to lightly graze you with
+		<<if (getSlave($AS).teeth == "pointy")>>
+			$his sharp teeth
+		<<elseif (getSlave($AS).teeth == "fangs")>>
+			a fang
+		<<elseif (getSlave($AS).teeth == "fang")>>
+			$his fang
+		<<else>>
+			$his braces
+		<</if>>
+		on occasion, a delightfully scary sensation.
 	<<elseif (getSlave($AS).skill.oral > 30)>>
-		$He's sufficiently orally skilled that $he managed to accomplish all that without $his <<if (getSlave($AS).teeth == "pointy")>>sharp teeth<<else>>braces<</if>> contacting your <<if ($PC.dick != 0)>>dick<<else>>pussy<</if>> once.
+		$He's sufficiently orally skilled that $he managed to accomplish all that without 
+		<<if (getSlave($AS).teeth == "pointy")>>
+			$his sharp teeth
+		<<elseif (getSlave($AS).teeth == "fangs")>>
+			any fangs
+		<<elseif (getSlave($AS).teeth == "fang")>>
+			$his fang
+		<<else>>
+			$his braces
+		<</if>>
+		contacting your <<if ($PC.dick != 0)>>dick<<else>>pussy<</if>> once.
 	<<elseif (getSlave($AS).skill.oral > 10)>>
-		With $his basic oral skills, $he accidentally grazed you with $his <<if (getSlave($AS).teeth == "pointy")>>sharp teeth<<else>>braces<</if>> a few times, leaving your <<if ($PC.dick != 0)>>dick<<else>>pussy<</if>> slightly the worse for wear.
+		With $his basic oral skills, $he accidentally grazed you with $his
+		<<if (getSlave($AS).teeth == "pointy")>>
+			sharp teeth
+		<<elseif (getSlave($AS).teeth == "fangs")>>
+			fangs
+		<<elseif (getSlave($AS).teeth == "fang")>>
+			fang
+		<<else>>
+			braces
+		<</if>>
+		a few times, leaving your <<if ($PC.dick != 0)>>dick<<else>>pussy<</if>> slightly the worse for wear.
 	<<else>>
-		Since $he is orally unskilled, you were sporting with your <<if ($PC.dick != 0)>>dick<<else>>pussy<</if>> by using $his mouth. $He did $his best to keep $his <<if (getSlave($AS).teeth == "pointy")>>sharp teeth<<else>>braces<</if>> off you, but you're bleeding a bit down there.
+		Since $he is orally unskilled, you were sporting with your <<if ($PC.dick != 0)>>dick<<else>>pussy<</if>> by using $his mouth. $He did $his best to keep $his
+		<<if (getSlave($AS).teeth == "pointy")>>
+			sharp teeth off
+		<<elseif (getSlave($AS).teeth == "fangs")>>
+			fangs out of
+		<<elseif (getSlave($AS).teeth == "fang")>>
+			fang out of
+		<<else>>
+			braces off
+		<</if>>
+		you, but you're bleeding a bit down there.
 	<</if>>
 <</if>>
 
diff --git a/src/uncategorized/remoteSurgery.tw b/src/uncategorized/remoteSurgery.tw
index b02a7a14d4d881d79b56c9ec7893ac4cc52573c8..26cb1c8f09b086645783c67559b8e397891b90c9 100644
--- a/src/uncategorized/remoteSurgery.tw
+++ b/src/uncategorized/remoteSurgery.tw
@@ -623,6 +623,27 @@
 						[[Normal dental implants|Surgery Degradation][getSlave($AS).teeth = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10),$surgeryType = "oral"]]
 					<</if>>
 				</div>
+			<<case "fangs">>
+				$His upper canines have been replaced with sturdy, realistic implants that can only be described as vampiric.
+				<div class="choices">
+					<<if ($seeExtreme == 1) && (getSlave($AS).indentureRestrictions < 1)>>
+						[[Replace them with removable prosthetics|Surgery Degradation][getSlave($AS).teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "teeth"]] |
+						[[Remove a fang|Surgery Degradation][getSlave($AS).teeth = "fang",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "fang"]] |
+						[[Normal dental implants|Surgery Degradation][getSlave($AS).teeth = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10),$surgeryType = "oral"]]
+					<</if>>
+				</div>
+			<<case "fang">>
+				A single one of $his upper canines has been replaced with a sturdy, realistic implant shaped like a fang.
+				<<if (getSlave($AS).lips <= 50)>>
+					It is occasionally visible over $his lower lip.
+				<</if>>
+				<div class="choices">
+					<<if ($seeExtreme == 1) && (getSlave($AS).indentureRestrictions < 1)>>
+						[[Replace them with removable prosthetics|Surgery Degradation][getSlave($AS).teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "teeth"]] |
+						[[Add another fang|Surgery Degradation][getSlave($AS).teeth = "fangs",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "fangs"]] |
+						[[Normal dental implants|Surgery Degradation][getSlave($AS).teeth = "normal",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),10),$surgeryType = "oral"]]
+					<</if>>
+				</div>
 			<<case "baby">>
 				$He has baby teeth.
 				<div class="choices">
@@ -647,7 +668,9 @@
 					[[Unnecessary braces|Surgery Degradation][getSlave($AS).teeth = "cosmetic braces",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)),$surgeryType = "braces"]]
 					<<if ($seeExtreme == 1) && (getSlave($AS).indentureRestrictions < 1)>>
 						| [[Replace them with removable prosthetics|Surgery Degradation][getSlave($AS).teeth = "removable",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "teeth"]] |
-						[[Replace them with sharp teeth|Surgery Degradation][getSlave($AS).teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "sharp"]]
+						[[Replace them with sharp teeth|Surgery Degradation][getSlave($AS).teeth = "pointy",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "sharp"]] | 
+						[[Replace them with fangs|Surgery Degradation][getSlave($AS).teeth = "fangs",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "fangs"]] | 
+						[[Add a fang|Surgery Degradation][getSlave($AS).teeth = "fang",cashX(forceNeg($surgeryCost), "slaveSurgery", getSlave($AS)), surgeryDamage(getSlave($AS),20),$surgeryType = "fang"]] | 
 					<</if>>
 				</div>
 		<</switch>>
diff --git a/src/uncategorized/saLongTermEffects.tw b/src/uncategorized/saLongTermEffects.tw
index 5cc3b0f9f5916e160dcec5dd038278440f63cf46..c85b4107c7534a3ba1e69e1336633dcb9bcea6f5 100644
--- a/src/uncategorized/saLongTermEffects.tw
+++ b/src/uncategorized/saLongTermEffects.tw
@@ -6340,7 +6340,7 @@
 			<<= FutureSocieties.ChangePorn("TransformationFetishist", 1)>>
 			<<set _transformed = 1>>
 		<</if>>
-		<<if (isAmputee($slaves[$i])) || ($slaves[$i].waist < -95) || ($slaves[$i].teeth == "pointy") || ($slaves[$i].teeth == "removable") || ($slaves[$i].hips == 3 && $slaves[$i].hipsImplant > 0)>>
+		<<if (isAmputee($slaves[$i])) || ($slaves[$i].waist < -95) || ($slaves[$i].teeth == "pointy") || ($slaves[$i].teeth == "fangs") || ($slaves[$i].teeth == "removable") || ($slaves[$i].hips == 3 && $slaves[$i].hipsImplant > 0)>>
 			Society @@.green;approves@@ of $his extreme surgeries; interest in $him stirs interest in transformations of all kinds.
 			<<= FutureSocieties.ChangePorn("TransformationFetishist", 1)>>
 			<<set _transformed = 1>>
diff --git a/src/uncategorized/saRecruitGirls.tw b/src/uncategorized/saRecruitGirls.tw
index be0d644b809f2e846ebf9dda0ec50403e83b743d..d5c32d07fd088896ec58e4b5cb3085f724e0874a 100644
--- a/src/uncategorized/saRecruitGirls.tw
+++ b/src/uncategorized/saRecruitGirls.tw
@@ -613,7 +613,7 @@
 		<</if>>
 	<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
 		<<if $slaves[$i].boobsImplant > 0 && $slaves[$i].buttImplant > 0 && $slaves[$i].lipsImplant > 0>>
-			<<if $slaves[$i].waist < -95 || $slaves[$i].teeth == "pointy" || !hasAllNaturalLimbs($slaves[$i]) || ($slaves[$i].vagina > -1 && $slaves[$i].dick > 6)>>
+			<<if $slaves[$i].waist < -95 || $slaves[$i].teeth == "pointy" || $slaves[$i].teeth == "fangs" || !hasAllNaturalLimbs($slaves[$i]) || ($slaves[$i].vagina > -1 && $slaves[$i].dick > 6)>>
 				<<set _seed += 4>>
 			<<else>>
 				<<set _seed += 2>>
@@ -980,7 +980,7 @@
 			<</if>>
 		<<elseif $arcologies[0].FSTransformationFetishist != "unset">>
 			<<if $slaves[$i].boobsImplant > 0 && $slaves[$i].buttImplant > 0 && $slaves[$i].lipsImplant > 0>>
-				<<if $slaves[$i].waist < -95 || $slaves[$i].teeth == "pointy" || !hasAllNaturalLimbs($slaves[$i]) || ($slaves[$i].vagina > -1 && $slaves[$i].dick > 6)>>
+				<<if $slaves[$i].waist < -95 || $slaves[$i].teeth == "pointy" || $slaves[$i].teeth == "fangs" || !hasAllNaturalLimbs($slaves[$i]) || ($slaves[$i].vagina > -1 && $slaves[$i].dick > 6)>>
 					A series of cleverly staged publicity events at various businesses in the arcology subtly focuses on $his better-than-natural physiology in each one.
 				<<elseif $seeExtreme == 1>>
 					$His augmented body certainly has its appeals, yet as you look over this week's publicity recap you begin to wonder if $he could be still more extremely //transformed//.
diff --git a/src/uncategorized/surgeryDegradation.tw b/src/uncategorized/surgeryDegradation.tw
index e0ec94d70a3dc447140fe4881daa4235f9692293..668885da7e9cf893005b4339fb583ca45263f9c1 100644
--- a/src/uncategorized/surgeryDegradation.tw
+++ b/src/uncategorized/surgeryDegradation.tw
@@ -1623,6 +1623,36 @@ As the remote surgery's long recovery cycle completes,
 		<<set getSlave($AS).trust -= 10, getSlave($AS).devotion -= 10>>
 	<</if>>
 
+<<case "fangs">>
+	<<if getSlave($AS).fetish == "mindbroken">>
+		$He clearly feels quite normal except for a vague ache around $his jaw, yet fails to understand that $his teeth have changed shape. Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@
+	<<elseif (getSlave($AS).devotion > 50)>>
+		$He clearly feels quite normal except for a vague ache around $his jaw. It takes a good while for $him to figure out what has happened, but eventually $he gets enough sensation in $his mouth to realize that $he now has a pair of fangs. $He seems doubtful, but then works up $his courage and bares them <<if canSee(getSlave($AS))>>at a mirror<<else>> so you may see<</if>>. $He menaces <<if canSee(getSlave($AS))>>$himself<</if>> for a while before laughing quietly. Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@
+	<<elseif (getSlave($AS).devotion > 20)>>
+		$He clearly feels quite normal except for a vague ache around $his jaw. It takes a good while for $him to figure out what has happened, but eventually $he gets enough sensation in $his mouth to realize that $he now has teeth fit for a carnivore. $He gasps with shock, but eventually $his shoulders slump and $he tries to carry on. $He isn't much affected mentally. Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@
+	<<else>>
+		$He clearly feels quite normal except for a vague ache around $his jaw. It takes a good while for $him to figure out what has happened, but eventually $he gets enough sensation in $his mouth to realize that $he now has a pair of fangs. $He gasps with shock, accidentally gets $his lip in the way in $his anguish, bites $himself, and starts gagging and spitting blood. @@.mediumorchid;The surgical invasion has filled $him with horror and anger.@@ Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@ $He is @@.gold;terribly afraid@@ of your total power over $his body.
+		<<set getSlave($AS).trust -= 10, getSlave($AS).devotion -= 10>>
+	<</if>>
+
+<<case "fang">>
+	<<if getSlave($AS).fetish == "mindbroken">>
+		$He clearly feels quite normal except for a vague ache around $his jaw, yet fails to understand that $his teeth have changed shape. Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@
+	<<elseif (getSlave($AS).devotion > 50)>>
+		$He clearly feels quite normal except for a vague ache around $his jaw. It takes a good while for $him to figure out what has happened, but eventually $he gets enough sensation in $his mouth to realize that $he now has a fang. $He seems doubtful,
+		<<if getSlave($AS).lips <= 50>>
+			but then closes $his mouth and finds that it hangs cutely over $his lip. $He giggles at the absurdity of it.
+		<<else>>
+			especially when he tries to close $his mouth only to find $his fat lip keeps meeting the tip of $his tooth.
+		<</if>>
+		Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@
+	<<elseif (getSlave($AS).devotion > 20)>>
+		$He clearly feels quite normal except for a vague ache around $his jaw. It takes a good while for $him to figure out what has happened, but eventually $he gets enough sensation in $his mouth to realize that $he now has a fang. $He gasps with shock, but eventually $his shoulders slump and $he tries to carry on. $He isn't much affected mentally. Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@
+	<<else>>
+		$He clearly feels quite normal except for a vague ache around $his jaw. It takes a good while for $him to figure out what has happened, but eventually $he gets enough sensation in $his mouth to realize that $he now has a fang $He gasps with shock, accidentally gets $his lip in the way in $his anguish, bites $himself, and starts gagging and spitting blood. @@.mediumorchid;The surgical invasion has filled $him with horror and anger.@@ Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@ $He is @@.gold;terribly afraid@@ of your total power over $his body.
+		<<set getSlave($AS).trust -= 10, getSlave($AS).devotion -= 10>>
+	<</if>>
+
 <<case "oral">>
 	$He clearly feels quite normal except for a vague ache around $his jaw. $He <<if canSee(getSlave($AS))>>checks $himself in the mirror<<else>>runs $his tongue over $his teeth<</if>> repeatedly before accepting that nothing too unusual has happened, and that $he now appears to have a fully functional set of normal teeth. Though $he's surprised that nothing outlandish has been done, $he carries on as usual. Since the surgery was moderately invasive, @@.red;$his health has been somewhat affected.@@