From fa8539178fb1832d1213236811f83cb8da7282c8 Mon Sep 17 00:00:00 2001
From: Pregmodder <pregmodder@gmail.com>
Date: Sat, 20 Mar 2021 18:49:35 -0400
Subject: [PATCH] add lewd crest

---
 src/cheats/mod_EditChildCheatNew.tw           |  1 +
 src/cheats/mod_EditInfantCheatNew.tw          |  1 +
 src/cheats/mod_editSlaveCheatNew.tw           |  1 +
 src/events/story/rival/pRivalryActions.js     |  5 ++++
 .../bodyModification/bodyModification.js      |  3 +++
 src/js/modification.js                        | 23 +++++++++++++++++++
 src/js/rulesAssistantOptions.js               |  2 +-
 src/npc/children/longChildDescription.js      |  3 +++
 src/npc/descriptions/describeTattoos.js       |  3 +++
 src/npc/interaction/fButt.tw                  |  2 ++
 src/npc/interaction/fPCImpreg.tw              |  5 ++++
 src/npc/interaction/fVagina.tw                |  2 ++
 src/npc/interaction/fondleDick.tw             |  2 ++
 src/npc/interaction/fondleVagina.tw           |  2 ++
 src/uncategorized/RESS.tw                     |  4 ++--
 15 files changed, 56 insertions(+), 3 deletions(-)

diff --git a/src/cheats/mod_EditChildCheatNew.tw b/src/cheats/mod_EditChildCheatNew.tw
index b256fe1590d..4ae66c67063 100644
--- a/src/cheats/mod_EditChildCheatNew.tw
+++ b/src/cheats/mod_EditChildCheatNew.tw
@@ -2715,6 +2715,7 @@
 	<<radiobutton "$tempSlave.vaginaTat" "counting">>Counting
 	<<radiobutton "$tempSlave.vaginaTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.vaginaTat" "rude words">>Rude Words
+	<<radiobutton "$tempSlave.vaginaTat" "lewd crest">>Lewd Crest
 	<br>''Custom vagina tattoo '' <<textbox "$tempSlave.vaginaTat" $tempSlave.vaginaTat>>
 	<br>
 	''__Anus Tattoo__ (
diff --git a/src/cheats/mod_EditInfantCheatNew.tw b/src/cheats/mod_EditInfantCheatNew.tw
index 0adbc5461e7..b3b21515221 100644
--- a/src/cheats/mod_EditInfantCheatNew.tw
+++ b/src/cheats/mod_EditInfantCheatNew.tw
@@ -2717,6 +2717,7 @@
 	<<radiobutton "$tempSlave.vaginaTat" "counting">>Counting
 	<<radiobutton "$tempSlave.vaginaTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.vaginaTat" "rude words">>Rude Words
+	<<radiobutton "$tempSlave.vaginaTat" "lewd crest">>Lewd Crest
 	<br>''Custom vagina tattoo '' <<textbox "$tempSlave.vaginaTat" $tempSlave.vaginaTat>>
 	<br>
 	''__Anus Tattoo__ (
diff --git a/src/cheats/mod_editSlaveCheatNew.tw b/src/cheats/mod_editSlaveCheatNew.tw
index 7d3ffea9230..2f69c9ed095 100644
--- a/src/cheats/mod_editSlaveCheatNew.tw
+++ b/src/cheats/mod_editSlaveCheatNew.tw
@@ -4647,6 +4647,7 @@
 	<<radiobutton "$tempSlave.vaginaTat" "counting">>Counting
 	<<radiobutton "$tempSlave.vaginaTat" "advertisements">>Advertisements
 	<<radiobutton "$tempSlave.vaginaTat" "rude words">>Rude Words
+	<<radiobutton "$tempSlave.vaginaTat" "lewd crest">>Lewd Crest
 	<br>''Custom vagina tattoo '' <<textbox "$tempSlave.vaginaTat" $tempSlave.vaginaTat>>
 	<br>
 	''__Anus Tattoo__ (
diff --git a/src/events/story/rival/pRivalryActions.js b/src/events/story/rival/pRivalryActions.js
index baa07c72f8f..3f28b239a9b 100644
--- a/src/events/story/rival/pRivalryActions.js
+++ b/src/events/story/rival/pRivalryActions.js
@@ -781,6 +781,7 @@ App.Events.pRivalryActions = function() {
 							V.hostage.counter.vaginal += 100;
 							V.hostage.counter.anal += 100;
 							V.hostage.counter.mammary += 100;
+							V.hostage.vaginaTat = "lewd crest";
 							V.hostage.behavioralFlaw = "none";
 							V.hostage.sexualFlaw = "none";
 							V.hostage.behavioralQuirk = "adores men";
@@ -804,6 +805,7 @@ App.Events.pRivalryActions = function() {
 							V.hostage.counter.vaginal += 100;
 							V.hostage.counter.anal += 100;
 							V.hostage.counter.mammary += 100;
+							V.hostage.vaginaTat = "lewd crest";
 							V.hostage.behavioralFlaw = "none";
 							V.hostage.sexualFlaw = "none";
 							V.hostage.behavioralQuirk = "adores men";
@@ -831,6 +833,7 @@ App.Events.pRivalryActions = function() {
 						if (V.seeDicks !== 0) {
 							V.hostage.dick = 1;
 						}
+						V.hostage.vaginaTat = "lewd crest";
 						V.hostage.behavioralFlaw = "none";
 						V.hostage.sexualFlaw = "none";
 						V.hostage.behavioralQuirk = "adores men";
@@ -994,6 +997,7 @@ App.Events.pRivalryActions = function() {
 						V.hostage.sexualFlaw = "crude";
 						V.hostage.counter.vaginal += 35;
 						V.hostage.vagina = 3;
+						V.hostage.vaginaTat = "lewd crest";
 						r.push(`giggling and flirting while ${his} body is measured and ${his} weight is taken; 280 tallies adorn ${his} soft belly. "108 kilos, getting there. Oh don't make that face, there's plenty of food left."`);
 						switch (V.hostage.fetish) {
 							case "cumslut":
@@ -1102,6 +1106,7 @@ App.Events.pRivalryActions = function() {
 						V.hostage.behavioralFlaw = "none";
 						V.hostage.behavioralQuirk = "confident";
 						V.hostage.sexualQuirk = "perverted";
+						V.hostage.vaginaTat = "lewd crest";
 						r.push(`struggling to solve a puzzle to gain access to the extra large dildo cupboard.`);
 						break;
 					case "Petite Admiration":
diff --git a/src/facilities/bodyModification/bodyModification.js b/src/facilities/bodyModification/bodyModification.js
index e361e68c80d..864f568f81a 100644
--- a/src/facilities/bodyModification/bodyModification.js
+++ b/src/facilities/bodyModification/bodyModification.js
@@ -396,6 +396,9 @@ App.UI.bodyModification = function(slave, cheat = false) {
 			"possessive",
 			"paternalist",
 		]);
+		if (slave.vaginaTat === 0) {
+			tattooChoiceNames.add("lewd crest");
+		}
 		if (slave.anusTat === 0) {
 			tattooChoiceNames.add("bleached");
 		}
diff --git a/src/js/modification.js b/src/js/modification.js
index cb297705c00..d203182adf2 100644
--- a/src/js/modification.js
+++ b/src/js/modification.js
@@ -330,6 +330,29 @@ App.Medicine.Modification.setTattoo = function(slave, location, design, cheat) {
 	const {He, he, His, his, him} = getPronouns(slave);
 	const {s, ss, x, c, say, title: Master} = getEnunciation(slave);
 	let r = ` `;
+	if (location === "vagina" && design === "lewd crest") {
+		if (canSee(slave)) {
+			if (slave.fetish === "pregnancy") {
+				r += `${He} smiles, pleased at the attention ${his} womb is getting.`;
+			} else if (slave.fetish === "submissive") {
+				r += `${He} flushes, understanding that ${he} has been marked for debauchery.`;
+			} else if (slave.fetish === "humiliation") {
+				r += `${He} smiles, pleased that ${he}'s been marked erotic.`;
+			} else if (slave.devotion > 50) {
+				r += `${He} smiles, pleased at the mark of your attention to ${his} body. "Thank you, ${Master}," ${he} ${say}s devotedly. `);
+				r += Spoken(slave, `"I love you and I'll serve you with my body as best I can."`);
+			} else if (slave.devotion > 20) {
+				r += `${He} stares, torn between admiration at the intricate design and realization that ${his} abdomen has been permanently tattooed. `;
+				r += `"Thank you, ${Master}," ${he} ${say}s, taking refuge in propriety.`);
+				r += Spoken(slave, `"Um, d-does this mean I'm even more of a, um, s-slut now?" `);
+				r += `${he} asks hesitantly, not sounding very enthusiastic.`;
+			} else if (slave.trust < -20) {
+				r += `${He} stares, looking sad as the meaning of a permanent display of ${his} status as lewd slut sinks in. After a short pause ${he} remembers ${his} duties and stammers, "T-thank you, ${Master}." After a while longer ${he} turns ${his} head away, clearly not wanting to dwell on how ${his} body is being branded to attract sexual attention.`;
+			} else {
+				r += `${He} stares, horrified at the lewd crest that now adorns ${his} lower belly.`;
+			}
+		}
+	}
 	if (location === "anus" && design !== 0) {
 		if (canSee(slave) && canTalk(slave)) {
 			const anus = (function(s) {
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index bfdb5062d2b..502f4113325 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -3781,7 +3781,7 @@ App.RA.options = (function() {
 
 	class AbdomenTattooList extends ListSelector {
 		constructor() {
-			super("Abdomen tattoos", commonTattoos());
+			super("Abdomen tattoos", commonTattoos().concat([['lewd crest']]));
 			this.setValue(current_rule.set.vaginaTat);
 			this.onchange = (value) => current_rule.set.vaginaTat = value;
 		}
diff --git a/src/npc/children/longChildDescription.js b/src/npc/children/longChildDescription.js
index 60638365e9d..7d55945a3e8 100644
--- a/src/npc/children/longChildDescription.js
+++ b/src/npc/children/longChildDescription.js
@@ -5151,6 +5151,9 @@ App.Facilities.Nursery.LongChildDescription = function(child, {market = 0, event
 					case "paternalist":
 						r += `${His} abdomen is tattooed with a downward-pointing arrow which reads 'Let's come together.' `;
 						break;
+					case "lewd crest":
+						r += `${His} lower abdomen is tattooed with a stylized silhouette that evokes the shape of ${child.ovaries || child.mpreg ? `${his}` : `a`} womb. `;
+						break;
 					default:
 						r += `${child.vaginaTat}`;
 						break;
diff --git a/src/npc/descriptions/describeTattoos.js b/src/npc/descriptions/describeTattoos.js
index 3a12d0be288..dc0b6712c17 100644
--- a/src/npc/descriptions/describeTattoos.js
+++ b/src/npc/descriptions/describeTattoos.js
@@ -725,6 +725,9 @@ App.Desc.tattoo = function(slave, surface) {
 					case "paternalist":
 						r.push(`${His} abdomen is tattooed with a downward-pointing arrow which reads 'Let's come together.'`);
 						break;
+					case "lewd crest":
+						r.push(`${His} lower abdomen is tattooed with a stylized silhouette that evokes the shape of ${slave.ovaries || slave.mpreg ? `${his}` : `a`} womb.`);
+						break;
 					default:
 						r.push(pronounsForSlaveProp(slave, slave.vaginaTat));
 						break;
diff --git a/src/npc/interaction/fButt.tw b/src/npc/interaction/fButt.tw
index 158c85cb9b3..093304ad8ea 100644
--- a/src/npc/interaction/fButt.tw
+++ b/src/npc/interaction/fButt.tw
@@ -25,6 +25,8 @@ You call $him over so you can
 		The tattoos on $his abdomen nicely illustrate what you mean to do to $him.
 	<<elseif (getSlave($AS).vaginaTat == "degradation")>>
 		The tattoos on $his abdomen are asking you to, after all.
+	<<elseif (getSlave($AS).vaginaTat == "lewd crest")>>
+		The crest on $his abdomen screams debauchery and implores you to use $him.
 	<</if>>
 <</if>>
 
diff --git a/src/npc/interaction/fPCImpreg.tw b/src/npc/interaction/fPCImpreg.tw
index 8de438ffdef..96a8826dc25 100644
--- a/src/npc/interaction/fPCImpreg.tw
+++ b/src/npc/interaction/fPCImpreg.tw
@@ -30,6 +30,9 @@ You call $him over so you can
 	<<else>>
 		asshole.
 	<</if>>
+	<<if (getSlave($AS).vaginaTat == "lewd crest")>>
+		The crest on $his abdomen eagerly awaits a womb stuffed with cum, and who are you to deny its request?
+	<</if>>
 <<else>>
 	<<if (getSlave($AS).vagina > 2)>>
 		fuck $his gaping, fertile cunt.
@@ -50,6 +53,8 @@ You call $him over so you can
 		The tattoos on $his abdomen nicely illustrate what you mean to do to $him.
 	<<elseif (getSlave($AS).vaginaTat == "degradation")>>
 		The tattoos on $his abdomen ask you to, after all.
+	<<elseif (getSlave($AS).vaginaTat == "lewd crest")>>
+		The crest on $his abdomen eagerly awaits a womb stuffed with cum.
 	<</if>>
 
 	<<if getSlave($AS).clit == 1>>
diff --git a/src/npc/interaction/fVagina.tw b/src/npc/interaction/fVagina.tw
index 2dc4f12c77e..ce7f8a76e85 100644
--- a/src/npc/interaction/fVagina.tw
+++ b/src/npc/interaction/fVagina.tw
@@ -24,6 +24,8 @@ You call $him over so you can
 	The tattoos on $his abdomen nicely illustrate what you mean to do to $him.
 <<elseif (getSlave($AS).vaginaTat == "degradation")>>
 	The tattoos on $his abdomen ask you to, after all.
+<<elseif (getSlave($AS).vaginaTat == "lewd crest")>>
+	The crest on $his abdomen screams debauchery and implores you to use $him.
 <</if>>
 
 <<if getSlave($AS).devotion <= 20>>
diff --git a/src/npc/interaction/fondleDick.tw b/src/npc/interaction/fondleDick.tw
index 1a2bce20b08..1542b6e2950 100644
--- a/src/npc/interaction/fondleDick.tw
+++ b/src/npc/interaction/fondleDick.tw
@@ -49,6 +49,8 @@ and
 
 <<if (getSlave($AS).vaginaTat == "tribal patterns")>>
 	The tattoos on $his abdomen certainly draw attention there.
+<<elseif (getSlave($AS).vaginaTat == "lewd crest")>>
+	The crest on $his abdomen invokes lewd thoughts, after all.
 <</if>>
 
 <<if (getSlave($AS).vaginaPiercing > 1) && (getSlave($AS).dick != 0)>>
diff --git a/src/npc/interaction/fondleVagina.tw b/src/npc/interaction/fondleVagina.tw
index 212b808f98e..d543aa858e8 100644
--- a/src/npc/interaction/fondleVagina.tw
+++ b/src/npc/interaction/fondleVagina.tw
@@ -19,6 +19,8 @@ You call $him over so you can fondle $his
 
 <<if (getSlave($AS).vaginaTat == "tribal patterns")>>
 	The tattoos on $his abdomen certainly draw attention there.
+<<elseif (getSlave($AS).vaginaTat == "lewd crest")>>
+	The crest on $his abdomen invokes lewd thoughts, after all.
 <</if>>
 
 <<if (getSlave($AS).vagina != -1)>>
diff --git a/src/uncategorized/RESS.tw b/src/uncategorized/RESS.tw
index 28ea635f285..fd8a248a6d6 100644
--- a/src/uncategorized/RESS.tw
+++ b/src/uncategorized/RESS.tw
@@ -11254,8 +11254,8 @@ $He cranes $his neck, glancing over $his shoulder to give you a pleading look.
 				<<else>>
 					Once you finish $his new tattoo, you describe it to $him in detail. $He pauses for a moment,
 				<</if>>
-				a curiously mixed expression on $his face. This is $his life now; it's permanently written on $him, and @@.hotpink;$he knows it.@@
-				<<set $activeSlave.vaginaTat = "degradation">>
+				a curiously mixed expression on $his face. This is $his life now; it's permanently a part of $him, and @@.hotpink;$he knows it.@@
+				<<set $activeSlave.vaginaTat = "lewd crest">>
 			<</if>>
 		<<elseif ($activeSlave.fetish == "dom") && ($activeSlave.fetishKnown == 1)>>
 			activate the ink gun, its low buzzing drawing a moan of anticipation out of $activeSlave.slaveName. Working at a touchscreen, you exercise your artistic talents, making the side of $his face fierce with tribal patterns. Tattooing over such thin and sensitive skin is intensely painful, but $he tolerates it, permitting nothing but a low and continuing growl to escape. $He's obviously tired out by the pain when $he's finally allowed to rise, but $he <<if canSee($activeSlave)>>looks at $himself in the mirror<<elseif canHear($activeSlave)>>listens to your description<<else>>traces the design with $his fingertips<</if>> with @@.hotpink;obvious approval.@@
-- 
GitLab