From 77571b69b7bebc7f5a11311598f323bbb44bcf41 Mon Sep 17 00:00:00 2001
From: nesokax <temp-email-for-oauth-nesokax@gitlab.localhost>
Date: Fri, 25 Feb 2022 22:31:53 +0000
Subject: [PATCH] Several strap-on improvements

---
 game/base-combat/actions-hands.twee | 28 ++++++++++++++++++++--------
 game/base-combat/end.twee           |  2 +-
 game/base-combat/widgets.twee       |  2 +-
 game/base-system/text.twee          |  6 +++++-
 4 files changed, 27 insertions(+), 11 deletions(-)

diff --git a/game/base-combat/actions-hands.twee b/game/base-combat/actions-hands.twee
index 7fa0ecde19..b72c999789 100644
--- a/game/base-combat/actions-hands.twee
+++ b/game/base-combat/actions-hands.twee
@@ -307,17 +307,23 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <</if>>
 
 <<if $worn.lower.vagina_exposed is 1 and $worn.under_lower.vagina_exposed is 1>>
+	<<set _penis to playerHasStrapon() ? 'strap-on' : 'penis'>>
+	<<set _straponDisplaced to (!playerHasStrapon() && $worn.under_lower.type.includes("strap-on"))>>
 	<<if $NPCList[0].state is "stalk" and $NPCList[0].legs isnot "run">>
 		<<if $penisuse is "cover">>
-			<<set _leftaction["Keep covering your penis"] to "leftcoverpenismeek">>
+			<<set _leftaction["Keep covering your _penis"] to "leftcoverpenismeek">>
 		<<elseif $penisuse is 0>>
-			<<set _leftaction["Cover your penis"] to "leftcoverpenismeek">>
+			<<if !_straponDisplaced>>
+				<<set _leftaction["Cover your _penis"] to "leftcoverpenismeek">>
+			<</if>>
 		<</if>>
 	<<elseif $lefttarget is "self" or $targetYourself is false or _targetnumber is 1 or $NPCList[0].state is "stalk">>
 		<<if $penisuse is "cover">>
-			<<set _leftaction["Keep covering your penis"] to "leftcoverpenis">>
+			<<set _leftaction["Keep covering your _penis"] to "leftcoverpenis">>
 		<<elseif $penisuse is 0>>
-			<<set _leftaction["Cover your penis"] to "leftcoverpenis">>
+			<<if !_straponDisplaced>>
+				<<set _leftaction["Cover your _penis"] to "leftcoverpenis">>
+			<</if>>
 		<</if>>
 	<</if>>
 <</if>>
@@ -746,17 +752,23 @@ $NPCList[5].lefthand is "pen" or $NPCList[5].righthand is "pen">>
 <</if>>
 
 <<if $worn.lower.vagina_exposed is 1 and $worn.under_lower.vagina_exposed is 1>>
+	<<set _penis to playerHasStrapon() ? 'strap-on' : 'penis'>>
+	<<set _straponDisplaced to (!playerHasStrapon() && $worn.under_lower.type.includes("strap-on"))>>
 	<<if $NPCList[0].state is "stalk" and $NPCList[0].legs isnot "run">>
 		<<if $penisuse is "cover">>
-			<<set _rightaction["Keep covering your penis"] to "rightcoverpenismeek">>
+			<<set _rightaction["Keep covering your _penis"] to "rightcoverpenismeek">>
 		<<elseif $penisuse is 0>>
-			<<set _rightaction["Cover your penis"] to "rightcoverpenismeek">>
+			<<if !_straponDisplaced>>
+				<<set _rightaction["Cover your _penis"] to "rightcoverpenismeek">>
+			<</if>>
 		<</if>>
 	<<elseif $righttarget is "self" or $targetYourself is false or _targetnumber is 1 or $NPCList[0].state is "stalk">>
 		<<if $penisuse is "cover">>
-			<<set _rightaction["Keep covering your penis"] to "rightcoverpenis">>
+			<<set _rightaction["Keep covering your _penis"] to "rightcoverpenis">>
 		<<elseif $penisuse is 0>>
-			<<set _rightaction["Cover your penis"] to "rightcoverpenis">>
+			<<if !_straponDisplaced>>
+				<<set _rightaction["Cover your _penis"] to "rightcoverpenis">>
+			<</if>>
 		<</if>>
 	<</if>>
 <</if>>
diff --git a/game/base-combat/end.twee b/game/base-combat/end.twee
index 3cf2743149..1b5b3e0688 100644
--- a/game/base-combat/end.twee
+++ b/game/base-combat/end.twee
@@ -435,7 +435,7 @@
 <<if $penileskillup gte 1>>
 	<<set $penileskillup to 0>>
 	<<if $penileskill lt 1000>>
-		<span class="gold">You feel more confident in your ability to pleasure others with your penis.</span>
+		<span class="gold">You feel more confident in your ability to pleasure others with <<= $player.penisExist ? "your penis" : "a strap-on">>.</span>
 		<br>
 	<</if>>
 <</if>>
diff --git a/game/base-combat/widgets.twee b/game/base-combat/widgets.twee
index 12db4fc882..1dfec859d6 100644
--- a/game/base-combat/widgets.twee
+++ b/game/base-combat/widgets.twee
@@ -145,7 +145,7 @@
     	<<set $_straponvirginityIgnore to ($_vType is "penile" and npcHasStrapon($_npcId))>>
 	<</if>>
 
-    <<if $_npc and $_vType and $_npc.virginity and $_npc.virginity[$_vType] and (!$wraith or $wraith.mimic isnot $_npc.nam) and !_straponvirginityIgnore>>
+    <<if $_npc and $_vType and $_npc.virginity and $_npc.virginity[$_vType] and (!$wraith or $wraith.mimic isnot $_npc.nam) and !$_straponvirginityIgnore>>
         /* note: virginity must be exactly equal to true; only true means that they still have their virginity. */
         <<if $_npc.virginity[$_vType] is true>>
 			<<set $_npc.virginity[$_vType] to "player">>
diff --git a/game/base-system/text.twee b/game/base-system/text.twee
index b706bd15e4..b2c9bc8062 100644
--- a/game/base-system/text.twee
+++ b/game/base-system/text.twee
@@ -5699,8 +5699,12 @@ School finishes on the first Monday of December.
 		<br>
 	<</if>>
 	<<switch _args[1]>>
-		<<case "vaginal" "penile">>
+		<<case "vaginal">>
 			<span class="red"> This action will deflower <<him>>.</span>
+		<<case "penile">>
+			<<if !npcHasStrapon(V.NPCList.findIndex(npc => npc.fullDescription === _args[0]))>>
+				<span class="red"> This action will deflower <<him>>.</span>
+			<</if>>
 		<<case "anal">>
 			<span class="red"> This action will take <<his>> anal virginity.</span>
 		<<case "oral">>
-- 
GitLab