diff --git a/game/base-combat/actions-hands.twee b/game/base-combat/actions-hands.twee
index 0a220cd0fe9f1dbf2ae977a8bfad6187202050a3..0ff5703c26e7436175f1528f36f6996e03464a41 100644
--- a/game/base-combat/actions-hands.twee
+++ b/game/base-combat/actions-hands.twee
@@ -1,6 +1,6 @@
 :: Widgets Actions Left Hand [widget]
 <<widget "leftdefault">>
-<<if $lefttarget isnot "self">>
+<<if $lefttarget isnot "self" and $punishmentposition isnot "gloryhole">>
 	<<set _leftaction["Stroke"] to "leftchest">>
 	<<if $consensual isnot 1 and ($fightTargets is undefined or $fightTargets.includes($lefttarget))>>
 		<<set _leftaction["Punch"] to "lefthit">>
@@ -478,7 +478,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <<if $lefttarget isnot "self">>
 	<<set $_target to $NPCList[$lefttarget]>>
 	<<if $_target.penis is "clothed" or $_target.vagina is "clothed" or $_target.chest is "clothed">>
-		<<if ($consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 14 and !$promiscuityIgnore)>>
+		<<if ($consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 14 and !$promiscuityIgnore) or $punishmentposition is "gloryhole">>
 			<!-- Do Nothing -->
 		<<else>>
 			<<set _leftaction["Undress:"] to "leftUndressOther">>
@@ -501,7 +501,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 
 <<widget "rightdefault">>
 <<if $righttarget isnot "self">>
-	<<set _rightaction["Stroke"] to "rightchest">>
+	<<set _rightaction["Stroke"] to "rightchest" and $punishmentposition isnot "gloryhole">>
 	<<if $consensual isnot 1 and ($fightTargets is undefined or $fightTargets.includes($righttarget))>>
 		<<set _rightaction["Punch"] to "righthit">>
 	<</if>>
@@ -974,7 +974,7 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <<if $righttarget isnot "self">>
 	<<set $_target to $NPCList[$righttarget]>>
 	<<if $_target.penis is "clothed" or $_target.vagina is "clothed" or $_target.chest is "clothed">>
-		<<if ($consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 14 and !$promiscuityIgnore)>>
+		<<if ($consensual is 1 and ($enemytype is "man" ? $promiscuity : $deviancy) lte 14 and !$promiscuityIgnore) or $punishmentposition is "gloryhole">>
 			<!-- Do Nothing -->
 		<<else>>
 			<<set _rightaction["Undress:"] to "rightUndressOther">>
@@ -2480,4 +2480,4 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 			<</if>>
 		<</if>>
 	<</if>>
-<</widget>>
\ No newline at end of file
+<</widget>>
diff --git a/game/base-combat/actions-speech.twee b/game/base-combat/actions-speech.twee
index b8fd50e1635db3a9ef44cde25bce63bc125fd83a..0fbc80fcd6de66526e061e6b49d9eb84072e0b72 100644
--- a/game/base-combat/actions-speech.twee
+++ b/game/base-combat/actions-speech.twee
@@ -34,7 +34,7 @@
 			<<if $analchastity is 0 and $noanal is 0>>
 				<<set _askActions["to not put anything in your anus" + _diffText] to "noanal">>
 			<</if>>
-			<<if $asphyxiaLvl gte 1 and $nochoke isnot 1>>
+			<<if $asphyxiaLvl gte 1 and $nochoke isnot 1 and !$gloryhole>>
 				<<set _askActions["to not choke you" + _diffText] to "nochoke">>
 			<</if>>
 		<</if>>
@@ -66,14 +66,14 @@
 		<</if>>
 	<</if>>
 	<<if $worn.over_upper.name isnot "naked" and $worn.over_upper.cursed isnot 1 or $worn.upper.name isnot "naked" and $worn.upper.cursed isnot 1 or $worn.under_upper.name isnot "naked" and $worn.under_upper.cursed isnot 1>>
-		<<if $noupper isnot 1 and $noupperasked isnot 1 and $enemytype is "man" and !$npcSub>>
+		<<if $noupper isnot 1 and $noupperasked isnot 1 and $enemytype is "man" and !$npcSub and !$gloryhole>>
 			<<set _askActions["to leave your top on" + _diffText] to "noupper">>
 		<</if>>
 	<</if>>
 	<<if $submissive gte 1150 and !$robinRentEvent>>
 		<<set _mouthaction["Moan"] to "moan">>
 	<</if>>
-	<<if !$npcSub and $asphyxiaLvl gte 1 and $consensual is 1 and $enemytype is "man" and ($choketrait or ($chokeorgasm gte 1 and $submissive gt 850) or ($awarelevel gte 2 and $submissive gte 1150))>>
+	<<if !$npcSub and $asphyxiaLvl gte 1 and $consensual is 1 and $enemytype is "man" and ($choketrait or ($chokeorgasm gte 1 and $submissive gt 850) or ($awarelevel gte 2 and $submissive gte 1150)) and !$gloryhole>>
 		<<set _askActions["to choke you"] to "askchoke">>
 	<</if>>
 	<<if $consensual is 1 and $masochism_level gte 1 or $masochism_level gte 3>>
@@ -102,7 +102,7 @@
 			<<set _mouthaction["Tell Bailey you can't afford it"] to "pay">>
 		<</if>>
 	<</if>>
-	<<if $worn.face.name isnot "naked" and $worn.face.type.includes("mask") and $consensual is 1 and $enemytype is "man" and !$npcSub>>
+	<<if $worn.face.name isnot "naked" and $worn.face.type.includes("mask") and $consensual is 1 and $enemytype is "man" and !$npcSub and !$gloryhole>>
 			<<set _askActions["to leave your mask on" + _diffText] to "nomask">>
 	<</if>>
 	<<if Object.keys(_askActions).length gt 0>>
diff --git a/game/base-combat/man-combat.twee b/game/base-combat/man-combat.twee
index 9a010b40073972d7fe3df7cc75646a4658c4e761..3f0a0c729f7b7f729e486d8c0e0eeb5abbf07826 100644
--- a/game/base-combat/man-combat.twee
+++ b/game/base-combat/man-combat.twee
@@ -1960,7 +1960,7 @@ Hands are 'inverted': NPC holds PC's left hand with their right one, and vice ve
 			<<neutral 4 "breasts" _n>><<playWithBreasts>>
 			<<bodypart_admire_chance breasts>>
 		<</if>>
-	<<elseif $enemyanger + $rng lte 70 and $pronoun is "f" and $position isnot "wall" and $head is 0 and ($mouthuse is 0 or $mouthuse is "breasts") and ($NPCList[_n].chest is 0 or $NPCList[_n].chest is "clothed") and $NPCList[_n].location.genitals isnot "head" and $NPCList[_n].location.head isnot "genitals" and $NPCList[_n].stance isnot "topface">>
+	<<elseif $enemyanger + $rng lte 70 and $pronoun is "f" and $position isnot "wall" and not $gloryhole and $head is 0 and ($mouthuse is 0 or $mouthuse is "breasts") and ($NPCList[_n].chest is 0 or $NPCList[_n].chest is "clothed") and $NPCList[_n].location.genitals isnot "head" and $NPCList[_n].location.head isnot "genitals" and $NPCList[_n].stance isnot "topface">>
 		<<if $NPCList[_n].chest is "clothed">>
 			<span class="blue"><<He>> <<npcUndressText $NPCList[_n] "upper" "self">>,</span> and <span class="pink">pushes your face against <<his>> $NPCList[_n].breastsdesc</span> with <<his>> _args[0] hand.
 			<<set $NPCList[_n].chest to 0>>
@@ -4713,7 +4713,11 @@ Hands are 'inverted': NPC holds PC's left hand with their right one, and vice ve
 	<<if $NPCList[_n].chest is "clothed" and $npcSub isnot 1>>
 		<<if ($NPCList[_n].pronoun is "f" and ($NPCList[_n].lactation is 1 or $rng lte ($enemyarousal - 80))) or
 		($rng lte 15 and $enemyarousal gte 105)>>
-			<span class="blue"><<He>> <<npcUndressText $NPCList[_n] "upper" "self">>, <<npcRevealText $NPCList[_n] "upper">>.</span>
+		    <<if not $gloryhole>>
+			    <span class="blue"><<He>> <<npcUndressText $NPCList[_n] "upper" "self">>, <<npcRevealText $NPCList[_n] "upper">>.</span>
+			<<else>>
+			    You faintly hear fabric sliding on the other side. <<He>> must have taken off some clothing.
+			<</if>>
 			<<set $NPCList[_n].chest to 0>>
 		<</if>>
 	<</if>>