From ee37d29756a58f9d9226c2ac92e3544dd1f081f5 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Sun, 2 Feb 2020 13:33:43 -0500
Subject: [PATCH] start

---
 src/facilities/ads.js                     | 440 +++++++++++++++++++++-
 src/uncategorized/brothelAdvertisement.tw |   2 +-
 src/uncategorized/brothelReport.tw        | 393 +------------------
 3 files changed, 442 insertions(+), 393 deletions(-)

diff --git a/src/facilities/ads.js b/src/facilities/ads.js
index d8e3aca11ab..217141c858d 100644
--- a/src/facilities/ads.js
+++ b/src/facilities/ads.js
@@ -201,7 +201,7 @@ App.Ads.AdManager = class {
 	slavesMatchPrefs(category) {
 		const majority = this.slavesMajority(category);
 		return (majority !== 0 && majority === category.classifyLocalPreference());
-	}	
+	}
 
 	/** returns true if the majority of the girls fit the ad campaign in the given category */
 	slavesMatchAds(category) {
@@ -230,3 +230,441 @@ App.Ads.AdManager = class {
 		}
 	}
 };
+
+const minBonus = 50;
+const maxBonus = 150;
+let possibleBonuses = 0
+let brothelBonuses = 0
+let pref;
+let girls;
+let variety;
+let adsIncome;
+let ads;
+const DL = V.BrothiIDs.length
+const adMgr = new App.Ads.AdManager("brothel")
+
+if (building === "brothel") {
+	const ads = {
+		stacked = V.brothelAdsStacked,
+		preg = V.brothelAdsPreg,
+		modded = V.brothelAdsModded,
+		implanted = V.brothelAdsImplanted,
+		XX = V.brothelAdsXX,
+		old = V.brothelAdsOld
+	}
+}
+
+
+
+App.Ads.Report = (function(building, preview) {
+	"use strict";
+	return { //preview off by default
+		deployedUnits:deployedUnits,
+		troopCount:troopCount,
+	};
+
+	function stacked(building, preview) {
+		if (V.brothelAdsSpending != 0) {
+			r += `<div class="indent">An ad campaign is supporting business there, and whores that match it make more ¤.</div>`;
+		}
+		adcats = App.Ads.Categories /* for brevity */
+
+		if (V.brothelAdsSpending != 0) {
+			r += `<div class="indent">`;
+			if (ads.stacked == 1) {
+				r += `Its advertisements feature girls with plenty up top and rears to match.`;
+				ads = 1
+			} else if (ads.stacked == -1) {
+				r += `Its advertisements feature trim girls with little in the way of T&A.`;
+				ads = -1
+			} else {
+			r += `Its advertisements feature a variety of girls, some that are trim and others that are curvaceous.`;
+				ads = 0
+			}
+			r += `</div>`;
+		}
+		pref = adcats.assetSize.classifyLocalPreference(), girls = adMgr.slavesMajority(adcats.assetSize)
+		if (pref === 1) {
+			Most customers prefer their girls well endowed.
+		} else if (pref === -1) {
+			Most customers prefer their girls light.
+		} else {
+			variety = adMgr.varietyBonus(adcats.assetSize)
+			possibleBonuses += Math.abs(variety)
+			if (variety === 1) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				The brothel offers a @@.yellowgreen;wide@@ variety of slim and stacked slaves.
+			}
+			Most customers don't mind the selection of assets.
+		}
+		if (girls === -1) {
+			Most of the slaves in the brothel have small tits and asses.
+		} else if (girls === 1) {
+			Most of the slaves in the brothel have large tits and asses.
+		} else {
+			The slaves in the brothel vary in asset size.
+		}
+		if ((pref == 0)) { /*customers don't care*/
+		} else if ((V.brothelAdsSpending > 0)) {
+			if ((ads == pref) && (girls == ads)) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				Its advertising for if (ads == 1) {stacked } else if (ads == -1) {trim }girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else if ((ads == pref) && (girls != ads)) {
+				Its advertising for if (ads == 1) {stacked } else if (ads == -1) {trim }girls matched most customers preferences, but most of the girls in the brothel were not as advertised. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			} else if ((girls == pref) && (girls != ads)) {
+				The if (girls == 1) {stacked } else if (girls == -1) {trim }girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for if (pref == 1) {stacked } else if (pref == -1) {slim }girls, your reputation was not affected.
+			} else if ((girls != pref)) {
+				Some customers were put off since the if (girls == 1) {stacked } else if (girls == -1) {trim }girls there did not match their preferences for if (pref == 1) {stacked } else if (pref == -1) {slim }girls. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		} else {
+			if ((girls == pref)) {
+				The if (girls == 1) {stacked } else if (girls == -1) {trim }girls in the brothel match most customers' preferences for if (pref == 1) {stacked } else if (pref == -1) {slim }girls. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else {
+				Some customers were put off since the if (girls == 1) {stacked } else if (girls == -1) {trim }girls there did not match their preferences for if (pref == 1) {large } else if (pref == -1) {slim }girls. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		}
+	}
+
+	function preg(building, preview) {
+		if (V.seePreg == 1) {
+			if (V.brothelAdsSpending > 0) {
+				if (ads.preg == 1) {
+					Its advertisements feature girls that are clearly pregnant.
+					ads = 1
+				} else if (ads.preg == -1) {
+					Its advertisements feature girls that have flat, usually firm, bellies.
+					ads = -1
+				} else {
+					Its advertisements feature some girls that are pregnant.
+					ads = 0
+				}
+			}
+			pref = adcats.preg.classifyLocalPreference(), girls = adMgr.slavesMajority(adcats.preg)
+			if (pref === 1) {
+				Most customers prefer their girls rounded with child.
+			} else if (pref === -1) {
+				Most customers prefer girls that aren't gravid.
+			} else {
+				variety = adMgr.varietyBonus(adcats.preg)
+				possibleBonuses += Math.abs(variety)
+				if (variety === 1) {
+					adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+					cashX(adsIncome, "brothelAds")
+					The brothel offers a @@.yellowgreen;wide@@ selection of slaves with a variety of middles.
+				}
+				Most customers don't have preferences for either big-bellied or flat-bellied girls.
+			}
+			if (girls === -1) {
+				Most of the slaves in the brothel sport flat bellies.
+			} else if (girls === 1) {
+				Most of the slaves in the brothel sport gravid middles.
+			} else {
+				The slaves in the brothel vary in belly type.
+			}
+			if (pref == 0) { /*customers don't care*/
+			} else if (V.brothelAdsSpending > 0) {
+				if ((ads == pref) && (girls == ads)) {
+					adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+					cashX(adsIncome, "brothelAds")
+					Its advertising for if (ads == 1) {pregnant } else if (ads == -1) {flat-bellied }girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
+					repX(random(minBonus,maxBonus), "brothel")
+				} else if ((ads == pref) && (girls != ads)) {
+					Its advertising for if (ads == 1) {pregnant } else if (ads == -1) {flat-bellied }girls matched most customers preferences, but the girls in the brothel did not. Your @@.red;reputation@@ dropped slightly as a result.
+					repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+				} else if ((girls == pref) && (girls != ads)) {
+					The if (girls == 1) {pregnant } else if (girls == -1) {flat-bellied }girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for if (pref == 1) {fecund } else if (pref == -1) {flat-bellied }girls, your reputation was not affected.
+				} else if ((girls != pref)) {
+					Some customers were put off since the if (girls == 1) {pregnant } else if (girls == -1) {flat-bellied }girls there did not match their preferences for if (pref == 1) {fecund } else if (pref == -1) {flat-bellied }girls. Your @@.red;reputation@@ dropped slightly as a result.
+					repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+				}
+			} else {
+				if ((girls == pref)) {
+					The if (girls == 1) {pregnant } else if (girls == -1) {flat-bellied }girls in the brothel match most customers' preferences for if (pref == 1) {fecund } else if (pref == -1) {flat-bellied }girls. Your @@.green;reputation@@ increased slightly as a result.
+					repX(random(minBonus,maxBonus), "brothel")
+				} else {
+					Some customers were put off since the if (girls == 1) {pregnant } else if (girls == -1) {flat-bellied }girls there did not match their preferences for if (pref == 1) {fecund } else if (pref == -1) {flat-bellied }girls. Your @@.red;reputation@@ dropped slightly as a result.
+					repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+				}
+			}
+		}
+	}
+
+	function AdsStacked(building, preview) {
+
+		if ((V.brothelAdsSpending > 0)) {
+			if (ads.modded == 1) {
+				Its advertisements feature girls that are heavily pierced and tattooed.
+				ads = 1
+			} else if (ads.modded == -1) {
+				Its advertisements feature girls that free from piercings and tattoos.
+				ads = -1
+			} else {
+				Its advertisements feature some girls that are tattooed and pierced, and some that aren't.
+				ads = 0
+			}
+		}
+		pref = adcats.mods.classifyLocalPreference(), girls = adMgr.slavesMajority(adcats.mods)
+		if (pref === 1) {
+			Most customers prefer heavily modified girls.
+		} else if (pref === -1) {
+			Most customers prefer natural girls.
+		} else {
+			variety = adMgr.varietyBonus(adcats.mods)
+			possibleBonuses += Math.abs(variety)
+			if (variety === 1) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				The brothel offers a @@.yellowgreen;both@@ a selection of heavily altered slaves and those with more natural bodies.
+			}
+			Most customers don't have preferences for either modded or natural slaves.
+		}
+		if (girls === 1) {
+			Most of the slaves in the brothel are heavily pierced and tattooed.
+		} else if (girls === -1) {
+			Most of the slaves in the brothel have natural, unmodded bodies.
+		} else {
+			Some girls in the brothel have piercings or tattoos, some have none and others have both.
+		}
+		if ((pref == 0)) { /*customers don't care*/
+		} else if ((V.brothelAdsSpending > 0)) {
+			if ((ads == pref) && (girls == ads)) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				Its advertising for if (ads == 1) {heavily modified } else if (ads == -1) {natural bodied }girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else if ((ads == pref) && (girls != ads)) {
+				Its advertising for if (ads == 1) {heavily modified } else if (ads == -1) {natural bodied }girls matched most customers preferences, but the girls in the brothel did not. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			} else if ((girls == pref) && (girls != ads)) {
+				The if (girls == 1) {heavily modified } else if (girls == -1) {natural bodied }girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for if (pref == 1) {heavily modded } else if (pref == -1) {natural bodied }girls, your reputation was not affected.
+			} else if ((girls != pref)) {
+				Some customers were put off since the if (girls == 1) {heavily modified } else if (girls == -1) {natural bodied }girls there did not match their preferences for if (pref == 1) {heavily modded } else if (pref == -1) {natural bodied }girls. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		} else {
+			if ((girls == pref)) {
+				The if (girls == 1) {heavily modified } else if (girls == -1) {natural bodied }girls in the brothel match most customers' preferences for if (pref == 1) {heavily modded } else if (pref == -1) {natural unmodded }girls. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else {
+				Some customers were put off since the if (girls == 1) {heavily modified } else if (girls == -1) {natural bodied }girls there did not match their preferences for if (pref == 1) {heavily modded } else if (pref == -1) {natural bodied }girls. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		}
+	}
+
+	function AdsStacked(building, preview) {
+
+		if ((V.brothelAdsSpending > 0)) {
+			if ((ads.implanted == 1)) {
+				Its advertisements feature girls that are augmented by implants or improved surgically.
+				ads = 1
+			} else if ((ads.implanted == -1)) {
+				Its advertisements feature girls that have all natural bodies.
+				ads = -1
+			} else {
+				Its advertisements feature some girls that are surgically improved and implanted and some that are all-natural.
+				ads = 0
+			}
+		}
+		pref = adcats.assetOrigin.classifyLocalPreference(), girls = adMgr.slavesMajority(adcats.assetOrigin)
+		if (pref === 1) {
+			Most customers prefer their girls fake.
+		} else if (pref === -1) {
+			Most customers prefer all-natural girls.
+		} else {
+			variety = adMgr.varietyBonus(adcats.assetOrigin)
+			possibleBonuses += Math.abs(variety)
+			if (variety === 1) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				The brothel offers @@.yellowgreen;both@@ all-natural girls, and slaves whose beauty has been improved by surgical means.
+			}
+			Most customers don't have preferences for either all-natural or surgically enhanced and implanted girls.
+		}
+		if (girls === 1) {
+			Most of the slaves in the brothel are heavily implanted or surgically enhanced.
+		} else if (girls === -1) {
+			Most of the slaves in the brothel have naturally pure bodies.
+		} else {
+			The slaves in the brothel vary in body modification.
+		}
+		if (pref == 0) { /*customers don't care*/
+		} else if ((V.brothelAdsSpending > 0)) {
+			if ((ads == pref) && (girls == ads)) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				Its advertising for if (ads == 1) {implanted or surgically improved } else if (ads == -1) {naturally pure }girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else if ((ads == pref) && (girls != ads)) {
+				Its advertising for if (ads == 1) {implanted or surgically improved } else if (ads == -1) {naturally pure }girls matched most customers preferences, but the girls in the brothel did not. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			} else if ((girls == pref) && (girls != ads)) {
+				The if (girls == 1) {implanted or surgically improved } else if (girls == -1) {naturally pure }girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for if (pref == 1) {implanted or surgically improved } else if (pref == -1) {naturally pure }girls, your reputation was not affected.
+			} else if ((girls != pref)) {
+				Some customers were put off since the if (girls == 1) {implanted or surgically improved } else if (girls == -1) {naturally pure }girls there did not match their preferences for if (pref == 1) {implanted or surgically improved } else if (pref == -1) {naturally pure }girls. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		} else {
+			if ((girls == pref)) {
+				The if (girls == 1) {implanted or surgically improved } else if (girls == -1) {naturally pure }girls in the brothel match most customers' preferences for if (pref == 1) {implanted or surgically improved } else if (pref == -1) {natural unmodded }girls. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else {
+				Some customers were put off since the if (girls == 1) {implanted or surgically improved } else if (girls == -1) {naturally pure }girls there did not match their preferences for if (pref == 1) {implanted or surgically improved } else if (pref == -1) {naturally pure }girls. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		}
+	}
+
+	function AdsStacked(building, preview) {
+
+		if (V.seeDicks != 0) {
+			if (V.brothelAdsSpending > 0) {
+				if ((ads.XX == 1)) {
+					Its advertisements feature girls with female genitalia.
+					ads = 1
+				} else if ((ads.XX == -1)) {
+					Its advertisements feature girls with male genitalia.
+					ads = -1
+				} else {
+					Its advertisements feature a variety of girls with both male and female genitalia.
+					ads = 0
+				}
+			}
+			pref = adcats.genitalia.classifyLocalPreference(), girls = adMgr.slavesMajority(adcats.genitalia)
+			if (pref === 1) {
+				Most customers prefer girls with pussies.
+			} else if (pref === -1) {
+				Most customers prefer girls with dicks.
+			} else {
+				variety = adMgr.varietyBonus(adcats.genitalia)
+				possibleBonuses += Math.abs(variety)
+				if (variety === 1) {
+					adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+					cashX(adsIncome, "brothelAds")
+					The brothel offers a @@.yellowgreen;mix@@ of whores that can appeal to varied tastes in genitalia.
+				}
+				Most customers don't have preferences for either girls with dicks or girls with pussies.
+			}
+			if (girls === 1) {
+				Most of the slaves in the brothel have female genitalia.
+			} else if (girls === -1) {
+				Most of the slaves in the brothel have male genitalia.
+			} else {
+				The slaves in the brothel vary in genitalia.
+			}
+			if (pref == 0) { /*customers don't care*/
+			} else if ((V.brothelAdsSpending > 0) ) {
+				if ((ads == pref) && (girls == ads)) {
+					adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+					cashX(adsIncome, "brothelAds")
+					Its advertising for girls if (ads == 1) {with pussies } else if (ads == -1) {with dicks } matches most customers' preferences as advertised. Your @@.green;reputation@@ increased slightly as a result.
+					repX(random(minBonus,maxBonus), "brothel")
+				} else if ((ads == pref) && (girls != ads)) {
+					Its advertising for girls if (ads == 1) {with pussies } else if (ads == -1) {with dicks } matched most customers preferences, but the girls in the brothel are not as advertised. Your @@.red;reputation@@ dropped slightly as a result.
+					repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+				} else if ((girls == pref) && (girls != ads)) {
+					The girls if (girls == 1) { with pussies} else if (girls == -1) { with dicks} in the brothel did not match the advertisements, but since the girls in the brothel matched most customers preferences for girlsif (pref == 1) { with pussies} else if (pref == -1) { with dicks}, your reputation was not affected.
+				} else if ((girls != pref)) {
+					Some customers were put off since the girls if (girls == 1) {with female genitalia } else if (girls == -1) {with male genitalia } did not match their preferences for girlsif (pref == 1) { with pussies} else if (pref == -1) { with dicks}. Your @@.red;reputation@@ dropped slightly as a result.
+					repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+				}
+			} else {
+				if ((girls == pref)) {
+					The girls in the brothel match most customers preferences for girls if (girls == 1) {with female genitalia } else if (girls == -1) {with male genitalia }. Your @@.green;reputation@@ increased slightly as a result.
+					repX(random(minBonus,maxBonus), "brothel")
+				} else {
+					Some customers were put off since the girls if (girls == 1) {with female genitalia } else if (girls == -1) {with male genitalia } did not match their preferences for girlsif (pref == 1) { with pussies} else if (pref == -1) { with dicks}. Your @@.red;reputation@@ dropped slightly as a result.
+					repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+				}
+			}
+		}
+
+		if (V.brothelAdsSpending > 0) {
+			switch (ads.old) {
+				case 1:
+					Its advertisements feature mature slaves.
+					ads = 1
+					break;
+				case -1:
+					Its advertisements feature young slaves.
+					ads = -1
+					break;
+				case -2:
+					Its advertisements feature teenagers.
+					ads = -1
+					break;
+				case -3:
+					Its advertisements feature lolis.
+					ads = -1
+					break;
+				default:
+					Its advertisements feature slaves of a variety of ages.
+					ads = 0
+					break;
+			}
+		}
+		pref = adcats.age.classifyLocalPreference(), girls = adMgr.slavesMajority(adcats.age)
+		if (pref === 1) {
+			Most customers prefer mature girls.
+		} else if (pref === -1) {
+			Most customers prefer young girls.
+		} else {
+			variety = adMgr.varietyBonus(adcats.age)
+			possibleBonuses += Math.abs(variety)
+			if (variety === 1) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				The brothel offers girls @@.yellowgreen;both@@ young and mature.
+			}
+			Most customers don't have preferences for either mature or young girls.
+		}
+		if (girls === -1) {
+			Most of the slaves in the brothel are young.
+		} else if (girls === 1) {
+			Most of the slaves in the brothel are mature.
+		} else {
+			The slaves in the brothel vary in age.
+		}
+		if (pref == 0) { /*customers don't care*/
+		} else if ((V.brothelAdsSpending > 0) ) {
+			if ((ads == pref) && (girls == ads)) {
+				adsIncome = DL*random(20,30), V.facility.brothel.adsIncome += adsIncome, brothelBonuses++
+				cashX(adsIncome, "brothelAds")
+				Its advertising matches most customers' age preferences and the girls in the brothel match the ages as advertised. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else if ((ads == pref) && (girls != ads)) {
+				Its advertising matched most customers age preferences, but the girls in the brothel are not as advertised. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			} else if ((girls == pref) && (girls != ads)) {
+				The ages of girls in the brothel did not match the ages as advertised, but since the girls in the brothel matched most customers age preferences, your reputation was not affected.
+			} else if ((girls != pref)) {
+				Some customers were put off since the ages of girls there did not match their preferences. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		} else {
+			if ((girls == pref)) {
+				The girls in the brothel match most customers' age preferences. Your @@.green;reputation@@ increased slightly as a result.
+				repX(random(minBonus,maxBonus), "brothel")
+			} else {
+				Some customers were put off since the ages of girls there did not match their preferences. Your @@.red;reputation@@ dropped slightly as a result.
+				repX(forceNeg(random(minBonus,maxBonus)), "brothel")
+			}
+		}
+	}
+
+	function AdsStacked(building, preview) {
+
+		if ((possibleBonuses > 0) && (brothelBonuses >= possibleBonuses)) {
+			adsIncome = DL*random(40,60), V.facility.brothel.adsIncome += adsIncome
+			cashX(adsIncome, "brothelAds")
+			r+= `<div>There is a ''@@.yellowgreen;perfect variety@@'' of slave whores working in the brothel.</div>`;
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/uncategorized/brothelAdvertisement.tw b/src/uncategorized/brothelAdvertisement.tw
index 5c449dd84d3..46237ef5ca6 100644
--- a/src/uncategorized/brothelAdvertisement.tw
+++ b/src/uncategorized/brothelAdvertisement.tw
@@ -177,7 +177,7 @@ Body mods:
 	<br>
 <</if>>
 
-Age:
+Age: under 30 or above
 <<if $brothelAdsOld != 1>><<link "MILF">><<set $brothelAdsOld = 1>><<goto "Brothel Advertisement">><</link>> | <<else>>MILF | <</if>>
 <<if $brothelAdsOld != -1>><<link "Young">><<set $brothelAdsOld = -1>><<goto "Brothel Advertisement">><</link>> | <<else>>Young | <</if>>
 <<if $minimumSlaveAge < 18>>
diff --git a/src/uncategorized/brothelReport.tw b/src/uncategorized/brothelReport.tw
index 0b3c21bae8e..9db7940690c 100644
--- a/src/uncategorized/brothelReport.tw
+++ b/src/uncategorized/brothelReport.tw
@@ -310,398 +310,9 @@
 		<<set _cashX = _adsIncome, getSlaveStatisticData($slaves[$i], $facility.brothel).adsIncome += _adsIncome>>
 		<<run cashX(_cashX, "brothelAds")>>
 	<</for>>
-	<<set _profits += $cash-_oldCash, _oldCash = $cash, _possibleBonuses = 0, _brothelBonuses = 0>>
+	<<set _profits += $cash-_oldCash, _oldCash = $cash>>
 
-	/* adblock */
-	<br><br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if $brothelAdsSpending != 0>>
-		An ad campaign is supporting business there, and whores that match it make more ¤.
-	<</if>>
-	<<set _adcats = App.Ads.Categories>> /* for brevity */
-
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if $brothelAdsSpending != 0>>
-		<<if $brothelAdsStacked == 1>>
-			Its advertisements feature girls with plenty up top and rears to match.
-			<<set _ads = 1>>
-		<<elseif $brothelAdsStacked == -1>>
-			Its advertisements feature trim girls with little in the way of T&A.
-			<<set _ads = -1>>
-		<<else>>
-			Its advertisements feature a variety of girls, some that are trim and others that are curvaceous.
-			<<set _ads = 0>>
-		<</if>>
-	<</if>>
-	<<set _pref = _adcats.assetSize.classifyLocalPreference(), _girls = _adMgr.slavesMajority(_adcats.assetSize)>>
-	<<if _pref === 1>>
-		Most customers prefer their girls well endowed.
-	<<elseif _pref === -1>>
-		Most customers prefer their girls light.
-	<<else>>
-		<<set _variety = _adMgr.varietyBonus(_adcats.assetSize)>>
-		<<set _possibleBonuses += Math.abs(_variety)>>
-		<<if _variety === 1>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			The brothel offers a @@.yellowgreen;wide@@ variety of slim and stacked slaves.
-		<</if>>
-		Most customers don't mind the selection of assets.
-	<</if>>
-	<<if _girls === -1>>
-		Most of the slaves in the brothel have small tits and asses.
-	<<elseif _girls === 1>>
-		Most of the slaves in the brothel have large tits and asses.
-	<<else>>
-		The slaves in the brothel vary in asset size.
-	<</if>>
-	<<if (_pref == 0)>> /*customers don't care*/
-	<<elseif ($brothelAdsSpending > 0)>>
-		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			Its advertising for <<if _ads == 1>>stacked <<elseif _ads == -1>>trim <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<elseif (_ads == _pref) && (_girls != _ads)>>
-			Its advertising for <<if _ads == 1>>stacked <<elseif _ads == -1>>trim <</if>>girls matched most customers preferences, but most of the girls in the brothel were not as advertised. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<<elseif (_girls == _pref) && (_girls != _ads)>>
-			The <<if _girls == 1>>stacked <<elseif _girls == -1>>trim <</if>>girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for <<if _pref == 1>>stacked <<elseif _pref == -1>>slim <</if>>girls, your reputation was not affected.
-		<<elseif (_girls != _pref)>>
-			Some customers were put off since the <<if _girls == 1>>stacked <<elseif _girls == -1>>trim <</if>>girls there did not match their preferences for <<if _pref == 1>>stacked <<elseif _pref == -1>>slim <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<<else>>
-		<<if (_girls == _pref)>>
-			The <<if _girls == 1>>stacked <<elseif _girls == -1>>trim <</if>>girls in the brothel match most customers' preferences for <<if _pref == 1>>stacked <<elseif _pref == -1>>slim <</if>>girls. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<else>>
-			Some customers were put off since the <<if _girls == 1>>stacked <<elseif _girls == -1>>trim <</if>>girls there did not match their preferences for <<if _pref == 1>>large <<elseif _pref == -1>>slim <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<</if>>
-
-	<<if $seePreg == 1>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if ($brothelAdsSpending > 0)>>
-		<<if $brothelAdsPreg == 1>>
-			Its advertisements feature girls that are clearly pregnant.
-			<<set _ads = 1>>
-		<<elseif $brothelAdsPreg == -1>>
-			Its advertisements feature girls that have flat, usually firm, bellies.
-			<<set _ads = -1>>
-		<<else>>
-			Its advertisements feature some girls that are pregnant.
-			<<set _ads = 0>>
-		<</if>>
-	<</if>>
-	<<set _pref = _adcats.preg.classifyLocalPreference(), _girls = _adMgr.slavesMajority(_adcats.preg)>>
-	<<if _pref === 1>>
-		Most customers prefer their girls rounded with child.
-	<<elseif _pref === -1>>
-		Most customers prefer girls that aren't gravid.
-	<<else>>
-		<<set _variety = _adMgr.varietyBonus(_adcats.preg)>>
-		<<set _possibleBonuses += Math.abs(_variety)>>
-		<<if _variety === 1>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			The brothel offers a @@.yellowgreen;wide@@ selection of slaves with a variety of middles.
-		<</if>>
-		Most customers don't have preferences for either big-bellied or flat-bellied girls.
-	<</if>>
-	<<if _girls === -1>>
-		Most of the slaves in the brothel sport flat bellies.
-	<<elseif _girls === 1>>
-		Most of the slaves in the brothel sport gravid middles.
-	<<else>>
-		The slaves in the brothel vary in belly type.
-	<</if>>
-	<<if _pref == 0>> /*customers don't care*/
-	<<elseif ($brothelAdsSpending > 0)>>
-		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			Its advertising for <<if _ads == 1>>pregnant <<elseif _ads == -1>>flat-bellied <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<elseif (_ads == _pref) && (_girls != _ads)>>
-			Its advertising for <<if _ads == 1>>pregnant <<elseif _ads == -1>>flat-bellied <</if>>girls matched most customers preferences, but the girls in the brothel did not. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<<elseif (_girls == _pref) && (_girls != _ads)>>
-			The <<if _girls == 1>>pregnant <<elseif _girls == -1>>flat-bellied <</if>>girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for <<if _pref == 1>>fecund <<elseif _pref == -1>>flat-bellied <</if>>girls, your reputation was not affected.
-		<<elseif (_girls != _pref)>>
-			Some customers were put off since the <<if _girls == 1>>pregnant <<elseif _girls == -1>>flat-bellied <</if>>girls there did not match their preferences for <<if _pref == 1>>fecund <<elseif _pref == -1>>flat-bellied <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<<else>>
-		<<if (_girls == _pref)>>
-			The <<if _girls == 1>>pregnant <<elseif _girls == -1>>flat-bellied <</if>>girls in the brothel match most customers' preferences for <<if _pref == 1>>fecund <<elseif _pref == -1>>flat-bellied <</if>>girls. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<else>>
-			Some customers were put off since the <<if _girls == 1>>pregnant <<elseif _girls == -1>>flat-bellied <</if>>girls there did not match their preferences for <<if _pref == 1>>fecund <<elseif _pref == -1>>flat-bellied <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<</if>>
-	<</if>>
-
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if ($brothelAdsSpending > 0)>>
-		<<if $brothelAdsModded == 1>>
-			Its advertisements feature girls that are heavily pierced and tattooed.
-			<<set _ads = 1>>
-		<<elseif $brothelAdsModded == -1>>
-			Its advertisements feature girls that free from piercings and tattoos.
-			<<set _ads = -1>>
-		<<else>>
-			Its advertisements feature some girls that are tattooed and pierced, and some that aren't.
-			<<set _ads = 0>>
-		<</if>>
-	<</if>>
-	<<set _pref = _adcats.mods.classifyLocalPreference(), _girls = _adMgr.slavesMajority(_adcats.mods)>>
-	<<if _pref === 1>>
-		Most customers prefer heavily modified girls.
-	<<elseif _pref === -1>>
-		Most customers prefer natural girls.
-	<<else>>
-		<<set _variety = _adMgr.varietyBonus(_adcats.mods)>>
-		<<set _possibleBonuses += Math.abs(_variety)>>
-		<<if _variety === 1>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			The brothel offers a @@.yellowgreen;both@@ a selection of heavily altered slaves and those with more natural bodies.
-		<</if>>
-		Most customers don't have preferences for either modded or natural slaves.
-	<</if>>
-	<<if _girls === 1>>
-		Most of the slaves in the brothel are heavily pierced and tattooed.
-	<<elseif _girls === -1>>
-		Most of the slaves in the brothel have natural, unmodded bodies.
-	<<else>>
-		Some girls in the brothel have piercings or tattoos, some have none and others have both.
-	<</if>>
-	<<if (_pref == 0)>> /*customers don't care*/
-	<<elseif ($brothelAdsSpending > 0)>>
-		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			Its advertising for <<if _ads == 1>>heavily modified <<elseif _ads == -1>>natural bodied <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<elseif (_ads == _pref) && (_girls != _ads)>>
-			Its advertising for <<if _ads == 1>>heavily modified <<elseif _ads == -1>>natural bodied <</if>>girls matched most customers preferences, but the girls in the brothel did not. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<<elseif (_girls == _pref) && (_girls != _ads)>>
-			The <<if _girls == 1>>heavily modified <<elseif _girls == -1>>natural bodied <</if>>girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for <<if _pref == 1>>heavily modded <<elseif _pref == -1>>natural bodied <</if>>girls, your reputation was not affected.
-		<<elseif (_girls != _pref)>>
-			Some customers were put off since the <<if _girls == 1>>heavily modified <<elseif _girls == -1>>natural bodied <</if>>girls there did not match their preferences for <<if _pref == 1>>heavily modded <<elseif _pref == -1>>natural bodied <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<<else>>
-		<<if (_girls == _pref)>>
-			The <<if _girls == 1>>heavily modified <<elseif _girls == -1>>natural bodied <</if>>girls in the brothel match most customers' preferences for <<if _pref == 1>>heavily modded <<elseif _pref == -1>>natural unmodded <</if>>girls. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<else>>
-			Some customers were put off since the <<if _girls == 1>>heavily modified <<elseif _girls == -1>>natural bodied <</if>>girls there did not match their preferences for <<if _pref == 1>>heavily modded <<elseif _pref == -1>>natural bodied <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<</if>>
-
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if ($brothelAdsSpending > 0)>>
-		<<if ($brothelAdsImplanted == 1)>>
-			Its advertisements feature girls that are augmented by implants or improved surgically.
-			<<set _ads = 1>>
-		<<elseif ($brothelAdsImplanted == -1)>>
-			Its advertisements feature girls that have all natural bodies.
-			<<set _ads = -1>>
-		<<else>>
-			Its advertisements feature some girls that are surgically improved and implanted and some that are all-natural.
-			<<set _ads = 0>>
-		<</if>>
-	<</if>>
-	<<set _pref = _adcats.assetOrigin.classifyLocalPreference(), _girls = _adMgr.slavesMajority(_adcats.assetOrigin)>>
-	<<if _pref === 1>>
-		Most customers prefer their girls fake.
-	<<elseif _pref === -1>>
-		Most customers prefer all-natural girls.
-	<<else>>
-		<<set _variety = _adMgr.varietyBonus(_adcats.assetOrigin)>>
-		<<set _possibleBonuses += Math.abs(_variety)>>
-		<<if _variety === 1>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			The brothel offers @@.yellowgreen;both@@ all-natural girls, and slaves whose beauty has been improved by surgical means.
-		<</if>>
-		Most customers don't have preferences for either all-natural or surgically enhanced and implanted girls.
-	<</if>>
-	<<if _girls === 1>>
-		Most of the slaves in the brothel are heavily implanted or surgically enhanced.
-	<<elseif _girls === -1>>
-		Most of the slaves in the brothel have naturally pure bodies.
-	<<else>>
-		The slaves in the brothel vary in body modification.
-	<</if>>
-	<<if _pref == 0>> /*customers don't care*/
-	<<elseif ($brothelAdsSpending > 0)>>
-		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			Its advertising for <<if _ads == 1>>implanted or surgically improved <<elseif _ads == -1>>naturally pure <</if>>girls matched most customers' preferences and the girls in the brothel matched its advertisements. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<elseif (_ads == _pref) && (_girls != _ads)>>
-			Its advertising for <<if _ads == 1>>implanted or surgically improved <<elseif _ads == -1>>naturally pure <</if>>girls matched most customers preferences, but the girls in the brothel did not. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<<elseif (_girls == _pref) && (_girls != _ads)>>
-			The <<if _girls == 1>>implanted or surgically improved <<elseif _girls == -1>>naturally pure <</if>>girls in the brothel did not match its advertisements, but since the girls in the brothel matched most customers preferences for <<if _pref == 1>>implanted or surgically improved <<elseif _pref == -1>>naturally pure <</if>>girls, your reputation was not affected.
-		<<elseif (_girls != _pref)>>
-			Some customers were put off since the <<if _girls == 1>>implanted or surgically improved <<elseif _girls == -1>>naturally pure <</if>>girls there did not match their preferences for <<if _pref == 1>>implanted or surgically improved <<elseif _pref == -1>>naturally pure <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<<else>>
-		<<if (_girls == _pref)>>
-			The <<if _girls == 1>>implanted or surgically improved <<elseif _girls == -1>>naturally pure <</if>>girls in the brothel match most customers' preferences for <<if _pref == 1>>implanted or surgically improved <<elseif _pref == -1>>natural unmodded <</if>>girls. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<else>>
-			Some customers were put off since the <<if _girls == 1>>implanted or surgically improved <<elseif _girls == -1>>naturally pure <</if>>girls there did not match their preferences for <<if _pref == 1>>implanted or surgically improved <<elseif _pref == -1>>naturally pure <</if>>girls. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<</if>>
-
-	<<if $seeDicks != 0>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<if ($brothelAdsSpending > 0)>>
-			<<if ($brothelAdsXX == 1)>>
-				Its advertisements feature girls with female genitalia.
-				<<set _ads = 1>>
-			<<elseif ($brothelAdsXX == -1)>>
-				Its advertisements feature girls with male genitalia.
-				<<set _ads = -1>>
-			<<else>>
-				Its advertisements feature a variety of girls with both male and female genitalia.
-				<<set _ads = 0>>
-			<</if>>
-		<</if>>
-		<<set _pref = _adcats.genitalia.classifyLocalPreference(), _girls = _adMgr.slavesMajority(_adcats.genitalia)>>
-		<<if _pref === 1>>
-			Most customers prefer girls with pussies.
-		<<elseif _pref === -1>>
-			Most customers prefer girls with dicks.
-		<<else>>
-			<<set _variety = _adMgr.varietyBonus(_adcats.genitalia)>>
-			<<set _possibleBonuses += Math.abs(_variety)>>
-			<<if _variety === 1>>
-				<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-				<<run cashX(_adsIncome, "brothelAds")>>
-				The brothel offers a @@.yellowgreen;mix@@ of whores that can appeal to varied tastes in genitalia.
-			<</if>>
-			Most customers don't have preferences for either girls with dicks or girls with pussies.
-		<</if>>
-		<<if _girls === 1>>
-			Most of the slaves in the brothel have female genitalia.
-		<<elseif _girls === -1>>
-			Most of the slaves in the brothel have male genitalia.
-		<<else>>
-			The slaves in the brothel vary in genitalia.
-		<</if>>
-		<<if _pref == 0>> /*customers don't care*/
-		<<elseif ($brothelAdsSpending > 0) >>
-			<<if (_ads == _pref) && (_girls == _ads)>>
-				<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-				<<run cashX(_adsIncome, "brothelAds")>>
-				Its advertising for girls <<if _ads == 1>>with pussies <<elseif _ads == -1>>with dicks <</if>> matches most customers' preferences as advertised. Your @@.green;reputation@@ increased slightly as a result.
-				<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-			<<elseif (_ads == _pref) && (_girls != _ads)>>
-				Its advertising for girls <<if _ads == 1>>with pussies <<elseif _ads == -1>>with dicks <</if>> matched most customers preferences, but the girls in the brothel are not as advertised. Your @@.red;reputation@@ dropped slightly as a result.
-				<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-			<<elseif (_girls == _pref) && (_girls != _ads)>>
-				The girls <<if _girls == 1>> with pussies<<elseif _girls == -1>> with dicks<</if>> in the brothel did not match the advertisements, but since the girls in the brothel matched most customers preferences for girls<<if _pref == 1>> with pussies<<elseif _pref == -1>> with dicks<</if>>, your reputation was not affected.
-			<<elseif (_girls != _pref)>>
-				Some customers were put off since the girls <<if _girls == 1>>with female genitalia <<elseif _girls == -1>>with male genitalia <</if>> did not match their preferences for girls<<if _pref == 1>> with pussies<<elseif _pref == -1>> with dicks<</if>>. Your @@.red;reputation@@ dropped slightly as a result.
-				<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-			<</if>>
-		<<else>>
-			<<if (_girls == _pref)>>
-				The girls in the brothel match most customers preferences for girls <<if _girls == 1>>with female genitalia <<elseif _girls == -1>>with male genitalia <</if>>. Your @@.green;reputation@@ increased slightly as a result.
-				<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-			<<else>>
-				Some customers were put off since the girls <<if _girls == 1>>with female genitalia <<elseif _girls == -1>>with male genitalia <</if>> did not match their preferences for girls<<if _pref == 1>> with pussies<<elseif _pref == -1>> with dicks<</if>>. Your @@.red;reputation@@ dropped slightly as a result.
-				<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-			<</if>>
-		<</if>>
-	<</if>>
-
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;
-	<<if ($brothelAdsSpending > 0)>>
-		<<switch ($brothelAdsOld)>>
-		<<case 1>>
-			Its advertisements feature mature slaves.
-			<<set _ads = 1>>
-		<<case -1>>
-			Its advertisements feature young slaves.
-			<<set _ads = -1>>
-		<<case -2>>
-			Its advertisements feature teenagers.
-			<<set _ads = -1>>
-		<<case -3>>
-			Its advertisements feature lolis.
-			<<set _ads = -1>>
-		<<default>>
-			Its advertisements feature slaves of a variety of ages.
-			<<set _ads = 0>>
-		<</switch>>
-	<</if>>
-	<<set _pref = _adcats.age.classifyLocalPreference(), _girls = _adMgr.slavesMajority(_adcats.age)>>
-	<<if _pref === 1>>
-		Most customers prefer mature girls.
-	<<elseif _pref === -1>>
-		Most customers prefer young girls.
-	<<else>>
-		<<set _variety = _adMgr.varietyBonus(_adcats.age)>>
-		<<set _possibleBonuses += Math.abs(_variety)>>
-		<<if _variety === 1>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			The brothel offers girls @@.yellowgreen;both@@ young and mature.
-		<</if>>
-		Most customers don't have preferences for either mature or young girls.
-	<</if>>
-	<<if _girls === -1>>
-		Most of the slaves in the brothel are young.
-	<<elseif _girls === 1>>
-		Most of the slaves in the brothel are mature.
-	<<else>>
-		The slaves in the brothel vary in age.
-	<</if>>
-	<<if _pref == 0>> /*customers don't care*/
-	<<elseif ($brothelAdsSpending > 0) >>
-		<<if (_ads == _pref) && (_girls == _ads)>>
-			<<set _adsIncome = _DL*random(20,30), $facility.brothel.adsIncome += _adsIncome, _brothelBonuses++>>
-			<<run cashX(_adsIncome, "brothelAds")>>
-			Its advertising matches most customers' age preferences and the girls in the brothel match the ages as advertised. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<elseif (_ads == _pref) && (_girls != _ads)>>
-			Its advertising matched most customers age preferences, but the girls in the brothel are not as advertised. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<<elseif (_girls == _pref) && (_girls != _ads)>>
-			The ages of girls in the brothel did not match the ages as advertised, but since the girls in the brothel matched most customers age preferences, your reputation was not affected.
-		<<elseif (_girls != _pref)>>
-			Some customers were put off since the ages of girls there did not match their preferences. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<<else>>
-		<<if (_girls == _pref)>>
-			The girls in the brothel match most customers' age preferences. Your @@.green;reputation@@ increased slightly as a result.
-			<<run repX(random(_minBonus,_maxBonus), "brothel")>>
-		<<else>>
-			Some customers were put off since the ages of girls there did not match their preferences. Your @@.red;reputation@@ dropped slightly as a result.
-			<<run repX(forceNeg(random(_minBonus,_maxBonus)), "brothel")>>
-		<</if>>
-	<</if>>
-
-	<<if (_possibleBonuses > 0) && (_brothelBonuses >= _possibleBonuses)>>
-		<br>&nbsp;&nbsp;&nbsp;&nbsp;
-		<<set _adsIncome = _DL*random(40,60), $facility.brothel.adsIncome += _adsIncome>>
-		<<run cashX(_adsIncome, "brothelAds")>>
-		There is a ''@@.yellowgreen;perfect variety@@'' of slave whores working in the brothel.
-	<</if>>
+	<<= App.Ads.Report("brothel")>>
 
 	<<set _profits += $cash-_oldCash>>
 	<!-- Record statistics gathering -->
-- 
GitLab