From d2a74eeb5d3f57d727e89847625048b19e09a913 Mon Sep 17 00:00:00 2001
From: Andrest07 <57931603+Andrest07@users.noreply.github.com>
Date: Fri, 10 Nov 2023 15:43:24 +0700
Subject: [PATCH] Mirror TF Retention, Traumatized Eyes Toggle and Fallen Angel
 TF Cheats

---
 game/base-clothing/canvasmodel-img.twee |   2 +-
 game/base-clothing/images.twee          |   3 +-
 game/base-combat/doggy-images.twee      |   2 +-
 game/base-combat/missionary-images.twee |   2 +-
 game/base-system/mirror.twee            | 745 ++++++++++--------------
 game/base-system/overlays/cheats.twee   |   2 +
 game/base-system/transformations.twee   |  39 ++
 game/base-system/widgets.twee           |  68 +++
 8 files changed, 409 insertions(+), 454 deletions(-)

diff --git a/game/base-clothing/canvasmodel-img.twee b/game/base-clothing/canvasmodel-img.twee
index 87ff11e4f2..bf3c4c76bc 100644
--- a/game/base-clothing/canvasmodel-img.twee
+++ b/game/base-clothing/canvasmodel-img.twee
@@ -284,7 +284,7 @@ Requires prior <<selectmodel "main">>
 	<<if $possessed>>
 		<<set _modeloptions.trauma to $possessed>>
 	<<else>>
-		<<set _modeloptions.trauma to $trauma gte ($traumamax * 0.9)>>
+		<<set _modeloptions.trauma to $trauma gte ($traumamax * 0.9) or $traumatized>>
 	<</if>>
 	<<set _modeloptions.blink to $options.blinkingEnabled>>
 	<<set _modeloptions.eyes_bloodshot to $pain gte 100 and $willpowerpain is 0 or $tiredness >= C.tiredness.max>>
diff --git a/game/base-clothing/images.twee b/game/base-clothing/images.twee
index f456b0057a..6b2ae5308f 100644
--- a/game/base-clothing/images.twee
+++ b/game/base-clothing/images.twee
@@ -654,7 +654,8 @@
 	<</if>>
 
 	<!-- Eyes -->
-	<<if ($trauma gte ($traumamax * 0.9) and _diagram is 0) or $possessed>>
+	<<if ($trauma gte ($traumamax * 0.9) and _diagram is 0) or $possessed or $traumatized>>
+		<<set $traumatized to true>>
 		<<set _iris = "irisempty">>
 		<<set _trauma = "-trauma">>
 	<<else>>
diff --git a/game/base-combat/doggy-images.twee b/game/base-combat/doggy-images.twee
index 47174c36b0..d609fc9156 100644
--- a/game/base-combat/doggy-images.twee
+++ b/game/base-combat/doggy-images.twee
@@ -516,7 +516,7 @@
 				<img class="layer-sexsclera" src="img/sex/doggy/active/doggyactivesclerabloodshot.png">
 			<</if>>
 
-			<<if $trauma gte ($traumamax * 0.9) or $possessed>>
+			<<if $trauma gte ($traumamax * 0.9) or $possessed or $traumatized>>
 				<img @style="_custom_eyelenses_left_style" @class="'layer-sexeyes ' + _colourEyeLeft" src="img/sex/doggy/active/doggyactiveeyesempty.png">
 			<<else>>
 				<img @style="_custom_eyelenses_left_style" @class="'layer-sexeyes ' + _colourEyeLeft + ' anim-idle-2f'" src="img/sex/doggy/active/doggyactiveeyes.png">
diff --git a/game/base-combat/missionary-images.twee b/game/base-combat/missionary-images.twee
index 98693dd146..587e9828cb 100644
--- a/game/base-combat/missionary-images.twee
+++ b/game/base-combat/missionary-images.twee
@@ -312,7 +312,7 @@
 			<</if>>
 
 			<<run defineCustomEyeColourStyle()>>
-			<<if $trauma gte ($traumamax * 0.9) or $possessed>>
+			<<if $trauma gte ($traumamax * 0.9) or $possessed or $traumatized>>
 				<img @style="_custom_eyelenses_right_style" @class="'layer-sexeyes ' + _colourEyeRight " src="img/sex/missionary/active/activeeyesempty.png">
 			<<else>>
 				<img @style="_custom_eyelenses_right_style" @class="'layer-sexeyes ' + _colourEyeRight + ' anim-idle-2f'" src="img/sex/missionary/active/activeeyes.png">
diff --git a/game/base-system/mirror.twee b/game/base-system/mirror.twee
index bd464a17f0..a74ea343e9 100644
--- a/game/base-system/mirror.twee
+++ b/game/base-system/mirror.twee
@@ -191,7 +191,7 @@
 	<</if>>
 
 	<<if !$simpleMirror>>
-		<<if $specialTransform is 1 or $physicalTransform is 1>>
+		<<if $specialTransform is 1 or $physicalTransform is 1 or $angeltf is 1 or $fallenangeltf is 1 or $fallenangelplustf is 1 or $demontf is 1 or $wolftf is 1 or $cattf is 1 or $cowtf is 1 or $birdtf is 1 or $foxtf is 1>>
 			__Transformation__
 			<br>
 			<<link "Examine your inner self">><<set $mirrorMenu to "transformation">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
@@ -2196,8 +2196,13 @@
 <<widget "mirrorTransformation">>
 	<<link "Back">><<replace #mirror>><<mirrorMenu>><</replace>><<numberify "#passages > .passage">><<unset $mirrorMenu>><</link>>
 	<br><br>
-	Hiding parts of your Inner Self will slowly increase your Trauma over time (excludes pubes and pits).
+	/* Hiding parts of your Inner Self will slowly increase your Trauma over time (excludes pubes and pits).
 	If your Trauma gets too high, you will be unable to hide.
+	<br><br> */
+
+	__Genome Dump__
+	<br>
+	<<link "Reset Transformation">><<set $mirrorMenu to "genomedump">><<replace #mirror>><<mirrorDisplay>><</replace>><<numberify "#passages > .passage">><</link>>
 	<br><br>
 
 	<<set _angel to $transformationParts.angel>>
@@ -2210,461 +2215,272 @@
 	<<set _fox to $transformationParts.fox>>
 	<<set _traits to $transformationParts.traits>>
 
-	<div id='transformations-menu' class='grid col-2'>
-		<div id='transformations-list' class='list'>
-			<div class='tf-angel'>
-				<<if $angel gt 1>>
-					__Angel__
-					<br>
-					<<if _angel.halo isnot "disabled">>
-						<div class='tf-part-item'>
-							Halo:
-							<<listbox "_angel.halo" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Traditional" "traditional">>
-							<</listbox>>
-						</div>
-						<br>
-					<</if>>
-					<<if _angel.wings isnot "disabled">>
-						<div class='tf-part-item'>
-							Wings:
-							<<listbox "_angel.wings" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-						<br>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<div class='tf-fallen'>
-				<<if $fallenangel gt 1>>
-					__Fallen Angel__
-					<br>
-					<<if _fallen.halo isnot "disabled">>
-						<div class='tf-part-item'>
-							Halo:
-							<<listbox "_fallen.halo" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Traditional" "traditional">>
-							<</listbox>>
-						</div>
-						<br>
-					<</if>>
-					<<if _fallen.wings isnot "disabled">>
-						<div class='tf-part-item'>
-							Wings:
-							<<if $fallenangel gte 4>>
-								<<listbox "_fallen.wings" autoselect>>
-									<<option "Hide" "hidden">>
-									<<option "Default" "default">>
-									<<option "Feathered" "fallenplus">>
-								<</listbox>>
-							<<else>>
-								<<listbox "_fallen.wings" autoselect>>
-									<<option "Hide" "hidden">>
-									<<option "Default" "default">>
-								<</listbox>>
-							<</if>>
-						</div>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<div class='tf-demon'>
-				<<if $demon gt 1>>
-					__Demon__
-					<br>
-					<<if _demon.horns isnot "disabled">>
-						<div class='tf-part-item'>
-							Horns:
-							<<listbox "_demon.horns" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Classic" "classic">>
-								<<option "Succubus" "succubus">>
-							<</listbox>>
-							<<gencolourselector "_demon.horns_colour">>
-						</div>
-					<</if>>
-					<<if _demon.wings isnot "disabled">>
-						<div class='tf-part-item'>
-							Wings:
-							<<listbox "_demon.wings" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Succubus" "succubus">>
-							<</listbox>>
-							<<gencolourselector "_demon.wings_colour">>
-						</div>
-					<</if>>
-					<<if _demon.tail isnot "disabled">>
-						<div class='tf-part-item'>
-							Tail:
-							<<listbox "_demon.tail" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Classic" "classic">>
-								<<option "Succubus" "succubus">>
-							<</listbox>>
-							<<gencolourselector "_demon.tail_colour">>
-						</div>
-					<</if>>
-					<<if $demon gte 4>>
-						<div class='tf-part-item'>
-							<<if $exhibitionism gte 95>>
-								Flaunting when exposed:
-								<<listbox "_traits.flaunting" autoselect>>
-									<<option "Hide" "hidden">>
-									<<option "Default" "default">>
-								<</listbox>>
-								<<ind>>
-							<<else>>
-								<span class="black">Flaunting (requires higher exhibitionism):</span>
-								<<listbox "_traits.flaunting" autoselect>>
-									<<option "Hide" "hidden">>
-								<</listbox>>
-								<<ind>>
-							<</if>>
-						</div>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<div class='tf-cat'>
-				<<if $cat gt 1>>
-					__Cat__
-					<br>
-					<<if _cat.ears isnot "disabled">>
-						<div class='tf-part-item'>
-							Ears:
-							<<listbox "_cat.ears" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _cat.tail isnot "disabled">>
-						<div class='tf-part-item'>
-							Tail:
-							<<listbox "_cat.tail" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _cat.heterochromia isnot "disabled">>
-						<div class='tf-part-item'>
-							Heterochromia:
-							<<listbox "_cat.heterochromia" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<div class='tf-cow'>
-				<<if $cow gt 1>>
-					__Cow__
-					<br>
-					<<if _cow.horns isnot "disabled">>
-						<div class='tf-part-item'>
-							Horns:
-							<<listbox "_cow.horns" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _cow.ears isnot "disabled">>
-						<div class='tf-part-item'>
-							Ears:
-							<<listbox "_cow.ears" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Spotted black" "spotted black">>
-								<<option "Spotted brown" "spotted brown">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _cow.tail isnot "disabled">>
-						<div class='tf-part-item'>
-							Tail:
-							<<listbox "_cow.tail" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Black" "black">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<div class='tf-wolf'>
-				<<if $wolfgirl gt 1>>
-					__Wolf__
-					<br>
-					<<if _wolf.ears isnot "disabled">>
-						<div class='tf-part-item'>
-							Ears:
-							<<listbox "_wolf.ears" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Feral" "feral">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _wolf.tail isnot "disabled">>
-						<div class='tf-part-item'>
-							Tail:
-							<<listbox "_wolf.tail" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-								<<option "Feral" "feral">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<br>
-					<<if _wolf.cheeks isnot "disabled">>
-						<div class='tf-part-item'>
-							Cheeks:
-							<<listbox "_wolf.cheeks" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Feral" "feral">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _wolf.pubes isnot "disabled" and $pbdisable is "f">>
-						<div class='tf-part-item'>
-							Pubes:
-							<<listbox "_wolf.pubes" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<br>
-					<<if _wolf.pits isnot "disabled" and $pbdisable is "f">>
-						<div class='tf-part-item'>
-							Pits:
-							<<listbox "_wolf.pits" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<div class='tf-bird'>
-				<<if $harpy gt 1>>
-					__Bird__
-					<br>
-					<<if _bird.eyes isnot "disabled">>
-						<div class='tf-part-item'>
-							eyes:
-							<<listbox "_bird.eyes" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _bird.malar isnot "disabled">>
-						<div class='tf-part-item'>
-							Malar Stripes:
-							<<listbox "_bird.malar" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _bird.plumage isnot "disabled">>
-						<div class='tf-part-item'>
-							Plumage:
-							<<listbox "_bird.plumage" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _bird.tail isnot "disabled">>
-						<div class='tf-part-item'>
-							Tail:
-							<<listbox "_bird.tail" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _bird.wings isnot "disabled">>
-						<div class='tf-part-item'>
-							Wings:
-							<<listbox "_bird.wings" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-						<br>
-					<</if>>
-					<<if _bird.pubes isnot "disabled" and $pbdisable is "f">>
-						<div class='tf-part-item'>
-							Pubes:
-							<<listbox "_bird.pubes" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<div class='tf-fox'>
-				<<if $fox gt 1>>
-					__Fox__
-					<br>
-					<<if _fox.ears isnot "disabled">>
-						<div class='tf-part-item'>
-							Ears:
-							<<listbox "_fox.ears" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _fox.tail isnot "disabled">>
-						<div class='tf-part-item'>
-							Tail:
-							<<listbox "_fox.tail" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<<if _fox.cheeks isnot "disabled">>
-						<div class='tf-part-item'>
-							Cheeks:
-							<<listbox "_fox.cheeks" autoselect>>
-								<<option "Hide" "hidden">>
-								<<option "Default" "default">>
-							<</listbox>>
-						</div>
-					<</if>>
-					<br>
-				<</if>>
-			</div>
-			<<set $_chimeraOptions to {
-				"demoncat_tail" : !["disabled", "hidden"].includesAny(_demon.tail, _cat.tail),
-				"demonharpy_wings" : !["disabled", "hidden"].includesAny(_demon.wings, _bird.wings)
-			}>>
-			<<set $_chimeraEnabled to Object.values($_chimeraOptions).some(o => o) ? "" : " hide">>
-			<div @class="'chimera' + $_chimeraEnabled">
-				__Chimera__
-				<<if $_chimeraOptions.demoncat_tail>>
-					/* Using demon cat chimera tail. */
-					<div class='tf-part-item'>
-						Demon cat tail:
-						<<listbox "$chimera.demoncat.tail" autoselect>>
-							<<option "Show" true>>
-							<<option "Hide" false>>
-						<</listbox>>
-					</div>
-				<</if>>
-				<<if $_chimeraOptions.demonharpy_wings>>
-					/* Using demon harpy chimera wings. */
-					<div class='tf-part-item'>
-						Demon harpy wings:
-						<<listbox "$chimera.demonharpy.wings" autoselect>>
-							<<option "Show" true>>
-							<<option "Hide" false>>
-						<</listbox>>
-					</div>
-				<</if>>
-			</div>
-			<div class="no-numberify">
-				<<if !["demon", "cow"].every(transform => T[transform].horns is "disabled")>>
-					<<switch $hornslayer>>
-						<<case "front">>
-							<<link "Prioritise headwear over horns">>
-								<<run State.setVar("$hornslayer", "back")>>
-								<<run Engine.show()>>
-							<</link>>
-						<<case "back">>
-							<<link "Prioritise horns over headwear">>
-								<<run State.setVar("$hornslayer", "front")>>
-								<<run Engine.show()>>
-							<</link>>
-						<<default>>
-							<<link "Prioritise horns over headwear">>
-								<<run State.setVar("$hornslayer", "front")>>
-								<<run Engine.show()>>
-							<</link>>
-					<</switch>>
-					<br>
-				<</if>>
-				<<if !["demon", "cat", "cow", "wolf", "bird", "fox"].every(transform => T[transform].tail is "disabled")>>
-					<<switch $taillayer>>
-						<<case "front">>
-							<<link "Push tail back">>
-								<<run State.setVar("$taillayer", "back")>>
-								<<run Engine.show()>>
-							<</link>>
-						<<case "back">>
-							<<link "Move tail forward">>
-								<<run State.setVar("$taillayer", "front")>>
-								<<run Engine.show()>>
-							<</link>>
-						<<default>>
-							<<link "Push tail back">>
-								<<run State.setVar("$taillayer", "back")>>
-								<<run Engine.show()>>
-							<</link>>
-					<</switch>>
-					<br>
-				<</if>>
-				<<if !["angel", "fallen", "demon", "bird"].every(transform => T[transform].wings is "disabled")>>
-					<<switch $wingslayer>>
-						<<case "front">>
-							<<link "Push wings behind">>
-								<<run State.setVar("$wingslayer", "back")>>
-								<<run Engine.show()>>
-							<</link>>
-						<<case "back">>
-							<<link "Move wings forward">>
-								<<run State.setVar("$wingslayer", "front")>>
-								<<run Engine.show()>>
-							<</link>>
-						<<default>>
-							<<link "Push wings behind">>
-								<<run State.setVar("$wingslayer", "back")>>
-								<<run Engine.show()>>
-							<</link>>
-					<</switch>>
-					<br>
-				<</if>>
-			</div>
-		</div>
-		<<if _isMenuEnabled>>
-			<div id="transformations-colour-selector" class='list sticky centre'>
-				<<set _options to ['ffffff', 'ff0000', '00ff00', '0000ff', '590099', '000000']>>
-				<<gencoloursquares _options>>
-				<<gencolourpicker>>
-			</div>
+	<<if $wolfgirl gte 2 or $wolftf is 1 or $cat gte 2 or $cattf is 1 or $fox gte 3 or $foxtf is 1>>
+		__Traits__<br>
+		<<if $wolfgirl gte 2 or $wolftf is 1 or $cat gte 2 or $cattf is 1 or $fox gte 2 or $foxtf is 1>>
+			Fangs:<br>
+			<<link "Set">><<set _traits.fangs = "default">><</link>> / <<link "Clear">><<set _traits.fangs = "disabled">><</link>><br>
 		<</if>>
-	</div>
+		<<if $cat gte 2 or $cattf is 1 or $harpy gte 2 or $harpytf is 1 or $fox gte 2 or $foxtf is 1>>
+			Sharp Eyes:<br>
+			<<link "Set">><<set _traits.sharpEyes = "default">><</link>> / <<link "Clear">><<set _traits.sharpEyes = "disabled">><</link>><br>
+		<</if>>
+		<<if $cow gte 6 or $cowtf is 1>>
+			Double Semen/Milk:<br>
+			<<link "Set">><<set $semen_max to 6000>><<set $milk_max to 6000>><</link>> / <<link "Clear">><<set $semen_max to 3000>><<set $milk_max to 3000>><</link>><br>
+		<</if>>
+		<<if $harpy gte 3 or $harpytf is 1 or $fox gte 3 or $foxtf is 1>>
+			Mate for Life:<br>
+			<<link "Set">><<set _traits.mateForLife = "default">><</link>> / <<link "Clear">><<set _traits.mateForLife = "disabled">><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if $wolfgirl gte 6 or $wolftf is 1 or $fox gte 5 or $foxtf is 1>>
+		__Cheeks__<br>
+		<<link "Clear">><<clearcheeks>><<updatesidebarimg>><</link>><br>
+		<<if $wolfgirl gte 6 or $wolftf is 1>>
+			<<link "Wolf">><<clearcheeks>><<set _wolf.cheeks = "feral">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $fox gte 5 or $foxtf is 1>>
+			<<link "Fox">><<clearcheeks>><<set _fox.cheeks = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if $cat gte 7 or $cattf is 1>>
+		__Heterochromia__<br>
+		<<if _cat.heterochromia isnot "default">>
+			<<link [[Set|$passage]]>><<set _cat.heterochromia = "default">><<run window.determineCatEyeStages()>><<set $original_colour = [$leftEyeColour, $rightEyeColour]>><<catHeterochromiaTF 3>><<updatesidebarimg>><</link>>
+		<<else>>
+			<<link [[Clear|$passage]]>><<set _cat.heterochromia = "disabled">><<set $leftEyeColour to $original_colour[0]>><<set $rightEyeColour to $original_colour[1]>><<catHeterochromiaTF 0>><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br><br>
+	<</if>>
+
+	<<if $harpy gte 2 or $harpytf is 1>>
+		__Malar__<br>
+		<<link "Set">><<set _bird.malar = "default">><<updatesidebarimg>><</link>> / <<link "Clear">><<set _bird.malar = "disabled">><<updatesidebarimg>><</link>><br>
+		<br>
+	<</if>>
+
+	<<if ($wolfgirl gte 4 or $wolftf is 1) and $pbdisable is "f">>
+		__Pits__<br>
+		<<link "Set">><<set _wolf.pits = "default">><<updatesidebarimg>><</link>> / <<link "Clear">><<set _wolf.pits = "disabled">><<updatesidebarimg>><</link>><br>
+		<br>
+	<</if>>
+
+	<<if $harpy gte 4 or $harpytf is 1>>
+		__Plumage__<br>
+		<<link "Set">><<set _bird.plumage = "default">><<updatesidebarimg>><</link>> / <<link "Clear">><<set _bird.plumage = "disabled">><<updatesidebarimg>><</link>><br>
+		<br>
+	<</if>>
+
+	<<if ($wolfgirl gte 4 or $wolftf is 1) and $pbdisable is "f">>
+		__Pubes__<br>
+		<<link "Set">><<set _wolf.pubes = "default">><<updatesidebarimg>><</link>> / <<link "Clear">><<set _wolf.pubes = "disabled">><<updatesidebarimg>><</link>><br>
+		<br>
+	<</if>>
+
+	<<if $cat gte 4 or $cattf is 1 or $cow gte 4 or $cowtf is 1 or $wolfgirl gte 4 or $wolftf is 1 or $fox gte 4 or $foxtf is 1>>
+		__Ears__<br>
+		<<link "Clear">><<clearears>><<updatesidebarimg>><</link>><br>
+		<<if $cat gte 4 or $cattf is 1>>
+			<<link "Cat">><<clearears>><<set _cat.ears = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $cow gte 4 or $cowtf is 1>>
+			<<link "Cow">><<clearears>><<set _cow.ears = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $wolfgirl gte 4 or $wolftf is 1>>
+			<<link "Wolf Default">><<clearears>><<set _wolf.ears = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $wolfgirl gte 4 or $wolftf is 1>>
+			<<link "Wolf Feral">><<clearears>><<set _wolf.ears = "feral">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $fox gte 4 or $foxtf is 1>>
+			<<link "Fox">><<clearears>><<set _fox.ears = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if $harpy gte 2 or $harpytf is 1>>
+		__Eyes__<br>
+		<<link "Clear">><<cleareyes>><<updatesidebarimg>><</link>><br>
+		<<if $harpy gte 2 or $harpytf is 1>>
+			<<link "Harpy">><<cleareyes>><<set _bird.eyes = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if $angel gte 4 or $angeltf is 1 or $fallenangel gte 1 or $fallenangeltf is 1>>
+		__Halo__<br>
+		<<link "Clear">><<clearhalo>><<updatesidebarimg>><</link>><br>
+		<<if $angel gte 4 or $angeltf is 1>>
+			Angel:<br>
+			<<link "Angel">><<set _angel.halo = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $fallenangel gte 1 or $fallenangeltf is 1>>
+			Fallen Angel:<br>
+			<<link "Fallen Angel">><<set _fallen.halo = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if $demon gte 2 or $demontf is 1 or $cow gte 2 or $cowtf is 1>>
+		__Horns__<br>
+		<<link "Clear">><<clearhorns>><<updatesidebarimg>><</link>><br>
+		<<if $demon gte 2 or $demontf is 1>>
+			<<link "Demon Default">><<clearhorns>><<set _demon.horns = "default">><<updatesidebarimg>><</link>>
+		<</if>>
+		<<if $demon gte 2 or $demontf is 1>>
+			<<link "Demon Succubus">><<clearhorns>><<set _demon.horns = "succubus">><<updatesidebarimg>><</link>>
+		<</if>>
+		<<if $demon gte 2 or $demontf is 1>>
+			<<link "Demon Classic">><<clearhorns>><<set _demon.horns = "classic">><<updatesidebarimg>><</link>>
+		<</if>>
+		<<if $cow gte 2 or $cowtf is 1>>
+			<<link "Cow">><<clearhorns>><<set _cow.horns = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if $demon gte 4 or $demontf is 1 or $cat gte 6 or $cattf is 1 or $cow gte 6 or $cowtf is 1 or $wolfgirl gte 6 or $wolftf is 1 or $harpy gte 4 or $harpytf is 1 or $fox gte 6 or $foxtf is 1>>
+		__Tail__<br>
+		<<link "Clear">><<cleartail>><<updatesidebarimg>><</link>><br>
+		<<if $demon gte 4 or $demontf is 1>>
+			<<link "Demon Default">><<cleartail>><<set _demon.tail = "default">><<updatesidebarimg>><</link>><<gencolourselector "_demon.tail_colour">><br>
+		<</if>>
+		<<if $demon gte 4 or $demontf is 1>>
+			<<link "Demon Succubus">><<cleartail>><<set _demon.tail = "succubus">><<updatesidebarimg>><</link>><<gencolourselector "_demon.tail_colour">><br>
+		<</if>>
+		<<if $demon gte 4 or $demontf is 1>>
+			<<link "Demon Classic">><<cleartail>><<set _demon.tail = "classic">><<updatesidebarimg>><</link>><<gencolourselector "_demon.tail_colour">><br>
+		<</if>>
+		<<if $cat gte 6 or $cattf is 1>>
+			<<link "Cat">><<cleartail>><<set _cat.tail = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $cow gte 6 or $cowtf is 1>>
+			<<link "Cow">><<cleartail>><<set _cow.tail = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $wolfgirl gte 6 or $wolftf is 1>>
+			<<link "Wolf Default">><<cleartail>><<set _wolf.tail = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $wolfgirl gte 4 or $wolftf is 1>>
+			<<link "Wolf Feral">><<cleartail>><<set _wolf.tail = "feral">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $harpy gte 2 or $harpytf is 1>>
+			<<link "Harpy">><<cleartail>><<set _bird.tail = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $fox gte 6 or $foxtf is 1>>
+			<<link "Fox">><<cleartail>><<set _fox.tail = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if $angel gte 6 or $angeltf is 1 or $demon gte 6 or $demontf is 1 or $fallenangel gte 2 or $fallenangeltf is 1 or $fallenangelplustf is 1 or $harpy gte 6 or $harpytf is 1>>
+		__Wings__<br>
+		<<link "Clear">><<clearwings>><<updatesidebarimg>><</link>><br>
+		<<if $angel gte 6 or $angeltf is 1>>
+			<<link "Angel">><<clearwings>><<set _angel.wings = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $demon gte 6 or $demontf is 1>>
+			<<link "Demon Default">><<clearwings>><<set _demon.wings = "default">><<gencolourselector "_demon.wings_colour">><<updatesidebarimg>><</link>><<gencolourselector "_demon.wings_colour">><br>
+		<</if>>
+		<<if $demon gte 6 or $demontf is 1>>
+			<<link "Demon Succubus">><<clearwings>><<set _demon.wings = "succubus">><<gencolourselector "_demon.wings_colour">><<updatesidebarimg>><</link>><<gencolourselector "_demon.wings_colour">><br>
+		<</if>>
+		<<if $fallenangel gte 2 or $fallenangeltf is 1>>
+			<<link "Fallen Angel">><<clearwings>><<set _fallen.wings = "default">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $fallenangel gte 4 or $fallenangelplustf is 1>>
+			<<link "Fallen Angel Plus">><<clearwings>><<set _fallen.wings = "fallenplus">><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<<if $harpy gte 6 or $harpytf is 1>>
+			<<link "Harpy">><<clearwings>><<set _bird.wings = "default">><<set $birdFly to 1>><<updatesidebarimg>><</link>><br>
+		<</if>>
+		<br>
+	<</if>>
+
+	<<if (($demon gte 2 or $demontf is 1) and ($cow gte 2 or $cowtf is 1)) or (($demon gte 4 or $demontf is 1) and ($cat gte 6 or $cattf is 1)) or (($demon gte 6 or $demontf is 1) and ($harpy gte 6 or $harpytf is 1))>>
+		__Chimera__<br>
+		<<if ($demon gte 6 or $demontf is 1) and ($cow gte 2 or $cowtf is 1)>>
+			Demon Cow Horns:<br>
+			<<link "Set">>
+				<<set _cow.horns = "default">>
+				<<set _demon.horns = "default">>
+				<<set $chimera.demoncow.horns = "default">>
+				<<updatesidebarimg>>
+			<</link>> / 
+			<<link "Clear">>
+				<<clearhorns>>
+				<<set $chimera.demoncow.horns = null>>
+				<<updatesidebarimg>>
+			<</link>><br>
+		<</if>>
+		<<if ($demon gte 6 or $demontf is 1) and ($cat gte 6 or $cattf is 1)>>
+			Demon Cat Tail:<br>
+			<<link "Set">>
+				<<set _cat.tail = "default">>
+				<<set _demon.tail = "default">>
+				<<set $chimera.demoncat.tail = "default">>
+				<<set $hastail to "true">>
+				<<set $thintail to "true">>
+				<<updatesidebarimg>>
+			<</link>> / 
+			<<link "Clear">>
+				<<cleartail>>
+				<<set $chimera.demoncat.tail = null>>
+				<<updatesidebarimg>>
+			<</link>><br>
+		<</if>>
+		<<if ($demon gte 6 or $demontf is 1) and ($harpy gte 6 or $harpytf is 1)>>
+			Demon Harpy Wings:<br>
+			<<link "Set">>
+				<<set _bird.wings = "default">>
+				<<set _demon.wings = "default">>
+				<<set $chimera.demonharpy.wings = "default">>
+				<<updatesidebarimg>>
+			<</link>> / 
+			<<link "Clear">>
+				<<clearwings>>
+				<<set $chimera.demonharpy.wings = null>>
+				<<updatesidebarimg>>
+			<</link>><br>
+		<</if>>
+	<</if>>
+
+	<<if ($traumatized isnot undefined)>>
+		__Trauma__<br>
+		<<link [[Set|$passage]]>><<set $traumatized to true>><<faceimg>><<updatesidebarimg>><</link>> / <<link [[Clear|$passage]]>><<set $traumatized to false>><<faceimg>><<updatesidebarimg>><</link>><br>
+		<br>
+	<</if>>
+
+	<<if _isMenuEnabled>>
+		<div id="transformations-colour-selector" class='list sticky centre'>
+			<<set _options to ['ffffff', 'ff0000', '00ff00', '0000ff', '590099', '000000']>>
+			<<gencoloursquares _options>>
+			<<gencolourpicker>>
+		</div>
+	<</if>>
+
+	<br>
+	<<link "Top of Page">>
+		<<script>>
+			document.body.scrollTop = 0;
+			document.documentElement.scrollTop = 0;
+		<</script>>
+	<</link>>
+	<br>
+	/*
 	<<link [[Confirm|$passage]]>>
 		<<set $mirrorMenu to "transformation">>
-		<<if $transformationParts.cat.heterochromia is "hidden">>
+		/* <<if _cat.heterochromia is "hidden">>
 			<<catHeterochromiaTF "hide">>
 		<<elseif $cat gte 7 and $cat lte 10>>
 			<<catHeterochromiaTF `$cat - 7`>>
-		<</if>>
+		<</if>> 
 	<</link>>
+	*/
 	<!-- Attach an event to every listbox item to update the PC on the sidebar. -->
 	<<script>>
 	jQuery('.passage').on('change', 'select.macro-listbox', function (e) {
@@ -2708,3 +2524,32 @@
 	<<link "Skip day">><<pass 23 hours>><<effects>><<goto "Mirror">><</link>>
 	<br>
 <</widget>>
+
+<<widget "genomedump">>
+	<br><br>
+	<span class="red">Warning: This will reset your manifestation and transformation points for the specified transformation. 
+	<br><br>
+	<i>It is highly reccomended you only do this after completing the transformation in its entirety.</i></span>
+	<br><br>
+	<<if $angelbuild gte 1>>
+	Angel Transform: <<link [[Reset|$passage]]>><<angelTransform 99>><<updatesidebarimg>><</link>><br>
+	<</if>>
+	<<if $demonbuild gte 1>>
+	Demon Transform: <<link [[Reset|$passage]]>><<demonTransform 99>><<updatesidebarimg>><</link>><br>
+	<</if>>
+	<<if $wolfbuild gte 1>>
+	Wolf Transform: <<link [[Reset|$passage]]>><<wolfTransform 99>><<updatesidebarimg>><</link>><br>
+	<</if>>
+	<<if $catbuild gte 1>>
+	Cat Transform: <<link [[Reset|$passage]]>><<catTransform 99>><<updatesidebarimg>><</link>><br>
+	<</if>>
+	<<if $cowbuild gte 1>>
+	Cow Transform: <<link [[Reset|$passage]]>><<cowTransform 99>><<updatesidebarimg>><</link>><br>
+	<</if>>
+	<<if $birdbuild gte 1>>
+	Bird Transform: <<link [[Reset|$passage]]>><<harpyTransform 99>><<updatesidebarimg>><</link>><br>
+	<</if>>
+	<<if $foxbuild gte 1>>
+	Fox Transform: <<link [[Reset|$passage]]>><<foxTransform 99>><<updatesidebarimg>><</link>><br>
+	<</if>>
+<</widget>>
diff --git a/game/base-system/overlays/cheats.twee b/game/base-system/overlays/cheats.twee
index ce02acc09d..daff3d9fca 100644
--- a/game/base-system/overlays/cheats.twee
+++ b/game/base-system/overlays/cheats.twee
@@ -1366,6 +1366,8 @@
 	<span class="description">Only one animal and one divine transformation at a time.</span>
 	<br>
 	Angel Transform: <<link "Set">><<angelTransform>><<updatesidebarimg>><</link>> / <<link "Clear">><<angelTransform 99>><<updatesidebarimg>><</link>><br>
+	Fallen Angel Transform: <<link "Set">><<fallenButNotOut 98>><<updatesidebarimg>><</link>> / <<link "Clear">><<fallenButNotOut 99>><<updatesidebarimg>><</link>><br>
+	Fallen Angel Plus Transform: <<link "Set">><<fallenButNotOut>><<updatesidebarimg>><</link>> / <<link "Clear">><<fallenButNotOut 99>><<updatesidebarimg>><</link>><br>
 	Demon Transform: <<link "Set">><<demonTransform>><<updatesidebarimg>><</link>> / <<link "Clear">><<demonTransform 99>><<updatesidebarimg>><</link>><br>
 	Wolf Transform: <<link "Set">><<wolfTransform>><<updatesidebarimg>><</link>> / <<link "Clear">><<wolfTransform 99>><<updatesidebarimg>><</link>><br>
 	Cat Transform: <<link "Set">><<catTransform>><<updatesidebarimg>><</link>> / <<link "Clear">><<catTransform 99>><<updatesidebarimg>><</link>><br>
diff --git a/game/base-system/transformations.twee b/game/base-system/transformations.twee
index c446a94f13..8cfe62e7bc 100644
--- a/game/base-system/transformations.twee
+++ b/game/base-system/transformations.twee
@@ -305,6 +305,7 @@
 		<<set $fallenangel to 2>>
 		<<set $transformationParts.fallenAngel.halo to ($transformationParts.angel.halo is "hidden" ? "default" : $transformationParts.angel.halo)>>
 		<<set $transformationParts.fallenAngel.wings to "default">>
+		<<set $fallenangeltf to 1>>
 		<<earnFeat "Fallen Angel">>
 	<<elseif $angel gte 4>>
 		<span class="red">Your halo shatters and fades.</span>
@@ -328,18 +329,41 @@
 			<<case 3>>
 				<<if $fallenbuild gte 30>>
 					<<set $fallenangel to 4>>
+					<<set $fallenangelplustf to 1>>
 					<span class="gold">The familiar feeling of soft feathers fills you with hope.</span>
 					<<set $transformationParts.fallenAngel.wings to "fallenplus">>
 					<<if $transformationParts.bird.wings is "default">>
 						<<set $transformationParts.fallenAngel.wings to "hidden">>
 					<</if>>
 				<</if>>
+			<<case 98>>
+				<<clearDivineTransformations>>
+				<<set $specialTransform to 1>>
+				<<set $fallenangelplustf to 1>>
+				<<set $fallenangel to 2>>
+				<<set $angelbuild to 0>>
+				<<set $transformationParts.fallenAngel.halo to "default">>
+				<<set $transformationParts.fallenAngel.wings to "default">>
+				<<if $transformationParts.bird.wings is "default">>
+					<<set $transformationParts.fallenAngel.wings to "hidden">>
+				<</if>>
 			<<case 99>>
 				<<set $specialTransform to 0>>
 				<<set $fallenangel to 0>>
 				<<set $transformationParts.fallenAngel.halo to "disabled">>
 				<<set $transformationParts.fallenAngel.wings to "disabled">>
 		<</switch>>
+	<<else>>
+		<<clearDivineTransformations>>
+		<<set $specialTransform to 1>>
+		<<set $fallenangelplustf to 1>>
+		<<set $fallenangel to 4>>
+		<<set $angelbuild to 0>>
+		<<set $transformationParts.fallenAngel.halo to "default">>
+		<<set $transformationParts.fallenAngel.wings to "fallenplus">>
+		<<if $transformationParts.bird.wings is "default">>
+			<<set $transformationParts.fallenAngel.wings to "hidden">>
+		<</if>>
 	<</if>>
 <</widget>>
 
@@ -356,6 +380,7 @@
 	<<set $transformationParts.demon.horns to "default">>
 	<<set $transformationParts.demon.tail to "default">>
 	<<set $transformationParts.demon.wings to "default">>
+	<<set $demontf to 1>>
 	<<earnFeat "Demon">>
 	<<garousal>><<arousal 600>>
 <</widget>>
@@ -422,6 +447,7 @@
 					<<if $transformationParts.bird.wings is "default">>
 						<<set $transformationParts.angel.wings to "hidden">>
 					<</if>>
+					<<set $angeltf to 1>>
 					<<earnFeat "Angel">>
 					<br><br>
 				<<elseif $angelbuild lt 45>>
@@ -446,6 +472,7 @@
 	<<else>>
 		<<clearDivineTransformations>>
 		<<set $specialTransform to 1>>
+		<<set $angeltf to 1>>
 		<<set $angel to 6>>
 		<<set $angelbuild to 50>>
 		<<set $transformationParts.angel.halo to "default">>
@@ -527,6 +554,7 @@
 					<<if $transformationParts.bird.wings is "default">>
 						<<set $transformationParts.demon.wings to "hidden">>
 					<</if>>
+					<<set $demontf to 1>>
 					<<earnFeat "Demon">>
 					<br><br>
 				<<elseif $demonbuild lt 25>>
@@ -555,6 +583,7 @@
 	<<else>>
 		<<clearDivineTransformations>>
 		<<set $specialTransform to 1>>
+		<<set $demontf to 1>>
 		<<set $demon to 6>>
 		<<set $demonbuild to 30>>
 		<<set $transformationParts.demon.horns to "default">>
@@ -635,6 +664,7 @@
 					<<set $wolfgirl to 6>>
 					<span class="gold">Your bottom feels heavier than usual. You reach behind you and feel your new wolf tail.</span>
 					<<set $transformationParts.wolf.tail to "default">>
+					<<set $wolftf to 1>>
 					<<earnFeat "Wolf">>
 					<br><br>
 				<<elseif $wolfbuild lt 25>>
@@ -663,6 +693,7 @@
 	<<else>>
 		<<clearAnimalTransformations>>
 		<<set $physicalTransform to 1>>
+		<<set $wolftf to 1>>
 		<<set $wolfgirl to 6>>
 		<<set $wolfbuild to 100>>
 		<<set $transformationParts.traits.fangs to "default">>
@@ -736,6 +767,7 @@
 					<<set $cat to 6>>
 					<span class="gold">Your bottom feels weighty, yet perfectly balanced. You reach behind and feel your new cat tail.</span>
 					<<set $transformationParts.cat.tail to "default">>
+					<<set $cattf to 1>>
 					<<earnFeat "Neko">>
 					<br><br>
 				<<elseif $catbuild lt 45>>
@@ -811,6 +843,7 @@
 	<<else>>
 		<<clearAnimalTransformations>>
 		<<set $physicalTransform to 1>>
+		<<set $cattf to 1>>
 		<<set $cat to 6>>
 		<<set $catbuild to 100>>
 		<<set $transformationParts.traits.fangs to "default">>
@@ -900,6 +933,7 @@
 					<<set $semen_max to 6000>>
 					<<set $milk_max to 6000>>
 					<<set $transformationParts.cow.tail to "default">>
+					<<set $cowtf to 1>>
 					<<earnFeat "Cattle">>
 					<span class="gold">Your bottom feels heavier than usual. You reach behind you and feel your new cow tail. You suppress the urge to moo.</span>
 					<br><br>
@@ -930,6 +964,7 @@
 	<<else>>
 		<<clearAnimalTransformations>>
 		<<set $physicalTransform to 1>>
+		<<set $cowtf to 1>>
 		<<set $cow to 6>>
 		<<set $cowbuild to 100>>
 		<<set $semen_max to 6000>>
@@ -1021,6 +1056,7 @@
 					<<set $harpy to 6>>
 					<span class="gold">You feel light as a feather. Wings caress your face.
 					<<print ($pbdisable is "f" ? " You also notice that short, feathery hair has grown in your pubic area.":"")>></span>
+					<<set $harpytf to 1>>
 					<<earnFeat "Harpy">>
 					<<set $transformationParts.bird.wings to "default">>
 					<<if $transformationParts.angel.wings is "default">>
@@ -1083,6 +1119,7 @@
 	<<else>>
 		<<clearAnimalTransformations>>
 		<<set $physicalTransform to 1>>
+		<<set $harpytf to 1>>
 		<<set $harpy to 6>>
 		<<set $birdbuild to 100>>
 		<<set $transformationParts.bird.eyes to "default">>
@@ -1185,6 +1222,7 @@
 					<<set $fox to 6>>
 					<span class="gold">Your bottom feels heavier than usual. You give it a wiggle and feel your new fox tail. It's extremely comforting to touch.</span>
 					<<set $transformationParts.fox.tail to "default">>
+					<<set $foxtf to 1>>
 					<<earnFeat "Fox">>
 					<br><br>
 				<<elseif $foxbuild lt 25>>
@@ -1214,6 +1252,7 @@
 	<<else>>
 		<<clearAnimalTransformations>>
 		<<set $physicalTransform to 1>>
+		<<set $foxtf to 1>>
 		<<set $fox to 6>>
 		<<set $foxbuild to 100>>
 		<<set $transformationParts.traits.fangs to "default">>
diff --git a/game/base-system/widgets.twee b/game/base-system/widgets.twee
index 055e6a8d33..a2262c9d04 100644
--- a/game/base-system/widgets.twee
+++ b/game/base-system/widgets.twee
@@ -5041,3 +5041,71 @@
 		<<set $animalsemenswallowedstat += $args[0]>>
 	<</if>>
 <</widget>>
+
+<<widget "clearcheeks">>
+	<<set $transformationParts.wolf.cheeks = "disabled">>
+	<<set $transformationParts.fox.cheeks = "disabled">>
+<</widget>>
+
+<<widget "clearhalo">>
+	<<set $transformationParts.angel.halo = "disabled">>
+	<<set $transformationParts.fallenAngel.halo = "disabled">>
+<</widget>>
+
+<<widget "clearears">>
+	<<set $transformationParts.cat.ears = "disabled">>
+	<<set $transformationParts.cow.ears = "disabled">>
+	<<set $transformationParts.wolf.ears = "disabled">>
+	<<set $transformationParts.fox.ears = "disabled">>
+<</widget>>
+
+<<widget "cleareyes">>
+	<<set $transformationParts.bird.eyes = "disabled">>
+<</widget>>
+
+<<widget "clearhorns">>
+	<<if $transformationParts.demon.horns !== "disabled" and $transformationParts.cow.horns !== "disabled">>
+		<<set $transformationParts.demon.horns = "disabled">>
+		<<set $transformationParts.cow.horns = "disabled">>
+	<</if>>
+	<<if $transformationParts.cow.horns == "disabled">>
+		<<set $transformationParts.demon.horns = "disabled">>
+	<</if>>
+	<<if $transformationParts.demon.horns == "disabled">>
+		<<set $transformationParts.cow.horns = "disabled">>
+	<</if>>
+<</widget>>
+
+<<widget "cleartail">>
+	<<if $transformationParts.demon.tail !== "disabled" and $transformationParts.cat.tail !== "disabled">>
+		<<set $transformationParts.demon.tail = "disabled">>
+		<<set $transformationParts.bird.tail = "disabled">>
+	<</if>>
+	<<if $transformationParts.cat.tail == "disabled">>
+		<<set $transformationParts.demon.tail = "disabled">>
+	<</if>>
+	<<if $transformationParts.demon.tail == "disabled">>
+		<<set $transformationParts.cat.tail = "disabled">>
+	<</if>>
+	<<set $transformationParts.cow.tail = "disabled">>
+	<<set $transformationParts.wolf.tail = "disabled">>
+	<<set $transformationParts.bird.tail = "disabled">>
+	<<set $transformationParts.fox.tail = "disabled">>
+<</widget>>
+
+<<widget "clearwings">>
+	<<if $transformationParts.demon.wings !== "disabled" and $transformationParts.bird.wings !== "disabled">>
+		<<set $transformationParts.demon.wings = "disabled">>
+		<<set $transformationParts.bird.wings = "disabled">>
+		<<set $birdFly to 0>>
+	<</if>>
+	<<set $transformationParts.angel.wings = "disabled">>
+	<<if $transformationParts.bird.wings == "disabled">>
+		<<set $transformationParts.demon.wings = "disabled">>
+	<</if>>
+	<<set $transformationParts.fallenAngel.wings = "disabled">>
+	<<if $transformationParts.demon.wings == "disabled">>
+		<<set $transformationParts.bird.wings = "disabled">>
+		<<set $birdFly to 0>>
+	<</if>>
+<</widget>>
-- 
GitLab