diff --git a/game/base-combat/actions.twee b/game/base-combat/actions.twee
index 06ea565be83b1cfeb1c13fc8c13449d7280257b6..1eff5f983f77a18d569d28efbbaaec75de2bb631 100644
--- a/game/base-combat/actions.twee
+++ b/game/base-combat/actions.twee
@@ -96,6 +96,15 @@
 		($finish is 1)
 	>>
 
+	<!-- Lose consciousness if it has been 20+ seconds since PC ran out of air -->
+	<<if $suffocating gte 2 and $suffocated isnot 1 and !_combatend>>
+		<<set $previousPassage = $passage>>
+		<<set $suffocationPhase to 1>>
+		<<set $suffocated to 1>>
+
+		<<set $nextPassage to "Man combat suffocated">>
+	<</if>>
+
 	<<if $debug is 1>>
 		__Debug__
 		<br>
diff --git a/game/base-combat/actionsGeneration.twee b/game/base-combat/actionsGeneration.twee
index fbca68669e068b814dcd01ec71c225748b13330a..f4f908e71df155a377fe7b376d401be4f001e24a 100644
--- a/game/base-combat/actionsGeneration.twee
+++ b/game/base-combat/actionsGeneration.twee
@@ -470,11 +470,13 @@
 	/*Generate Actions*/
 	<<set _leftaction to {}>>
 	<<if $position is "stalk">>
-		<<set _leftaction["Clench"] to "clench">>
-		<<set _leftaction["Fold"] to "fold">>
-		<<leftFixAndCoverActions>>
-		<<leftcoverface>>
-		<<left_pursuit_grab>>
+		<<if $leftarm isnot "bound">>
+			<<set _leftaction["Clench"] to "clench">>
+			<<set _leftaction["Fold"] to "fold">>
+			<<leftFixAndCoverActions>>
+			<<leftcoverface>>
+			<<left_pursuit_grab>>
+		<</if>>
 	<<else>>
 		<<switch _leftOptions>>
 			<<case "free">>
@@ -841,11 +843,13 @@
 	/*Generate Actions*/
 	<<set _rightaction to {}>>
 	<<if $position is "stalk">>
-		<<set _rightaction["Clench"] to "clench">>
-		<<set _rightaction["Fold"] to "fold">>
-		<<rightFixAndCoverActions>>
-		<<rightcoverface>>
-		<<right_pursuit_grab>>
+		<<if $rightarm isnot "bound">>
+			<<set _rightaction["Clench"] to "clench">>
+			<<set _rightaction["Fold"] to "fold">>
+			<<rightFixAndCoverActions>>
+			<<rightcoverface>>
+			<<right_pursuit_grab>>
+		<</if>>
 	<<else>>
 		<<switch _rightOptions>>
 			<<case "free">>
diff --git a/game/base-combat/images.twee b/game/base-combat/images.twee
index 8543b079711c409d3b3bed1cb55763147c592a04..cc8dec3e2d7bc8dc9e009b348d7aba9c6632625e 100644
--- a/game/base-combat/images.twee
+++ b/game/base-combat/images.twee
@@ -104,19 +104,61 @@
 						<<else>>
 							<<set $_target1 to $vaginatarget>>
 						<</if>>
-						<<set $_penetratorVSprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
-						<<set $_penetratorVColour to (npcHasStrapon($_target1) && $options.tanImgEnabled ? "strapon-" + $NPCList[$_target1].strapon.color : "")>>
-						<<set $_penetratorVFilter to (!npcHasStrapon($_target1) && $options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target1].skincolour] : "")>>
-						<<set $_penetratorVSize to $NPCList[$_target1].penissize>>
+						<<if npcHasStrapon($_target1)>>
+							<<if $NPCList[$_target1].penisdesc.includes("horse")>>
+								<<set $_penetratorVSprite to "penisHorseRed">>
+								<<set $_penetratorVSize to 5>>
+							<<elseif $NPCList[$_target1].penisdesc.includes("knotted")>>
+								<<set $_penetratorVSprite to "penisKnotted">>
+								<<set $_penetratorVSize to 3>>
+							<<elseif $NPCList[$_target1].penisdesc.includes("tentacle")>>
+								<<set $_penetratorVSprite to "tentacle">>
+								<<set $_penetratorVSize to $NPCList[$_target1].penissize>>
+							<<elseif $NPCList[$_target1].penisdesc.includes("dolphin")>>
+								<<set $_penetratorVSprite to "penisPoint">>
+								<<set $_penetratorVSize to 2>>
+							<<else>>
+								<<set $_penetratorVSprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+								<<set $_penetratorVSize to $NPCList[$_target1].penissize>>
+							<</if>>
+							<<set $_penetratorVColour to ($options.tanImgEnabled ? "strapon-" + $NPCList[$_target1].strapon.color : "")>>
+							<<set $_penetratorVFilter to "">>
+						<<else>>
+							<<set $_penetratorVSprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+							<<set $_penetratorVColour to "">>
+							<<set $_penetratorVFilter to ($options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target1].skincolour] : "")>>
+							<<set $_penetratorVSize to $NPCList[$_target1].penissize>>
+						<</if>>
 						<<if wearingCondom($_target1)>>
 							<<set $_penetratorVCondom to wearingCondom($_target1)>>
 							<<set $_penetratorVCondomColour to "condom-" + $NPCList[$_target1].condom.colour.replace(/ /g, '-')>>
 						<</if>>
 						<<if $_target2 isnot undefined>>
-							<<set $_penetratorV2Sprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
-							<<set $_penetratorV2Colour to (npcHasStrapon($_target2) && $options.tanImgEnabled ? "strapon-" + $NPCList[$_target2].strapon.color : "")>>
-							<<set $_penetratorV2Filter to (!npcHasStrapon($_target2) && $options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target2].skincolour] : "")>>
-							<<set $_penetratorV2Size to $NPCList[$_target2].penissize>>
+							<<if npcHasStrapon($_target2)>>
+								<<if $NPCList[$_target2].penisdesc.includes("horse")>>
+									<<set $_penetratorVSprite to "penisHorseRed">>
+									<<set $_penetratorVSize to 5>>
+								<<elseif $NPCList[$_target2].penisdesc.includes("knotted")>>
+									<<set $_penetratorVSprite to "penisKnotted">>
+									<<set $_penetratorVSize to 3>>
+								<<elseif $NPCList[$_target2].penisdesc.includes("tentacle")>>
+									<<set $_penetratorVSprite to "tentacle">>
+									<<set $_penetratorVSize to $NPCList[$_target2].penissize>>
+								<<elseif $NPCList[$_target2].penisdesc.includes("dolphin")>>
+									<<set $_penetratorVSprite to "penisPoint">>
+									<<set $_penetratorVSize to 2>>
+								<<else>>
+									<<set $_penetratorVSprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+									<<set $_penetratorVSize to $NPCList[$_target2].penissize>>
+								<</if>>
+								<<set $_penetratorVColour to ($options.tanImgEnabled ? "strapon-" + $NPCList[$_target2].strapon.color : "")>>
+								<<set $_penetratorVFilter to "">>
+							<<else>>
+								<<set $_penetratorVSprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+								<<set $_penetratorVColour to "">>
+								<<set $_penetratorVFilter to ($options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target2].skincolour] : "")>>
+								<<set $_penetratorVSize to $NPCList[$_target2].penissize>>
+							<</if>>
 							<<if wearingCondom($_target2)>>
 								<<set $_penetratorV2Condom to wearingCondom($_target2)>>
 								<<set $_penetratorV2CondomColour to "condom-" + $NPCList[$_target2].condom.colour.replace(/ /g, '-')>>
@@ -262,19 +304,61 @@
 						<<else>>
 							<<set $_target3 to $anustarget>>
 						<</if>>
-						<<set $_penetratorASprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
-						<<set $_penetratorAColour to (npcHasStrapon($_target3) && $options.tanImgEnabled ? "strapon-" + $NPCList[$_target3].strapon.color : "")>>
-						<<set $_penetratorAFilter to (!npcHasStrapon($_target3) && $options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target3].skincolour] : "")>>
-						<<set $_penetratorASize to $NPCList[$_target3].penissize>>
+						<<if npcHasStrapon($_target3)>>
+							<<if $NPCList[$_target3].penisdesc.includes("horse")>>
+								<<set $_penetratorASprite to "penisHorseRed">>
+								<<set $_penetratorASize to 5>>
+							<<elseif $NPCList[$_target3].penisdesc.includes("knotted")>>
+								<<set $_penetratorASprite to "penisKnotted">>
+								<<set $_penetratorASize to 3>>
+							<<elseif $NPCList[$_target3].penisdesc.includes("tentacle")>>
+								<<set $_penetratorASprite to "tentacle">>
+								<<set $_penetratorASize to $NPCList[$_target3].penissize>>
+							<<elseif $NPCList[$_target3].penisdesc.includes("dolphin")>>
+								<<set $_penetratorASprite to "penisPoint">>
+								<<set $_penetratorASize to 2>>
+							<<else>>
+								<<set $_penetratorASprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+								<<set $_penetratorASize to $NPCList[$_target3].penissize>>
+							<</if>>
+							<<set $_penetratorAColour to ($options.tanImgEnabled ? "strapon-" + $NPCList[$_target3].strapon.color : "")>>
+							<<set $_penetratorAFilter to "">>
+						<<else>>
+							<<set $_penetratorASprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+							<<set $_penetratorAColour to "">>
+							<<set $_penetratorAFilter to ($options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target3].skincolour] : "")>>
+							<<set $_penetratorASize to $NPCList[$_target3].penissize>>
+						<</if>>
 						<<if wearingCondom($_target3)>>
 							<<set $_penetratorACondom to wearingCondom($_target3)>>
 							<<set $_penetratorACondomColour to "condom-" + $NPCList[$_target3].condom.colour.replace(/ /g, '-')>>
 						<</if>>
 						<<if $_target4 isnot undefined>>
-							<<set $_penetratorA2Sprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
-							<<set $_penetratorA2Colour to (npcHasStrapon($_target4) && $options.tanImgEnabled ? "strapon-" + $NPCList[$_target4].strapon.color : "")>>
-							<<set $_penetratorA2Filter to (!npcHasStrapon($_target4) && $options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target4].skincolour] : "")>>
-							<<set $_penetratorA2Size to $NPCList[$_target4].penissize>>
+							<<if npcHasStrapon($_target4)>>
+								<<if $NPCList[$_target4].penisdesc.includes("horse")>>
+									<<set $_penetratorASprite to "penisHorseRed">>
+									<<set $_penetratorASize to 5>>
+								<<elseif $NPCList[$_target4].penisdesc.includes("knotted")>>
+									<<set $_penetratorASprite to "penisKnotted">>
+									<<set $_penetratorASize to 3>>
+								<<elseif $NPCList[$_target4].penisdesc.includes("tentacle")>>
+									<<set $_penetratorASprite to "tentacle">>
+									<<set $_penetratorASize to $NPCList[$_target4].penissize>>
+								<<elseif $NPCList[$_target4].penisdesc.includes("dolphin")>>
+									<<set $_penetratorASprite to "penisPoint">>
+									<<set $_penetratorASize to 2>>
+								<<else>>
+									<<set $_penetratorASprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+									<<set $_penetratorASize to $NPCList[$_target4].penissize>>
+								<</if>>
+								<<set $_penetratorAColour to ($options.tanImgEnabled ? "strapon-" + $NPCList[$_target4].strapon.color : "")>>
+								<<set $_penetratorAFilter to "">>
+							<<else>>
+								<<set $_penetratorASprite to ($options.tanImgEnabled ? "penisRed" : "penisWhite")>>
+								<<set $_penetratorAColour to "">>
+								<<set $_penetratorAFilter to ($options.tanImgEnabled ? setup.npcSkinDefaults[$NPCList[$_target4].skincolour] : "")>>
+								<<set $_penetratorASize to $NPCList[$_target4].penissize>>
+							<</if>>
 							<<if wearingCondom($_target4)>>
 								<<set $_penetratorA2Condom to wearingCondom($_target4)>>
 								<<set $_penetratorA2CondomColour to "condom-" + $NPCList[$_target4].condom.colour.replace(/ /g, '-')>>
diff --git a/game/base-combat/man-combat.twee b/game/base-combat/man-combat.twee
index 4db766fdf3f2f64a86678ad70e4a3a9bb49081bf..c2905c40eab80660a0ca86e0c843eec9fab7a914 100644
--- a/game/base-combat/man-combat.twee
+++ b/game/base-combat/man-combat.twee
@@ -4356,6 +4356,17 @@ Hands are 'inverted': NPC holds PC's left hand with their right one, and vice ve
 				<span class="lblue"><<He>> moves <<his>> ass away from your <<penis>>.</span>
 				<<set $NPCList[_n].vagina to 0>><<set $penisuse to 0>><<set $penisstate to 0>>
 			<<elseif $rng gte 1>>
+				<<if $NPCList[_n].condom and $NPCList[_n].condom.willUse is true and !$player.condom and $parasite.penis.name is undefined and
+				$worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1>>
+					<<if playerChastity("penis")>>
+						<<He>> tries to put a condom on your penis, but can't seem to get it over your $worn.genitals.name. <span class="red"><<He>> quickly gives up.</span>
+						<<set $NPCList[_n].condom.willUse to false>>
+					<<else>>
+						<span class="green"><<He>> slips <<condomDesc _n>> on your <<penis>>.</span>
+						<<equipNPCCondom _n "player">>
+					<</if>>
+				<</if>>
+
 				<<if $worn.over_lower.vagina_exposed is 0>>
 					<<if $npcSub>>You rub<<else>><<He>> rubs<</if>> <<his>> ass against your <<penis>> through your $worn.over_lower.name.
 					<<sex 5 "genital" _n>><<set $worn.over_lower.integrity -= 10>><<set $speechotheranusentrance to 1>>
@@ -5739,7 +5750,8 @@ Hands are 'inverted': NPC holds PC's left hand with their right one, and vice ve
 		<<if $player.penisExist or playerHasStrapon()>>
 			<<if $penisuse is 0>>
 				<<if $analdisable is "f" and $consensual is 1>>
-					<<if $NPCList[_n].condom and $NPCList[_n].condom.willUse is true and !$player.condom and $parasite.penis.name is undefined>>
+					<<if $NPCList[_n].condom and $NPCList[_n].condom.willUse is true and !$player.condom and $parasite.penis.name is undefined and
+					$worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1>>
 						<<if playerChastity("penis")>>
 							<<He>> tries to put a condom on your penis, but can't seem to get it over your $worn.genitals.name. <span class="red"><<He>> quickly gives up.</span>
 							<<set $NPCList[_n].condom.willUse to false>>
@@ -6104,7 +6116,8 @@ Hands are 'inverted': NPC holds PC's left hand with their right one, and vice ve
 		<<neutral 3 _n>><<set $speechvaginaflaunt to 1>>
 	<<elseif $enemyanger + $rng lte 50 and $NPCList[_n].location.genitals is 0 and $NPCList[_n].location.head isnot "genitals"
 			and ($player.penisExist or playerHasStrapon()) and $penisuse is 0 and $analdisable is "f" and $walltype isnot "front">>
-		<<if $NPCList[_n].condom and $NPCList[_n].condom.willUse is true and !$player.condom and $parasite.penis.name is undefined>>
+		<<if $NPCList[_n].condom and $NPCList[_n].condom.willUse is true and !$player.condom and $parasite.penis.name is undefined and
+		$worn.under_lower.vagina_exposed is 1 and $worn.lower.vagina_exposed is 1 and $worn.over_lower.vagina_exposed is 1>>
 			<<if playerChastity("penis")>>
 				<<He>> tries to put a condom on your penis, but can't seem to get it over your $worn.genitals.name. <span class="red"><<He>> quickly gives up.</span>
 				<<set $NPCList[_n].condom.willUse to false>>
@@ -6558,14 +6571,8 @@ Hands are 'inverted': NPC holds PC's left hand with their right one, and vice ve
 <<widget "suffocatepass">>
 	<<set $suffocating = Math.clamp($suffocating + (_args[0] or 1), 0, 10)>>
 	<<if $suffocating gte 1 and $suffocationPhase isnot 2>><span class="red"> You're about to lose consciousness.</span><</if>>
-	<!-- Lose consciousness if it has been 20+ seconds since PC ran out of air -->
-	<<if $suffocating gte 2 and $suffocated isnot 1>>
-		<<set $previousPassage = $passage>>
-		<<set $suffocationPhase to 1>>
-		<<set $suffocated to 1>>
 
-		<<set $nextPassage to "Man combat suffocated">>
-	<</if>>
+	<!-- see "actionsman" widget for the code relating to the PC passing out from suffocation -->
 <</widget>>
 
 :: Man combat suffocated
diff --git a/game/base-system/caption.twee b/game/base-system/caption.twee
index 0c9d65e12457084ca17f18c9598c9f360d8593d7..4e34639e5e021be3c54a339feb55cbaca75f2d70 100644
--- a/game/base-system/caption.twee
+++ b/game/base-system/caption.twee
@@ -1136,7 +1136,7 @@
 <</widget>>
 
 <<widget "startingPlayerImageUpdate">>
-	<<if $passage is "Start">>
+	<<if $passage is "Start" and StartConfig.enableImages is true>>
 		<<replace #startingPlayerImage>>
 			<<startingPlayerImage>>
 		<</replace>>
diff --git a/game/base-system/named-npcs.twee b/game/base-system/named-npcs.twee
index 1e401258cb9d8ab3222e38cdd844c07af947e976..5a7b09154ba8cb3ca3cff33ee280f79dedbe83dd 100644
--- a/game/base-system/named-npcs.twee
+++ b/game/base-system/named-npcs.twee
@@ -581,7 +581,7 @@ Zohar
 						<<npcClothesType $NPCName[_i] "cold">>
 					<<case "halloween">>
 						<<if $halloween_robin_costume>>
-							<<npcClothesType $NPCName[_i] "halloween">>
+							<<npcClothesName $NPCName[_i] $halloween_robin_costume>>
 						<<else>>
 							<<generateNPCClothes $NPCName[_i]>>
 						<</if>>
diff --git a/game/base-system/overlays/statistics.twee b/game/base-system/overlays/statistics.twee
index 4dbb48e5b35a36e8da22de9e2fdc22b02df6ae4e..06b547acdac17d37a28c240247e2d6bf94c1c6d2 100644
--- a/game/base-system/overlays/statistics.twee
+++ b/game/base-system/overlays/statistics.twee
@@ -890,7 +890,7 @@
 					Number of sources of sperm that can get you pregnant: <<print _spermArray.length>>.
 					<<if _trackedNPCs.length>>
 						<br>
-						Those who's sperm you have inside you currently:
+						Those whose sperm you have inside you currently:
 						<ul>
 							<<for _name range _trackedNPCs>>
 								<li><<print pregnancyNameCorrection(_name.source)>></li>
@@ -925,7 +925,7 @@
 						Number of sources of sperm that can get you pregnant: <<print _spermArray.length>>.
 						<<if _trackedNPCs.length>>
 							<br>
-							Those who's sperm you have inside you currently:
+							Those whose sperm you have inside you currently:
 							<ul>
 								<<for _name range _trackedNPCs>>
 									<li><<print pregnancyNameCorrection(_name.source)>></li>
diff --git a/game/base-system/widgets.twee b/game/base-system/widgets.twee
index 372579296a7c99639283fbfc048451952ec22b5d..0b47c70f32c1efed66130bbf39e8fef8a91257b8 100644
--- a/game/base-system/widgets.twee
+++ b/game/base-system/widgets.twee
@@ -4980,9 +4980,7 @@
 <</widget>>
 
 <<widget "enable_rescue">>
-	<<if $drugged lte 0>>
-		<<set $rescue to 1>>
-	<</if>>
+	<<set $rescue to 1>>
 <</widget>>
 
 <<widget "hypnotised">>
diff --git a/game/overworld-forest/loc-lake/ivory/schism.twee b/game/overworld-forest/loc-lake/ivory/schism.twee
index 64f84dc4bf7a90cdfc1c569b081c73831d89cbb4..23a84d6c2def983e784ffd8fb9561a53d0d1ec5a 100644
--- a/game/overworld-forest/loc-lake/ivory/schism.twee
+++ b/game/overworld-forest/loc-lake/ivory/schism.twee
@@ -792,12 +792,16 @@ The feeling of dread rapidly fades. <span class="blue"><i>You're safe until the
 	<<if $player.sex is "f">>
 		<<set $vaginastate to 0>>
 		<<set $vaginause to 0>>
+		<<set $penisstate to "none">>
+		<<set $penisuse to "none">>
 		<<set $player.vaginaExist to true>>
 		<<set $player.penisExist to false>>
 		<<set $player.ballsExist to false>>
 	<<elseif $player.sex is "m">>
 		<<set $penisstate to 0>>
 		<<set $penisusue to 0>>
+		<<set $vaginastate to "none">>
+		<<set $vaginause to "none">>
 		<<set $player.vaginaExist to false>>
 		<<set $player.penisExist to true>>
 		<<set $player.ballsExist to true>>
diff --git a/game/overworld-forest/loc-lake/main.twee b/game/overworld-forest/loc-lake/main.twee
index f34df61bb00b076abb73be519d36f4be927f6c25..f0b3b825428ce8476d481d49526311e6d5f443ca 100644
--- a/game/overworld-forest/loc-lake/main.twee
+++ b/game/overworld-forest/loc-lake/main.twee
@@ -1148,6 +1148,7 @@ You lift the shovel, and thrust it into the ice. It's hard work, but you manage
 		Realisation dawns as you lean back. Your belly is beautiful. Why should you care what other people say about it? You've gained the <span class="green">Acceptance: <<print playerAwareTheyArePregnant() ? "Acceptance: Pregnant Belly" : "Acceptance: Pregnant Looking Belly">></span> trait.
 	<</if>>
 <</if>>
+<br><br>
 
 <<set $danger to random(1, 10000)>><<set $dangerevent to 0>>
 <<if $stress gte $stressmax and !$possessed>>
diff --git a/game/overworld-plains/loc-bird/widgets.twee b/game/overworld-plains/loc-bird/widgets.twee
index 15ba1e77b54fa8f0fafa35838755c164e02be9b8..b09a2127cd74ca02772ceaebdf8f0d1f41eedad2 100644
--- a/game/overworld-plains/loc-bird/widgets.twee
+++ b/game/overworld-plains/loc-bird/widgets.twee
@@ -553,16 +553,16 @@
 <<widget "flight_effects">>
 	<<if $weather is "rain">>
 		<<if !$worn.upper.type.includes("swim") and !$worn.upper.type.includes("naked")>>
-			<<set $upperwet to Math.floor($flightTime * 4)>>
+			<<set $upperwet += Math.floor($flightTime * 4)>>
 		<</if>>
 		<<if !$worn.lower.type.includes("swim") and !$worn.lower.type.includes("naked")>>
-			<<set $lowerwet to Math.floor($flightTime * 4)>>
+			<<set $lowerwet += Math.floor($flightTime * 4)>>
 		<</if>>
 		<<if !$worn.under_lower.type.includes("swim") and !$worn.under_lower.type.includes("naked")>>
-			<<set $underlowerwet to Math.floor($flightTime * 4)>>
+			<<set $underlowerwet += Math.floor($flightTime * 4)>>
 		<</if>>
 		<<if !$worn.under_upper.type.includes("swim") and !$worn.under_upper.type.includes("naked")>>
-			<<set $underupperwet to Math.floor($flightTime * 4)>>
+			<<set $underupperwet += Math.floor($flightTime * 4)>>
 		<</if>>
 	<</if>>
 	<<set _tempTired to (Math.floor($flightTime / 4) + 1)>>
diff --git a/game/overworld-town/loc-beach/main.twee b/game/overworld-town/loc-beach/main.twee
index 648177267453d454a2558e4fdb1d6e9aa94b2292..66225935cd6a3e79bc2a156466a7bce9be98a105 100644
--- a/game/overworld-town/loc-beach/main.twee
+++ b/game/overworld-town/loc-beach/main.twee
@@ -168,7 +168,7 @@ You could go for a swim, but make sure to dress appropriately.
 				<<ind>><<link [[Tan on the beach (1:00)|Tanning]]>><<pass 60>><</link>><<lstress>>
 				<br>
 			<</if>>
-			<<if def $milkshake and $milkshake gt 0>>
+			<<if $milkshake gte 1 and $exposed lte 0>>
 				<<ind>><<link [[Drink your milkshake (0:10)|Beach Milkshake]]>><<pass 10>><<set $milkshake -= 1>><<stress -5>><</link>><<lstress>>
 				<br>
 			<</if>>
diff --git a/game/overworld-town/loc-home/main.twee b/game/overworld-town/loc-home/main.twee
index 954d074eb42f559c32dff4f07e94f3b1ec8343ad..e5bc2460863750c0966ab60ad49e7e14df577b9f 100644
--- a/game/overworld-town/loc-home/main.twee
+++ b/game/overworld-town/loc-home/main.twee
@@ -1009,6 +1009,22 @@ You are in the bathroom.
 	<<storeon "bed" "wardrobe">><<wraithPossess "home">>
 	<span class="nextLink"><<link [[Walk.|Bedroom]]>><</link>></span>
 	<br>
+<<elseif $christmas_kylar is 1>>
+	<<set $christmas_kylar to 2>>
+	<<npc Kylar>><<person1>>
+	A jingle awakes you.
+	<br>
+	A sprinkling of hoar frost
+	<br>
+	Falls down by the window,
+	<br>
+	Now to rise or to toss?
+	<br><br>
+
+	<<link [[Rise and investigate|Kylar Christmas]]>><<unset $robinbed>><<set $christmas_kylar to 3>><<towelup>><</link>>
+	<br>
+	<<link [[Toss and go back to sleep|Robin Sleep]]>><<endevent>><</link>>
+	<br>
 <<elseif $location is "home" and $slimeWake is 1>>
 	<<slime_wake_home>>
 <<else>>
diff --git a/game/overworld-town/loc-office/exec.twee b/game/overworld-town/loc-office/exec.twee
index b8d1648b7faa682e71da13f1924cef85c9cb1c18..d8f97050e72dc90f335512f0d812f81851314b66 100644
--- a/game/overworld-town/loc-office/exec.twee
+++ b/game/overworld-town/loc-office/exec.twee
@@ -292,7 +292,10 @@ The <<person2>><<person>> walks you to <<his>> desk and sits you down. "I'm real
 	<<He>> hands you a towel. "Here, you can't walk around dressed like that." <<towelup>>
 <</if>>
 <br><br>
-<<endevent>>
+
+<<clotheson>>
+<<endcombat>>
+
 <<link [[Return to lobby|Office Lobby]]>><</link>>
 
 
diff --git a/game/overworld-town/loc-office/secretary.twee b/game/overworld-town/loc-office/secretary.twee
index 34067edba5551ce68955681a4a8fa0de2e6d7452..da1f6cee132a42ed050689e38583f561425c1d89 100644
--- a/game/overworld-town/loc-office/secretary.twee
+++ b/game/overworld-town/loc-office/secretary.twee
@@ -266,7 +266,13 @@ You close the folder of pornography and finish working with the files. The <<per
 
 :: Office Secretary Masturbation Finish
 <<effects>>
+
+<<saveNPC 0 "office_masturbation">>
 <<endmasturbation>>
+<<endcombat>>
+<<loadNPC 0 "office_masturbation">>
+<<clearNPC "office_masturbation">>
+
 <<set $danger to random(1,10000)>>
 <<if $danger gte 9000 - (($masturbationPhase + $officeFloor) * 200)>>
 	You see the <<person1>><<person>> heading your way,
diff --git a/game/overworld-town/loc-street/bondage-events.twee b/game/overworld-town/loc-street/bondage-events.twee
index 53f6c011fe1f8f519690f8937b0d77e087adae7f..3df3f8a73c5f278303d1efdb9c43a48797421523 100644
--- a/game/overworld-town/loc-street/bondage-events.twee
+++ b/game/overworld-town/loc-street/bondage-events.twee
@@ -508,7 +508,7 @@ The <<beasttype>> whimpers and flees.
 
 		<<endcombat>>
 		<<clotheson>>
-		<<generate2>><<person2>>
+		<<generate1>><<person1>>
 		<<if $rng gte 51 and Time.dayState isnot "night" or $rng gte 76>>
 			<<set $rescued += 1>>
 			Hands reach down and help you to your feet. "You okay there?" says the <<person>>.
@@ -524,7 +524,7 @@ The <<beasttype>> whimpers and flees.
 		<<else>>
 			<span class="red">Your scream attracted something worse.</span>
 			<br><br>
-			Before you can stand, a <<person>> climbs on top of you. "Hold still <<girl>>," <<he>> says. "You owe me for saving you from that <<beasttype 0>>."
+			Before you can stand, a <<person>> climbs on top of you. "Hold still, <<girl>>," <<he>> says. "You owe me for saving you from that mutt."
 			<br><br>
 
 			<<link [[Next|Bondage Rape]]>><<set $molestationstart to 1>><</link>>
diff --git a/game/overworld-town/special-whitney/street.twee b/game/overworld-town/special-whitney/street.twee
index 37abbcb99df6d03f2b45d15a7cfd816ef0cfb3a9..6095b637562fbd73ed43d059ab1dc507de3a5e27 100644
--- a/game/overworld-town/special-whitney/street.twee
+++ b/game/overworld-town/special-whitney/street.twee
@@ -2282,10 +2282,9 @@ Over <<his>> shoulder, you spy Whitney hiding under a parked car. <<nnpc_He "Whi
 	<<tearful>> you look around. Whitney's gone. <<He>> must have slipped away in the confusion.
 <<elseif $alarm is 1 and $rescue is 1>>
 	The <<person>> rears <<his>> hand back for another slap, but someone catches <<his>> wrist from behind. "No one makes <<phim>> cry but me." <span class="green">It's Whitney.</span>
-	<<npc Whitney>><<person1>>
 	<br><br>
 
-	<<He>> drags the <<person2>><<person>> off the wall, over to <<person1>><<his>> friends. They descend on <<person2>><<him>> in a flurry of violence.
+	<<nnpc_He "Whitney">> drags the <<person>> off the wall, over to <<nnpc_his "Whitney">> friends. They descend on <<him>> in a flurry of violence.
 	<br><br>
 
 	<<tearful>> you seize the chance to escape.
diff --git a/game/special-masturbation/widgets.twee b/game/special-masturbation/widgets.twee
index 9fbd83e1bc330781c29ecdde83bfeed563863611..af6ebd5ebe03ce4b439c0eec70f014972e8cfc2a 100644
--- a/game/special-masturbation/widgets.twee
+++ b/game/special-masturbation/widgets.twee
@@ -99,10 +99,11 @@
 	<<set $mouthaction to 0>>
 	<<set $mouth to 0>>
 	<<set $mouthstate to 0>>
-	<<set $penisuse to 0>>
+	<<set $penisuse to ($player.penisExist ? 0 : "none")>>
+	<<set $penisstate to ($player.penisExist ? 0 : "none")>>
 	<<set $vaginaactiondefault to 0>>
 	<<set $vaginaaction to 0>>
-	<<set $vaginause to 0>>
+	<<set $vaginause to ($player.vaginaExist ? 0 : "none")>>
 	<<set $vaginastate to ($player.vaginaExist ? 0 : "none")>>
 	<<set $anusactiondefault to 0>>
 	<<set $anusaction to 0>>