From f9225cd2632bb4bcd3a5150d3c4a9c45da0ff6bc Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Sun, 26 Jan 2020 12:57:09 -0800
Subject: [PATCH] Migrate all 70 $pornStar* variables to a new object that's
 consistently keyed by fameVar.

---
 src/init/storyInit.tw                       |  78 +-------
 src/js/porn.js                              |   2 -
 src/uncategorized/BackwardsCompatibility.tw | 204 ++++++++++++--------
 src/uncategorized/nextWeek.tw               |  50 +----
 4 files changed, 140 insertions(+), 194 deletions(-)

diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index c3b5b5bd0e3..313bf28586d 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -704,79 +704,11 @@ You should have received a copy of the GNU General Public License along with thi
 <<set $studioFeed = 0>>
 <<set $PCSlutContacts = 1>>
 
-/* Porn type counts */
-<<set $pornStars = 0>>
-<<set $pornStarFuckdolls = 0>>
-<<set $pornStarRapees = 0>>
-<<set $pornStarPreggos = 0>>
-<<set $pornStarBBWs = 0>>
-<<set $pornStarGainers = 0>>
-<<set $pornStarStuds = 0>>
-<<set $pornStarLolis = 0>>
-<<set $pornStarDeepThroats = 0>>
-<<set $pornStarStruggleFucks = 0>>
-<<set $pornStarPainals = 0>>
-<<set $pornStarTeases = 0>>
-<<set $pornStarRomantics = 0>>
-<<set $pornStarPerverts = 0>>
-<<set $pornStarCarings = 0>>
-<<set $pornStarUnflinchings = 0>>
-<<set $pornStarSizeQueens = 0>>
-<<set $pornStarNeglectfuls = 0>>
-<<set $pornStarCumAddicts = 0>>
-<<set $pornStarAnalAddicts = 0>>
-<<set $pornStarAttentionWhores = 0>>
-<<set $pornStarBreastGrowths = 0>>
-<<set $pornStarAbusives = 0>>
-<<set $pornStarMalicious = 0>>
-<<set $pornStarSelfHatings = 0>>
-<<set $pornStarBreeders = 0>>
-<<set $pornStarSubs = 0>>
-<<set $pornStarCumSluts = 0>>
-<<set $pornStarAnals = 0>>
-<<set $pornStarHumiliations = 0>>
-<<set $pornStarBoobs = 0>>
-<<set $pornStarDoms = 0>>
-<<set $pornStarSadists = 0>>
-<<set $pornStarMasochists = 0>>
-<<set $pornStarPregnancySluts = 0>>
-
-/* level 3 prestige */
-<<set $pornStarID = 0>>
-<<set $pornStarFuckdollID = 0>>
-<<set $pornStarRapeID = 0>>
-<<set $pornStarPreggoID = 0>>
-<<set $pornStarBBWID = 0>>
-<<set $pornStarGainerID = 0>>
-<<set $pornStarStudID = 0>>
-<<set $pornStarLoliID = 0>>
-<<set $pornStarDeepThroatID = 0>>
-<<set $pornStarStruggleFuckID = 0>>
-<<set $pornStarPainalID = 0>>
-<<set $pornStarTeaseID = 0>>
-<<set $pornStarRomanticID = 0>>
-<<set $pornStarPervertID = 0>>
-<<set $pornStarCaringID = 0>>
-<<set $pornStarUnflinchingID = 0>>
-<<set $pornStarSizeQueenID = 0>>
-<<set $pornStarNeglectfulID = 0>>
-<<set $pornStarCumAddictID = 0>>
-<<set $pornStarAnalAddictID = 0>>
-<<set $pornStarAttentionWhoreID = 0>>
-<<set $pornStarBreastGrowthID = 0>>
-<<set $pornStarAbusiveID = 0>>
-<<set $pornStarMaliciousID = 0>>
-<<set $pornStarSelfHatingID = 0>>
-<<set $pornStarBreederID = 0>>
-<<set $pornStarSubID = 0>>
-<<set $pornStarCumSlutID = 0>>
-<<set $pornStarAnalID = 0>>
-<<set $pornStarHumiliationID = 0>>
-<<set $pornStarBoobsID = 0>>
-<<set $pornStarDomID = 0>>
-<<set $pornStarSadistID = 0>>
-<<set $pornStarMasochistID = 0>>
-<<set $pornStarPregnancyID = 0>>
+/* Porn star counts (prestige 1) and ID's (prestige 3) */
+<<set $pornStars = {}>>
+<<for _genre range App.Porn.getAllGenres()>>
+	<<set $pornStars[_genre.fameVar] = { p1count: 0, p3ID: 0 }>>
+<</for>>
 
 <<set $pregInventor = 0>>
 <<set $pregInventorID = 0>>
diff --git a/src/js/porn.js b/src/js/porn.js
index 5da409cf819..ce0ebae7d0e 100644
--- a/src/js/porn.js
+++ b/src/js/porn.js
@@ -34,8 +34,6 @@ App.Porn.GenreType = {
 
 App.Porn.Genre = {};
 
-/* TODO: need pornstarvar too (probably reorg pornstar stuff to $pornStar[fameVar].p2count/p3ID */
-
 /* Paraphilia genres */
 
 App.Porn.Genre.neglectful = {
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 693683b9e5c..c413e5dcc4e 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2771,85 +2771,137 @@ Setting missing global variables:
 <</if>>
 <<set WombInit($PC)>>
 
-<<if ndef $pornStarID>>
-
+<<if ndef $pornStars>>
 	<<set $studioFeed = 0>>
 	<<set $PCSlutContacts = 1>>
 
-	/* Porn type counts */
-	<<set $pornStars = 0>>
-	<<set $pornStarFuckdolls = 0>>
-	<<set $pornStarRapees = 0>>
-	<<set $pornStarPreggos = 0>>
-	<<set $pornStarBBWs = 0>>
-	<<set $pornStarGainers = 0>>
-	<<set $pornStarStuds = 0>>
-	<<set $pornStarLolis = 0>>
-	<<set $pornStarDeepThroats = 0>>
-	<<set $pornStarStruggleFucks = 0>>
-	<<set $pornStarPainals = 0>>
-	<<set $pornStarTeases = 0>>
-	<<set $pornStarRomantics = 0>>
-	<<set $pornStarPerverts = 0>>
-	<<set $pornStarCarings = 0>>
-	<<set $pornStarUnflinchings = 0>>
-	<<set $pornStarSizeQueens = 0>>
-	<<set $pornStarNeglectfuls = 0>>
-	<<set $pornStarCumAddicts = 0>>
-	<<set $pornStarAnalAddicts = 0>>
-	<<set $pornStarAttentionWhores = 0>>
-	<<set $pornStarBreastGrowths = 0>>
-	<<set $pornStarAbusives = 0>>
-	<<set $pornStarMalicious = 0>>
-	<<set $pornStarSelfHatings = 0>>
-	<<set $pornStarBreeders = 0>>
-	<<set $pornStarSubs = 0>>
-	<<set $pornStarCumSluts = 0>>
-	<<set $pornStarAnals = 0>>
-	<<set $pornStarHumiliations = 0>>
-	<<set $pornStarBoobs = 0>>
-	<<set $pornStarDoms = 0>>
-	<<set $pornStarSadists = 0>>
-	<<set $pornStarMasochists = 0>>
-	<<set $pornStarPregnancySluts = 0>>
-
-	/* level 3 prestige */
-	<<set $pornStarID = 0>>
-	<<set $pornStarFuckdollID = 0>>
-	<<set $pornStarRapeID = 0>>
-	<<set $pornStarPreggoID = 0>>
-	<<set $pornStarBBWID = 0>>
-	<<set $pornStarGainerID = 0>>
-	<<set $pornStarStudID = 0>>
-	<<set $pornStarLoliID = 0>>
-	<<set $pornStarDeepThroatID = 0>>
-	<<set $pornStarStruggleFuckID = 0>>
-	<<set $pornStarPainalID = 0>>
-	<<set $pornStarTeaseID = 0>>
-	<<set $pornStarRomanticID = 0>>
-	<<set $pornStarPervertID = 0>>
-	<<set $pornStarCaringID = 0>>
-	<<set $pornStarUnflinchingID = 0>>
-	<<set $pornStarSizeQueenID = 0>>
-	<<set $pornStarNeglectfulID = 0>>
-	<<set $pornStarCumAddictID = 0>>
-	<<set $pornStarAnalAddictID = 0>>
-	<<set $pornStarAttentionWhoreID = 0>>
-	<<set $pornStarBreastGrowthID = 0>>
-	<<set $pornStarAbusiveID = 0>>
-	<<set $pornStarMaliciousID = 0>>
-	<<set $pornStarSelfHatingID = 0>>
-	<<set $pornStarBreederID = 0>>
-	<<set $pornStarSubID = 0>>
-	<<set $pornStarCumSlutID = 0>>
-	<<set $pornStarAnalID = 0>>
-	<<set $pornStarHumiliationID = 0>>
-	<<set $pornStarBoobsID = 0>>
-	<<set $pornStarDomID = 0>>
-	<<set $pornStarSadistID = 0>>
-	<<set $pornStarMasochistID = 0>>
-	<<set $pornStarPregnancyID = 0>>
-<</if>>
+	/* create but don't populate (that happens later) */
+	<<set $pornStars = {}>>
+<</if>>
+
+/* migrate to new genre-driven pornstar object */
+<<if typeof $pornStars === "number">>
+	<<set _oldPornStars = $pornStars>>
+
+	<<set $pornStars = {}>>
+	<<set $pornStars.general = { p1count: _oldPornStars, p3ID: $pornStarID }>>
+	<<set $pornStars.fuckdoll = { p1count: $pornStarFuckdolls, p3ID: $pornStarFuckdollID }>>
+	<<set $pornStars.rape = { p1count: $pornStarRapees, p3ID: $pornStarRapeID }>>
+	<<set $pornStars.preggo = { p1count: $pornStarPreggos, p3ID: $pornStarPreggoID }>>
+	<<set $pornStars.BBW = { p1count: $pornStarBBWs, p3ID: $pornStarBBWID }>>
+	<<set $pornStars.gainer = { p1count: $pornStarGainers, p3ID: $pornStarGainerID }>>
+	<<set $pornStars.stud = { p1count: $pornStarStuds, p3ID: $pornStarStudID }>>
+	<<set $pornStars.loli = { p1count: $pornStarLolis, p3ID: $pornStarLoliID }>>
+	<<set $pornStars.deepThroat = { p1count: $pornStarDeepThroats, p3ID: $pornStarDeepThroatID }>>
+	<<set $pornStars.struggleFuck = { p1count: $pornStarStruggleFucks, p3ID: $pornStarStruggleFuckID }>>
+	<<set $pornStars.painal = { p1count: $pornStarPainals, p3ID: $pornStarPainalID }>>
+	<<set $pornStars.tease = { p1count: $pornStarTeases, p3ID: $pornStarTeaseID }>>
+	<<set $pornStars.romantic = { p1count: $pornStarRomantics, p3ID: $pornStarRomanticID }>>
+	<<set $pornStars.pervert = { p1count: $pornStarPerverts, p3ID: $pornStarPervertID }>>
+	<<set $pornStars.caring = { p1count: $pornStarCarings, p3ID: $pornStarCaringID }>>
+	<<set $pornStars.unflinching = { p1count: $pornStarUnflinchings, p3ID: $pornStarUnflinchingID }>>
+	<<set $pornStars.sizeQueen = { p1count: $pornStarSizeQueens, p3ID: $pornStarSizeQueenID }>>
+	<<set $pornStars.neglectful = { p1count: $pornStarNeglectfuls, p3ID: $pornStarNeglectfulID }>>
+	<<set $pornStars.cumAddict = { p1count: $pornStarCumAddicts, p3ID: $pornStarCumAddictID }>>
+	<<set $pornStars.analAddict = { p1count: $pornStarAnalAddicts, p3ID: $pornStarAnalAddictID }>>
+	<<set $pornStars.attentionWhore = { p1count: $pornStarAttentionWhores, p3ID: $pornStarAttentionWhoreID }>>
+	<<set $pornStars.breastGrowth = { p1count: $pornStarBreastGrowths, p3ID: $pornStarBreastGrowthID }>>
+	<<set $pornStars.abusive = { p1count: $pornStarAbusives, p3ID: $pornStarAbusiveID }>>
+	<<set $pornStars.malicious = { p1count: $pornStarMalicious, p3ID: $pornStarMaliciousID }>>
+	<<set $pornStars.selfHating = { p1count: $pornStarSelfHatings, p3ID: $pornStarSelfHatingID }>>
+	<<set $pornStars.breeder = { p1count: $pornStarBreeders, p3ID: $pornStarBreederID }>>
+	<<set $pornStars.sub = { p1count: $pornStarSubs, p3ID: $pornStarSubID }>>
+	<<set $pornStars.cumSlut = { p1count: $pornStarCumSluts, p3ID: $pornStarCumSlutID }>>
+	<<set $pornStars.anal = { p1count: $pornStarAnals, p3ID: $pornStarAnalID }>>
+	<<set $pornStars.humiliation = { p1count: $pornStarHumiliations, p3ID: $pornStarHumiliationID }>>
+	<<set $pornStars.boobs = { p1count: $pornStarBoobs, p3ID: $pornStarBoobsID }>>
+	<<set $pornStars.dom = { p1count: $pornStarDoms, p3ID: $pornStarDomID }>>
+	<<set $pornStars.sadist = { p1count: $pornStarSadists, p3ID: $pornStarSadistID }>>
+	<<set $pornStars.masochist = { p1count: $pornStarMasochists, p3ID: $pornStarMasochistID }>>
+	<<set $pornStars.pregnancy = { p1count: $pornStarPregnancySluts, p3ID: $pornStarPregnancyID }>>
+
+	/* Reset all the old porn type counts */
+	<<unset $pornStars>>
+	<<unset $pornStarFuckdolls>>
+	<<unset $pornStarRapees>>
+	<<unset $pornStarPreggos>>
+	<<unset $pornStarBBWs>>
+	<<unset $pornStarGainers>>
+	<<unset $pornStarStuds>>
+	<<unset $pornStarLolis>>
+	<<unset $pornStarDeepThroats>>
+	<<unset $pornStarStruggleFucks>>
+	<<unset $pornStarPainals>>
+	<<unset $pornStarTeases>>
+	<<unset $pornStarRomantics>>
+	<<unset $pornStarPerverts>>
+	<<unset $pornStarCarings>>
+	<<unset $pornStarUnflinchings>>
+	<<unset $pornStarSizeQueens>>
+	<<unset $pornStarNeglectfuls>>
+	<<unset $pornStarCumAddicts>>
+	<<unset $pornStarAnalAddicts>>
+	<<unset $pornStarAttentionWhores>>
+	<<unset $pornStarBreastGrowths>>
+	<<unset $pornStarAbusives>>
+	<<unset $pornStarMalicious>>
+	<<unset $pornStarSelfHatings>>
+	<<unset $pornStarBreeders>>
+	<<unset $pornStarSubs>>
+	<<unset $pornStarCumSluts>>
+	<<unset $pornStarAnals>>
+	<<unset $pornStarHumiliations>>
+	<<unset $pornStarBoobs>>
+	<<unset $pornStarDoms>>
+	<<unset $pornStarSadists>>
+	<<unset $pornStarMasochists>>
+	<<unset $pornStarPregnancySluts>>
+
+	/* Reset old level 3 prestige variables */
+	<<unset $pornStarID>>
+	<<unset $pornStarFuckdollID>>
+	<<unset $pornStarRapeID>>
+	<<unset $pornStarPreggoID>>
+	<<unset $pornStarBBWID>>
+	<<unset $pornStarGainerID>>
+	<<unset $pornStarStudID>>
+	<<unset $pornStarLoliID>>
+	<<unset $pornStarDeepThroatID>>
+	<<unset $pornStarStruggleFuckID>>
+	<<unset $pornStarPainalID>>
+	<<unset $pornStarTeaseID>>
+	<<unset $pornStarRomanticID>>
+	<<unset $pornStarPervertID>>
+	<<unset $pornStarCaringID>>
+	<<unset $pornStarUnflinchingID>>
+	<<unset $pornStarSizeQueenID>>
+	<<unset $pornStarNeglectfulID>>
+	<<unset $pornStarCumAddictID>>
+	<<unset $pornStarAnalAddictID>>
+	<<unset $pornStarAttentionWhoreID>>
+	<<unset $pornStarBreastGrowthID>>
+	<<unset $pornStarAbusiveID>>
+	<<unset $pornStarMaliciousID>>
+	<<unset $pornStarSelfHatingID>>
+	<<unset $pornStarBreederID>>
+	<<unset $pornStarSubID>>
+	<<unset $pornStarCumSlutID>>
+	<<unset $pornStarAnalID>>
+	<<unset $pornStarHumiliationID>>
+	<<unset $pornStarBoobsID>>
+	<<unset $pornStarDomID>>
+	<<unset $pornStarSadistID>>
+	<<unset $pornStarMasochistID>>
+	<<unset $pornStarPregnancyID>>
+
+<</if>>
+
+/* make sure that any new genres get added correctly (and populate $pornStars for very old games) */
+<<for _genre range App.Porn.getAllGenres()>>
+	<<if ndef $pornStars[_genre.fameVar]>>
+		<<set $pornStars[_genre.fameVar] = { p1count: 0, p3ID: 0 }>>
+	<</if>>
+<</for>>
 
 <<if $PCSlutContacts == 0>>
 	<<set $PCSlutContacts = 1>>
diff --git a/src/uncategorized/nextWeek.tw b/src/uncategorized/nextWeek.tw
index 3de6a6fbc77..d9fdeca1ac6 100644
--- a/src/uncategorized/nextWeek.tw
+++ b/src/uncategorized/nextWeek.tw
@@ -95,14 +95,9 @@
 
 <<set $averageTrust = 0, $averageDevotion = 0, _slavesContributing = 0, _OldHG = -1, _NewHG = -1, _SL = $slaves.length>>
 <<if $studio == 1>>
-	<<set $pornStars = 0, $pornStarFuckdolls = 0, $pornStarRapees = 0, $pornStarPreggos = 0,
-	$pornStarBBWs = 0, $pornStarGainers = 0, $pornStarStuds = 0, $pornStarLolis = 0,
-	$pornStarDeepThroats = 0, $pornStarStruggleFucks = 0, $pornStarTeases = 0,
-	$pornStarRomantics = 0, $pornStarPerverts = 0, $pornStarCarings = 0, $pornStarUnflinchings = 0,
-	$pornStarSizeQueens = 0, $pornStarNeglectfuls = 0, $pornStarCumAddicts = 0, $pornStarAnalAddicts = 0,
-	$pornStarAttentionWhores = 0, $pornStarBreastGrowths = 0, $pornStarAbusives = 0, $pornStarMalicious = 0, $pornStarSelfHatings = 0, $pornStarBreeders = 0, $pornStarSubs = 0, $pornStarCumSluts = 0,
-	$pornStarAnals = 0, $pornStarHumiliations = 0, $pornStarBoobs = 0, $pornStarDoms = 0,
-	$pornStarSadists = 0, $pornStarMasochists = 0, $pornStarPregnancySluts = 0>>
+	<<for _genre range App.Porn.getAllGenres()>>
+		<<set $pornStars[_genre.fameVar].p1count = 0>>
+	<</for>>
 <</if>>
 <<for _i = 0; _i < _SL; _i++>>
 	<<if def $slaves[_i].curBabies>>
@@ -230,41 +225,10 @@
 		<<set $averageTrust += $slaves[_i].trust*0.5, $averageDevotion += $slaves[_i].devotion*0.5, _slavesContributing += 0.5>>
 	<</if>>
 	<<if $studio == 1>>
-		<<if $slaves[_i].porn.fame.general > 0>><<set $pornStars++>><</if>>
-		<<if $slaves[_i].porn.fame.fuckdoll > 0>><<set $pornStarFuckdolls++>><</if>>
-		<<if $slaves[_i].porn.fame.rape > 0>><<set $pornStarRapees++>><</if>>
-		<<if $slaves[_i].porn.fame.preggo > 0>><<set $pornStarPreggos++>><</if>>
-		<<if $slaves[_i].porn.fame.BBW > 0>><<set $pornStarBBWs++>><</if>>
-		<<if $slaves[_i].porn.fame.gainer > 0>><<set $pornStarGainers++>><</if>>
-		<<if $slaves[_i].porn.fame.stud > 0>><<set $pornStarStuds++>><</if>>
-		<<if $slaves[_i].porn.fame.loli > 0>><<set $pornStarLolis++>><</if>>
-		<<if $slaves[_i].porn.fame.deepThroat > 0>><<set $pornStarDeepThroats++>><</if>>
-		<<if $slaves[_i].porn.fame.struggleFuck > 0>><<set $pornStarStruggleFucks++>><</if>>
-		<<if $slaves[_i].porn.fame.painal > 0>><<set $pornStarPainals++>><</if>>
-		<<if $slaves[_i].porn.fame.tease > 0>><<set $pornStarTeases++>><</if>>
-		<<if $slaves[_i].porn.fame.romantic > 0>><<set $pornStarRomantics++>><</if>>
-		<<if $slaves[_i].porn.fame.pervert > 0>><<set $pornStarPerverts++>><</if>>
-		<<if $slaves[_i].porn.fame.caring > 0>><<set $pornStarCarings++>><</if>>
-		<<if $slaves[_i].porn.fame.unflinching > 0>><<set $pornStarUnflinchings++>><</if>>
-		<<if $slaves[_i].porn.fame.sizeQueen > 0>><<set $pornStarSizeQueens++>><</if>>
-		<<if $slaves[_i].porn.fame.neglectful > 0>><<set $pornStarNeglectfuls++>><</if>>
-		<<if $slaves[_i].porn.fame.cumAddict > 0>><<set $pornStarCumAddicts++>><</if>>
-		<<if $slaves[_i].porn.fame.analAddict > 0>><<set $pornStarAnalAddicts++>><</if>>
-		<<if $slaves[_i].porn.fame.attentionWhore > 0>><<set $pornStarAttentionWhores++>><</if>>
-		<<if $slaves[_i].porn.fame.breastGrowth > 0>><<set $pornStarBreastGrowths++>><</if>>
-		<<if $slaves[_i].porn.fame.abusive > 0>><<set $pornStarAbusives++>><</if>>
-		<<if $slaves[_i].porn.fame.malicious > 0>><<set $pornStarMalicious++>><</if>>
-		<<if $slaves[_i].porn.fame.selfHating > 0>><<set $pornStarSelfHatings++>><</if>>
-		<<if $slaves[_i].porn.fame.breeder > 0>><<set $pornStarBreeders++>><</if>>
-		<<if $slaves[_i].porn.fame.sub > 0>><<set $pornStarSubs++>><</if>>
-		<<if $slaves[_i].porn.fame.cumSlut > 0>><<set $pornStarCumSluts++>><</if>>
-		<<if $slaves[_i].porn.fame.anal > 0>><<set $pornStarAnals++>><</if>>
-		<<if $slaves[_i].porn.fame.humiliation > 0>><<set $pornStarHumiliations++>><</if>>
-		<<if $slaves[_i].porn.fame.boobs > 0>><<set $pornStarBoobs++>><</if>>
-		<<if $slaves[_i].porn.fame.dom > 0>><<set $pornStarDoms++>><</if>>
-		<<if $slaves[_i].porn.fame.sadist > 0>><<set $pornStarSadists++>><</if>>
-		<<if $slaves[_i].porn.fame.masochist > 0>><<set $pornStarMasochists++>><</if>>
-		<<if $slaves[_i].porn.fame.pregnancy > 0>><<set $pornStarPregnancySluts++>><</if>>
+		<<set _activeGenres = App.Porn.getAllGenres().filter((g) => $slaves[_i].porn.fame[g.fameVar] > 0)>>
+		<<for _genre range _activeGenres>>
+			<<set $pornStars[_genre.fameVar].p1count++>>
+		<</for>>
 	<</if>>
 	<<if $slaves[_i].choosesOwnAssignment > 0>>
 		<<= assignJob($slaves[_i], "choose her own job")>>
-- 
GitLab