From f4edbe10a62e9ed0021cecddc9e0ea37d935630e Mon Sep 17 00:00:00 2001
From: j <okp57855@psoxs.com>
Date: Thu, 14 Dec 2017 11:56:18 +1300
Subject: [PATCH] Massively reworked version.

---
 src/init/storyInit.tw                        | 13 +++
 src/pregmod/widgets/pregmodWidgets.tw        | 43 ++++++++++
 src/uncategorized/BackwardsCompatibility.tw  |  5 ++
 src/uncategorized/costs.tw                   | 46 +---------
 src/uncategorized/costsReport.tw             | 46 +---------
 src/uncategorized/persBusiness.tw            | 50 +----------
 src/uncategorized/personalAttentionSelect.tw | 89 ++++++--------------
 7 files changed, 96 insertions(+), 196 deletions(-)

diff --git a/src/init/storyInit.tw b/src/init/storyInit.tw
index 4ef56629193..828a997bb21 100644
--- a/src/init/storyInit.tw
+++ b/src/init/storyInit.tw
@@ -1262,6 +1262,19 @@ ocularImplant: 0,
 erectileImplant: 0
 } >>
 
+<<if ndef $AgePricing>>
+	<<set $AgePricing = 1>>
+<</if>>
+<<if ndef $AgeTrainingEffect>>
+	<<set $AgeTrainingEffect = 1>>
+<</if>>
+<<if ndef $AgeTrainingUpperBounds>>
+	<<set $AgeTrainingUpperBounds = 14>>
+<</if>>
+<<if ndef $AgeTrainingLowerBounds>>
+	<<set $AgeTrainingLowerBounds = 12>>
+<</if>>
+
 /* Security Expansion */
 <<set $secExp = 0>>
 <<set $showSecExp = 0>>
diff --git a/src/pregmod/widgets/pregmodWidgets.tw b/src/pregmod/widgets/pregmodWidgets.tw
index 60bccc1646d..2800866b2fd 100644
--- a/src/pregmod/widgets/pregmodWidgets.tw
+++ b/src/pregmod/widgets/pregmodWidgets.tw
@@ -1791,6 +1791,49 @@ Of her $slaves[$i].pregType child<<if $slaves[$i].pregType > 1>>ren<</if>>; $sla
 
 <</widget>>
 
+<<widget "AgePCEffects">>
+<<switch $PC.actualAge>>
+<<case 3>>
+	<<set $AgeTrainingLowerBounds = 18, $AgeTrainingUpperBounds = 20, $AgePricing = .1, $AgeTrainingEffect = .1>>
+<<case 4>>
+	<<set $AgeTrainingLowerBounds = 17, $AgeTrainingUpperBounds = 19, $AgePricing = .15, $AgeTrainingEffect = .15>>
+<<case 5>>
+	<<set $AgeTrainingLowerBounds = 16, $AgeTrainingUpperBounds = 18, $AgePricing = .35, $AgeTrainingEffect = .35>>
+<<case 6>>
+	<<set $AgeTrainingLowerBounds = 15, $AgeTrainingUpperBounds = 17, $AgePricing = .55, $AgeTrainingEffect = .55>>
+<<case 7>>
+	<<set $AgeTrainingLowerBounds = 14, $AgeTrainingUpperBounds = 16, $AgePricing = .75, $AgeTrainingEffect = .75>>
+<<case 8>>
+	<<set $AgeTrainingLowerBounds = 13, $AgeTrainingUpperBounds = 15, $AgePricing = .85, $AgeTrainingEffect = .85>>
+<<case 9>>
+	<<set $AgeTrainingLowerBounds = 12, $AgeTrainingUpperBounds = 14, $AgePricing = 1.00, $AgeTrainingEffect = 1.00>>
+<<case 10>>
+	<<set $AgeTrainingLowerBounds = 11, $AgeTrainingUpperBounds = 13, $AgePricing = 1.0005, $AgeTrainingEffect = 1.0005>>
+<<case 11>>
+	<<set $AgeTrainingLowerBounds = 10, $AgeTrainingUpperBounds = 12, $AgePricing = 1.01, $AgeTrainingEffect = 1.01>>
+<<case 12>>
+	<<set $AgeTrainingLowerBounds = 9, $AgeTrainingUpperBounds = 11, $AgePricing = 1.02, $AgeTrainingEffect = 1.02>>
+<<case 13>>
+	<<set $AgeTrainingLowerBounds = 8, $AgeTrainingUpperBounds = 10, $AgePricing = 1.03, $AgeTrainingEffect = 1.03>>
+<<case 14>>
+	<<set  $AgeTrainingLowerBounds = 7, $AgeTrainingUpperBounds = 9, $AgePricing = 1.04, $AgeTrainingEffect = 1.04>>
+<<case 15>>
+	<<set $AgeTrainingLowerBounds = 6, $AgeTrainingUpperBounds = 8, $AgePricing = 1.05, $AgeTrainingEffect = 1.05>>
+<<case 16>>
+	<<set $AgeTrainingLowerBounds = 5, $AgeTrainingUpperBounds = 7, $AgePricing = 1.06, $AgeTrainingEffect = 1.06>>
+<<case 17>>
+	<<set $AgeTrainingLowerBounds = 4, $AgeTrainingUpperBounds = 6, $AgePricing = 1.07, $AgeTrainingEffect = 1.07>>
+<<case 18>>
+	<<set $AgeTrainingLowerBounds = 3, $AgeTrainingUpperBounds = 5, $AgePricing = 1.08, $AgeTrainingEffect = 1.08>>
+<<case 19>>
+	<<set $AgeTrainingLowerBounds = 2, $AgeTrainingUpperBounds = 4, $AgePricing = 1.09, $AgeTrainingEffect = 1.09>>
+<<case 20>>
+	<<set $AgeTrainingLowerBounds = 1, $AgeTrainingUpperBounds = 3, $AgePricing = 1.10, $AgeTrainingEffect = 1.10 >>
+<<default>>
+	<<set $AgeTrainingLowerBounds = 0,  $AgeTrainingUpperBounds = 0, $AgePricing = 0, $AgeTrainingEffect = .95>>
+<</switch>>
+<</widget>>
+
 <<widget "HeroSlavesCleanup">>
 <<run $heroSlaves.forEach(function(s) {
 	const validRaces = [
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 512a1d72b97..b7020065fe1 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2809,6 +2809,11 @@ Setting missing slave variables:
 	<<if ndef _Slave.origSkin>><<set _Slave.origSkin = _Slave.skin>><</if>>
 <</for>>
 
+<<set $AgePricing = 1>>
+<<set $AgeTrainingEffect = 1>>
+<<set $AgeTrainingUpperBounds = 14>>
+<<set $AgeTrainingLowerBounds = 12>>
+
 <<HeroSlavesCleanup>>
 Done!
 
diff --git a/src/uncategorized/costs.tw b/src/uncategorized/costs.tw
index 40c41c5dcf8..4ec588dcc85 100644
--- a/src/uncategorized/costs.tw
+++ b/src/uncategorized/costs.tw
@@ -1,5 +1,6 @@
 :: Costs [nobr]
 
+<<AgePCEffects>>
 <<set $costs = ($brothel*$facilityCost)+($arcade*$facilityCost*0.5)+($club*$facilityCost)+($dairy*$facilityCost)+($incubator*$facilityCost*10)>>
 
 <<set $costs += (0.1*$brothelUpgradeDrugs*$brothel*$facilityCost)+(0.2*$arcadeUpgradeInjectors*$arcade*$facilityCost)+(0.2*$arcadeUpgradeCollectors*$arcade*$facilityCost)+(0.2*$clubUpgradePDAs*$club*$facilityCost)+(0.2*$dairyFeedersUpgrade*$dairy*$facilityCost)+(0.1*$dairyPregUpgrade*$dairy*$facilityCost)+(0.2*$dairyStimulatorsUpgrade*$facilityCost)+(0.2*$servantsQuartersUpgradeMonitoring*$servantsQuarters*$facilityCost)+(0.2*$incubatorUpgradeWeight*$incubator*$facilityCost)+(0.2*$incubatorUpgradeMuscles*$incubator*$facilityCost)+(0.2*$incubatorUpgradeReproduction*$incubator*$facilityCost)+(0.2*$incubatorUpgradeGrowthStims*$incubator*$facilityCost)+(0.5*$incubatorUpgradeSpeed*$incubator*$facilityCost)>>
@@ -432,49 +433,8 @@
 	<<set $costs += 1000>>
 <</if>>
 
-<<if $PC.actualAge <= 3>>
-	<<set $cost = 10000*.1>>
-<<elseif $PC.actualAge == 4>>
-	<<set $cost = 10000*.15>>
-<<elseif $PC.actualAge == 5>>
-	<<set $cost = 10000*.35>>
-<<elseif $PC.actualAge == 6>>
-	<<set $cost = 10000*.55>>	
-<<elseif $PC.actualAge == 7>>
-	<<set $cost = 10000*.75>>
-<<elseif $PC.actualAge == 8>>
-	<<set $cost = 10000*.85>>
-<<elseif $PC.actualAge == 9>>
-	<<set $cost = 10000>>	
-<<elseif ($PC.actualAge >= 10 && $PC.actualAge < 21)>>
-	<<switch $PC.actualAge>>
-		<<case 10>>
-			<<set _N = 1.00>>
-		<<case 11>>
-			<<set _N = 1.01>>
-		<<case 12>>
-			<<set _N = 1.02>>
-		<<case 13>>
-			<<set _N = 1.03>>
-		<<case 14>>
-			<<set _N = 1.04>>
-		<<case 15>>
-			<<set _N = 1.05>>
-		<<case 16>>
-			<<set _N = 1.06>>
-		<<case 17>>
-			<<set _N = 1.07>>
-		<<case 18>>
-			<<set _N = 1.08>>
-		<<case 19>>
-			<<set _N = 1.09>>
-		<<case 20>>
-			<<set _N = 1.10>>
-	<</switch>>
-	<<set $cost = 10000*_N>>	
-<<elseif $PC.actualAge >= 21>>
-	<<set $cost = 10000*1.2>>
-<</if>>	
+<<set $cost = 10000*$AgePricing>>	
+
 
 <<if ($personalAttention == "trading") || ($personalAttention == "warfare") || ($personalAttention == "slaving") || ($personalAttention == "engineering") || ($personalAttention == "medicine")>>
 	<<set $costs += $cost>>
diff --git a/src/uncategorized/costsReport.tw b/src/uncategorized/costsReport.tw
index dcab4533e58..6114ac39697 100644
--- a/src/uncategorized/costsReport.tw
+++ b/src/uncategorized/costsReport.tw
@@ -1,5 +1,6 @@
 :: Costs Report [nobr]
 
+<<AgePCEffects>>
 <<set $nextButton = "Back to Main", $nextLink = "Main">>
 
 //Your weekly costs are as follows.//
@@ -206,50 +207,7 @@
 	<br>Coursing Association membership: ¤1000
 <</if>>
 
-<<if $PC.actualAge <= 3>>
-	<<set $cost = 10000*.1>>
-<<elseif $PC.actualAge == 4>>
-	<<set $cost = 10000*.15>>
-<<elseif $PC.actualAge == 5>>
-	<<set $cost = 10000*.35>>
-<<elseif $PC.actualAge == 6>>
-	<<set $cost = 10000*.55>>	
-<<elseif $PC.actualAge == 7>>
-	<<set $cost = 10000*.75>>
-<<elseif $PC.actualAge == 8>>
-	<<set $cost = 10000*.85>>
-<<elseif $PC.actualAge == 9>>
-	<<set $cost = 10000>>	
-<<elseif ($PC.actualAge >= 10 && $PC.actualAge < 21)>>
-<<switch $PC.actualAge>>
-		<<case 10>>
-			<<set _N = 1.00>>
-		<<case 11>>
-			<<set _N = 1.01>>
-		<<case 12>>
-			<<set _N = 1.02>>
-		<<case 13>>
-			<<set _N = 1.03>>
-		<<case 14>>
-			<<set _N = 1.04>>
-		<<case 15>>
-			<<set _N = 1.05>>
-		<<case 16>>
-			<<set _N = 1.06>>
-		<<case 17>>
-			<<set _N = 1.07>>
-		<<case 18>>
-			<<set _N = 1.08>>
-		<<case 19>>
-			<<set _N = 1.09>>
-		<<case 20>>
-			<<set _N = 1.10>>
-	<</switch>>
-	<<set $cost = 10000*_N>>	
-<<elseif $PC.actualAge >= 21>>
-	<<set $cost = 10000*1.2>>
-<</if>>	
-
+<<set $cost = 10000*$AgePricing>>	
 <<if ($personalAttention == "trading")>>
 	<br>Trading trainer fees: ¤$cost
 <<elseif ($personalAttention == "warfare")>>
diff --git a/src/uncategorized/persBusiness.tw b/src/uncategorized/persBusiness.tw
index 873150106bb..f892f2cbcac 100644
--- a/src/uncategorized/persBusiness.tw
+++ b/src/uncategorized/persBusiness.tw
@@ -1,5 +1,6 @@
 :: Personal Business [nobr]
 
+<<AgePCEffects>>
 <<if $useTabs == 0>>__Personal Business__<</if>>
 <br>
 <<if $secExp == 1>>
@@ -405,53 +406,10 @@
 <<if $PCWounded == 1 && $secExp == 1>>
  /* does nothing this week */
 
-<<elseif $PC.actualAge <= 3>>
-	<<set _Cal += Math.ceil((random(10,20)*.1)>>
-<<elseif $PC.actualAge == 4>>
-	<<set _Cal += Math.ceil((random(8,18)*.15)>>
-<<elseif $PC.actualAge == 5>>
-	<<set _Cal += Math.ceil((random(6,16)*.35)>>
-<<elseif $PC.actualAge == 6>>	
-	<<set _Cal += Math.ceil((random(4,14)*.55)>>
-<<elseif $PC.actualAge == 7>>
-	<<set _Cal += Math.ceil((random(3,12)*.75)>>
-<<elseif $PC.actualAge == 8>>	
-	<<set _Cal += Math.ceil((random(2,8)*.85)>>
-<<elseif $PC.actualAge == 9>>	
-	<<set _Cal += random(1,4)>>
-<<elseif $PC.actualAge >= 10 && <<elseif $PC.actualAge < 21>>	
-	<<switch $PC.actualAge>>
-		<<case 10>>
-			<<set _N = 1.00>>
-		<<case 11>>
-			<<set _N = 1.01>>
-		<<case 12>>
-			<<set _N = 1.02>>
-		<<case 13>>
-			<<set _N = 1.03>>
-		<<case 14>>
-			<<set _N = 1.04>>
-		<<case 15>>
-			<<set _N = 1.05>>
-		<<case 16>>
-			<<set _N = 1.06>>
-		<<case 17>>
-			<<set _N = 1.07>>
-		<<case 18>>
-			<<set _N = 1.08>>
-		<<case 19>>
-			<<set _N = 1.09>>
-		<<case 20>>
-			<<set _N = 1.10>>
-	<</switch>>
-	<<set _Cal += Math.ceil((random(1,4)*_N)>>
+<<elseif $PC.actualAge < 21>>
+	<<set _Cal += Math.ceil((random($AgeTrainingLowerBounds,$AgeTrainingUpperBounds)*$AgeTrainingEffect)>>
 <<elseif $PC.actualAge >= 21>>
-	<<set $PC.trading -= Math.ceil($PC.trading*.95)>>
-	<<set $PC.warfare -= Math.ceil($PC.warfare*.95)>>
-	<<set $PC.slaving -= Math.ceil($PC.slaving*.95)>>
-	<<set $PC.engineering -= Math.ceil($PC.engineering*.95)>>
-	<<set $PC.medicine -= Math.ceil($PC.medicine*.95)>>
-<</if>>
+	<<set _Cal += Math.ceil((random($AgeTrainingLowerBounds,$AgeTrainingUpperBounds)*$AgeTrainingEffect)>>
 
 <<elseif ($personalAttention == "trading")>>
 	<<set _oldSkill = $PC.trading>>
diff --git a/src/uncategorized/personalAttentionSelect.tw b/src/uncategorized/personalAttentionSelect.tw
index e1205038dcb..7b43c4f9a9d 100644
--- a/src/uncategorized/personalAttentionSelect.tw
+++ b/src/uncategorized/personalAttentionSelect.tw
@@ -1,5 +1,6 @@
 :: Personal Attention Select [nobr]
 
+<<AgePCEffects>>
 <<set $nextButton = "Back to Main", $nextLink = "Main">>
 
 <<if $PC.career == "escort">>
@@ -29,52 +30,13 @@
 	<br>
 <</if>>
 
-<<if $PC.actualAge <= 3>>
-	<<set $cost = 10000*.1>>
-<<elseif $PC.actualAge == 4>>
-	<<set $cost = 10000*.15>>
-<<elseif $PC.actualAge == 5>>
-	<<set $cost = 10000*.35>>
-<<elseif $PC.actualAge == 6>>
-	<<set $cost = 10000*.55>>	
-<<elseif $PC.actualAge == 7>>
-	<<set $cost = 10000*.75>>
-<<elseif $PC.actualAge == 8>>
-	<<set $cost = 10000*.85>>
-<<elseif $PC.actualAge == 9>>
-	<<set $cost = 10000>>	
-<<elseif ($PC.actualAge >= 10 && $PC.actualAge < 21)>>
-<<switch $PC.actualAge>>
-		<<case 10>>
-			<<set _N = 1.00>>
-		<<case 11>>
-			<<set _N = 1.01>>
-		<<case 12>>
-			<<set _N = 1.02>>
-		<<case 13>>
-			<<set _N = 1.03>>
-		<<case 14>>
-			<<set _N = 1.04>>
-		<<case 15>>
-			<<set _N = 1.05>>
-		<<case 16>>
-			<<set _N = 1.06>>
-		<<case 17>>
-			<<set _N = 1.07>>
-		<<case 18>>
-			<<set _N = 1.08>>
-		<<case 19>>
-			<<set _N = 1.09>>
-		<<case 20>>
-			<<set _N = 1.10>>
-	<</switch>>
-	<<set $cost = 10000*_N>>	
-<<elseif $PC.actualAge >= 21>>
-	<<set $cost = 10000*1.2>>
-<</if>>		
+<<set $cost = 10000*$AgePricing>>
 
+<<set _MinEffectedAge = 3, _PastPrimeAge = 21>>
+
+<<if $PC.actualAge >= _MinEffectedAge>>
 <<if $PC.trading >= 100>>
-	//You are a master trader.//
+	<br>//You are a master trader.//
 <<else>>
 	<<if $PC.trading > 60>>
 		//You are an expert trader.//
@@ -85,12 +47,12 @@
 	<</if>>
 	<<if $personalAttention == "trading">>
 		You are training in venture capitalism.
-	<<elseif $PC.trading < 100 && $PC.actualAge < 21>>
-		[[Hire a merchant to train you in commerce|Main][$personalAttention = "trading", $personalAttentionChanged = 1]]
+	<<elseif $PC.trading < 100 && $PC.actualAge < _PastPrimeAge>>
+		<br>[[Hire a merchant to train you in commerce|Main][$personalAttention = "trading", $personalAttentionChanged = 1]]
 	<</if>>
-<</if>><br>
+<</if>>
 <<if $PC.warfare >= 100>>
-	//You are a master tactician.//
+	<br>//You are a master tactician.//
 <<else>>
 	<<if $PC.warfare > 60>>
 		//You are an expert tactician.//
@@ -101,12 +63,12 @@
 	<</if>>
 	<<if $personalAttention == "warfare">>
 		You are training in tactics.
-	<<elseif $PC.warfare < 100 && $PC.actualAge < 21>>
-		[[Hire a mercenary to train you in warfare|Main][$personalAttention = "warfare", $personalAttentionChanged = 1]]
+	<<elseif $PC.warfare < 100 && $PC.actualAge < _PastPrimeAge>>
+		<br>[[Hire a mercenary to train you in warfare|Main][$personalAttention = "warfare", $personalAttentionChanged = 1]]
 	<</if>>
-<</if>><br>
+<</if>>
 <<if $PC.slaving >= 100>>
-	//You are a master slaver.//
+	<br>//You are a master slaver.//
 <<else>>
 	<<if $PC.slaving > 60>>
 		//You are an expert slaver.//
@@ -117,12 +79,12 @@
 	<</if>>
 	<<if $personalAttention == "slaving">>
 		You are training in slaving.
-	<<elseif $PC.slaving < 100 && $PC.actualAge < 21>>
-		[[Hire a slaver to train you in slaving|Main][$personalAttention = "slaving", $personalAttentionChanged = 1]]
+	<<elseif $PC.slaving < 100 && $PC.actualAge < _PastPrimeAge>>
+		<br>[[Hire a slaver to train you in slaving|Main][$personalAttention = "slaving", $personalAttentionChanged = 1]]
 	<</if>>
-<</if>><br>
+<</if>>
 <<if $PC.engineering >= 100>>
-	//You are a master arcology engineer.//
+	<br>//You are a master arcology engineer.//
 <<else>>
 	<<if $PC.engineering > 60>>
 		//You are an expert arcology engineer.//
@@ -133,12 +95,12 @@
 	<</if>>
 	<<if $personalAttention == "engineering">>
 		You are training in arcology engineering.
-	<<elseif $PC.engineering < 100 && $PC.actualAge < 21>>
-		[[Hire an engineer to train you in engineering|Main][$personalAttention = "engineering", $personalAttentionChanged = 1]]
+	<<elseif $PC.engineering < 100 && $PC.actualAge < _PastPrimeAge>>
+		<br>[[Hire an engineer to train you in engineering|Main][$personalAttention = "engineering", $personalAttentionChanged = 1]]
 	<</if>>
-<</if>><br>
+<</if>>
 <<if $PC.medicine >= 100>>
-	//You are a master surgeon.//
+	<br>//You are a master surgeon.//
 <<else>>
 	<<if $PC.medicine > 60>>
 		//You are an expert surgeon.//
@@ -149,11 +111,12 @@
 	<</if>>
 	<<if $personalAttention == "medicine">>
 		You are training in slave surgery.
-	<<elseif $PC.medicine < 100 && $PC.actualAge < 21>>
-		[[Hire a doctor to train you in medicine|Main][$personalAttention = "medicine", $personalAttentionChanged = 1]]
+	<<elseif $PC.medicine < 100 && $PC.actualAge < _PastPrimeAge>>
+		<br>[[Hire a doctor to train you in medicine|Main][$personalAttention = "medicine", $personalAttentionChanged = 1]]
 	<</if>>
 <</if>>
-<br>//Training will cost ¤<<print $cost>> per week.//<br><br>
+<</if>>
+<<if $PC.actualAge >= _MinEffectedAge && $PC.actualAge < _PastPrimeAge && ($PC.medicine < 100 || $PC.engineering < 100 || $PC.slaving < 100 || $PC.warfare < 100 || $PC.trading < 100)>><br>//Training will cost ¤$cost per week.//<br><br><<else>><br><br><</if>>
 
 <<if ($personalAttentionChanged == 1)>>
 <<if ($activeSlave.health < -20)>>
-- 
GitLab