From 6df3140b35b50199a75a0c51b4e005d8a24085b0 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Mon, 9 Nov 2020 20:07:10 -0500
Subject: [PATCH] hgapp

---
 src/endWeek/reports/penthouseReport.js | 438 +++++++++++++++++++++++++
 1 file changed, 438 insertions(+)

diff --git a/src/endWeek/reports/penthouseReport.js b/src/endWeek/reports/penthouseReport.js
index 8afecdacf8f..d648a744f9f 100644
--- a/src/endWeek/reports/penthouseReport.js
+++ b/src/endWeek/reports/penthouseReport.js
@@ -49,6 +49,7 @@ globalThis.penthouseReport = function() {
 	V.servantsQuartersSpots = App.Entity.facilities.servantsQuarters.freeSpace;
 
 	function fullReport(slave) {
+		const el = new DocumentFragment();
 		const {
 			His,
 			he, him
@@ -162,9 +163,446 @@ globalThis.penthouseReport = function() {
 
 		// &nbsp;&nbsp;&nbsp;&nbsp;
 		r.push(App.SlaveAssignment.devotion(slave));
+		App.Events.addNode(el, r);
+		return el;
 	}
 
 	function HGApplication(slave) {
+		const el = new DocumentFragment();
+		const {
+			He, His,
+			he, his, him, himself, girl
+		} = getPronouns(S.HeadGirl);
+		const {he2, his2, him2, himself2, girl2} = getPronouns(slave).appendSuffix("2");
+		let r = [];
+
+		slave.training = Math.clamp(slave.training, 0, 150);
+		let _effectiveness = S.HeadGirl.actualAge + ((S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant) / 3) - (S.HeadGirl.accent * 5) + (V.HGSeverity * 10) + ((slave.intelligence + slave.intelligenceImplant) / 4) - (slave.accent * 5);
+		if (V.AgePenalty === 0) {
+			_effectiveness += Math.max(0, (30 - S.HeadGirl.actualAge));
+		}
+		if (S.HeadGirl.sexualFlaw === "abusive" && V.HGSeverity >= 0) {
+			_effectiveness += 10;
+		}
+		if (V.HGtraining !== "health") {
+			slave.health.tired += 25;
+		}
+
+		// &nbsp;&nbsp;&nbsp;&nbsp;
+		r.push(`<span style="font-weight: bold">Your Head Girl</span> <span class='slave-name'>${S.HeadGirl.slaveName}</span> notices that <span class='slave-name'>${slave.slaveName}</span>`);
+		switch (V.HGtraining) {
+			case "health":
+				r.push(`is unwell.`);
+				break;
+			case "obedience":
+				r.push(`is disobedient.`);
+				break;
+			case "paraphilia":
+				r.push(`has a paraphilia.`);
+				break;
+			case "flaw":
+				r.push(`has an unpleasant flaw worth fixing.`);
+				break;
+			case "soften":
+				r.push(`has an unpleasant flaw that ${he} can try to soften into a unique quirk.`);
+				break;
+			case "oral skill":
+				r.push(`isn't as orally skilled as ${he} is.`);
+				break;
+			case "anal skill":
+				r.push(`isn't as skilled at taking anal as ${he} is.`);
+				break;
+			case "fuck skill":
+				r.push(`isn't as skilled at vaginal intercourse as ${he} is.`);
+				break;
+			case "whore skill":
+				r.push(`isn't as skilled at the fine art of sex for money as ${he} is.`);
+				break;
+			case "entertain skill":
+				r.push(`isn't as skilled at entertainment as ${he} is.`);
+		}
+
+		if (V.HGtraining === "health") {
+			r.push(`${He} helps slave.slaveName however ${he} can. The tender care has <span class="green">improved ${slave.slaveName}'s health.</span>`);
+			improveCondition(slave, 10);
+			slave.health.tired = Math.clamp(slave.health.tired - 10, 0, 1000);
+			slave.training = 0;
+		} else {
+			if (S.HeadGirl.career === "an arcology owner") {
+				r.push(`${He} was once an arcology owner ${himself}, making ${him} truly peerless as a Head Girl.`);
+				_effectiveness += 50;
+			} else if (setup.HGCareers.includes(S.HeadGirl.career)) {
+				r.push(`${He} was used to giving commands and being obeyed in ${his} life before ${he} was a slave, experience ${he} can call on now.`);
+				_effectiveness += 5;
+			} else if (S.HeadGirl.skill.headGirl >= V.masteredXP) {
+				r.push(`${He} is used to giving commands and being obeyed through experience, rendering ${him} more effective.`);
+				_effectiveness += 5;
+			}
+
+			if (S.HeadGirl.actualAge > 30) {
+				r.push(`${His} age and experience help ${him} as ${he} works with ${slave.slaveName}.`);
+			} else if (S.HeadGirl.actualAge < 25 && V.AgePenalty > 0) {
+				r.push(`${His} youth and inexperience impede ${him} as ${he} works with ${slave.slaveName}.`);
+			}
+
+			if (S.HeadGirl.accent >= 3) {
+				r.push(`${He} does ${his} best to give orders in ${V.language}, but has to resort to a lot of unseemly gesticulation and shouting, making ${him} much less effective.`);
+			} else if (S.HeadGirl.accent === 2) {
+				r.push(`${His} heavy ${aNational(S.HeadGirl.nationality)} accent impedes ${his} clarity in ${V.language}, making ${him} somewhat less effective.`);
+			}
+
+			if (V.HGtraining === "obedience" || V.HGtraining === "flaw" || V.HGtraining === "soften") {
+				if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) {
+					if (slave.intelligence + slave.intelligenceImplant > 50) {
+						r.push(`${He} needs ${his} wits about ${him} to mold ${slave.slaveName}, who's quite intelligent ${himself2}.`);
+					} else if (slave.intelligence + slave.intelligenceImplant >= -50) {
+						r.push(`${His} intelligence helps ${him} mold ${slave.slaveName}.`);
+					} else {
+						r.push(`Molding ${slave.slaveName} is very easy, especially for a smart Head Girl like ${him}.`);
+					}
+				}
+			} else {
+				if (S.HeadGirl.intelligence + S.HeadGirl.intelligenceImplant > 50) {
+					if (slave.intelligence + slave.intelligenceImplant > 50) {
+						r.push(`Both slaves are quite intelligent, making ${his} job much easier.`);
+					} else if (slave.intelligence + slave.intelligenceImplant >= -50) {
+						r.push(`${He}'s quite intelligent and can teach ${slave.slaveName} well.`);
+					} else {
+						r.push(`${He} needs all ${his} considerable intelligence to get through to the idiot ${he} has to teach.`);
+					}
+				}
+			}
 
+			if (V.HGSeverity > 0) {
+				r.push(`Your directives encourage ${him} to rape any slave that fails in the slightest way, a task ${he} approaches`);
+				if (S.HeadGirl.sexualFlaw === "abusive") {
+					r.push(`eagerly, since ${he} prefers to take ${his} pleasure without consent.`);
+				} else if (S.HeadGirl.fetish === "sadist") {
+					r.push(`with sadistic enthusiasm.`);
+				} else if (S.HeadGirl.fetish === "dom") {
+					r.push(`with confidence.`);
+				} else if (S.HeadGirl.energy > 95) {
+					r.push(`as a convenient way to`);
+					if (S.HeadGirl.balls > 0) {
+						r.push(`drain ${his} perpetually overfilled balls into a series of spasming holes.`);
+					} else {
+						r.push(`sate ${his} excess sexual appetite.`);
+					}
+				} else {
+					r.push(`dutifully.`);
+				}
+				if (slave.vagina === 0) {
+					r.push(`In ${slave.slaveName}'s case, ${he}'s careful to limit ${his2} sexual abuse to things that won't take the ${girl2}'s virginity. The slave`);
+				} else if (slave.anus === 0) {
+					r.push(`${He}'s careful to molest ${slave.slaveName} in ways that don't involve penetrating ${his2} virgin ass. The slave`);
+				} else {
+					r.push(`${slave.slaveName}`);
+				}
+				if (slave.devotion > 50) {
+					r.push(`accepts the abuse, believing ${he2} deserves to be raped.`);
+				} else if (slave.devotion >= -20) {
+					r.push(`is <span class="gold">frightened</span> by the unceasing abuse.`);
+					slave.trust -= 1;
+				} else {
+					r.push(`<span class="mediumorchid">hates</span> and <span class="gold">fears</span> the constant abuse.`);
+					slave.trust -= 1;
+					slave.devotion -= 1;
+				}
+				r.push(`${S.HeadGirl.slaveName} makes sure ${his} victim hates it, every time, and ${slave.slaveName} can't help but do ${his2} very best to avoid this treatment.`);
+			} else if (V.HGSeverity === 0) {
+				r.push(`You allow ${him} to use ${his} own judgment when punishing failures,`);
+				if (S.HeadGirl.sexualFlaw === "abusive") {
+					r.push(`and ${he} usually decides in favor of forcing misbehaving slaves to get ${him} off.`);
+				} else if (S.HeadGirl.fetish === "sadist") {
+					r.push(`permission the sadist uses for ${his} own gratification.`);
+				} else if (S.HeadGirl.fetish === "dom") {
+					r.push(`which the dominant ${girl} uses confidently.`);
+				} else if (S.HeadGirl.energy > 95) {
+					r.push(`which ${he} uses to`);
+					if (S.HeadGirl.balls > 0) {
+						r.push(`force ${his} subordinates to keep ${his} balls drained.`);
+					} else {
+						r.push(`extract the constant sexual favors ${his} libido demands.`);
+					}
+				} else {
+					r.push(`and ${he} does ${his} best to be fair.`);
+				}
+				r.push(`${slave.slaveName}`);
+				if (slave.devotion > 50) {
+					r.push(`is <span class="mediumaquamarine">grateful</span> that ${he2} is punished justly when ${he2} makes mistakes.`);
+					slave.trust += 1;
+				} else if (slave.devotion >= -20) {
+					r.push(`does ${his2} best to learn quickly and avoid punishment.`);
+				} else {
+					r.push(`is <span class="gold">scared</span> by ${his2} inability to get away with the smallest disobedience.`);
+					slave.trust -= 1;
+				}
+			} else {
+				r.push(`You require ${him} to use respect when punishing; ${he} does ${his} best to motivate, but is unable to use real fear as a tool. slave.slaveName understands this, and <span class="mediumaquamarine">trusts</span> that if ${he2} fails, the consequences won't be too awful.`);
+				slave.trust += 1;
+			}
+
+			if (V.HGtraining === "obedience") {
+				slave.training = 0;
+				_effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				if (_effectiveness <= 0) {
+					r.push(`${slave.slaveName} is smart enough to complicate things; ${he2} manages to outwit ${him} this week and makes no progress.`);
+				} else {
+					slave.devotion += Math.ceil(_effectiveness / 4);
+					if (slave.devotion < -50) {
+						r.push(`${He} helps watch and restrain the rebellious ${slave.slaveName}, helping wear ${him2} down, <span class="gold">breaking slave.slaveName's rebelliousness.</span>`);
+					} else if (slave.devotion < -20) {
+						r.push(`${He} keeps ${slave.slaveName} constantly aware of ${his2} slavery, <span class="gold">breaking slave.slaveName's resistance.</span>`);
+					} else {
+						r.push(`${He} acts as another pair of eyes watching ${slave.slaveName} and metes out punishments, <span class="gold">improving slave.slaveName's servitude.</span>`);
+					}
+				}
+			} else if (V.HGtraining === "paraphilia") {
+				_effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				slave.training += _effectiveness;
+				r.push(`${S.HeadGirl.slaveName} does ${his} best to get slave.slaveName past it with punishments and rewards,`);
+				if (slave.training > 100) {
+					r.push(`and <span class="green">resolves ${slave.slaveName}'s paraphilia.</span>`);
+					slave.training = 0;
+					slave.sexualFlaw = "none";
+				} else {
+					r.push(`and makes partial progress.`);
+				}
+			} else if (V.HGtraining === "flaw") {
+				_effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				slave.training += _effectiveness;
+				r.push(`${S.HeadGirl.slaveName} punishes slave.slaveName whenever ${he} catches ${him2} indulging in ${his2} bad habits,`);
+				if (slave.training > 100) {
+					r.push(`and <span class="green">fixes ${slave.slaveName}'s flaw.</span>`);
+					slave.training = 0;
+					if (slave.behavioralFlaw !== "none") {
+						slave.behavioralFlaw = "none";
+					} else if (slave.sexualFlaw !== "none") {
+						slave.sexualFlaw = "none";
+					}
+				} else {
+					r.push(`and makes partial progress.`);
+				}
+			} else if (V.HGtraining === "soften") {
+				_effectiveness -= (slave.intelligence + slave.intelligenceImplant) / 3;
+				slave.training += _effectiveness;
+				r.push(`${He} punishes slave.slaveName whenever ${he} sees ${him2} breaking the rules yet does ${his} best to retain what makes the slave special,`);
+				if (slave.training > 150) {
+					slave.training = 0;
+					r.push(`and successfully <span class="green">softens ${slave.slaveName}'s flaw.</span>`);
+					if (slave.behavioralFlaw !== "none") {
+						SoftenBehavioralFlaw(slave);
+					} else if (slave.sexualFlaw !== "none") {
+						SoftenSexualFlaw(slave);
+					}
+				} else {
+					r.push(`and makes partial progress.`);
+				}
+			} else if (V.HGtraining === "oral skill") {
+				slave.training = 0;
+				if (S.HeadGirl.fetish === "cumslut" && S.HeadGirl.fetishStrength > 60) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. ${His} enthusiasm for oral sex is infectious. slave.slaveName's <span class="green">oral skills have improved.</span>`);
+					slaveSkillIncrease('oral', slave, random(5, 10));
+				} else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. Your Head Girl uses ${his} penis as an effective teaching tool. slave.slaveName's <span class="green">oral skills have improved.</span>`);
+					slaveSkillIncrease('oral', slave, random(5, 10));
+				} else if ((S.HeadGirl.clit > 2)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. slave.slaveName's <span class="green">oral skills have improved.</span>`);
+					slaveSkillIncrease('oral', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to suck cocks, cunts, and assholes. slave.slaveName's <span class="green">oral skills have improved.</span>`);
+				}
+				slaveSkillIncrease('oral', slave, Math.ceil(_effectiveness / 10));
+			} else if (V.HGtraining === "anal skill") {
+				slave.training = 0;
+				if (S.HeadGirl.fetish === "buttslut" && S.HeadGirl.fetishStrength > 60) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take it up the ass. Your Head Girl's enthusiasm for backdoor loving is infectious. slave.slaveName's <span class="green">anal skills have improved.</span>`);
+					slaveSkillIncrease('anal', slave, random(5, 10));
+				} else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick up the butt. Your Head Girl uses ${his} penis as an effective teaching tool. slave.slaveName's <span class="green">anal skills have improved.</span>`);
+					slaveSkillIncrease('anal', slave, random(5, 10));
+				} else if ((S.HeadGirl.clit > 2)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a phallus up the butt. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. slave.slaveName's <span class="green">anal skills have improved.</span>`);
+					slaveSkillIncrease('anal', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick up the butt. slave.slaveName's <span class="green">anal skills have improved.</span>`);
+				}
+				slaveSkillIncrease('anal', slave, Math.ceil(_effectiveness / 10));
+			} else if (V.HGtraining === "fuck skill") {
+				slave.training = 0;
+				if (S.HeadGirl.energy > 95) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. Your Head Girl's enthusiasm for sex is infectious. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`);
+					slaveSkillIncrease('vaginal', slave, random(5, 10));
+				} else if ((S.HeadGirl.dick > 0) && canPenetrate(S.HeadGirl)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. Your Head Girl uses ${his} penis as an effective teaching tool. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`);
+					slaveSkillIncrease('vaginal', slave, random(5, 10));
+				} else if ((S.HeadGirl.clit > 2)) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a phallus. Your Head Girl uses ${his} pseudophallus-sized clit as an effective teaching tool. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`);
+					slaveSkillIncrease('vaginal', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to take a dick. slave.slaveName's <span class="green">vanilla sex skills have improved.</span>`);
+				}
+				slaveSkillIncrease('vaginal', slave, Math.ceil(_effectiveness / 10));
+			} else if (V.HGtraining === "whore skill") {
+				slave.training = 0;
+				r.push(`In spare moments ${he} teaches ${slave.slaveName} how to prostitute ${himself2}. ${slave.slaveName}'s <span class="green">whoring skills have improved.</span>`);
+				slaveSkillIncrease('whoring', slave, Math.ceil(_effectiveness / 10));
+			} else if (V.HGtraining === "entertain skill") {
+				slave.training = 0;
+				if (S.HeadGirl.fetish === "humiliation" && S.HeadGirl.fetishStrength > 60) {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to entertain. Your Head Girl's enthusiasm for public display is infectious. slave.slaveName's <span class="green">entertainment skills have improved.</span>`);
+					slaveSkillIncrease('entertainment', slave, random(5, 10));
+				} else {
+					r.push(`In spare moments ${he} teaches ${slave.slaveName} how to entertain. slave.slaveName's <span class="green">entertainment skills have improved.</span>`);
+				}
+				slaveSkillIncrease('entertainment', slave, Math.ceil(_effectiveness / 10));
+			}
+		}
+
+		if (slave.devotion >= -20) {
+			if (slave.attrKnown === 0) {
+				slave.attrKnown = 1;
+				r.push(`${S.HeadGirl.slaveName} also investigates the slave's basic sexual orientation, finding that ${he2} is`);
+				if (slave.attrXY <= 40) {
+					r.push(`<span class="red">disgusted by men</span>`);
+				} else if ((slave.attrXY <= 60)) {
+					r.push(`indifferent to men`);
+				} else if ((slave.attrXY <= 80)) {
+					r.push(`<span class="green">attracted to men</span>`);
+				} else {
+					r.push(`<span class="green">intensely attracted to men</span>`);
+				}
+				r.push(`and`);
+				if (slave.attrXX <= 40) {
+					r.push(`<span class="red">disgusted by women.</span>`);
+				} else if ((slave.attrXX <= 60)) {
+					r.push(`indifferent to women.`);
+				} else if ((slave.attrXX <= 80)) {
+					r.push(`<span class="green">attracted to women.</span>`);
+				} else {
+					r.push(`<span class="green">intensely attracted to women.</span>`);
+				}
+			}
+		}
+
+		if (V.HGPiercings) {
+			if (slave.devotion >= -20 && slave.genes === "XY" && slave.attrXY <= 35 && V.arcologies[0].FSBodyPurist === "unset" && (V.arcologies[0].FSPaternalist === "unset" || (V.arcologies[0].FSPaternalist !== "unset" && SlaveStatsChecker.modScore(slave).total < 13))) {
+				let _piercingForbidden = 0;
+				piercingCheck();
+				if (_piercingForbidden) {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} thinks some piercings might push ${slave.slaveName} to adjust to life as a slave ${girl2}, but ${he} also knows you have rules applied to this slave that forbid it.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} thinks some cute piercings might help ${slave.slaveName} adjust to life as a slave ${girl2}, but ${he} also knows you have rules applied to this slave that forbid it.`);
+					}
+				}
+			}
+		}
+
+		App.Events.addNode(el, r);
+		return el;
+
+		function piercingCheck() {
+			if (slave.earPiercing === 0 && slave.earShape !== "none") {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.earPiercing = 2;
+				} else {
+					slave.earPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.earPiercing !== V.slaveAfterRA.earPiercing) {
+					_piercingForbidden = 1;
+					slave.earPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} has the slave's ears pierced. This will be a constant reminder that ${he2} is simply a sexual object here.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's ears pierced. A little feminine touch can make a big difference.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.nosePiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.nosePiercing = 2;
+				} else {
+					slave.nosePiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.nosePiercing !== V.slaveAfterRA.nosePiercing) {
+					_piercingForbidden = 1;
+					slave.nosePiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} gives the slave nasal studs and a large septum ring. It should push slave.slaveName to see ${himself2} as a sexual object for others to use.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} gives the slave a cute little nose piercing. It should help slave.slaveName see ${himself2} as a bit more feminine.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.eyebrowPiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.eyebrowPiercing = 2;
+				} else {
+					slave.eyebrowPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.eyebrowPiercing !== V.slaveAfterRA.eyebrowPiercing) {
+					_piercingForbidden = 1;
+					slave.eyebrowPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} gives the slave multiple eyebrow piercings. A slutty touch for a slave ${girl2} should help ${him2} feel a little hungrier for cock.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} gives the slave a cute little eyebrow piercing. A slutty touch for a slave ${girl2} should help ${him2} feel a little hungrier for cock.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.lipsPiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.lipsPiercing = 2;
+				} else {
+					slave.lipsPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.lipsPiercing !== V.slaveAfterRA.lipsPiercing) {
+					_piercingForbidden = 1;
+					slave.lipsPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs to adjust to life as a slave ${girl2}, so ${he} has the slave's lower lip pierced. ${his2} mouth is for pleasing penises now, so it'll help ${him2} if it looks like it.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's lower lip pierced. ${his2} mouth is for pleasing penises now, so it'll help ${him2} if it looks like it.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+			if (slave.navelPiercing === 0) {
+				if (V.arcologies[0].FSDegradationist !== "unset") {
+					slave.navelPiercing = 2;
+				} else {
+					slave.navelPiercing = 1;
+				}
+				RulesDeconfliction(slave);
+				if (slave.navelPiercing !== V.slaveAfterRA.navelPiercing) {
+					_piercingForbidden = 1;
+					slave.navelPiercing = 0;
+				} else {
+					if (V.arcologies[0].FSDegradationist !== "unset") {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's navel pierced with a big ring. Whatever ${he2} thinks in ${his2} mind, S.HeadGirl.slaveName makes clear to ${him2} that ${his2} body belongs to you.`);
+					} else {
+						r.push(`${S.HeadGirl.slaveName} knows that ${slave.slaveName} needs help adjusting to life as a slave ${girl2}, so ${he} has the slave's navel pierced. The prettier ${his2} lower half looks, the less reluctant ${he2} should feel to take it up the butt.`);
+					}
+					cashX(forceNeg(V.modCost), "slaveMod", slave);
+					return;
+				}
+			}
+		}
 	}
 };
-- 
GitLab