41 Commits f8ecee2422 ... 1af039a071

Author SHA1 Message Date
  ADCSux 1af039a071 Merge branch 'working' 2 years ago
  ADCSux 7029f184ee [Renamed] Renamed body_shape.qsrc to body to now reflect all updates regarding body now happen in body.qsrc 2 years ago
  ADCSux 839b73a270 [Renamed] Renamed body.qsrc to AppearanceSystem.qsrc to reflect on what the file does 2 years ago
  rachels 7a0d4c2e8f fix typos 2 years ago
  rachels 2cba65c541 no changes, just cleaning (extra spaces,tabs) 2 years ago
  rachels 806cf8fc86 fix if elseif section 2 years ago
  ADCSux b266185ed4 [Refactored] Added some documentations and cleaned up local variables 2 years ago
  ADCSux 82c8346529 [Fixed] Fix bugs in rewrote appearance calculations 2 years ago
  ADCSux 279aacf332 Merge branch 'master' into working 2 years ago
  Kevin_Smarts bdaf69b9a1 Merge remote-tracking branch 'Nekoforce/master' 2 years ago
  Kevin_Smarts fa0c7b2e37 Merge branch 'master' of https://git.catrenelle.com/Kevin_Smarts/glife 2 years ago
  Kevin_Smarts 73fde4b075 Merge remote-tracking branch 'Gwen/master' 2 years ago
  ADCSux 4d80359916 [Refactored] Added back Face Bonus and Attribute Bonus to base appearance calculation 2 years ago
  ADCSux 16368fd10f [Refactored] Refactored Grooming Bonus and Penalty and Accessories Bonus 2 years ago
  ADCSux e3fdbcfd88 [Refactored] Refactored CalcClothingBonus 2 years ago
  ADCSux 2f65d90fae [Refactored] Moved some body update from cikl and body to body_shape 2 years ago
  ADCSux f4bf738b0c [Fixed] Fixed some arguments UpdateBaseAppearance calls 2 years ago
  ADCSux 92b4aba087 [Refactored] Refactored base appearance calculations 2 years ago
  ADCSux d3dd57bf54 [Refactored] Copied base appearance calculations from body_shape to body 2 years ago
  ADCSux 93caa0a1f5 [Refactored] Refactored cikl body_shape call to a daily update function in body_shape 2 years ago
  ADCSux c40c9e18d5 [Refactored] Added a regular update to body_shape, where it will be called from body to update some pc's body variables regularly 2 years ago
  rachels ce12bb3d27 one more correction of the Katja's section 2 years ago
  rachels 41854d6b87 I modified the Dimka's and Katja's chat according my taste. rachels 2 years ago
  Gwen 58fbb66651 [Changed] changed/ add new values for the new shoes in Cats 2 years ago
  rachels 8fe69d9ac8 add some actions (by Sword with a few my addition) 2 years ago
  rachels afda334115 add hookup sms 2 years ago
  ADCSux 7f397a02a6 [Added] Added simple documentation for body description 2 years ago
  rachels c4aafccf79 Revert "revert some lost changes" 2 years ago
  rachels d751d232a2 revert some lost changes 2 years ago
  Kevin_Smarts d81c755ce1 [changed] Updated text for access to Pav police from nutluck 2 years ago
  Nekoforce 3e9ed68850 brothel.qsrc Changed variable arousal to horny 2 years ago
  Nekoforce f10612b158 brothel.qsrc variable renamed to fix crash 2 years ago
  Nekoforce 3a4c7c6f14 brothel.qsrc bugfixes 2 years ago
  Nekoforce 6f6684b7d2 brothel.qsrc bugfix wrong location 2 years ago
  Nekoforce ac99b51211 brothel.qsrc link to wrong location fixed 2 years ago
  Nekoforce 571b07a431 brothel.qsrc small fixes 2 years ago
  Nekoforce 588dbbeba6 brothel.qsrc more rewrites and added replug scene 2 years ago
  Nekoforce 50c8e003a3 brothel.qsrc startet refactoring section 1 code 2 years ago
  Nekoforce b646e60a29 brothel.qsrc temporary fix stretching bug 2 years ago
  Nekoforce fe208f14e6 brothel.qsrc minor fix 2 years ago
  Nekoforce 545ea14b3c brothel.qsrc functions for next act added, pictures moved, fixes 2 years ago

+ 6 - 1
changes from 0_8_5 to 0_8_6.txt

@@ -24,6 +24,8 @@ pav_beach_chat
 katja_lake			<- split from katjaEv
 
 body_desc
+AppearanceSystem               <- body
+body                           <- body_shape
 
 === deleted locations ===
 
@@ -39,7 +41,8 @@ rex_party_boys_events
 rex_party_girls_events
 rex_party_sister_events
 $phone_theme
-
+body                                 -> AppearanceSystem
+body_shape                           -> body
 
 
 Variables:
@@ -56,6 +59,7 @@ $lips1
 
 $pcdes_<bodypart>random
 $pcdes_<bodypart>
+bmi_calc                                  -> pcs_bmi
 
 === Added variables ===
 
@@ -64,3 +68,4 @@ $pcdes_<bodypart>
 [String variables]
 $pc_desc[] <- Hold descriptive words for PC's body parts
 $pc_descWordy[] <- Hold more descriptive words for PC's body parts
+pcs_bmi <- New variable for bmi

+ 2 - 1
glife.qproj

@@ -65,8 +65,8 @@
 		<Location name="grades"/>
 	</Folder>
 	<Folder name="Body">
+		<Location name="ApperanceSystem"/>
 		<Location name="body"/>
-		<Location name="body_shape"/>
 		<Location name="body_desc"/>
 		<Location name="lact_lib"/>
 		<Location name="lact_bp"/>
@@ -1106,6 +1106,7 @@
 		<Location name="Gnpc_cinema"/>
 		<Location name="Gnpc2"/>
 		<Location name="hookup"/>
+		<Location name="hookup_sms"/>
 		<Location name="hookup_sex"/>
 		<Location name="hookup_virgin"/>
 		<Location name="hookup_after"/>

+ 378 - 0
locations/ApperanceSystem.qsrc

@@ -0,0 +1,378 @@
+# AppearanceSystem
+$this = 'AppearanceSystem'
+
+if $ARGS[0] = '':
+	!{
+        PC's appearance is updated regularly in stat.qsrc.
+        Note: A huge part of PC's appearance is from base appearance, which is updated once a day. Because it's
+        a global variable, it does not show in this function in particular, but it's used in 'CalcAppearance'
+    }
+	if pcs_makeup = 6 and bimbolevel >= 2: extra_supnatvnesh = 2*bimbolevel - 2
+
+	!STD check. STD will make appearance automatically -10
+	if Gerpes >= 3 or Sifilis >= 21 or Triper > 2:
+		pcs_apprnc = -10
+	else:
+		clothingBonus = func($this, 'CalcClothingBonus')
+		accessoriesBonus = func($this, 'CalcAccessoriesBonus', bonusZ, PShoQuality)
+		groomingBonus = func($this, 'CalcGroomingBonus')
+		groomingPenalty = func($this, 'CalcGroomingPenalty')
+		pcs_apprnc = func($this, 'CalcAppearance', (supnatvnesh + extra_supnatvnesh))
+		Hotcat = func($this, 'ConvertToHotcat')
+	end
+
+	killvar 'clothingBonus'
+	killvar 'accessoriesBonus'
+	killvar 'groomingBonus'
+	killvar 'groomingPenalty'
+end
+
+if $args[0] = 'UpdateBaseAppearnce':
+	!{
+		Base Appearance is updated once a day at midnight and called from cikl
+		Base Appearance is calculated from:
+			vidage, skin, body shape (fat and strength), face (lip size, eyes size, and eyelashes)
+			attributes (endurance and agility)
+	}
+	faceBonus = func($this, 'CalcFaceBonus')
+	attributeBonus = func($this, 'CalcAttributeBonus')
+
+	!!	Setting vidageBonus
+	if vidage < 20: 
+		vidageBonus = 60 + (2 * vidage)
+	elseif vidage > 30: 
+		vidageBonus = 160 - (2 * vidage)
+	else
+		vinageBonus = 100
+	end
+
+	skinBonus = (pcs_skin * 2 / 5)
+	bodyShapeBonus = func($this, 'SetBodyShapeBonus')
+
+	! Calculte base appearance
+	pcs_apprncbase = (vidageBonus * (skinBonus + bodyShapeBonus + faceBonus + attributeBonus) / 100) + supnatvnesh
+
+	killvar 'vidageBonus'
+	killvar 'skinBonus'
+	killvar 'bodyShapeBonus'
+	killvar 'faceBonus'
+	killvar 'attributeBonus'
+end 
+
+if $ARGS[0] = 'CalcFaceBonus':
+	!!	Setting Eyelashes bonus
+	if pcs_lashes <= 0:
+		eyelashesBonus = 0
+	elseif pcs_lashes = 1:
+		eyelashesBonus = 2
+	elseif pcs_lashes = 2:
+		eyelashesBonus = 5
+	elseif pcs_lashes = 3:
+		eyelashesBonus = 7
+	elseif pcs_lashes = 4:
+		eyelashesBonus = 8
+	elseif pcs_lashes = 5:
+		eyelashesBonus = 10
+	else
+		eyelashesBonus = 0		
+	end
+	eyelashesBonus = FUNC($this, 'AdjustFromBMI', eyelashesBonus)
+
+	!!	Setting Eye Size bonus
+	if pcs_eyesize = 1:
+		eyeSizeBonus = 1
+	elseif pcs_eyesize = 2:
+		eyeSizeBonus = 3
+	elseif pcs_eyesize = 3:
+		eyeSizeBonus = 2
+	else
+		eyeSizeBonus = 0
+	end
+	eyeSizeBonus = FUNC($this, 'AdjustFromBMI', eyeSizeBonus)
+
+	!!	Setting the Lip size bonus
+	if pcs_lip = 0:
+		lipBonus = -2
+	elseif pcs_lip = 1:
+		lipBonus = 0
+	elseif pcs_lip = 2:
+		lipBonus = 3
+	elseif pcs_lip = 3:
+		lipBonus = 5
+	else
+		lipBonus = 3
+	end
+	lipBonus = FUNC($this, 'AdjustFromBMI', lipBonus)
+
+	result = eyelashesBonus + eyeSizeBonus + lipBonus
+
+	killvar 'eyelashesBonus'
+	killvar 'eyeSizeBonus'
+	killvar 'lipBonus'
+end
+
+if $ARGS[0] = 'CalcAttributeBonus':
+	tempAttributeBonus = (pcs_agil / 10) + (pcs_vital / 10)
+
+	result = func($this, 'AdjustFromBMI', tempAttributeBonus)
+	killvar 'tempAttributeBonus'
+end
+
+if $ARGS[0] = 'SetBodyShapeBonus':
+	! Magic uses a different calculation
+	if dounspell = 1:
+		bodytipe = pcs_hips - pcs_waist
+		if bodytipe < 20:
+			result = 0
+		elseif bodytipe >= 20 and bodytipe < 25:
+			result = 2
+		elseif (bodytipe >= 25 and bodytipe < 30) or bodytipe >=35:
+			result = 4
+		elseif bodytipe >= 30 and bodytipe < 35:
+			result = 8
+		end
+
+	!!Setting the pcs_apprnc bonus based on fat and strength
+	else
+		if pcs_bmi < 16:
+			!! severely underweight
+			tempBodyShapeBonus = 30
+		elseif pcs_bmi < 19:
+			!! underweight
+			tempBodyShapeBonus = 65
+		elseif pcs_bmi < 25:
+			!! healthy weight
+			tempBodyShapeBonus = 85
+		elseif pcs_bmi < 30:
+			!! overweight
+			tempBodyShapeBonus = 75
+		elseif pcs_bmi < 35:
+			!! moderately obese
+			tempBodyShapeBonus = 45
+		elseif pcs_bmi < 40:
+			!! severely obese
+			tempBodyShapeBonus = 25
+		elseif pcs_bmi < 45:
+			!! very severely obese
+			tempBodyShapeBonus = 5
+		else
+			!! morbidly obese
+			tempBodyShapeBonus = 0
+		end
+
+		if (strenbuf >= 40 and strenbuf < 60) or strenbuf >= 80:
+			tempBodyShapeBonus += 8
+		elseif strenbuf >= 60:
+			tempBodyShapeBonus += 10
+		elseif strenbuf >= 20:
+			tempBodyShapeBonus += 5
+		end
+
+		!!This modifies bodykoef for high or low salo values
+		if salocatnow = 0 or salocatnow >= 7:
+			tempBodyShapeBonus -= 8
+		elseif salocatnow = 1 or salocatnow = 6:
+			tempBodyShapeBonus -= 4
+		end
+
+		if vofat > 0: tempBodyShapeBonus -= vofat
+
+		result = tempBodyShapeBonus
+
+		killvar 'tempBodyShapeBonus'
+	end
+end
+
+if $ARGS[0] = 'CalcClothingBonus':
+	if $clothingworntype = 'nude':
+		if pcs_bmi >= 19 and pcs_bmi < 30:
+			! Healthy and overweight
+			tempRevealing = 405
+			PCloQuality = 3
+		else
+			tempRevealing = 0
+			PCloQuality = 1
+		end
+	else
+		if pcs_bmi < 19:
+			!Skinny and severely skinny
+			tempRevealing = ((400 - PXCloThinness) + (500 - PXCloTopCut) + (400 - PXCloBottomShortness))/2
+		elseif pcs_bmi >= 19 and pcs_bmi < 30:
+			!Healthy and overweight
+			tempRevealing = (PXCloThinness + PXCloTopCut + PXCloBottomShortness)/2
+		elseif pcs_bmi >= 30:
+			!Moderately overweight and above
+			tempRevealing = ((400 - PXCloThinness) + (500 - PXCloTopCut) + (400 - PXCloBottomShortness)) * 3/4
+		end
+	end
+
+	result = tempRevealing/ 76 * PCloQuality
+	killvar 'tempRevealing'
+
+end
+
+if $ARGS[0] = 'CalcAccessoriesBonus':
+	coatQualityBonus = ARGS[1] & !! bonusZ
+	shoesQualityBonus = ARGS[2] & !! PShoQuality
+	
+	!!bonuses for certain underwear
+	if $pantyworntype = 'boutique':
+		pantyBonus = 4
+	elseif $pantyworntype = 'fashionista':
+		pantyBonus = 2
+	end
+
+	if $braworntype = 'boutique':
+		braBonus = 4
+	elseif $braworntype = 'fashionista':
+		braBonus = 2
+	end
+
+	result = coatQualityBonus + shoesQualityBonus + pantyBonus + braBonus
+
+	killvar 'coatQualityBonus'
+	killvar 'shoesQualityBonus'
+	killvar 'pantyBonus'
+	killvar 'braBonus'
+end
+
+if $ARGS[0] = 'CalcGroomingBonus':
+	if pcs_lipbalm > 0:
+		lipBalmBonus = 5
+	else
+		lipBalmBonus = 0
+	end
+
+	makeupBonus = pcs_makupskl / 5
+	if pcs_makeup = 0: makeupBonus = -5
+	if pcs_makeup = 1: makeupBonus = 0
+	if pcs_makeup = 5: makeupBonus = 30
+
+	hairBonus = pcs_hairbsh * 10
+
+	breathBonus = pcs_breath * 5
+
+	tempGroomingBonus = makeupBonus + hairBonus + lipBalmBonus + breathBonus
+
+	!!Small bonus for wearing deodorant, if pcs_sweat is low enough
+	if deodorant_on = 1 and pcs_sweat < 20: tempGroomingBonus += 5
+
+	!result = tempGroomingBonus
+	result = func($this, 'AdjustFromBMI', tempGroomingBonus)
+
+	killvar 'lipBalmBonus'
+	killvar 'makeupBonus'
+	killvar 'hairBonus'
+	killvar 'breathBonus'
+	killvar 'tempGroomingBonus'
+end
+
+if $ARGS[0] = 'CalcGroomingPenalty':
+	!! buzzcut penalty to pcs_apprnc
+	if pcs_hairlng < 10:
+		buzzCutPenalty = 10
+	else
+		buzzCutPenalty = 0
+	end
+
+	if pcs_sweat < 22:
+		sweatPenalty = 0
+	elseif temppcs_sweat < 38:
+		sweatPenalty = (pcs_sweat - 10) / 4
+	elseif temppcs_sweat < 54:
+		sweatPenalty = (pcs_sweat - 10) / 2
+	else
+		sweatPenalty = 3 * (pcs_sweat - 10) / 4
+	end
+
+	!Glasses Penalty
+	if glass >= 2 or glass = 0:
+		glassesPenalty = 0
+	elseif glass = 1:
+		glassesPenalty = 10
+	end
+
+	!hair color fade penalty
+	if pcs_haircol ! nathcol:
+		if dyefade > 0 and dyefade < 7: hairDyePenalty = 5
+		if dyefade = 0: hairDyePenalty = 15
+	end
+
+	! Leg hair penalty
+	if pcs_leghair <= 0:
+		legPenalty = 0
+	elseif pcs_leghair <= 3:
+		legPenalty = 3
+	elseif pcs_leghair <= 6:
+		legPenalty = 6
+	else
+		legPenalty = 9 
+	end
+
+	result = sweatPenalty + glassesPenalty + hairDyePenalty + buzzCutPenalty + legPenalty
+
+
+	killvar 'sweatPenalty'
+	killvar 'glassesPenalty'
+	killvar 'hairDyePenalty'
+	killvar 'buzzCutPenalty'
+	killvar 'legPenalty'
+end
+
+
+if $ARGS[0] = 'CalcAppearance':
+	superNaturalBonus = ARGS[1] & !! supnatvnesh
+
+	temp_apprnc = pcs_apprncbase + clothingBonus + accessoriesBonus + groomingBonus - groomingPenalty
+
+	if temp_apprnc >= 200: temp_apprnc = 200 
+	if temp_apprnc < 0: temp_apprnc = 0
+
+	!Any super natural bonuses are allowed to go above the max scale
+	result = temp_apprnc + superNaturalBonus
+	
+	killvar 'superNaturalBonus'
+	killvar 'temp_apprnc'
+end
+
+if $ARGS[0] = 'ConvertToHotcat':
+	if pcs_apprnc <= 200:
+		result = pcs_apprnc / 20
+	else
+		result = 10
+	end
+end
+
+if $ARGS[0] = 'AdjustFromBMI':
+	tempValue = ARGS[1] & !!value to be adjusted
+
+	if pcs_bmi < 16:
+		!! severely underweight
+		tempValue = tempValue * 50 / 100
+    elseif pcs_bmi < 19:
+		!! underweight
+		tempValue = tempValue * 95 / 100
+    elseif pcs_bmi < 25:
+		!! healthy weight
+		!! normal bonus
+    elseif pcs_bmi < 30:
+		!! overweight
+		tempValue = tempValue * 95 / 100
+    elseif pcs_bmi < 35:
+		!! moderately obese
+		tempValue = tempValue * 80 / 100
+    elseif pcs_bmi < 40:
+		!! severely obese
+		tempValue = tempValue * 55 / 100
+    elseif pcs_bmi < 45:
+		!! very severely obese
+		tempValue = tempValue * 50 / 100
+    else
+		!!morbidly obese
+		tempValue = tempValue * 40 / 100
+    end
+
+	result = tempValue
+	killvar 'tempValue'
+end
+--- AppearanceSystem ---------------------------------

+ 21 - 21
locations/Cheatmenu_din.qsrc

@@ -206,68 +206,68 @@ $cheatmenu['bodyMod'] = {
 		'starving (No, you may not select ''starving'', it''s here to show where the scale starts)'
 		''
 		if salocatnow ! 1:
-			'<a href="exec:salo = 20 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 1)]>></a>'
+			'<a href="exec:salo = 20 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 1)]>></a>'
 			''
 		end
 		if salocatnow ! 2:
-			'<a href="exec:salo = 40 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 2)]>></a>'
+			'<a href="exec:salo = 40 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 2)]>></a>'
 			''
 		end
 		if salocatnow ! 3:
-			'<a href="exec:salo = 60 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 3)]>></a>'
+			'<a href="exec:salo = 60 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 3)]>></a>'
 			''
 		end
 		if salocatnow ! 4:
-			'<a href="exec:salo = 80 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 4)]>></a>'
+			'<a href="exec:salo = 80 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 4)]>></a>'
 			''
 		end
 		if salocatnow ! 5:
-			'<a href="exec:salo = 100 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 5)]>></a>'
+			'<a href="exec:salo = 100 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 5)]>></a>'
 			''
 		end
 		if salocatnow ! 6:
-			'<a href="exec:salo = 120 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 6)]>></a>'
+			'<a href="exec:salo = 120 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 6)]>></a>'
 			''
 		end
 		if salocatnow ! 7:
-			'<a href="exec:salo = 140 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 7)]>></a>'
+			'<a href="exec:salo = 140 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 7)]>></a>'
 			''
 		end
 	else
 		if (pregchem < 2688) = 0:
-			'<a href="exec:pregchem = 100 & pregtime = 4 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10))]>></a>'
+			'<a href="exec:pregchem = 100 & pregtime = 4 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10))]>></a>'
 			''
 		end
 		if (pregchem >= 2688 and pregchem < 3192) = 0:
-			'<a href="exec:pregchem = 2688 & pregtime = 112 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 1)]>></a>'
+			'<a href="exec:pregchem = 2688 & pregtime = 112 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 1)]>></a>'
 			''
 		end
 		if (pregchem >= 3192 and pregchem < 3696) = 0:
-			'<a href="exec:pregchem = 3192 & pregtime = 133 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 2)]>></a>'
+			'<a href="exec:pregchem = 3192 & pregtime = 133 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 2)]>></a>'
 			''
 		end
 		if (pregchem >= 3696 and pregchem < 4200) = 0:
-			'<a href="exec:pregchem = 3696 & pregtime = 154 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 3)]>></a>'
+			'<a href="exec:pregchem = 3696 & pregtime = 154 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 3)]>></a>'
 			''
 		end
 		if (pregchem >= 4200 and pregchem < 4704) = 0:
-			'<a href="exec:pregchem = 4200 & pregtime = 175 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 4)]>></a>'
+			'<a href="exec:pregchem = 4200 & pregtime = 175 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 4)]>></a>'
 			''
 		end
 		if (pregchem >= 4704 and pregchem < 5208) = 0:
-			'<a href="exec:pregchem = 4704 & pregtime = 196 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 5)]>></a>'
+			'<a href="exec:pregchem = 4704 & pregtime = 196 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 5)]>></a>'
 			''
 		end
 		if (pregchem >= 5208 and pregchem < 5712) = 0:
-			'<a href="exec:pregchem = 5208 & pregtime = 217 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 6)]>></a>'
+			'<a href="exec:pregchem = 5208 & pregtime = 217 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 6)]>></a>'
 			''
 		end
 		if (pregchem >= 5712 and pregchem < 6216) = 0:
-			'<a href="exec:pregchem = 5712 & pregtime = 238 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 7)]>></a>'
+			'<a href="exec:pregchem = 5712 & pregtime = 238 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 7)]>></a>'
 			''
 		end
 		if (pregchem >= 6216) = 0:
-			'<a href="exec:pregchem = 6216 & pregtime = 259 & gs ''body_shape'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 8)]>></a>'
+			'<a href="exec:pregchem = 6216 & pregtime = 259 & gs ''body'', ''softreset'' & gs ''stat'' & dynamic $cheatmenu[''bodyMod'']"><<$bodimgsets[((bodset * 10) + 8)]>></a>'
 			''
 		end
 	end
@@ -799,8 +799,8 @@ $cheatmenu['looks'] = {
 	if pcs_lip > 0:'<a href="exec:pcs_lip -= 1 & dynamic $cheatmenu[''looks'']">Shrink lips</a>'
 	*nl
 	'<<$skin>>'
-	if pcs_skin < 100: '<a href="exec:pcs_skin += 20 & gs ''body_shape'', ''basebeautycalc'', 1 & dynamic $cheatmenu[''looks'']">Improve skin</a>'
-	if pcs_skin > 0: '<a href="exec:pcs_skin -= 20 & gs ''body_shape'', ''basebeautycalc'', 1 & dynamic $cheatmenu[''looks'']">Worsen skin</a>'
+	if pcs_skin < 100: '<a href="exec:pcs_skin += 20 & gs ''body'', ''UpdateBaseAppearnce'' & dynamic $cheatmenu[''looks'']">Improve skin</a>'
+	if pcs_skin > 0: '<a href="exec:pcs_skin -= 20 & gs ''body'', ''UpdateBaseAppearnce'' & dynamic $cheatmenu[''looks'']">Worsen skin</a>'
 	if pcs_tan >= 0:'<a href="exec:pcs_tan += 10 & dynamic $cheatmenu[''looks'']">Become tanned</a>'
 	if pcs_tan > 0:'<a href="exec:pcs_tan = 0 & dynamic $cheatmenu[''looks'']">Remove tan</a>'
 	*nl
@@ -809,7 +809,7 @@ $cheatmenu['looks'] = {
 	if pcs_throat >= 5:'<a href="exec:pcs_throat -= 5 & dynamic $cheatmenu[''looks'']">Decrease throat capacity</a>'
 	if dounspell = 1:
 		*nl
-		'<a href="exec:dounsplkil = 2 & gs ''body_shape'', ''hardreset''">Hard Reset body shape</a>'
+		'<a href="exec:dounsplkil = 2 & gs ''body'', ''hardreset''">Hard Reset body shape</a>'
 	end
 
 	'</td><td width="33%" cellpadding="20" valign="top">'
@@ -840,7 +840,7 @@ $cheatmenu['looks'] = {
 	*nl
 	if dounspell = 0:
 		if fat ! 0: '<a href="exec:fat = 0 & dynamic $cheatmenu[''looks'']">Zero fat</a>'
-		'Body Fat = (<<salo>>): <a href="exec:salo -= 10 & gs ''body_shape'', ''softreset'' & dynamic $cheatmenu[''looks'']">-10</a> <a href="exec:salo -= 5 & gs ''body_shape'', ''softreset'' & dynamic $cheatmenu[''looks'']">-5</a> <a href="exec:salo -= 1 & gs ''body_shape'', ''softreset'' & dynamic $cheatmenu[''looks'']">-1</a> <a href="exec:salo += 1 & gs ''body_shape'', ''softreset'' & dynamic $cheatmenu[''looks'']">+1</a> <a href="exec:salo += 5 & gs ''body_shape'', ''softreset'' & dynamic $cheatmenu[''looks'']">+5</a> <a href="exec:salo += 10 & gs ''body_shape'', ''softreset'' & dynamic $cheatmenu[''looks'']">+10</a>'
+		'Body Fat = (<<salo>>): <a href="exec:salo -= 10 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">-10</a> <a href="exec:salo -= 5 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">-5</a> <a href="exec:salo -= 1 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">-1</a> <a href="exec:salo += 1 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">+1</a> <a href="exec:salo += 5 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">+5</a> <a href="exec:salo += 10 & gs ''body'', ''softreset'' & dynamic $cheatmenu[''looks'']">+10</a>'
 		'Note: You need some Body Fat to survive, any value under 11 is clasified as "starving" and a value of 0 can lead to a Game Over.'
 	end
 	*nl
@@ -956,7 +956,7 @@ $cheatmenu['parameters'] = {
 	'agilbuf = <<agilbuf>>'
 	'strenbuf = <<strenbuf>>'
 	'vitalbuf = <<vitalbuf>>'
-	'BMI (bmi_calc) = <<bmi_calc>>'
+	'BMI (pcs_bmi) = <<pcs_bmi>>'
 	'weight (pcs_weight) = <<pcs_weight>> kg'
 	'bust (pcs_bust) = <<pcs_bust>>'
 	'band (pcs_band) = <<pcs_band>>'

+ 9 - 9
locations/UnitAppearance.qsrc

@@ -37,11 +37,11 @@ if $ARGS[0] = 'GenRowBreak':
 end 
 
 if $ARGS[0] = 'calcHotcat':
-	unitbmi_calc = FUNC('body_shape', 'bmicalc', unitsalo, unitpcs_hgt)
-	unitbodykoef = FUNC('body_shape', 'setbodykoef', unitbmi_calc, unitstrenbuf, unitsalocatnow, unitvofat)
-	unitHeadBonus = FUNC('body_shape', 'calcHeadBonus', unitpcs_lashes, unitpcs_eyesize, unitpcs_lip, unitpcs_teeth, unitbmi_calc)
-	unitAttributeBonus = FUNC('body_shape', 'calcAttributeBonus', unitpcs_agil, unitpcs_vital, unitbmi_calc)
-	unitpcs_apprncbase = FUNC('body_shape', 'basebeautycalc2', unitResetBase, unitvidage, unitpcs_skin, unitbodykoef, unitHeadBonus, unitAttributeBonus, unitpcs_apprncbase)
+	unitbmi_calc = FUNC('body', 'bmicalc', unitsalo, unitpcs_hgt)
+	unitbodykoef = FUNC('body', 'setbodykoef', unitbmi_calc, unitstrenbuf, unitsalocatnow, unitvofat)
+	unitHeadBonus = FUNC('body', 'calcHeadBonus', unitpcs_lashes, unitpcs_eyesize, unitpcs_lip, unitpcs_teeth, unitbmi_calc)
+	unitAttributeBonus = FUNC('body', 'calcAttributeBonus', unitpcs_agil, unitpcs_vital, unitbmi_calc)
+	unitpcs_apprncbase = FUNC('body', 'basebeautycalc2', unitResetBase, unitvidage, unitpcs_skin, unitbodykoef, unitHeadBonus, unitAttributeBonus, unitpcs_apprncbase)
 	unitclothingbonus = FUNC('body', 'calcClothesBonus', unitPXCloThinness, unitPXCloTopCut, unitPXCloBottomShortness, unitPCloQuality, $unitclothingworntype, unitbmi_calc)
 	unitAccessoriesBonus = FUNC('body', 'calcAccessoriesBonus', unitbonusZ, unitPShoQuality, $unitpantyworntype, $unitbraworntype)
 	unitGroomingBonus = FUNC('body', 'calcGroomingBonus', unitpcs_lipbalm, unitmopkoef, unitpcs_hairbsh, unitpcs_breath, unitdeodorant_on, unitbmi_calc)
@@ -77,7 +77,7 @@ if $ARGS[0] = 'HeadBonusCalc':
 end
 
 if $ARGS[0] = 'GenHeadRow':
-    unitHeadBonus = FUNC('body_shape', 'calcHeadBonus', ARGS[1], ARGS[2], ARGS[3], ARGS[4])
+    unitHeadBonus = FUNC('body', 'calcHeadBonus', ARGS[1], ARGS[2], ARGS[3], ARGS[4])
     '<tr>'
         '<td><<unitHeadBonus>></td>'
         '<td><<ARGS[1]>></td>'
@@ -110,7 +110,7 @@ if $ARGS[0] = 'AttribBonusCalc':
 end
 
 if $ARGS[0] = 'GenAttribRow':
-    unitAttribBonus = FUNC('body_shape', 'calcAttributeBonus', ARGS[1], ARGS[2])
+    unitAttribBonus = FUNC('body', 'calcAttributeBonus', ARGS[1], ARGS[2])
     '<tr>'
         '<td><<unitAttribBonus>></td>'
         '<td><<ARGS[1]>></td>'
@@ -1119,14 +1119,14 @@ if $ARGS[0] = 'CalcSaloVars':
     unitvofat = ((unitpcs_hgt * unithratio) / 100 + unitvhips - (unitpcs_hgt * 72) / 100) / 2
 
     unitsalocatnow = 1 + (unitsalo - 10) / 20
-    unitbmi_calc = FUNC('body_shape', 'bmicalc', unitsalo, unitpcs_hgt)
+    unitbmi_calc = FUNC('body', 'bmicalc', unitsalo, unitpcs_hgt)
     gs 'UnitAppearance', 'GetClothThick', unitbmi_calc
 end
 
 if $ARGS[0] = 'GenerateSvetaOptions':
     gs 'UnitAppearance', 'SaveBase'
     gs 'UnitAppearance', 'GenRowBreak', $ARGS[1]
-    unitbmi_calc = FUNC('body_shape', 'bmicalc', unitsalo, unitpcs_hgt)
+    unitbmi_calc = FUNC('body', 'bmicalc', unitsalo, unitpcs_hgt)
 
     $svetadesc = 'Current Clothes'
     

+ 140 - 21
locations/_attributes_cats_shoes.qsrc

@@ -1,16 +1,16 @@
 # $attributes_cats_shoes
-!2020/03/26
-!price range from 3 to 5 but please avoid adding too many 5s
+!!2022/02/06
+!!price range from 3 to 5 but please avoid adding too many 5s
 
 if ARGS[1] = 1:
 	ShoQuality = 3
-	ShoHeels = 1
+	ShoHeels = 3
 	ShoCut = 1
 	ShoStyle = 0
 	
 elseif ARGS[1] = 2:
-	ShoQuality = 3
-	ShoHeels = 1
+	ShoQuality = 4
+	ShoHeels = 2
 	ShoCut = 1
 	ShoStyle = 0
 	
@@ -27,13 +27,13 @@ elseif ARGS[1] = 4:
 	ShoStyle = 0
 	
 elseif ARGS[1] = 5:
-	ShoQuality = 4
+	ShoQuality = 3
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 2
 	
 elseif ARGS[1] = 6:
-	ShoQuality = 5
+	ShoQuality = 4
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 0
@@ -51,46 +51,46 @@ elseif ARGS[1] = 8:
 	ShoStyle = 0
 	
 elseif ARGS[1] = 9:
-	ShoQuality = 4
+	ShoQuality = 3
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 0
 	
 elseif ARGS[1] = 10:
-	ShoQuality = 4
+	ShoQuality = 3
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 0
 	
 elseif ARGS[1] = 11:
-	ShoQuality = 4
+	ShoQuality = 5
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 0
 	
 elseif ARGS[1] = 12:
-	ShoQuality = 4
-	ShoHeels = 1
+	ShoQuality = 3
+	ShoHeels = 2
 	ShoCut = 1
 	ShoStyle = 0
 	
 elseif ARGS[1] = 13:
 	ShoQuality = 4
-	ShoHeels = 1
+	ShoHeels = 2
 	ShoCut = 1
 	ShoStyle = 0
 	
 elseif ARGS[1] = 14:
 	ShoQuality = 4
 	ShoHeels = 1
-	ShoCut = 1
-	ShoStyle = 2
+	ShoCut = 2
+	ShoStyle = 0
 	
 elseif ARGS[1] = 15:
-	ShoQuality = 4
-	ShoHeels = 1
+	ShoQuality = 5
+	ShoHeels = 2
 	ShoCut = 1
-	ShoStyle = 0
+	ShoStyle = 2
 	
 elseif ARGS[1] = 16:
 	ShoQuality = 5
@@ -99,13 +99,13 @@ elseif ARGS[1] = 16:
 	ShoStyle = 0
 	
 elseif ARGS[1] = 17:
-	ShoQuality = 5
+	ShoQuality = 4
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 0
 	
 elseif ARGS[1] = 18:
-	ShoQuality = 6
+	ShoQuality = 3
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 0
@@ -113,15 +113,134 @@ elseif ARGS[1] = 18:
 elseif ARGS[1] = 19:
 	ShoQuality = 5
 	ShoHeels = 1
+	ShoCut = 2
+	ShoStyle = 0
+	
+elseif ARGS[1] = 20:
+	ShoQuality = 4
+	ShoHeels = 1
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 21:
+	ShoQuality = 5
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 22:
+	ShoQuality = 3
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 23:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 24:
+	ShoQuality = 5
+	ShoHeels = 3
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 25:
+	ShoQuality = 4
+	ShoHeels = 2
 	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 26:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 27:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 28:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 29:
+	ShoQuality = 5
+	ShoHeels = 2
+	ShoCut = 2
+	ShoStyle = 0
+	
+elseif ARGS[1] = 30:
+	ShoQuality = 5
+	ShoHeels = 2
+	ShoCut = 2
+	ShoStyle = 0
+
+elseif ARGS[1] = 31:
+	ShoQuality = 6
+	ShoHeels = 2
+	ShoCut = 2
 	ShoStyle = 2
 	
-elseif ARGS[1] = 20:
+elseif ARGS[1] = 32:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 33:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 2
+	ShoStyle = 0
+	
+elseif ARGS[1] = 34:
+	ShoQuality = 3
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 35:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 2
+	
+elseif ARGS[1] = 36:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 37:
+	ShoQuality = 4
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 2
+	
+elseif ARGS[1] = 38:
 	ShoQuality = 5
 	ShoHeels = 1
 	ShoCut = 1
 	ShoStyle = 0
 	
+elseif ARGS[1] = 39:
+	ShoQuality = 5
+	ShoHeels = 2
+	ShoCut = 1
+	ShoStyle = 0
+	
+elseif ARGS[1] = 20:
+	ShoQuality = 4
+	ShoHeels = 1
+	ShoCut = 1
+	ShoStyle = 0
 
 end
 

+ 20 - 20
locations/beg1.qsrc

@@ -52,10 +52,10 @@ if $ARGS[0] = 'br':
 	gs 'exercise', 'tier2', 30, 'run_exp'
 
     begminus = 0
-    if bmi_calc > 25: 
-        begminus = ((bmi_calc - 25)*4)
-    elseif bmi_calc < 18:
-        begminus = ((25 - bmi_calc)*6)
+    if pcs_bmi > 25: 
+        begminus = ((pcs_bmi - 25)*4)
+    elseif pcs_bmi < 18:
+        begminus = ((25 - pcs_bmi)*6)
     end
     begresult = pcs_run - begminus
     
@@ -104,10 +104,10 @@ if $ARGS[0] = 'kms':
 	gs 'exercise', 'tier2', 30, 'run_exp'
 
     begminus = 0
-    if bmi_calc > 25: 
-        begminus = ((bmi_calc - 25)*4)
-    elseif bmi_calc < 18:
-        begminus = ((25 - bmi_calc)*6)
+    if pcs_bmi > 25: 
+        begminus = ((pcs_bmi - 25)*4)
+    elseif pcs_bmi < 18:
+        begminus = ((25 - pcs_bmi)*6)
     end
     begresult = pcs_run - begminus
     
@@ -158,10 +158,10 @@ if $ARGS[0] = 'ross':
 	gs 'exercise', 'tier2', 30, 'run_exp'
 
 	begminus = 0
-    if bmi_calc > 25: 
-        begminus = ((bmi_calc - 25)*4)
-    elseif bmi_calc < 18:
-        begminus = ((25 - bmi_calc)*6)
+    if pcs_bmi > 25: 
+        begminus = ((pcs_bmi - 25)*4)
+    elseif pcs_bmi < 18:
+        begminus = ((25 - pcs_bmi)*6)
     end
     begresult = pcs_run - begminus
     
@@ -215,10 +215,10 @@ if $ARGS[0] = 'kval':
     minut += 60
     
     begminus = 0
-    if bmi_calc > 25: 
-        begminus = ((bmi_calc - 25)*4)
-    elseif bmi_calc < 18:
-        begminus = ((25 - bmi_calc)*6)
+    if pcs_bmi > 25: 
+        begminus = ((pcs_bmi - 25)*4)
+    elseif pcs_bmi < 18:
+        begminus = ((25 - pcs_bmi)*6)
     end
     begresult = pcs_run - begminus
     
@@ -273,10 +273,10 @@ if $ARGS[0] = 'evro':
     minut += 120
     
     begminus = 0
-    if bmi_calc > 25: 
-        begminus = ((bmi_calc - 25)*4)
-    elseif bmi_calc < 18:
-        begminus = ((25 - bmi_calc)*6)
+    if pcs_bmi > 25: 
+        begminus = ((pcs_bmi - 25)*4)
+    elseif pcs_bmi < 18:
+        begminus = ((25 - pcs_bmi)*6)
     end
     begresult = pcs_run - begminus
     

+ 464 - 388
locations/body.qsrc

@@ -1,144 +1,424 @@
 # body
 
-!! I have gone through and added a new category of string variables, standardised to be used for descriptive writing. You will notice some duplication here -- this is for purposes of backwards compatibility, as if I completely rename and discard some of these strings,
-!! extant saved games will irreparably break, and this would be Bad. One day down the line, most of the duplicated variables here can be culled, when there is a new release that warrants new saves being used, but until then the duplication needs to stay. Use of
-!! strings for descriptions that do not begin with $pcdesc_ should be avoided, as it would be best to have everything standardised when moving forward into the present and future.
-!! Available strings follow this format: $pcdesc_type, $pcdesc_typewordy, and $pcdesc_typerandom. The last will give a new string each time, to allow for repeatedly referencing something accurately without it becoming repetitive.  Not EVERYTHING has a wordy 
-!! or even random variation, but these should work regardless -- they just may use a non-wordy, or non-random version, if it is something that does not really warrant such. 
-!! There is also a special string, $pcdesc_typeinsertive, that follows the format " , descriptive text" as in, " , invitingly-glossed". Please check the master string document to see if this exists for the string you need. - xerya, July 2017
-
-if $ARGS[0] = '':
-	!!!!!!!!!!!!!!!!
-	!!!!!SIZE AND WEIGHT!!!
-	!!!!!!!!!!!!!!!!
+!!vhips = derived from salo in body_shape
+!!vhtmp = slows the change to vhips in body_shape
+!!wratio = waist to hips ratio set in body_shape
+!!bratio = band to waist ratio set in body_shape
+!!hratio = hip to height ratio set in body_shape
+!!vofat = used as a place to put extra salo at extreme high values (i.e. really, really fat) set in body_shape
+!!nbsize = starts at a set genetic bust size, but can be adjusted down if salo drops too low
+!!magicf2b = set in body_shape for the fat moved to bust
+!!genbsize = the set genetic bust size
+!!salocatnow = the current category of salo
+!!salocatlast = the previous category of salo
+!!magf2bdo = flag for magic bust increase; 0, ready; 1, do it; 2, ask; 3, no
+!!mgf2bnocnt = used to count the number of times a bust increase was turned down and stop asking after 3
+!!magtarcup = set in the dream code as the target cup size 
+!!btwarn = used to flag if to display the gaining/losing weight message when bathing
+!!salolast = used when doing a soft rest to control the cycling of the main code
+!!sftrstflag = used to prevent a code chunk from firing on a soft reset
+!!Image set variables
+!! bodset = body image and descriptor control variable, used to indicate which image and descriptor set is in use
+!! $bodimgsets[x] = body shape descriptors, tens place is the set (using bodset), 0 - 7 the descriptors (using salocatnow), 8 filler, 9 is the folder name
+!! bdsetlock = flag to indicate set control override, 0 is use the formula to pick a set, 1 is use a fixed set
+!! fixbodset = the identification number of the fixed image set
+!! bodsetcnt = the number of sets present
+!! imgset6ovr[x] and imgset7ovr[x] = a flag to indicate that an image set (x) has its own image 6 and/or 7
+!! extended lash functionality; pcs_lashes = n are: {2, largest natural size}, {3, with temporary false lashes on or basic 2D lash extensions}, {4, with ornate false lashes on or lavish 4D extensions}, {5, with extremely ornate, 6D-style extensions} - xerya
+
+$this = 'body'
+
+if $ARGS[0] = 'RegularUpdate':
 	if dounspell = 0:
-		pcs_hips = (pcs_hgt * hratio) / 100 + vhips
-		pcs_waist = (pcs_hips * wratio) / 100 + vofat
-		pcs_band = (pcs_waist * bratio) / 100 + vofat
-		pcs_bust = (pcs_waist * bratio) / 100 + nbsize + magicf2b + silicone
-		pcs_butt = (pcs_hips / 10) + silicone_butt + butt_cheat
-		pcs_cupsize = pcs_bust - pcs_band
-		
-		!!pcs_weight: Svetas weight in kg 
-		!!Optimal Weight (170cm): 60kg, 60 salo
-		!!This is an approximation, so that a sveta with a different height has the same BMI for the same salo values.
-		!!The default height of 170 cm is used as a starting point. The bmi deviates by 0.06 for a deviation of 10cm and 0.4 for a deviation of 20cm. 
-		
-		pcs_weight = 30 + salo / 2 + (pcs_hgt - 170) * 7 / 10
-		
-		!!Do not remove (julzor)
-		!!This is the old more complex function, but it doesn''t work correctly.
-		!!This variable is actually only used ONCE (except for the BMI calculation), when stripping, to see if you fall off the pole from being too heavy. I am reluctant to touch it, since the math is not explained. Maybe later.
-		!!Weight = (height in cm x bottom of average weight in kilos for a 170cm female / 170cm + (hip modifier + 2 x overrun fat)/4 + cup size
-		
-		!!pcs_weight = (pcs_hgt * 62 / 170) + (vhips + (vofat * 2)) / 4 + tits
-			
-		!!BMI Calculation
-
-		bmi_calc = FUNC('body_shape', 'bmicalc', salo, pcs_hgt)
-
-		!!BMI Descriptions
-		if bmi_calc < 16:
-			$bmi_desc = 'You are severely underweight.'
-		elseif bmi_calc >= 16 and bmi_calc < 19:
-			$bmi_desc = 'You are underweight'
-		elseif bmi_calc >= 19 and bmi_calc < 25:
-			$bmi_desc = 'You have a normal, healthy weight.'
-		elseif bmi_calc >= 25 and bmi_calc < 30:
-			$bmi_desc = 'You are overweight.'
-		elseif bmi_calc >= 30 and bmi_calc < 35:
-			$bmi_desc = 'You are moderately obese.'
-		elseif bmi_calc >= 35 and bmi_calc < 40:
-			$bmi_desc = 'You are severely obese.'
-		elseif bmi_calc >= 40 and bmi_calc < 45:
-			$bmi_desc = 'You are very severely obese.'
-		elseif bmi_calc >= 45:
-			$bmi_desc = 'You are morbidly obese.'
-		end
+		gs $this, 'UpdateBodyMeasurement'
+		pcs_weight = func($this, 'CalcWeight')
+		pcs_bmi = func($this, 'CalcBMI')
 	end
 
-	gs 'body_desc'
-
-	!! Skin1 is only used in the foto location, and can be replaced at a later date. From here on out, do not use it.
 	if pcs_skin > 100:
 		pcs_skin = 100
 	elseif pcs_skin < 0:
 		pcs_skin = 0
 	end
+	
+	!!Since "musle" is used all over the place
+	musle = strenbuf
+end
 
-	mopkoef = pcs_makupskl / 5
-	if pcs_makeup = 0: mopkoef = -5
-	if pcs_makeup = 1: mopkoef = 0
-	if pcs_makeup = 5: mopkoef = 30
-	if pcs_makeup = 6 and bimbolevel >= 2: extra_supnatvnesh = 2*bimbolevel - 2
-
+if $ARGS[0] = 'DailyUpdate':
+	!{
+		Update once a day and called from cikl
+	}
 	if dounspell = 1:
-		bodytipe = pcs_hips - pcs_waist
-		if bodytipe < 20:
-			bodykoef = 0
-		elseif bodytipe >= 20 and bodytipe < 25:
-			bodykoef = 2
-		elseif bodytipe >= 25 and bodytipe < 30:
-			bodykoef = 4
-		elseif bodytipe >= 30 and bodytipe < 35:
-			bodykoef = 8
-		elseif bodytipe >= 35:
-			bodykoef = 4
+		if strenbuf > 90:
+			strenbuf -= 2
+		elseif strenbuf > 80:
+			strenbuf -= 1
+		end
+	
+		if vitalbuf > 90:
+			vitalbuf -= 2
+		elseif vitalbuf > 80:
+			vitalbuf -= 1
+		end
+	
+		if strenbuf > pcs_stren: strenbuf -= 1
+		if strenbuf < pcs_stren: strenbuf += 1
+		if vitalbuf > pcs_vital: vitalbuf -= 1
+		if vitalbuf < pcs_vital: vitalbuf += 1
+		if agilbuf > pcs_agil: agilbuf -= 1
+		if agilbuf < pcs_agil: agilbuf += 1
+	else
+		gs $this
+	end
+
+	gs $this, 'UpdateBodyImage'
+
+	!!---- Calculation of lash extension degradation and false lash removal
+	if pcs_lashes > 2:
+		if lashextensionstyle >= 1:
+			lashextensionduration -= 1
+			if lashextensionduration >= 1 and lashextensionduration <= 4:
+				'It''s time for you to do your maintenance on your lash extensions; you should go to the salon or you risk growing them all out.'
+			end
+			if lashextensionduration <= 0:
+				'You waited too long to do maintenance on your lash extensions; there''s too little there to notice or work with at this point.'
+				pcs_lashes = pcs_naturallashes
+				killvar 'lashextensionstyle'
+				killvar 'lashextensionduration'
+				killvar 'lashextensionnew'
+			end
+		end
+		if false_lashes > 0:
+			false_lashes -= 1
+			if false_lashes = 0:
+				'Your false lashes came off in the night; there''s no recovering them now.'
+				pcs_lashes = pcs_naturallashes
+			else
+				'Somehow, your lashes managed to stay attached throughout the night. You might be able to get away with wearing them another day straight.'
+			end
 		end
 	end
 
-	!!This is to force a base update if teeth changed since that is immediate
-	if zublast ! pcs_teeth:
-		gs 'body_shape', 'basebeautycalc', 1
-		zublast = pcs_teeth
+	!! Max. Hair length 600mm, or 60cm, which should be somewhere in the lower back area.
+	!! Hair grows 1mm each day, it takes 20 months (1 month = 30 days) to regrow the hair from 0.
+	if pcs_hairlng < 1001 and hairgrowcht = 0:pcs_hairlng += 1
+
+	! Hair colour change
+	if pcs_haircol ! nathcol:
+		dyefade -=1
+		if dyefade < 0: dyefade = 0
 	end
 
-	!! Calculate hotcat etc
-	tempclothingbonus = FUNC('body', 'calcClothesBonus', PXCloThinness, PXCloTopCut, PXCloBottomShortness, PCloQuality, $clothingworntype, bmi_calc)
-	tempAccessoriesBonus = FUNC('body', 'calcAccessoriesBonus', bonusZ, PShoQuality, $pantyworntype, $braworntype)
-	tempGroomingBonus = FUNC('body', 'calcGroomingBonus', pcs_lipbalm, mopkoef, pcs_hairbsh, pcs_breath, deodorant_on, bmi_calc)
-	tempGroomingPenalty = FUNC('body', 'calcGroomingPenalty', pcs_hairlng, pcs_sweat, glassvnesh, dyevmod, legkoef)
-	Hotcat = FUNC('body', 'calcHotcat', pcs_apprncbase, (supnatvnesh + extra_supnatvnesh), tempclothingbonus, tempAccessoriesBonus, tempGroomingBonus, tempGroomingPenalty)
-	pcs_apprnc = temppcs_apprnc & killvar 'temppcs_apprnc' & killvar 'temppcs_maxapprnc'
+	!!pubic hair colouring
+	!! pcs_pubecol = natural colour
+	!! pcs_pubecol[1] = flag for saveupdate
+	!! pcs_pubecol[2] = actual colour
+	!! pcs_pubecol[3] = countdown timer for dye
+	if pcs_pubecol[2] ! pcs_pubecol:
+		pcs_pubecol[3] -=1
+		if pcs_pubecol[3] < 0: pcs_pubecol[3] = 0
+		if pcs_pubecol[3] = 0: pcs_pubecol[2] = pcs_pubecol
+	end
 
+	if pcs_pubes < 2: pcs_pubecol[2] = pcs_pubecol
 
-	if StrongNarkota <= 0:
-		if SNarkTimes >= 3 and SLomka = 0:SLomka = 1
-		if Gerpes >= 3 or Sifilis >= 21 or Triper > 2:pcs_apprnc = -10
+	if hscrunch > 0:
+		hscrunchrand = rand(1, 100)
+
+		if hscrunchrand <= 8:hscrunch -= 1
 	end
 
-	if amphCount > 3 and amphHigh <= 0:
-		addictChance = rand(1,10)
-		if addictChance > 8:
-			amphWithdrawl = 2
+	! Leg and pubes hair growth
+	if lashair ! 1:
+		pcs_leghair += 1
+		!!Pubic hair growth at 1/2 per night
+		if pcs_pubes['growth'] > 1:
+			pcs_pubes['growth'] = 0
+			pcs_pubes += 1
 		end
+		pcs_pubes['growth'] += 1
+	end
+	
+	if age < 18 and rand (0,2) = 0 and pcs_leghair > 0: pcs_leghair -= 1
+end
+
+if $ARGS[0] = '':
+	!!This controls the gradual change in stat to -buf
+	if strenbuf > pcs_stren: strenbuf -= 1
+	if strenbuf < pcs_stren: strenbuf += 1
+	if vitalbuf > pcs_vital: vitalbuf -= 1
+	if vitalbuf < pcs_vital: vitalbuf += 1
+	if agilbuf > pcs_agil: agilbuf -= 1
+	if agilbuf < pcs_agil: agilbuf += 1
+
+	!!All the ratios were rounded to 2 digits and there are divide 100s at the final calc points
+	!!Waist to hip ratio
+
+	wrtemp = ((2 * vitalbuf + strenbuf + agilbuf) /4)
+
+	!!	Primary wratio handling
+	if wrtemp < 11:
+		wratio = 85 + (11 - (vitalbuf + strenbuf + agilbuf)/3)
+	elseif wrtemp < 20:
+		wratio = 85
+	elseif wrtemp < 35:
+		wratio = 85 - (wrtemp - 20) / 3
+	elseif wrtemp < 55:
+		wratio = 80 - (wrtemp - 35) / 4
+	elseif wrtemp < 80:
+		wratio = 75 - (wrtemp - 55) / 5
+	elseif wrtemp >= 80:
+		wratio = 70
+	end
+
+	!!	High stat value edge case handling
+	if (vitalbuf + strenbuf + agilbuf) /3 > 100: wratio -= ((vitalbuf + strenbuf)/2 - agilbuf)/5
+
+	!!	This is the oops and high stat gone overboard handling
+	if wratio < 65: wratio = 65
+
+	killvar 'wrtemp'
+
+	!!For band to waist ratio
+	brtemp = (2 * strenbuf + vitalbuf + agilbuf) /4
+
+	if brtemp < 10:
+		bratio = 105
+	elseif brtemp =< 23:
+		bratio = 106
+	elseif brtemp =< 80:
+		bratio = 106 + (brtemp - 23) / 3
+	else
+		bratio = 125
+	end
+
+	killvar 'brtemp'
+
+	!!For hip to height ratio which is used to set the center point
+	hrtemp = (2 * agilbuf + vitalbuf + strenbuf) /4
+
+	if hrtemp < 35:
+		hratio = 60
+	elseif hrtemp < 45:
+		hratio = 59
+	elseif hrtemp < 60:
+		hratio = 58
+	elseif hrtemp < 80:
+		hratio = 57
+	else
+		hratio = 56
+	end
+
+	killvar 'hrtemp'
+
+	!!Salo Handling; the first part is because during a reset fat is not used and should be cleared
+	if sftrstflag = 1 or cheatNoFat = 1:
+		fat = 0
+	else
+		if fat > (17 + vitalbuf / 25): salo += 1 & fat = 0
+		if fat < (-2 - (vitalbuf / 10)): salo -= 1 & fat = 0
+	end
+
+	!!This is the salo cap for the weight approximation
+	if salo > 250: salo = 250
+		
+	!!This calculates the current salo category; ranges are 20 points, seemed to balance best if the range is x10 the hip devisor
+	:salocatloop
+	if salo < 10:
+		salocatnow = 0
+	else
+		salocatnow = 1 + (salo - 10) / 20
+	end
+
+	!!This resets the genetic bust size (genbsize) when the cheat is used to reduce breast size (maybe other things later)
+	if titreduc = 1:
+		killvar 'titreduc'
+		if genbsize > nbsize:
+			genbsize = 2 + nbsize - nbsize mod 5
+		end
+	end
+
+	!!This controls the movement of salo to/from bust in order of precedence
+	if salobustdo = 0 and nbsize < genbsize and salocatnow > 2:
+		if sftrstflag = 0:'<b>Your breasts seem fuller.</b>'
+		nbsize += 1
+		salo -= 3
+		salobustdo = 1
+		jump 'salocatloop'
+	end
+
+	if salobustdo = 0 and magf2bdo = 1 and salocatnow > salocatlast and pcs_mana >= manamax / 2 and magikDostup = 0:
+		if sftrstflag = 0:'<b>Your breasts seem fuller.</b>'
+		magicf2b += 1
+		salo -= 3
+		salobustdo = 1
+		if magicf2b >= 2 + magtarcup * 5: magf2bdo = 0
+		if pcs_magik < 20:
+			pcs_mana -= 2000 / pcs_magik
+		else
+			mana -= 100
+		end
+		jump 'salocatloop'
+	end
+
+	if salobustdo = 0 and salocatnow < 2 and salocatlast >= 2 and magicf2b > 0 and magikDostup = 0:
+		if sftrstflag = 0:'<b>Your breasts seem to be getting smaller.</b>'
+		magicf2b -= 1
+		salo += 3
+		salobustdo = 1
+		magf2bdo = 1
+		jump 'salocatloop'
+	end
+
+	if salobustdo = 0 and salocatnow < 1 and salocatlast >= 1 and nbsize > 0:
+		if sftrstflag = 0:'<b>Your breasts seem to be getting smaller.</b>'
+		nbsize -= 1
+		salo += 3
+		salobustdo = 1
+		jump 'salocatloop'
+	end
+
+	!!This is if a Succubus has salo < 1
+	if succubusflag = 1 and salo < 1:
+		sucexcess -= 1
+		salo += 3
+	end
+
+	!!This is if salo is still < 1
+	if salo < 1:
+		if fat >= 1:
+			salo = 1
+			fat -= 1
+		elseif fat <= 0 and pcs_stren + pcs_vital > 0:
+			stren_deg -= 1000
+			vital_deg -= 1000
+			salo = 1
+		else
+			if Enable_nogameover = 0:
+				over = 3
+				gt 'gameover'
+				exit
+			else
+				pl '<font color=red><B>You starved to death, but Cheat Mode keeps you Alive.</B></font>'
+				salo = 1
+			end
+		end
+	end
+
+	killvar 'tempvct' & killvar 'salobustdo'
+
+	!!This is the hip calcs, 80 is the center of the current max-min range (10 - 130)
+	vhtmp = (salo - 80) / 2
+	
+	if vhips > vhtmp: vhips -= 1
+	if vhips < vhtmp: vhips += 1
+	!!	Because a reset should be updating hip size instantly (this set is a bit redundant anyway)
+	if sftrstflag = 1: vhips = vhtmp
+
+	if (pcs_hgt * hratio) / 100 + vhips > (pcs_hgt * 72) / 100:
+		vofat = ((pcs_hgt * hratio) / 100 + vhips - (pcs_hgt * 72) / 100) / 2
+		vhips -= vofat * 2
 	end
 
-	if StrongNarkota > 0:
-		if SLomka > 0:SLomka = 0
-		pcs_mood = 100
+	!!This will trigger the warning notices in the bathing code (the +/- 12 should always be +/- 11 + the max change to salo w/ fat)
+	if salolast > salo and salo <= 12 + (20 * (salocatnow - 1)): btwarn = 1
+	if salolast < salo and salo >= (20 * (salocatnow + 1)) - 12: btwarn = 2
+
+	!!This will trigger the dream for the option to use magic to increase bust
+	!!Three nos at the dream will lock it out (1 yes resets the count)
+	if pcs_magik >= 5 and MagikDostup = 0 and magf2bdo = 0:
+		if salolast < salo and salo >= (20 * (salocatnow + 1)) - 11 and tits < 10:
+			if mgf2bnocnt < 3:
+				magf2bdo = 2
+			else
+				magf2bdo = 3 & killvar 'mgf2bnocnt'
+			end
+		end
 	end
 
-	if pcs_apprnc = -10:
-		$pcs_apprnc = 'Your looks are even worse than terrible. It''s god-awful. No one wants to see or talk to you and people avoid you at any cost.'
-	elseif pcs_apprnc < 20:
-		$pcs_apprnc = 'Your looks are terrible. People try to avoid looking and talking to you.'
-	elseif pcs_apprnc < 60:
-		$pcs_apprnc = 'You''re a wallflower. Hardly anyone notices you.'
-	elseif pcs_apprnc < 120:
-		$pcs_apprnc = 'You have good looks. Men and women check you out when they think you aren''t looking.'
-	elseif pcs_apprnc < 160:
-		$pcs_apprnc = 'You''re unquestionably gorgeous. Men constantly get caught staring at you by their girlfriends.'
-	elseif pcs_apprnc < 200:
-		$pcs_apprnc = 'You have a simply stunning appearance. Other girls are a bit jealous and guys constantly check you out.'
+	!!This is to deal with the possibility that salocatnow changed by more than 1 (fat burners, vitamins, plastic surgery, etc.)
+	if salocatnow < salocatlast: salocatlast -= 1
+	if salocatnow > salocatlast: salocatlast += 1
+
+	!!This is for use in the warning code and as part of the reset routines
+	if salolast > salo: salolast -= 1
+	if salolast < salo: salolast += 1
+
+	!!Setting the pcs_apprnc bonus based on fat and strength
+	pcs_bmi = FUNC($this, 'CalcBMI')
+
+	!!This is to clean up unused variables
+	killvar 'normbuffpick' & killvar 'nrmbfpckct'
+	killvar 'vmeat' & killvar 'vfat' & killvar 'Kves' & killvar 'krost'
+	killvar 'koefvesbt' & killvar 'koefbt'
+end
+
+if $ARGS[0] = 'UpdateBodyMeasurement':
+	pcs_hips = (pcs_hgt * hratio) / 100 + vhips
+	pcs_waist = (pcs_hips * wratio) / 100 + vofat
+	pcs_band = (pcs_waist * bratio) / 100 + vofat
+	pcs_bust = (pcs_waist * bratio) / 100 + nbsize + magicf2b + silicone
+	pcs_butt = (pcs_hips / 10) + silicone_butt + butt_cheat
+	pcs_cupsize = pcs_bust - pcs_band
+
+	! Update tits size
+	if pcs_cupsize <= 5:
+		tits = 0
+		$titsize = 'AA cup'
+	elseif pcs_cupsize <= 10:
+		tits = 1
+		$titsize = 'A cup'
+	elseif pcs_cupsize <= 15:
+		tits = 2
+		$titsize = 'B cup'
+	elseif pcs_cupsize <= 20:
+		tits = 3
+		$titsize = 'C cup'
+	elseif pcs_cupsize <= 25:
+		tits = 4
+		$titsize = 'D cup'
+	elseif pcs_cupsize <= 30:
+		tits = 5
+		$titsize = 'E cup'
+	elseif pcs_cupsize <= 35:
+		tits = 6
+		$titsize = 'F cup'
+	elseif pcs_cupsize <= 40:
+		tits = 7
+		$titsize = 'G cup'
+	elseif pcs_cupsize <= 45:
+		tits = 8
+		$titsize = 'H cup'
+	elseif pcs_cupsize <= 50:
+		tits = 9
+		$titsize = 'I cup'
+	elseif pcs_cupsize <= 55:
+		tits = 10
+		$titsize = 'J cup'
 	else
-		$pcs_apprnc = 'Your appearance is divine! No one is able to take his or her eyes off of you.'
+		tits = 11
+		$titsize = 'K cup'
 	end
+end
 
-	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-	!!!!!!!!BODY
-	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+if $ARGS[0] = 'CalcWeight':
+	!{pcs_weight: Svetas weight in kg 
+	Optimal Weight (170cm): 60kg, 60 salo
+	This is an approximation, so that a sveta with a different height has the same BMI for the same salo values.
+	The default height of 170 cm is used as a starting point. The bmi deviates by 0.06 for a deviation of 10cm and 0.4 for a deviation of 20cm.}
+	result = 30 + salo / 2 + (pcs_hgt - 170) * 7 / 10
+
+	!{Do not remove (julzor)
+	This is the old more complex function, but it doesn''t work correctly.
+	This variable is actually only used ONCE (except for the BMI calculation), when stripping, to see if you fall off the pole from being too heavy. I am reluctant to touch it, since the math is not explained. Maybe later.
+	Weight = (height in cm x bottom of average weight in kilos for a 170cm female / 170cm + (hip modifier + 2 x overrun fat)/4 + cup size}
+	
+	!result = (pcs_hgt * 62 / 170) + (vhips + (vofat * 2)) / 4 + tits
+end
 
+if $ARGS[0] = 'UpdateBodyImage':
+	!Update body image set
 	if dounspell = 1:
 		salocatnow = (pcs_hips / 10) - 5
 		if bdsetlock = 0:
@@ -164,8 +444,9 @@ if $ARGS[0] = '':
 		else
 			bodset = 1
 		end
-	end 
+	end
 
+	! Update body description
 	if (knowpreg = 1 or (preg = 1 and thinkpreg = 1) or (preg = 1 and PregChem > 3600)) and bodset = 3:
 		if PregChem > 6216:
 			$body = $bodimgsets[((bodset * 10) + 8)]
@@ -179,295 +460,90 @@ if $ARGS[0] = '':
 	else
 		$body = $bodimgsets[((bodset * 10) + 7)]
 	end
-
-	!!Since "musle" is used all over the place
-	musle = strenbuf
-
-
-	!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-	!! kill temporary variables
-	killvar 'rand_breasts'
-	killvar 'rand_hairmess'
-	killvar 'rand_hairword'
-	killvar 'rand_bangs'
-	killvar 'rand_hair'
-	killvar 'rand_hairstyle'
-	killvar 'rand_hairobject'
-	killvar 'rand_hairlength'
-	killvar 'rand_tongue'
-	killvar 'rand_eyecol'
-	killvar 'rand_lashes'
-	killvar 'rand_vision'
-	killvar 'rand_eyesize'
-	killvar 'rand_makeup'
-	killvar 'rand_legs'
-	killvar 'rand_clit'
-	killvar 'rand_pubes'
-	killvar 'rand_nipples'
-	killvar 'tempclothingbonus'
-	killvar 'tempAccessoriesBonus'
-	killvar 'tempGroomingBonus'
-	killvar 'tempGroomingPenalty'
 end
 
-if $ARGS[0] = 'calcClothesBonus':
-	!! Note there is a limit of 9 args
-	tempPXCloThinness = ARGS[1] & !! PXCloThinness
-	tempPXCloTopCut = ARGS[2] & !! PXCloTopCut
-	tempPXCloBottomShortness = ARGS[3] & !! PXCloBottomShortness
-	tempPCloQuality = ARGS[4] & !! PCloQuality
-	$tempclothingworntype = $ARGS[5] & !!$clothingworntype
-	tempbmi_calc = ARGS[6] & !! bmi_calc
-
-	if tempbmi_calc < 16:
-		!!severely underweight
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 0
-			tempPCloQuality = 1
-		else
-			tempRevealing = (400 - tempPXCloThinness) + (500 - tempPXCloTopCut) + (400 - tempPXCloBottomShortness)
-			tempRevealing = tempRevealing / 2
-		end
-	elseif tempbmi_calc >= 16 and tempbmi_calc < 19:
-		!!underweight
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 0
-			tempPCloQuality = 1
-		else
-			tempRevealing = (400 - tempPXCloThinness) + (500 - tempPXCloTopCut) + (400 - tempPXCloBottomShortness)
-			tempRevealing = tempRevealing / 2
-		end
-	elseif tempbmi_calc >= 19 and tempbmi_calc < 25:
-		!!normal, healthy weight
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 405
-			tempPCloQuality = 3
-		else
-			tempRevealing = tempPXCloThinness + tempPXCloTopCut + tempPXCloBottomShortness
-			tempRevealing = tempRevealing / 2
-		end
-	elseif tempbmi_calc >= 25 and tempbmi_calc < 30:
-		!!overweight
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 405
-			tempPCloQuality = 3
-		else
-			tempRevealing = tempPXCloThinness + tempPXCloTopCut + tempPXCloBottomShortness
-			tempRevealing = tempRevealing / 2
-		end
-	elseif tempbmi_calc >= 30 and tempbmi_calc < 35:
-		!!moderately obese
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 0
-			tempPCloQuality = 1
-		else
-			tempRevealing = (400 - tempPXCloThinness) + (500 - tempPXCloTopCut) + (400 - tempPXCloBottomShortness)
-			tempRevealing = tempRevealing * 3 / 4
-		end
-	elseif tempbmi_calc >= 35 and tempbmi_calc < 40:
-		!!severely obese
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 0
-			tempPCloQuality = 1
-		else
-			tempRevealing = (400 - tempPXCloThinness) + (500 - tempPXCloTopCut) + (400 - tempPXCloBottomShortness)
-			tempRevealing = tempRevealing * 3 / 4
-		end
-	elseif tempbmi_calc >= 40 and tempbmi_calc < 45:
-		!!very severely obese
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 0
-			tempPCloQuality = 1
-		else
-			tempRevealing = (400 - tempPXCloThinness) + (500 - tempPXCloTopCut) + (400 - tempPXCloBottomShortness)
-			tempRevealing = tempRevealing * 3 / 4
-		end
-	elseif tempbmi_calc >= 45:
-		!!morbidly obese
-		if $tempclothingworntype = 'nude':
-			tempRevealing = 0
-			tempPCloQuality = 1
-		else
-			tempRevealing = (400 - tempPXCloThinness) + (500 - tempPXCloTopCut) + (400 - tempPXCloBottomShortness)
-			tempRevealing = tempRevealing * 3 / 4
-		end
-	end
-
-	tempRevealing = tempRevealing / 76
-
-	tempCloAdjustedBeauty = tempRevealing * tempPCloQuality
-
-	!!if $tempclothingworntype = 'danilovich_outfits': tempCloAdjustedBeauty = tempCloAdjustedBeauty * 2 / 3
-
-	result = tempCloAdjustedBeauty
-
-	killvar 'tempPXCloThinness'
-	killvar 'tempPXCloTopCut'
-	killvar 'tempPXCloBottomShortness'
-	killvar 'tempPCloQuality'
-	killvar '$tempclothingworntype'
-	killvar 'tempRevealing'
-	killvar 'tempCloAdjustedBeauty'
-	killvar 'tempbmi_calc'
+if $ARGS[0] = 'CalcBMI':
+	result = 10000 * (30 + salo / 2 + (pcs_hgt - 170) * 7 / 10) / (pcs_hgt * pcs_hgt)
 end
 
-if $ARGS[0] = 'calcAccessoriesBonus':
-	tempcoatbonus = ARGS[1] & !! bonusZ
-	tempPShoQuality = ARGS[2] & !! PShoQuality
-	$temppantyworntype = $ARGS[3] & !! $pantyworntype
-	$tempbraworntype = $ARGS[4] & !! $braworntype
-	
-	!!bonuses for certain underwear
-	if $temppantyworntype = 'boutique':
-		temppantybounus = 4
-	elseif $temppantyworntype = 'fashionista':
-		temppantybounus = 2
-	end
-
-	if $tempbraworntype = 'boutique':
-		tempbrabounus = 4
-	elseif $tempbraworntype = 'fashionista':
-		tempbrabounus = 2
+if $ARGS[0] = 'softreset':
+	!!This is for use in immediately updating shape if something has caused a large change in salo, primarily fat burners and plastic surgery
+	sftrstflag = 1
+	:resetloop
+	if salo ! salolast:
+		if gmstrtflag = 1: salobustdo = 1
+		gs 'body'
+		jump 'resetloop'
 	end
-
-	tempAccessoriesBonus = tempcoatbonus + tempPShoQuality + temppantybounus + tempbrabounus
-
-	result = tempAccessoriesBonus
-	killvar 'tempcoatbonus'
-	killvar 'tempPShoQuality'
-	killvar 'temppantybounus'
-	killvar 'tempbrabounus'
-	killvar '$temppantyworntype'
-	killvar '$tempbraworntype'
-	killvar 'tempAccessoriesBonus'
+	!!Updates pcs_apprncbase after a reset
+	gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+	!!Clears the warning and reset status flags if they were set
+	sftrstflag = 0
+	btwarn = 0
 end
 
-if $ARGS[0] = 'calcGroomingBonus':
-	!! Note there is a limit of 9 args
-	temppcs_lipbalm = ARGS[1] & !! pcs_lipbalm
-	tempmakeupkoef = ARGS[2] & !! mopkoef 
-	temppcs_hairbsh = ARGS[3] & !! pcs_hairbsh
-	temppcs_breath = ARGS[4] & !! pcs_breath
-	tempdeodorant_on = ARGS[5] & !! deodorant_on
-	tempbmi_calc = ARGS[6] & !! bmi_calc
-
-	if temppcs_lipbalm > 0:
-		lipbalmKoef = 5
+if $ARGS[0] = 'hardreset':
+	!!This is primarily for canceling out "dounspell" and setting salo to whatever value will result in the current hip size then balancing everything out.
+	!!Also could be built in as a means to in-game undo "dounspell", other than the cheat.
+	if dounspell = 1 and dounsplkil > 0:
+		salo = 12
+		fat = 0
+		agilbuf = pcs_agil & strenbuf = pcs_stren & vitalbuf = pcs_vital
+		salobustdo = 1 & sftrstflag = 1 & normbuffpick = -1
+		gs 'body'
+		salo = (pcs_hips * 2) - ((pcs_hgt * hratio) / 50) + 80
+		if salo < 10:
+			salocatnow = 0
+		else
+			salocatnow = 1 + (salo - 10) / 20
+		end
+		salocatlast = salocatnow
+		salolast = salo
+		vhtmp = (salo - 80) / 2
+		vhips = vhtmp
+		if genbsize = 0 and nbsize > 0:
+			If nbsize >= 27:
+				genbsize = 27
+			else
+				genbsize = 2 + nbsize - nbsize mod 5
+			end
+		elseif genbsize = 0 and nbsize = 0 and silicone >= 20:
+			genbsize = 12 & nbsize = 12 & silicone -= 10
+		end
+		sftrstflag = 0 & normbuffpick = 0 & btwarn = 0 & magf2bdo = 0
+		killvar 'dounsplkil'
+		newbdsp = 1
+		dounspell = 0
+		gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+		gs 'body'
+		gs 'stat'
 	else
-		lipbalmKoef = 0
+		'If you''re seeing this, something odd happened. Please make a bug report that the body shape hard reset improperly triggered and what you were doing.'
 	end
-
-	tempHairBonus = temppcs_hairbsh * 10
-
-	tempBreathBonus = temppcs_breath * 5
-
-	tempGroomingBonus = tempmakeupkoef + tempHairBonus + lipbalmKoef + tempBreathBonus
-
-	!!Small bonus for wearing deodorant, if pcs_sweat is low enough
-	if tempdeodorant_on = 1 and temppcs_sweat < 20: tempGroomingBonus += 5
-
-	tempGroomingBonus = FUNC('body_shape', 'bmiadjust', tempGroomingBonus, tempbmi_calc)
-
-	result = tempGroomingBonus
-
-	killvar 'temppcs_lipbalm'
-	killvar 'tempmakeupkoef'
-	killvar 'temppcs_hairbsh'
-	killvar 'temppcs_breath'
-	killvar 'tempdeodorant_on'
-	killvar 'tempHairBonus'
-	killvar 'tempBreathBonus'
-	killvar 'tempGroomingBonus'
-
-!! commented out as not used in the original calc
-!!Removed as primary appearance factors; will be eventually used in an NPC preference system instead; tanKoef = suntan
-!!	if temppcs_tan > 0:
-!!		tanKoef = 1
-!!	else
-!!		tanKoef = 0
-!!	end
-
 end
 
-if $ARGS[0] = 'calcGroomingPenalty':
-	temppcs_hairlng = ARGS[1] & !! pcs_hairlng
-	temppcs_sweat = ARGS[2] & !! pcs_sweat
-	tempglassvnesh = ARGS[3] & !! glassvnesh
-	tempdyevmod = ARGS[4] & !! dyevmod
-	templegkoef = ARGS[5] & !! legkoef
-
-	!! buzzcut penalty to pcs_apprnc
-	if temppcs_hairlng < 10:
-		hairkoef = 10
+if $ARGS[0] = 'initial':
+	!!	Sets the genetic bust size if it was not set in the start routines
+	if genbsize = 0:
+		genbsize = 12 & nbsize = 12
 	else
-		hairkoef = 0
+		nbsize = genbsize
 	end
-
-	if temppcs_sweat < 22:
-		sweatKoef = 0
-	elseif temppcs_sweat < 38:
-		sweatKoef = (temppcs_sweat - 10) / 4
-	elseif temppcs_sweat < 54:
-		sweatKoef = (temppcs_sweat - 10) / 2
-	else
-		sweatKoef = 3 * (temppcs_sweat - 10) / 4
-	end
-
-	tempGroomingPenalty = sweatKoef + tempglassvnesh + tempdyevmod + hairkoef + templegkoef
-
-	result = tempGroomingPenalty
-
-	killvar 'temppcs_hairlng'
-	killvar 'temppcs_sweat'
-	killvar 'tempglassvnesh'
-	killvar 'tempdyevmod'
-	killvar 'templegkoef'
-	killvar 'tempGroomingPenalty'
+	agilbuf = pcs_agil & strenbuf = pcs_stren & vitalbuf = pcs_vital
+	normbuffpick = -1 & gmstrtflag = 1
+	!!	Calling soft reset will cause the main code to cycle up to the starting value of salo
+	gs 'body', 'softreset'
+	!!	This sets/resets the controler variables
+	salocatlast = salocatnow
+	normbuffpick = 0 & magf2bdo = 0
+	killvar 'gmstrtflag'
+	newbdsp = 1
+	!!	This does all the body shape setting before the first stat call
+	gs $this, 'UpdateBodyMeasurement'
+	pcs_weight = func($this, 'CalcWeight')
+	pcs_bmi = func($this, 'CalcBMI')
+	gs 'body_desc', 'BMI'
 end
 
-
-if $ARGS[0] = 'calcHotcat':
-	!!Appearance factors; hairkoef = very short hair / mopkoef = makeup bonus / legkoef = shaved legs / CloAdjustedBeauty = clothes / pcs_hairbsh = Hair brushed / lipbalmKoef = lip balm / pcs_breath = freash breath / sweatKoef = pcs_sweat / glassvnesh = glasses / dyevmod = hair dye fading
-	!!Moved to base calculation in "body_shape"; bimbobeauty = Bimbo bonus; pcs_lip = lip size; skin = skin condition; pcs_lashes = eyelashes; pcs_eyesize = eyes; bodykoef = hips:waist ratio; pcs_teeth = missing teeth; vidagebonus = youth
-	temppcs_apprncbase = ARGS[1] & !! pcs_apprncbase
-	tempsupnatvnesh = ARGS[2] & !! supnatvnesh
-	tempCloAdjustedBeauty = ARGS[3] & !! result of calcClothesBonus
-	tempAccessoriesBonus = ARGS[4] & !! result of calcAccessoriesBonus
-	tempGroomingBonus = ARGS[5] & !! result of calcGroomingBonus
-	tempGroomingPenalty = ARGS[6] & !! result of calcGroomingPenalty
-
-	temppcs_apprnc = temppcs_apprncbase + tempCloAdjustedBeauty + tempAccessoriesBonus + tempGroomingBonus - tempGroomingPenalty
-	!!adjustment to make max achievable
-	!!temppcs_maxapprnc = temppcs_apprnc*200/170
-	temppcs_maxapprnc = temppcs_apprnc
-
-	if temppcs_maxapprnc >= 200: 
-		temppcs_apprnc = 200
-	else
-		temppcs_apprnc = temppcs_maxapprnc
-	end 
-
-	temppcs_apprnc = temppcs_apprnc + tempsupnatvnesh
-
-	if temppcs_apprnc < 0: temppcs_apprnc = 0
-
-	!!This sets the "hotness catagory" varibale for use in checks
-	if temppcs_apprnc <= 200:
-		temphotcat = temppcs_apprnc / 20
-	else
-		temphotcat = 10
-	end
-
-	result = tempHotcat
-	!! do not kill temppcs_apprnc this is used as a second returned variable set pcs_apprnc = temppcs_apprnc and kill temppcs_apprnc after calling it
-	killvar 'tempsupnatvnesh'
-	killvar 'temppcs_apprncbase'
-	killvar 'tempCloAdjustedBeauty'
-	killvar 'tempGroomingBonus'
-	killvar 'tempGroomingBonus'
-	killvar 'tempGroomingPenalty'
-end 
-
-
 --- body ---------------------------------
+

+ 51 - 9
locations/body_desc.qsrc

@@ -1,11 +1,20 @@
 # body_desc
 
+!{
+	I have gone through and added a new category of string variables, standardised to be used for descriptive writing. You will notice some duplication here -- this is for purposes of backwards compatibility, as if I completely rename and discard some of these strings,
+	extant saved games will irreparably break, and this would be Bad. One day down the line, most of the duplicated variables here can be culled, when there is a new release that warrants new saves being used, but until then the duplication needs to stay. Use of
+	strings for descriptions that do not begin with $pcdesc_ should be avoided, as it would be best to have everything standardised when moving forward into the present and future.
+	Available strings follow this format: $pc_desc['type'], $pc_descWordy['type']
+	Available 'type':
+		throat, pussy, anus, butt, breasts, lips, lip size, lip gloss  hair, hair style, hair status, hair length, hair colour, hair texture, hair bang tan, skin, eye color, eyelashes, glasses, eye size, makeup, nipples, clit, pubes, legs
+}
+
 if $ARGS[0] = '':
     $this = 'body_desc'
     gs $this, 'throat'
     gs $this, 'pussy'
     gs $this, 'anus'
-	if dounspell = 0: gs $this, 'butt' & gs $this, 'breasts'
+	if dounspell = 0: gs $this, 'butt' & gs $this, 'breasts' & gs $this, 'BMI'
 	gs $this, 'lips'
 	gs $this, 'hair'
     gs $this, 'tan'
@@ -19,6 +28,7 @@ if $ARGS[0] = '':
     gs $this, 'clit'
     gs $this, 'pubes'
     gs $this, 'legs'
+	gs $this, 'appearance'
 end
 
 if $ARGS[0] = 'ChooseDescWord':
@@ -176,6 +186,27 @@ if $ARGS[0] = 'anus':
 	end
 end
 
+if $ARGS[0] = 'BMI':
+	!!BMI Descriptions
+	if pcs_bmi < 16:
+		$bmi_desc = 'You are severely underweight.'
+	elseif pcs_bmi >= 16 and pcs_bmi < 19:
+		$bmi_desc = 'You are underweight'
+	elseif pcs_bmi >= 19 and pcs_bmi < 25:
+		$bmi_desc = 'You have a normal, healthy weight.'
+	elseif pcs_bmi >= 25 and pcs_bmi < 30:
+		$bmi_desc = 'You are overweight.'
+	elseif pcs_bmi >= 30 and pcs_bmi < 35:
+		$bmi_desc = 'You are moderately obese.'
+	elseif pcs_bmi >= 35 and pcs_bmi < 40:
+		$bmi_desc = 'You are severely obese.'
+	elseif pcs_bmi >= 40 and bmi_pcs_bmicalc < 45:
+		$bmi_desc = 'You are very severely obese.'
+	elseif pcs_bmi >= 45:
+		$bmi_desc = 'You are morbidly obese.'
+	end
+end
+
 if $ARGS[0] = 'breasts':
 	!! If the PC has vastly less breast tissue than she does silicone, use a slightly more derogatory term. There is actually not a great way to calculate this; silicone counts almost the same on all body types, even though an increase of 200cc, for example, would be vastly
 	!! more noticeable on a thinner body than a heavier one. I have experimented with moving where the silicone is factored in to the body shape calculations, but ultimately there is just no better way to do it than how it is now, given the things that increase the amount
@@ -572,16 +603,13 @@ if $ARGS[0] = 'glasses':
 		$pc_desc['vision'] = func($this, 'ChooseDescWord', 'glasses', 'lenses')
 		$pc_descWordy['vision'] = 'chic, stylish glasses'
 		$glass = ' You wear glasses.'
-		glassvnesh = 0
 	elseif glass = 1:
 		$pc_desc['vision'] = func($this, 'ChooseDescWord', 'glasses', 'lenses', 'dorky glasses', 'geeky lenses')
 		$pc_descWordy['vision'] = 'cheap, utilitarian glasses'
 		$glass = ' You wear silly glasses in a cheap frame.'
-		glassvnesh = 10
 	else
 		glass = 0
 		$glass = ''
-		glassvnesh = 0
 	end
 end
 
@@ -884,22 +912,18 @@ if $ARGS[0] = 'legs':
     if pcs_leghair <= 0:
 		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'smooth', 'silky', 'soft')
 		$pc_descWordy['legs'] = 'soft and silky-smooth'
-		legkoef = 0
 		$pcs_leghair = 'You have smooth legs.'
 	elseif pcs_leghair <= 3:
 		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'slightly scratchy', 'faintly stubbly')
 		$pc_descWordy['legs'] = 'slightly rough, invisibly-stubbled'
-		legkoef = 3
 		$pcs_leghair = 'You can''t see any hair, but your legs feel rough to the touch.'
 	elseif pcs_leghair <= 6:
 		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'somewhat hairy', 'lightly-furred')
 		$pc_descWordy['legs'] = 'lightly-furred, soft-haired'
-		legkoef = 6
 		$pcs_leghair = 'You have light and just barely visible hair on your legs.'
 	else
 		$pc_desc['legs'] = func($this, 'ChooseDescWord', 'hairy', 'unshaven', 'ungroomed')
 		$pc_descWordy['legs'] = 'hairy, unshaven'
-		legkoef = 9
 		$pcs_leghair = 'Your legs are hairy.'
 	end
 end
@@ -1183,8 +1207,26 @@ if $ARGS[0] = 'hair':
 	end
 
 	!! A pair of ready-made long strings for writers to pull from for descriptions
-	$pc_des['hair'] = '<<$pc_desc[''hair status'']>>, <<$pc_desc[''hair length'']>> <<$pc_desc[''hair colour'']>> <<$pc_descWordy[''hair texture'']>>'
+	$pc_desc['hair'] = '<<$pc_desc[''hair status'']>>, <<$pc_desc[''hair length'']>> <<$pc_desc[''hair colour'']>> <<$pc_descWordy[''hair texture'']>>'
 	$pc_descWordy['hair'] = '<<$pc_desc[''hair status'']>>, <<$pc_descWordy[''hair length'']>> <<$pc_descWordy[''hair texture'']>> of <<$pc_descWordy[''hair colour'']>>'
 end
 
+if $ARGS[0] = 'appearance':
+	if pcs_apprnc = -10:
+		$pcs_apprnc = 'Your looks are even worse than terrible. It''s god-awful. No one wants to see or talk to you and people avoid you at any cost.'
+	elseif pcs_apprnc < 20:
+		$pcs_apprnc = 'Your looks are terrible. People try to avoid looking and talking to you.'
+	elseif pcs_apprnc < 60:
+		$pcs_apprnc = 'You''re a wallflower. Hardly anyone notices you.'
+	elseif pcs_apprnc < 120:
+		$pcs_apprnc = 'You have good looks. Men and women check you out when they think you aren''t looking.'
+	elseif pcs_apprnc < 160:
+		$pcs_apprnc = 'You''re unquestionably gorgeous. Men constantly get caught staring at you by their girlfriends.'
+	elseif pcs_apprnc < 200:
+		$pcs_apprnc = 'You have a simply stunning appearance. Other girls are a bit jealous and guys constantly check you out.'
+	else
+		$pcs_apprnc = 'Your appearance is divine! No one is able to take his or her eyes off of you.'
+	end
+end
+
 --- body_desc ---------------------------------

+ 0 - 639
locations/body_shape.qsrc

@@ -1,639 +0,0 @@
-# body_shape
-
-!!vhips = derived from salo in body_shape
-!!vhtmp = slows the change to vhips in body_shape
-!!wratio = waist to hips ratio set in body_shape
-!!bratio = band to waist ratio set in body_shape
-!!hratio = hip to height ratio set in body_shape
-!!vofat = used as a place to put extra salo at extreme high values (i.e. really, really fat) set in body_shape
-!!nbsize = starts at a set genetic bust size, but can be adjusted down if salo drops too low
-!!magicf2b = set in body_shape for the fat moved to bust
-!!genbsize = the set genetic bust size
-!!salocatnow = the current category of salo
-!!salocatlast = the previous category of salo
-!!magf2bdo = flag for magic bust increase; 0, ready; 1, do it; 2, ask; 3, no
-!!mgf2bnocnt = used to count the number of times a bust increase was turned down and stop asking after 3
-!!magtarcup = set in the dream code as the target cup size 
-!!btwarn = used to flag if to display the gaining/losing weight message when bathing
-!!salolast = used when doing a soft rest to control the cycling of the main code
-!!sftrstflag = used to prevent a code chunk from firing on a soft reset
-!!Image set variables
-!! bodset = body image and descriptor control variable, used to indicate which image and descriptor set is in use
-!! $bodimgsets[x] = body shape descriptors, tens place is the set (using bodset), 0 - 7 the descriptors (using salocatnow), 8 filler, 9 is the folder name
-!! bdsetlock = flag to indicate set control override, 0 is use the formula to pick a set, 1 is use a fixed set
-!! fixbodset = the identification number of the fixed image set
-!! bodsetcnt = the number of sets present
-!! imgset6ovr[x] and imgset7ovr[x] = a flag to indicate that an image set (x) has its own image 6 and/or 7
-!! extended lash functionality; pcs_lashes = n are: {2, largest natural size}, {3, with temporary false lashes on or basic 2D lash extensions}, {4, with ornate false lashes on or lavish 4D extensions}, {5, with extremely ornate, 6D-style extensions} - xerya
-
-if $ARGS[0] = '':
-	!!This controls the gradual change in stat to -buf
-	if strenbuf > pcs_stren: strenbuf -= 1
-	if strenbuf < pcs_stren: strenbuf += 1
-	if vitalbuf > pcs_vital: vitalbuf -= 1
-	if vitalbuf < pcs_vital: vitalbuf += 1
-	if agilbuf > pcs_agil: agilbuf -= 1
-	if agilbuf < pcs_agil: agilbuf += 1
-
-	!!All the ratios were rounded to 2 digits and there are divide 100s at the final calc points
-	!!Waist to hip ratio
-
-	wrtemp = ((2 * vitalbuf + strenbuf + agilbuf) /4)
-
-	!!	Primary wratio handling
-	if wrtemp < 11:
-		wratio = 85 + (11 - (vitalbuf + strenbuf + agilbuf)/3)
-	elseif wrtemp < 20:
-		wratio = 85
-	elseif wrtemp < 35:
-		wratio = 85 - (wrtemp - 20) / 3
-	elseif wrtemp < 55:
-		wratio = 80 - (wrtemp - 35) / 4
-	elseif wrtemp < 80:
-		wratio = 75 - (wrtemp - 55) / 5
-	elseif wrtemp >= 80:
-		wratio = 70
-	end
-
-	!!	High stat value edge case handling
-	if (vitalbuf + strenbuf + agilbuf) /3 > 100: wratio -= ((vitalbuf + strenbuf)/2 - agilbuf)/5
-
-	!!	This is the oops and high stat gone overboard handling
-	if wratio < 65: wratio = 65
-
-	killvar 'wrtemp'
-
-	!!For band to waist ratio
-	brtemp = (2 * strenbuf + vitalbuf + agilbuf) /4
-
-	if brtemp < 10:
-		bratio = 105
-	elseif brtemp =< 23:
-		bratio = 106
-	elseif brtemp =< 80:
-		bratio = 106 + (brtemp - 23) / 3
-	else
-		bratio = 125
-	end
-
-	killvar 'brtemp'
-
-	!!For hip to height ratio which is used to set the center point
-	hrtemp = (2 * agilbuf + vitalbuf + strenbuf) /4
-
-	if hrtemp < 35:
-		hratio = 60
-	elseif hrtemp < 45:
-		hratio = 59
-	elseif hrtemp < 60:
-		hratio = 58
-	elseif hrtemp < 80:
-		hratio = 57
-	else
-		hratio = 56
-	end
-
-	killvar 'hrtemp'
-
-	!!Salo Handling; the first part is because during a reset fat is not used and should be cleared
-	if sftrstflag = 1 or cheatNoFat = 1:
-		fat = 0
-	else
-		if fat > (17 + vitalbuf / 25): salo += 1 & fat = 0
-		if fat < (-2 - (vitalbuf / 10)): salo -= 1 & fat = 0
-	end
-
-	!!This is the salo cap for the weight approximation
-	if salo > 250: salo = 250
-		
-	!!This calculates the current salo category; ranges are 20 points, seemed to balance best if the range is x10 the hip devisor
-	:salocatloop
-	if salo < 10:
-		salocatnow = 0
-	else
-		salocatnow = 1 + (salo - 10) / 20
-	end
-
-	!!This resets the genetic bust size (genbsize) when the cheat is used to reduce breast size (maybe other things later)
-	if titreduc = 1:
-		killvar 'titreduc'
-		if genbsize > nbsize:
-			genbsize = 2 + nbsize - nbsize mod 5
-		end
-	end
-
-	!!This controls the movement of salo to/from bust in order of precedence
-	if salobustdo = 0 and nbsize < genbsize and salocatnow > 2:
-		if sftrstflag = 0:'<b>Your breasts seem fuller.</b>'
-		nbsize += 1
-		salo -= 3
-		salobustdo = 1
-		jump 'salocatloop'
-	end
-
-	if salobustdo = 0 and magf2bdo = 1 and salocatnow > salocatlast and pcs_mana >= manamax / 2 and magikDostup = 0:
-		if sftrstflag = 0:'<b>Your breasts seem fuller.</b>'
-		magicf2b += 1
-		salo -= 3
-		salobustdo = 1
-		if magicf2b >= 2 + magtarcup * 5: magf2bdo = 0
-		if pcs_magik < 20:
-			pcs_mana -= 2000 / pcs_magik
-		else
-			mana -= 100
-		end
-		jump 'salocatloop'
-	end
-
-	if salobustdo = 0 and salocatnow < 2 and salocatlast >= 2 and magicf2b > 0 and magikDostup = 0:
-		if sftrstflag = 0:'<b>Your breasts seem to be getting smaller.</b>'
-		magicf2b -= 1
-		salo += 3
-		salobustdo = 1
-		magf2bdo = 1
-		jump 'salocatloop'
-	end
-
-	if salobustdo = 0 and salocatnow < 1 and salocatlast >= 1 and nbsize > 0:
-		if sftrstflag = 0:'<b>Your breasts seem to be getting smaller.</b>'
-		nbsize -= 1
-		salo += 3
-		salobustdo = 1
-		jump 'salocatloop'
-	end
-
-	!!This sets which image set is to be used when the override is not set
-	if bdsetlock = 0:
-		if (knowpreg = 1 or (preg = 1 and thinkpreg = 1) or (preg = 1 and PregChem > 3600)):
-			bodset = 3
-		elseif strenbuf >= 70:
-			bodset = 2
-		elseif strenbuf <= 40:
-			bodset = 0
-		else
-			bodset = 1
-		end
-	else
-		bodset = fixbodset
-	end
-
-	!!This is if a Succubus has salo < 1
-	if succubusflag = 1 and salo < 1:
-		sucexcess -= 1
-		salo += 3
-	end
-
-	!!This is if salo is still < 1
-	if salo < 1:
-		if fat >= 1:
-			salo = 1
-			fat -= 1
-		elseif fat <= 0 and pcs_stren + pcs_vital > 0:
-			stren_deg -= 1000
-			vital_deg -= 1000
-			salo = 1
-		else
-			if Enable_nogameover = 0:
-				over = 3
-				gt 'gameover'
-				exit
-			else
-				pl '<font color=red><B>You starved to death, but Cheat Mode keeps you Alive.</B></font>'
-				salo = 1
-			end
-		end
-	end
-
-	killvar 'tempvct' & killvar 'salobustdo'
-
-	!!This is the hip calcs, 80 is the center of the current max-min range (10 - 130)
-	vhtmp = (salo - 80) / 2
-	
-	if vhips > vhtmp: vhips -= 1
-	if vhips < vhtmp: vhips += 1
-	!!	Because a reset should be updating hip size instantly (this set is a bit redundant anyway)
-	if sftrstflag = 1: vhips = vhtmp
-
-	if (pcs_hgt * hratio) / 100 + vhips > (pcs_hgt * 72) / 100:
-		vofat = ((pcs_hgt * hratio) / 100 + vhips - (pcs_hgt * 72) / 100) / 2
-		vhips -= vofat * 2
-	end
-
-	!!This will trigger the warning notices in the bathing code (the +/- 12 should always be +/- 11 + the max change to salo w/ fat)
-	if salolast > salo and salo <= 12 + (20 * (salocatnow - 1)): btwarn = 1
-	if salolast < salo and salo >= (20 * (salocatnow + 1)) - 12: btwarn = 2
-
-	!!This will trigger the dream for the option to use magic to increase bust
-	!!Three nos at the dream will lock it out (1 yes resets the count)
-	if pcs_magik >= 5 and MagikDostup = 0 and magf2bdo = 0:
-		if salolast < salo and salo >= (20 * (salocatnow + 1)) - 11 and tits < 10:
-			if mgf2bnocnt < 3:
-				magf2bdo = 2
-			else
-				magf2bdo = 3 & killvar 'mgf2bnocnt'
-			end
-		end
-	end
-
-	!!This is to deal with the possibility that salocatnow changed by more than 1 (fat burners, vitamins, plastic surgery, etc.)
-	if salocatnow < salocatlast: salocatlast -= 1
-	if salocatnow > salocatlast: salocatlast += 1
-
-	!!This is for use in the warning code and as part of the reset routines
-	if salolast > salo: salolast -= 1
-	if salolast < salo: salolast += 1
-
-	!!Setting the pcs_apprnc bonus based on fat and strength
-	bmi_calc = FUNC('body_shape', 'bmicalc')
-	bodykoef = FUNC('body_shape', 'setbodykoef')
-
-	!!This is to clean up unused variables
-	killvar 'normbuffpick' & killvar 'nrmbfpckct'
-	killvar 'vmeat' & killvar 'vfat' & killvar 'Kves' & killvar 'krost'
-	killvar 'koefvesbt' & killvar 'koefbt'
-end
-
-if $ARGS[0] = 'setbodykoef':
-	!!Setting the pcs_apprnc bonus based on fat and strength
-
-	if bmi_calc < 16:
-		!! severely underweight
-		tempbodykoef = 30
-    elseif bmi_calc < 19:
-		!! underweight
-		tempbodykoef = 65
-    elseif bmi_calc < 25:
-		!! healthy weight
-		tempbodykoef = 85
-    elseif bmi_calc < 30:
-		!! overweight
-		tempbodykoef = 75
-    elseif bmi_calc < 35:
-		!! moderately obese
-		tempbodykoef = 45
-    elseif bmi_calc < 40:
-		!! severely obese
-		tempbodykoef = 25
-    elseif bmi_calc < 45:
-		!! very severely obese
-		tempbodykoef = 5
-    else
-		!! morbidly obese
-		tempbodykoef = 0
-    end
-
-	if strenbuf >= 80:
-		tempbodykoef += 8
-	elseif strenbuf >= 60:
-		tempbodykoef += 10
-	elseif strenbuf >= 40:
-		tempbodykoef += 8
-	elseif strenbuf >= 20:
-		tempbodykoef += 5
-	else
-		tempbodykoef += 2
-	end
-
-	!!This modifies bodykoef for high or low salo values
-	if salocatnow = 0 or salocatnow >= 7:
-		tempbodykoef -= 8
-	elseif salocatnow = 1 or salocatnow = 6:
-		tempbodykoef -= 4
-	end
-
-	if vofat > 0: tempbodykoef -= vofat
-
-	result = tempbodykoef
-
-	killvar 'tempbodykoef'
-end
-
-if $ARGS[0] = 'bmicalc':
-	result = 10000 * (30 + salo / 2 + (pcs_hgt - 170) * 7 / 10) / (pcs_hgt * pcs_hgt)
-end
-
-if $ARGS[0] = 'bmiadjust':
-	tempValue = ARGS[1] & !!value to be adjusted
-	tempadjbmi_calc = ARGS[2] & !!bmi_calc
-
-	if tempadjbmi_calc < 16:
-		!! severely underweight
-		tempValue = tempValue * 50 / 100
-    elseif tempadjbmi_calc < 19:
-		!! underweight
-		tempValue = tempValue * 95 / 100
-    elseif tempadjbmi_calc < 25:
-		!! healthy weight
-		!! normal bonus
-    elseif tempadjbmi_calc < 30:
-		!! overweight
-		tempValue = tempValue * 95 / 100
-    elseif tempadjbmi_calc < 35:
-		!! moderately obese
-		tempValue = tempValue * 80 / 100
-    elseif tempadjbmi_calc < 40:
-		!! severely obese
-		tempValue = tempValue * 55 / 100
-    elseif tempadjbmi_calc < 45:
-		!! very severely obese
-		tempValue = tempValue * 50 / 100
-    else
-		!!morbidly obese
-		tempValue = tempValue * 40 / 100
-    end
-
-	result = tempValue
-	killvar 'tempValue'
-	killvar 'tempadjbmi_calc'
-end
-
-if $ARGS[0] = 'softreset':
-	!!This is for use in immediately updating shape if something has caused a large change in salo, primarily fat burners and plastic surgery
-	sftrstflag = 1
-	:resetloop
-	if salo ! salolast:
-		if gmstrtflag = 1: salobustdo = 1
-		gs 'body_shape'
-		jump 'resetloop'
-	end
-	!!Updates pcs_apprncbase after a reset
-	gs 'body_shape', 'basebeautycalc', 1
-	!!Clears the warning and reset status flags if they were set
-	sftrstflag = 0
-	btwarn = 0
-end
-
-if $ARGS[0] = 'hardreset':
-	!!This is primarily for canceling out "dounspell" and setting salo to whatever value will result in the current hip size then balancing everything out.
-	!!Also could be built in as a means to in-game undo "dounspell", other than the cheat.
-	if dounspell = 1 and dounsplkil > 0:
-		salo = 12
-		fat = 0
-		agilbuf = pcs_agil & strenbuf = pcs_stren & vitalbuf = pcs_vital
-		salobustdo = 1 & sftrstflag = 1 & normbuffpick = -1
-		gs 'body_shape'
-		salo = (pcs_hips * 2) - ((pcs_hgt * hratio) / 50) + 80
-		if salo < 10:
-			salocatnow = 0
-		else
-			salocatnow = 1 + (salo - 10) / 20
-		end
-		salocatlast = salocatnow
-		salolast = salo
-		vhtmp = (salo - 80) / 2
-		vhips = vhtmp
-		if genbsize = 0 and nbsize > 0:
-			If nbsize >= 27:
-				genbsize = 27
-			else
-				genbsize = 2 + nbsize - nbsize mod 5
-			end
-		elseif genbsize = 0 and nbsize = 0 and silicone >= 20:
-			genbsize = 12 & nbsize = 12 & silicone -= 10
-		end
-		sftrstflag = 0 & normbuffpick = 0 & btwarn = 0 & magf2bdo = 0
-		killvar 'dounsplkil'
-		newbdsp = 1
-		dounspell = 0
-		gs 'body_shape', 'basebeautycalc', 1
-		gs 'body_shape'
-		gs 'stat'
-	else
-		'If you''re seeing this, something odd happened. Please make a bug report that the body shape hard reset improperly fired and what you were doing.'
-	end
-end
-
-if $ARGS[0] = 'initial':
-	!!	Sets the genetic bust size if it was not set in the start routines
-	if genbsize = 0:
-		genbsize = 12 & nbsize = 12
-	else
-		nbsize = genbsize
-	end
-	agilbuf = pcs_agil & strenbuf = pcs_stren & vitalbuf = pcs_vital
-	normbuffpick = -1 & gmstrtflag = 1
-	!!	Calling soft reset will cause the main code to cycle up to the starting value of salo
-	gs 'body_shape', 'softreset'
-	!!	This sets/resets the controler variables
-	salocatlast = salocatnow
-	normbuffpick = 0 & magf2bdo = 0
-	killvar 'gmstrtflag'
-	newbdsp = 1
-	!!	This does all the body shape setting before the first stat call
-	pcs_hips = (pcs_hgt * hratio) / 100 + vhips
-	pcs_waist = (pcs_hips * wratio) / 100 + vofat
-	pcs_band = (pcs_waist * bratio) / 100 + vofat
-	pcs_bust = (pcs_waist * bratio) / 100 + nbsize + magicf2b + silicone
-	pcs_cupsize = pcs_bust - pcs_band
-	if pcs_cupsize <= 5:
-		tits = 0
-		$titsize = 'AA cup'
-	elseif pcs_cupsize <= 10:
-		tits = 1
-		$titsize = 'A cup'
-	elseif pcs_cupsize <= 15:
-		tits = 2
-		$titsize = 'B cup'
-	elseif pcs_cupsize <= 20:
-		tits = 3
-		$titsize = 'C cup'
-	elseif pcs_cupsize <= 25:
-		tits = 4
-		$titsize = 'D cup'
-	elseif pcs_cupsize <= 30:
-		tits = 5
-		$titsize = 'E cup'
-	elseif pcs_cupsize <= 35:
-		tits = 6
-		$titsize = 'F cup'
-	elseif pcs_cupsize <= 40:
-		tits = 7
-		$titsize = 'G cup'
-	elseif pcs_cupsize <= 45:
-		tits = 8
-		$titsize = 'H cup'
-	elseif pcs_cupsize <= 50:
-		tits = 9
-		$titsize = 'I cup'
-	elseif pcs_cupsize <= 55:
-		tits = 10
-		$titsize = 'J cup'
-	else
-		tits = 11
-		$titsize = 'K cup'
-	end
-		
-	!!pcs_weight: Svetas weight in kg 
-	!!Optimal Weight for a 170cm sveta (BMI: 20.76): 60 salo / 60kg
-	!!This is an approximation, so that a sveta with a different height has the same BMI for the same salo values.
-	!!The default height of 170 cm is used as a starting point for the approximation. The BMI deviates by 0.06 for a deviation of 10cm and 0.4 for a deviation of 20cm. 
-	
-	pcs_weight = 30 + salo / 2 + (pcs_hgt - 170) * 7 / 10
-	
-	!!Do not remove (julzor)
-	!!This is the old more complex function, but it doesn''t work correctly.
-	!!This variable is actually only used ONCE (except for the BMI calculation), when stripping, to see if you fall off the pole from being too heavy. I am reluctant to touch it, since the math is not explained. Maybe later.
-	!!Weight = (height in cm x bottom of average weight in kilos for a 170cm female / 170cm + (hip modifier + 2 x overrun fat)/4 + cup size
-	
-	!!pcs_weight = (pcs_hgt * 62 / 170) + (vhips + (vofat * 2)) / 4 + tits
-	
-	!!BMI Calculation
-	bmi_calc = FUNC('body_shape', 'bmicalc')
-	
-	!!BMI Descriptions
-	if bmi_calc < 16:
-		$bmi_desc = 'You are severely underweight.'
-	elseif bmi_calc >= 16 and bmi_calc < 19:
-		$bmi_desc = 'You are underweight'
-	elseif bmi_calc >= 19 and bmi_calc < 25:
-		$bmi_desc = 'You have a normal, healthy weight.'
-	elseif bmi_calc >= 25 and bmi_calc < 30:
-		$bmi_desc = 'You are overweight.'
-	elseif bmi_calc >= 30 and bmi_calc < 35:
-		$bmi_desc = 'You are moderately obese.'
-	elseif bmi_calc >= 35 and bmi_calc < 40:
-		$bmi_desc = 'You are severely obese.'
-	elseif bmi_calc >= 40 and bmi_calc < 45:
-		$bmi_desc = 'You are very severely obese.'
-	elseif bmi_calc >= 45:
-		$bmi_desc = 'You are morbidly obese.'
-	end
-end
-
-if $args[0] = 'basebeautycalc':
-	if pcs_lashes <= 0: pcs_lashes = 0
-	pcs_HeadBonus = FUNC('body_shape', 'calcHeadBonus')
-	tempAttributeBonus = FUNC('body_shape', 'calcAttributeBonus')
-	pcs_apprncbase = FUNC('body_shape', 'basebeautycalc2', ARGS[1])
-
-	if ARGS[1] = 0:
-	!!	This is the rate of change limiter
-		if pcs_apprncbase > vneshtemp:
-			if pcs_apprncbase - 5 > vneshtemp:
-				pcs_apprncbase -= 5
-			elseif pcs_apprncbase - 3 > vneshtemp:
-				pcs_apprncbase -= 3
-			else
-				pcs_apprncbase -= 1
-			end
-		elseif pcs_apprncbase < vneshtemp:
-			if pcs_apprncbase + 5 < vneshtemp:
-				pcs_apprncbase += 5
-			elseif pcs_apprncbase + 3 < vneshtemp:
-				pcs_apprncbase += 3
-			else
-				pcs_apprncbase += 1
-			end
-		end
-		killvar 'vneshtemp'
-	end
-
-	killvar 'pcs_HeadBonus'
-	killvar 'tempAttributeBonus'
-end 
-
-if $ARGS[0] = 'calcHeadBonus':
-
-	!!	Setting Eyelashes bonus
-	if pcs_lashes <= 0:
-		resnicbonus = 0
-	elseif pcs_lashes = 1:
-		resnicbonus = 2
-	elseif pcs_lashes = 2:
-		resnicbonus = 5
-	elseif pcs_lashes = 3:
-		resnicbonus = 7
-	elseif pcs_lashes = 4:
-		resnicbonus = 8
-	elseif pcs_lashes = 5:
-		resnicbonus = 10
-	else
-		resnicbonus = 0		
-	end
-	resnicbonus = FUNC('body_shape', 'bmiadjust', resnicbonus, bmi_calc)
-
-	!!	Setting Eye Size bonus
-	if pcs_eyesize = 1:
-		glarazbonus = 1
-	elseif pcs_eyesize = 2:
-		glarazbonus = 3
-	elseif pcs_eyesize = 3:
-		glarazbonus = 2
-	else
-		glarazbonus = 0
-	end
-	glarazbonus = FUNC('body_shape', 'bmiadjust', glarazbonus, bmi_calc)
-
-	!!	Setting the Lip size bonus
-	if pcs_lip = 0:
-		lipbonus = -2
-	elseif pcs_lip = 1:
-		lipbonus = 0
-	elseif pcs_lip = 2:
-		lipbonus = 3
-	elseif pcs_lip = 3:
-		lipbonus = 5
-	else
-		lipbonus = 3
-	end
-	lipbonus = FUNC('body_shape', 'bmiadjust', lipbonus, bmi_calc)
-	
-	teethcalc = (5 * pcs_teeth)
-	if teethcalc < 0: teethcalc = FUNC('body_shape', 'bmiadjust', teethcalc, bmi_calc)
-
-	result = resnicbonus + glarazbonus + lipbonus - teethcalc
-
-end
-
-if $ARGS[0] = 'calcAttributeBonus':
-	tempAttributeBonus = (pcs_agil / 10) + (pcs_vital / 10)
-
-	result = FUNC('body_shape', 'bmiadjust', tempAttributeBonus, bmi_calc)
-	killvar 'tempAttributeBonus'
-end
-
-	!!This is the calculation for the base appearance if calling for testing always set ARGS[1] to 1
-if $args[0] = 'basebeautycalc2':
-	!!ARGS[1] reset pcs_apprncbase
-	!! result of pcs_HeadBonus
-	!! result of calcAttributeBonus
-
-
-	!!	Setting vidagebonus
-	vidagebonus = 100
-	if vidage < 20: vidagebonus = 60 + (2 * vidage)
-	if vidage > 30: vidagebonus = 160 - (2 * vidage)
-
-	!!	Preforming the calculation
-	skincalc = (pcs_skin * 2 / 5)
-	vneshtemp = vidagebonus * (skincalc + bodykoef + tempAttributeBonus + pcs_HeadBonus) / 100
-
-	!!	pcs_skin = skin condition, corrected to a 0 to 40 range; bodykoef set in main body_shape; pcs_teeth is missing teeth or cosmetically improved teeth (-1)
-
-	!!	This is the first limiter
-		!!if vneshtemp > 100: vneshtemp = 100
-
-	!!	This adds the supernatural pcs_apprnc bonus; currently Bimbo and Succubus
-	vneshtemp += supnatvnesh
-
-	!!	This is for use when a reset is called for by setting args[1] = 1
-	if args[1] = 1: pcs_apprncbase = vneshtemp & killvar 'vneshtemp'
-
-	result = pcs_apprncbase
-
-	!!	This is to clean up variables only used here
-		!!do not kill vneshtemp here it gets killed in basebeautycalc
-	killvar 'skincalc'
-	killvar 'vidagebonus'
-	killvar 'tempHeadBonus'
-	killvar 'tempAttributeBonus'
-
-	!!	This is to unload old variables
-	killvar 'CloNaturalBeauty'
-	killvar 'CloBaseBeauty'
-	killvar 'skin'
-	killvar 'bimbobeauty'
-end
-
---- body_shape ---------------------------------
-

File diff suppressed because it is too large
+ 255 - 732
locations/brothel.qsrc


+ 5 - 96
locations/cikl.qsrc

@@ -341,18 +341,6 @@ gs 'fertility', 'birth_control'
 
 !!------------------------------------------------------------------------------------------------------------
 
-if lashair ! 1:
-	pcs_leghair += 1
-	!!Pubic hair growth at 1/2 per night
-	if pcs_pubes['growth'] > 1:
-		pcs_pubes['growth'] = 0
-		pcs_pubes += 1
-	end
-	pcs_pubes['growth'] += 1
-end
-
-if age < 18 and rand (0,2) = 0 and pcs_leghair > 0: pcs_leghair -= 1
-
 if pcs_breath = 1:pcs_breath = 0
 
 if cheatNoEat = 1 and dounspell = 1:fat += 15
@@ -530,40 +518,6 @@ gs 'fame', 'deg'
 gs 'traits', 'overnight'
 
 
-!!------------------------------------------------------------------------------------------------------------
-!!	Maruda hair mod
-!!------------------------------------------------------------------------------------------------------------
-!! Max. Hair length 600mm, or 60cm, which should be somewhere in the lower back area.
-!! Hair grows 1mm each day, it takes 20 months (1 month = 30 days) to regrow the hair from 0.
-if pcs_hairlng < 1001 and hairgrowcht = 0:pcs_hairlng += 1
-
-if pcs_haircol ! nathcol:
-	dyefade -=1
-	if dyefade < 0: dyefade = 0
-	if dyefade > 0 and dyefade < 7: dyevmod = 5
-	if dyefade = 0: dyevmod = 15
-end
-
-!!pubic hair colouring
-!! pcs_pubecol = natural colour
-!! pcs_pubecol[1] = flag for saveupdate
-!! pcs_pubecol[2] = actual colour
-!! pcs_pubecol[3] = countdown timer for dye
-
-if pcs_pubecol[2] ! pcs_pubecol:
-	pcs_pubecol[3] -=1
-	if pcs_pubecol[3] < 0: pcs_pubecol[3] = 0
-	if pcs_pubecol[3] = 0: pcs_pubecol[2] = pcs_pubecol
-end
-
-if pcs_pubes < 2: pcs_pubecol[2] = pcs_pubecol
-
-if hscrunch > 0:
-	hscrunchrand = rand(1, 100)
-
-	if hscrunchrand <= 8:hscrunch -= 1
-end
-
 !!------------------------------------------------------------------------------------------------------------
 
 !! Clothing wear and tear
@@ -640,32 +594,6 @@ elseif painpub = 1:
 	end
 end
 
-!!---- Calculation of lash extension degradation and false lash removal
-if pcs_lashes > 2:
-	if lashextensionstyle >= 1:
-		lashextensionduration -= 1
-		if lashextensionduration >= 1 and lashextensionduration <= 4:
-			'It''s time for you to do your maintenance on your lash extensions; you should go to the salon or you risk growing them all out.'
-		end
-		if lashextensionduration <= 0:
-			'You waited too long to do maintenance on your lash extensions; there''s too little there to notice or work with at this point.'
-			pcs_lashes = pcs_naturallashes
-			killvar 'lashextensionstyle'
-			killvar 'lashextensionduration'
-			killvar 'lashextensionnew'
-		end
-	end
-	if false_lashes > 0:
-		false_lashes -= 1
-		if false_lashes = 0:
-			'Your false lashes came off in the night; there''s no recovering them now.'
-			pcs_lashes = pcs_naturallashes
-		else
-			'Somehow, your lashes managed to stay attached throughout the night. You might be able to get away with wearing them another day straight.'
-		end
-	end
-end
-
 
 prezikProver += 1
 if pirs_pain_ton > 0:pirs_pain_ton -= 1
@@ -699,28 +627,10 @@ inhib_flr = inhib_lvl
 
 gs 'stat_sklattrib', 'daycall'
 
-if dounspell = 1:
-	if strenbuf > 90:
-		strenbuf -= 2
-	elseif strenbuf > 80:
-		strenbuf -= 1
-	end
-
-	if vitalbuf > 90:
-		vitalbuf -= 2
-	elseif vitalbuf > 80:
-		vitalbuf -= 1
-	end
-
-	if strenbuf > pcs_stren: strenbuf -= 1
-	if strenbuf < pcs_stren: strenbuf += 1
-	if vitalbuf > pcs_vital: vitalbuf -= 1
-	if vitalbuf < pcs_vital: vitalbuf += 1
-	if agilbuf > pcs_agil: agilbuf -= 1
-	if agilbuf < pcs_agil: agilbuf += 1
-else
-	gs 'body_shape'
-end
+!Update body measurements and base appearnce
+gs 'body', 'DailyUpdate'
+gs 'AppearanceSystem', 'UpdateBaseAppearnce'
+gs 'body_desc'
 
 
 if husband > 0 and husbandrink ! 11:husbandrink = rand(0, 10)
@@ -1317,8 +1227,7 @@ elseif mentats_dose > 1:
 	mentats_dose = 0
 end
 
-!!Appearance base calculation call
-gs 'body_shape', 'basebeautycalc'
+
 
 !! vovan, from 1.2.5
 hunters_check = 0

+ 3 - 7
locations/city_clinic.qsrc

@@ -225,7 +225,7 @@ if $ARGS[0] = 'start':
 						*clr & cla
 						money -= zubpay
 						minut += 60
-						gs 'body_shape', 'basebeautycalc', 1
+						gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 						gs 'stat'
 						if pcs_teeth > 0:
 							pcs_teeth = 0
@@ -243,7 +243,7 @@ if $ARGS[0] = 'start':
 						*clr & cla
 						karta -= zubpay
 						minut += 60
-						gs 'body_shape', 'basebeautycalc', 1
+						gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 						gs 'stat'
 						if pcs_teeth > 0:
 							pcs_teeth = 0
@@ -1424,7 +1424,6 @@ if $ARGS[0] = 'lipPlus':
 	minut += 60
 	pcs_lip += 1
 	money -= 25000
-	gs 'body_shape', 'basebeautycalc', 1
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/clinic/cosmeticsur.jpg"></center>'
 	'The surgeon has you strip, put on a gown and lie down on the table. He gives you a mask and tells you: "Just breathe in deeply... we''ll be done before you know it."'
@@ -1438,7 +1437,6 @@ if $ARGS[0] = 'lipMin':
 	minut += 60
 	pcs_lip -= 1
 	money -= 30000
-	gs 'body_shape', 'basebeautycalc', 1
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/clinic/cosmeticsur.jpg"></center>'
 	'The surgeon has you strip, put on a gown and lie down on the table. He gives you a mask and tells you: "Just breathe in deeply... we''ll be done before you know it."'
@@ -1452,7 +1450,6 @@ if $ARGS[0] = 'eyePlus':
 	minut += 60
 	pcs_eyesize += 1
 	money -= 90000
-	gs 'body_shape', 'basebeautycalc', 1
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/clinic/cosmeticsur.jpg"></center>'
 	'The surgeon has you strip, put on a gown and lie down on the table. He gives you a mask and tells you: "Just breathe in deeply... we''ll be done before you know it."'
@@ -1466,7 +1463,6 @@ if $ARGS[0] = 'eyeMin':
 	minut += 60
 	pcs_eyesize -= 1
 	money -= 90000
-	gs 'body_shape', 'basebeautycalc', 1
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/clinic/cosmeticsur.jpg"></center>'
 	'The surgeon has you strip, put on a gown and lie down on the table. He gives you a mask and tells you: "Just breathe in deeply... we''ll be done before you know it."'
@@ -1481,7 +1477,7 @@ if $ARGS[0] = 'lyposuction':
 	salo -= 40
 	if salo < 11: salo = 11
 	money -= 75000
-	gs 'body_shape', 'softreset'
+	gs 'body', 'softreset'
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/residential/clinic/cosmeticsur.jpg"></center>'
 	'The surgeon has you strip, put on a gown and lie down on the table. He gives you a mask and tells you: "Just breathe in deeply... we''ll be done before you know it."'

+ 3 - 3
locations/din_van.qsrc

@@ -36,7 +36,7 @@ $showerdin = {
 			'Unfortunately, your false lashes don''t make it through the shower.'
 			false_lashes = 0
 			pcs_lashes = pcs_naturallashes
-			gs 'body_shape', 'basebeautycalc', 1
+			gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 		end
 	end
 }
@@ -837,7 +837,7 @@ $basin = {
 			pcs_lashes = pcs_naturallashes
 			false_lashes = 0
 			minut += 5
-			gs 'body_shape', 'basebeautycalc', 1
+			gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 			act 'Finish':menu_off = 0 & gt $loc, $loc_arg
 		end
 	end
@@ -1090,7 +1090,7 @@ if $ARGS[0] = 'private':
 		dynamic $toymanage
 	end
 
-	'<a href="exec:msg ''<center>Your weight is <<pcs_weight>> kg<br>Your body mass index (BMI) is <<bmi_calc>>.<br><<$bmi_desc>></center>''">Check weight on the scales</a>'
+	'<a href="exec:msg ''<center>Your weight is <<pcs_weight>> kg<br>Your body mass index (BMI) is <<pcs_bmi>>.<br><<$bmi_desc>></center>''">Check weight on the scales</a>'
 
 	gs 'din_van', 'prvt_pee'
 

+ 10 - 10
locations/foto.qsrc

@@ -299,12 +299,12 @@ if $ARGS[0] = 'studio':
 			elseif pcs_skin < 40:
 				'"Girl, your face is covered in acne unless you improve your appearance there is no chance of working here."'
 				act 'Leave':minut += 1 & gt 'city_center'
-			elseif bmi_calc >= foto_weight and foto_weight > 0:
+			elseif pcs_bmi >= foto_weight and foto_weight > 0:
 				'You walk up to the front desk and find the same man who interviewed you previously. He looks up at you from his computer as you approach and frowns.'
 				'Before you can say anything, he sternly says, "Girl, I told you to lose weight, not put it on! Now get out of here until you slim down some!"'
 				'The comment turns your face bright red and you stop in your tracks. He stares at you angrily until you slowly start to back up and head towards the door.'
 				act 'Leave':minut += 1 & gt 'city_center'
-			elseif bmi_calc < foto_weight and foto_weight > 0:
+			elseif pcs_bmi < foto_weight and foto_weight > 0:
 				gt'foto','interview2'
 			elseif fotofakepassport = 1 and age < 18:
 				'You walk up to the front desk and find the same man who "interviewed" you previously. He looks up at you from his computer as you approach.'
@@ -489,7 +489,7 @@ if $ARGS[0] = 'interview2':
 		gs 'willpower', 'skill', 'pcs_inhib', 'hard'
 	end
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/foto.jpg"></center>'
-	if bmi_calc < foto_weight:
+	if pcs_bmi < foto_weight:
 		'You walk up to the front desk and find the same man who interviewed you previously. He looks up at you from his computer as you approach.'
 		'"Hmm..." he says appraisingly. "You look like you lost some weight since the last time I saw you."'
 		'"Yes I did!" You smile brightly at him.'
@@ -539,8 +539,8 @@ if $ARGS[0] = 'interview2':
 			gs 'clothing', 'strip_all'
 			gs 'stat'
 			'<center><video autoplay loop src="images/locations/city/citycenter/photo/strip1.mp4"></video><video autoplay loop src="images/locations/city/citycenter/photo/strip2.mp4"></video></center>'
-			if bmi_calc < foto_weight and foto_weight > 0:
-				foto_weight = bmi_calc
+			if pcs_bmi < foto_weight and foto_weight > 0:
+				foto_weight = pcs_bmi
 				if foto_weight < 25: fotofit = 1
 				'You strip off your clothing for the photographer once again, holding your breath and hoping that you''ve slimmed down enough to work here now.'
 				'Just like before, he circles you, asks you to adjust your pose for him, carefully inspecting every aspect of your nude body.'
@@ -559,7 +559,7 @@ if $ARGS[0] = 'interview2':
 					'You nod in understanding.'
 				end
 				act'Continue':
-					if bmi_calc < 25 or hotcat >= 6:
+					if pcs_bmi < 25 or hotcat >= 6:
 						gt'foto','job_offer'
 					else
 						gt'foto','job_decline'
@@ -574,7 +574,7 @@ if $ARGS[0] = 'interview2':
 				'He circles you slowly, occasionally asking you to adjust your pose slightly, carefully inspecting every aspect of your nude body. Your <<$pcs_eyecol>> eyes framed by your <<$pcs_haircol>> hair, your <<$pc_desc[''lip size'']>>lip, your <<$titsize>> breasts, your <<$skin1>> <<$pcs_tan>> skin, your thighs, even your <<$pcdesc_pubes>> pussy...'
 				'He spends several minutes doing this without saying anything. Several people walk by while he does, including several beautiful and nude women who glance at you, whispering to each other before moving on.'
 				act'Continue':
-					if bmi_calc < 25 or hotcat >= 6:
+					if pcs_bmi < 25 or hotcat >= 6:
 						gt'foto','job_offer'
 					else
 						gt'foto','job_decline'
@@ -595,7 +595,7 @@ if $ARGS[0] = 'interview2':
 			'He spends several minutes doing this without saying anything. Several people walk by while he does, including several beautiful and nude women who glance at you, whispering to each other before moving on.'
 			'You blush furiously at the attention, both his and the other models.'
 			act'Continue':
-				if bmi_calc < 25 or hotcat >= 6:
+				if pcs_bmi < 25 or hotcat >= 6:
 					gt'foto','job_offer'
 				else
 					gt'foto','job_decline'
@@ -627,7 +627,7 @@ if $ARGS[0] = 'job_decline':
 			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/foto.jpg"></center>'
 			'You glumly pick your clothes up off the floor and get dressed before leaving. As you do, you stop at the door and look back in.'
 			'<i>Is this it for me? Am I ever going to be able to lose enough weight to work here?</i>'
-			foto_weight = bmi_calc
+			foto_weight = pcs_bmi
 			foto_cupsize = tits
 			gs 'clothing', 'wear_last_worn'
 			gs 'underwear', 'wear'
@@ -640,7 +640,7 @@ if $ARGS[0] = 'job_decline':
 			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/foto.jpg"></center>'
 			'You nod at him, feeling a bit dejected but more determined than ever. You get dressed with purpose and head to the door. As you do, you think to yourself...'
 			'<i>I will be able to do this! I''ll get in shape and I''ll work here one day! I''m not going to lose my shot at this!</i>'
-			foto_weight = bmi_calc
+			foto_weight = pcs_bmi
 			foto_cupsize = tits
 			gs 'clothing', 'wear_last_worn'
 			gs 'underwear', 'wear'

+ 1 - 1
locations/gadhouse.qsrc

@@ -305,7 +305,7 @@ if $ARGS[0] = 'main':
 	*nl
 	'A fairly simple cottage in the village of Gadukino which your grandparents call home. In the main room there is a huge <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> (where you can choose outfits and organize your clothing), and a <a href="exec:gad = 1 & gt ''bed'', ''start''">bed</a> where you can rest. The bed is more comfortable than it looks.'
 	'There is an old <a href="exec:gt ''TV'',''gad''">television</a> in the living room. It''s positioned next to a body length <a href="exec:gt ''mirror'', ''start''">mirror</a>.'
-	'You can check your weight on your grandma''s old mechanical <a href="exec:msg ''<center>Your weight is <<pcs_weight>> kg<br>Your body mass index (BMI) is <<bmi_calc>>.<br><<$bmi_desc>></center>''">scales</a>.'
+	'You can check your weight on your grandma''s old mechanical <a href="exec:msg ''<center>Your weight is <<pcs_weight>> kg<br>Your body mass index (BMI) is <<pcs_bmi>>.<br><<$bmi_desc>></center>''">scales</a>.'
 
 	if hour < 8:
 		temp = rand(0,9)

+ 246 - 206
locations/gschool_coolkid_chats.qsrc

@@ -7,7 +7,7 @@ if $ARGS[0] = 'dimka':
 	gs 'npc_relationship', 'modify', 'A1', 'like'
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big1.jpg"></center>'
-	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
+
 	if dimka_debt > 0:
 		cla
 		'You walk up to Dimka and the first thing he does is pull you aside. "Do you have my money?"'
@@ -36,77 +36,87 @@ if $ARGS[0] = 'dimka':
 			end
 			act 'Go with Dimka': gt 'gschool_coolkid_chats', 'dimka_sex'
 		end
-	elseif DimaRudeQW > 0 and DimaRudeBlock = 0:
-		'Dimka looks into your eyes with a disinterested glare. "Whatever. After school, we''re going to my place. I''ll wait for you by the entrance."'
-	elseif (dimaRevenge = 6 and (dimaRevChoice = 3 or dimaRevChoice = 5 or dimaRevChoice = 6)) or (dimaRevenge = 7 and dimaRevChoice = 2) or (dimaRevenge = 8 and (dimaRevChoice = 1 or dimaRevChoice = 4)):
-		'As you walk up he glares at you. "What the fuck do you want slut?"'
-		'You sigh. "Look, I know a lot has happened between us, but I thought we could leave it in the past and just be friends or something."'
-		'He stares at you blankly before shrugging. "Whatever." The two of you make small talk, but you get the feeling he is planning something.'
-	elseif fame['pav_slut'] >= 200:
-		gs 'npc_relationship', 'modify', 'A1', 'dislike'
-		if npc_rel['A1'] >= 70:
-			'Dimka sees you approaching and gives you a blank stare, his gaze cold and unblinking. When you get close, he steps closer and hisses to you so the others can''t overhear him. "Don''t walk up to me at school like this! I have a reputation to protect." He then pushes you away and speaks loudly enough for everyone to hear him. "Get lost slut! No one wants you here." He continues to stare you down until you finally leave.'
-		else
-			'Dimka sees you approaching and gives you a blank stare, his gaze cold and unblinking. "Do you really think I would talk to a whore like you?" he dryly states. He continues to stare you down until you finally leave.'
-		end
-	elseif grupTipe = 1:
-		if npc_rel['A1'] >= 50:
-			'"Just the person I was hoping to see!" he smiles. "Take a look at this." He pulls out his phone and shows you some photos from his latest trip to Moscow. "You would''ve loved it out there. It really made me realize we''re wasting away out here in a place like this." You then chat about the other places he has visited.'
-			if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
-		elseif npc_rel['A1'] <= 20:
-			'"You seem to have the wrong idea about me <<$pcs_nickname>>." Dimka holds out his hand to keep you from getting any closer. "Just because we run in the same social circle doesn''t mean we''re friends."'
-			'You can''t help but scoff and roll your eyes. "Who said I want to be friends? You just looked lonely standing over here by yourself. I was just trying to be nice." You trade a few more barbs back and forth.'
-		else
-			'Dimka is willing to entertain you for a bit, occasionally taking part in the conversation but letting you do most of the talking. "Hey, Bella!" he calls as he spots her walking by. "Sorry, I hope you don''t mind." He follows after her before you can even reply. At least he let you talk to him.'
-		end
-	elseif grupTipe = 2:
-		if npc_rel['A1'] >= 50:
-			'"Have I shown you my photos from my last trip?" he smiles. "Take a look at this." He pulls out his phone and shows you some photos from his latest trip to Moscow. "You would''ve loved it out there. It really made me realize we''re wasting away out here in a place like this." You then chat about the other places he has visited.'
-			if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
-		elseif npc_rel['A1'] <= 20:
-			'Dimka looks down at you with a condescending smile. "What do you want?" he asks, maintaining his "friendly" appearance in front of everyone.'
-			'"I just wanted to say hi is all," you reply.'
-			'He looks around like this is a common burden. "Of course you did, everyone does." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
-		else
-			'Dimka is willing to entertain you for a bit, occasionally taking part in the conversation but letting you do most of the talking. "Hey, Bella!" he calls as he spots her walking by. "Sorry, I hope you don''t mind." He follows after her before you can even reply. At least he let you talk to him.'
-		end
-	elseif grupTipe = 3:
-		if npc_rel['A1'] >= 60:
-			'Dimka greets you with a friendly smile, making room for you in the group made up of Bella, Igor and a few other students. Some of them give you an odd look, obviously not sure why you''re here, but Dimka makes you feel welcome. "Relax, she doesn''t have the plague," he playfully chides everyone and you are soon engaged in a conversation with Dimka.'
-			if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
-		elseif npc_rel['A1'] <= 20:
-			'Dimka looks down at you with a condescending smile. "You get lost loser? Shouldn''t you be off pretending to be an elf or something?" he asks with a charming smile on his face.'
-			'"I just wanted to say hi is all," you reply.'
-			'He looks around like this is a common burden. "Of course you did, everyone does. Now that you have, why don''t you go back to your own kind?" You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
-		else
-			'Dimka looks down at you with a condescending smile. "What do you want?" he asks, maintaining his "friendly" appearance in front of everyone.'
-			'"I just wanted to say hi is all," you reply.'
-			'He looks around like this is a common burden. "Of course you did, everyone does." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
-		end
-	elseif grupTipe = 4:
-		if npc_rel['A1'] >= 60:
-			'Dimka greets you with a friendly smile, making room for you in the group made up of Bella, Igor and a few other students. Some of them give you an odd look, obviously not sure why you''re here, but Dimka makes you feel welcome. "Relax, she doesn''t have the plague," he playfully chides everyone and you are soon engaged in a conversation with Dimka.'
-			if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
-		elseif npc_rel['A1'] <= 20:
-			'Dimka looks down at you with a condescending smile. "What do you want? We don''t have any drugs and none of us want whatever it is you''re selling," he remarks, maintaining his "friendly" appearance in front of everyone.'
-			'"I just wanted to say hi is all," you reply.'
-			'He looks around like this is a common burden. "Of course you did, everyone does. Now go away before you ruin everyone''s day with your dreadful attempt at fashion." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
-		else
-			'Dimka looks down at you with a condescending smile. "What do you want? Maybe looking for some fashion advice?" he asks, maintaining his "friendly" appearance in front of everyone.'
-			'"I just wanted to say hi is all," you reply.'
-			'He looks around like this is a common burden. "Of course you did, everyone does. Now that I''ve made your day you can go do... whatever it is you people do." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
-		end
 	else
-		gs 'npc_relationship', 'modify', 'A1', 'dislike'
-		if npc_rel['A1'] >= 70:
-			'As you walk up, he gives a slightly disgusted look like he just smelt something bad. "Come to see how your betters look?"'
-			'You sigh. "I just wanted to say hi."'
-			'He laughs and looks at some of the others, who laugh in turn. "Of course you would, how could we expect someone like you to know the rules of polite society? I mean really. Very well. You''ve had your moment, now please go." He and the others proceed to ignore you.'
+		if DimaRudeQW > 0 and DimaRudeBlock = 0:
+			'Dimka looks into your eyes with a disinterested glare. "Whatever. After school, we''re going to my place. I''ll wait for you by the entrance."'
 		else
-			'He glares at you as you approach. "What the fuck do you want, loser?"'
-			'You sigh. "I just wanted to say hi."'
-			'He shakes his head. "Let me make this clear. No one wants you around, so why don''t you do something useful for a change and go home and hang yourself or something and make the world a better place?" He starts laughing, along with several of the others.'
+			if (dimaRevenge = 6 and (dimaRevChoice = 3 or dimaRevChoice = 5 or dimaRevChoice = 6)) or (dimaRevenge = 7 and dimaRevChoice = 2) or (dimaRevenge = 8 and (dimaRevChoice = 1 or dimaRevChoice = 4)):
+				'As you walk up he glares at you. "What the fuck do you want slut?"'
+				'You sigh. "Look, I know a lot has happened between us, but I thought we could leave it in the past and just be friends or something."'
+				'He stares at you blankly before shrugging. "Whatever." The two of you make small talk, but you get the feeling he is planning something.'
+			else
+				if fame['pav_slut'] >= 200:
+					gs 'npc_relationship', 'modify', 'A1', 'dislike'
+					if npc_rel['A1'] >= 70:
+						'Dimka sees you approaching and gives you a blank stare, his gaze cold and unblinking. When you get close, he steps closer and hisses to you so the others can''t overhear him. "Don''t walk up to me at school like this! I have a reputation to protect." He then pushes you away and speaks loudly enough for everyone to hear him. "Get lost slut! No one wants you here." He continues to stare you down until you finally leave.'
+					else
+						'Dimka sees you approaching and gives you a blank stare, his gaze cold and unblinking. "Do you really think I would talk to a whore like you?" he dryly states. He continues to stare you down until you finally leave.'
+					end
+				else
+					if grupTipe = 1:
+						if npc_rel['A1'] >= 50:
+							'"Just the person I was hoping to see!" he smiles. "Take a look at this." He pulls out his phone and shows you some photos from his latest trip to Moscow. "You would''ve loved it out there. It really made me realize we''re wasting away out here in a place like this." You then chat about the other places he has visited.'
+							if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
+						elseif npc_rel['A1'] <= 20:
+							'"You seem to have the wrong idea about me <<$pcs_nickname>>." Dimka holds out his hand to keep you from getting any closer. "Just because we run in the same social circle doesn''t mean we''re friends."'
+							'You can''t help but scoff and roll your eyes. "Who said I want to be friends? You just looked lonely standing over here by yourself. I was just trying to be nice." You trade a few more barbs back and forth.'
+						else
+							'Dimka is willing to entertain you for a bit, occasionally taking part in the conversation but letting you do most of the talking. "Hey, Bella!" he calls as he spots her walking by. "Sorry, I hope you don''t mind." He follows after her before you can even reply. At least he let you talk to him.'
+						end
+					elseif grupTipe = 2:
+						if npc_rel['A1'] >= 50:
+							'"Have I shown you my photos from my last trip?" he smiles. "Take a look at this." He pulls out his phone and shows you some photos from his latest trip to Moscow. "You would''ve loved it out there. It really made me realize we''re wasting away out here in a place like this." You then chat about the other places he has visited.'
+							if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
+						elseif npc_rel['A1'] <= 20:
+							'Dimka looks down at you with a condescending smile. "What do you want?" he asks, maintaining his "friendly" appearance in front of everyone.'
+							'"I just wanted to say hi is all," you reply.'
+							'He looks around like this is a common burden. "Of course you did, everyone does." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
+						else
+							'Dimka is willing to entertain you for a bit, occasionally taking part in the conversation but letting you do most of the talking. "Hey, Bella!" he calls as he spots her walking by. "Sorry, I hope you don''t mind." He follows after her before you can even reply. At least he let you talk to him.'
+						end
+					elseif grupTipe = 3:
+						if npc_rel['A1'] >= 60:
+							'Dimka greets you with a friendly smile, making room for you in the group made up of Bella, Igor and a few other students. Some of them give you an odd look, obviously not sure why you''re here, but Dimka makes you feel welcome. "Relax, she doesn''t have the plague," he playfully chides everyone and you are soon engaged in a conversation with Dimka.'
+							if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
+						elseif npc_rel['A1'] <= 20:
+							'Dimka looks down at you with a condescending smile. "You get lost loser? Shouldn''t you be off pretending to be an elf or something?" he asks with a charming smile on his face.'
+							'"I just wanted to say hi is all," you reply.'
+							'He looks around like this is a common burden. "Of course you did, everyone does. Now that you have, why don''t you go back to your own kind?" You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
+						else
+							'Dimka looks down at you with a condescending smile. "What do you want?" he asks, maintaining his "friendly" appearance in front of everyone.'
+							'"I just wanted to say hi is all," you reply.'
+							'He looks around like this is a common burden. "Of course you did, everyone does." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
+						end
+					elseif grupTipe = 4:
+						if npc_rel['A1'] >= 60:
+							'Dimka greets you with a friendly smile, making room for you in the group made up of Bella, Igor and a few other students. Some of them give you an odd look, obviously not sure why you''re here, but Dimka makes you feel welcome. "Relax, she doesn''t have the plague," he playfully chides everyone and you are soon engaged in a conversation with Dimka.'
+							if dimarudorient = 1:act 'Ask for some pale lady': gt 'gschool_coolkid_chats', 'dim_drugs'
+						elseif npc_rel['A1'] <= 20:
+							'Dimka looks down at you with a condescending smile. "What do you want? We don''t have any drugs and none of us want whatever it is you''re selling," he remarks, maintaining his "friendly" appearance in front of everyone.'
+							'"I just wanted to say hi is all," you reply.'
+							'He looks around like this is a common burden. "Of course you did, everyone does. Now go away before you ruin everyone''s day with your dreadful attempt at fashion." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
+						else
+							'Dimka looks down at you with a condescending smile. "What do you want? Maybe looking for some fashion advice?" he asks, maintaining his "friendly" appearance in front of everyone.'
+							'"I just wanted to say hi is all," you reply.'
+							'He looks around like this is a common burden. "Of course you did, everyone does. Now that I''ve made your day you can go do... whatever it is you people do." You try talking to him, but he acts like he is barely tolerating you, like a Tsar might a peasant in his court.'
+						end
+					else
+						gs 'npc_relationship', 'modify', 'A1', 'dislike'
+						if npc_rel['A1'] >= 70:
+							'As you walk up, he gives a slightly disgusted look like he just smelt something bad. "Come to see how your betters look?"'
+							'You sigh. "I just wanted to say hi."'
+							'He laughs and looks at some of the others, who laugh in turn. "Of course you would, how could we expect someone like you to know the rules of polite society? I mean really. Very well. You''ve had your moment, now please go." He and the others proceed to ignore you.'
+						else
+							'He glares at you as you approach. "What the fuck do you want, loser?"'
+							'You sigh. "I just wanted to say hi."'
+							'He shakes his head. "Let me make this clear. No one wants you around, so why don''t you do something useful for a change and go home and hang yourself or something and make the world a better place?" He starts laughing, along with several of the others.'
+						end
+					end
+				end
+			end
 		end
+
+		act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 	end
 end
 
@@ -402,6 +412,7 @@ if $ARGS[0] = 'igor':
 			'He seems a bit confused. "Oh..." he is all he says as he looks past you and waves at someone. "Sorry, I''ve got to go." He rushes way from you, unsure if he was actually waving at anyone and think he was just trying to get away from you.'
 		end
 	end
+	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 end
 
 if $ARGS[0] = 'igor_peg':
@@ -468,150 +479,170 @@ if $ARGS[0] = 'katja':
 	menu_off = 1
 	gs 'npc_relationship', 'modify', 'A14', 'like'
 	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
-	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
-	if npc_sex['A14'] > 0 and $pantyworntype = 'none' and PCloSkirt > 1 and katjaQW['no_panties_day'] ! daystart:
-		act 'Show her you are not wearing panties.': gt 'Katja_tanga', 'school'
-	end
-	if katjaQW['QWstage'] > 2:
-		if katjaQW['Horny'] < 20:
-			'Katja looks calm and stoic.'
-		elseif katjaQW['Horny'] < 40:
-			'You see a naughty twinkle in Katja''s eyes.'
-		elseif katjaQW['Horny'] < 60:
-			'Katja has a faint blush on her cheeks as she looks at you mischievously.'
-		elseif katjaQW['Horny'] < 80:
-			'Katja is blushing fairly obviously and looks at you longingly.'
-		else
-			'Katja''s face is flushed bright red and her chest is heaving from her heavy breathing. She''s idly rubbing her thighs against one another while you talk.'
-		end
-	end
-	if katjaQW['drunk_help'] = 1:
-		act 'Thank her for taking you home':
-			*clr & cla
-			gs 'npc_relationship', 'modify', 'A14', 'like'
-			katjaQW['drunk_help'] = 0
-			gs 'stat'
-			'<center><b><font color="maroon"><<$npc_firstname[''A14'']>> <<$npc_lastname[''A14'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
-			'You approach Katja and thank her for taking you home from the disco when you were drunk and she gives you a knowing smile. "Don''t mention it <<$pcs_nickname>>! You really shouldn''t get that drunk again though. It could end badly. Some of the guys there are real pigs..." she says. "Do you want to hang out after school? We could do our homework together?"'
-			'"Sure, why not?" you reply.'
-			act 'Time for the next class': gt 'gschool_lessons', 'short_break'
-		end
-	end
-	if katjaQW['QWstage'] > 2 and katjaQW['knows_masterbation'] + katjaQW['knows_BJ'] + katjaQW['knows_sex'] + katjaQW['knows_anal']+ katjaQW['knows_cuni'] >= 2:
-		act 'Kiss Katja':
-			*clr & cla
-			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/tanga_kiss.jpg"></center>'
-			'You lean in to kiss Katja.'
-			if katjaQW['horny'] < 30:
-				cla & *nl
-				'She pulls away from you as you try and kiss her, looking around to see if anyone seen you. "Not here and not now."'
-				act 'Time for the next class': gt 'gschool_lessons', 'short_break'
-			else
-				*clr & cla
-				'<center><b><font color="maroon"><<$npc_firstname[''A14'']>> <<$npc_lastname[''A14'']>></font></b></center>'
-				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
-				'You slowly lean in towards Katja to kiss her. Unable to resist, Katja closes her eyes, slowly opens her mouth and leans in to meet your kiss.'
-				gs 'katjaEvDin', 'kiss_events'
-			end
-		end
-	end
+
 	if rand(1,2) = 1 and katjaQW['school_sex'] = 1 and katjaQW['horny'] >= 40:
-		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/tanga_kiss.jpg"></center>'
 		'Katja slowly leans in towards you, almost closing her eyes and slowly opening her mouth. Unable to resist, you lean in and meet her with a kiss.'
 		gs 'katjaEvDin', 'kiss_events'
-	elseif katjaQW['QWstage'] > 1 and pcs_makeup <= 1:
-		'Katja looks at you with a smile. "<<$pcs_nickname>>, I bet you would look great with a little make-up on you! What do you say?"'
-		act 'Let her put makeup on you':
-			*clr & cla
-			pcs_hairbsh = 1
-			gs 'stat'
-			'<center><b><font color="maroon"><<$npc_firstname[''A14'']>> <<$npc_lastname[''A14'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
-			'Katja happily grins as she quickly straightens your hair. "What do you want? A light touch-up, some normal make-up or shall I just shovel it on?"'
-			act 'Light touch-up':
-				cla
-				pcs_makeup = 2
-				'Katja subtly applies some neutral tones, with a light application of makeup to bring out your natural beauty.'
-				if katjaQW['QWstage'] > 2:katjaQW['horny'] += 5*(1 + npc_sex['A14']) & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
-				act 'Time for the next class': gt 'gschool_lessons', 'short_break'
-				act 'Keep talking to her': gt 'gschool_coolkid_chats', 'katja'
-			end
-			act 'Normal make-up':
-				cla
-				pcs_makeup = 3
-				'Katja applies some mildly vibrate tones and colors of makeup to cover your minor imperfections and enhance your best features.'
-				if katjaQW['QWstage'] > 2:katjaQW['horny'] += 5*(1 + npc_sex['A14']) & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
-				act 'Time for the next class': gt 'gschool_lessons', 'short_break'
-				act 'Keep talking to her': gt 'gschool_coolkid_chats', 'katja'
+	else
+		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
+
+		if npc_sex['A14'] > 0 and $pantyworntype = 'none' and PCloSkirt > 1 and katjaQW['no_panties_day'] ! daystart:
+			act 'Show her you are not wearing panties.': gt 'Katja_tanga', 'school'
+		end
+
+		if katjaQW['QWstage'] > 2:
+			if katjaQW['Horny'] < 20:
+				'Katja looks calm and stoic.'
+			elseif katjaQW['Horny'] < 40:
+				'You see a naughty twinkle in Katja''s eyes.'
+			elseif katjaQW['Horny'] < 60:
+				'Katja has a faint blush on her cheeks as she looks at you mischievously.'
+			elseif katjaQW['Horny'] < 80:
+				'Katja is blushing fairly obviously and looks at you longingly.'
+			else
+				'Katja''s face is flushed bright red and her chest is heaving from her heavy breathing. She''s idly rubbing her thighs against one another while you talk.'
 			end
-			act 'Heavy make-up':
-				cla
-				pcs_makeup = 4
-				'Katja applies some deeper, richer shades of makeup that are thick enough to cover most imperfections while drawing attention to your eyes and lips.'
-				if katjaQW['QWstage'] > 2:katjaQW['horny'] += 5*(1 + npc_sex['A14']) & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
+		end
+
+		if katjaQW['drunk_help'] = 1:
+
+			act 'Thank her for taking you home':
+				*clr & cla
+				gs 'npc_relationship', 'modify', 'A14', 'like'
+				katjaQW['drunk_help'] = 0
+				gs 'stat'
+				'<center><b><font color="maroon"><<$npc_firstname[''A14'']>> <<$npc_lastname[''A14'']>></font></b></center>'
+				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
+				'You approach Katja and thank her for taking you home from the disco when you were drunk and she gives you a knowing smile. "Don''t mention it <<$pcs_nickname>>! You really shouldn''t get that drunk again though. It could end badly. Some of the guys there are real pigs..." she says. "Do you want to hang out after school? We could do our homework together?"'
+				'"Sure, why not?" you reply.'
 				act 'Time for the next class': gt 'gschool_lessons', 'short_break'
-				act 'Keep talking to her': gt 'gschool_coolkid_chats', 'katja'
 			end
 		end
-	elseif fame['pav_slut'] >= 200:
-		if npc_rel['A14'] >= 50:
-			'"Hey Katja, I was wondering if you had any recommendations for lipstick that won''t smear? Things can get kind of messy when I''m... you know." You press your tongue against the inside of your cheek to imitate sucking cock.'
-			'She looks at you in confusion for a few seconds before she gasps softly. "That... that''s gross!" she huffs. "How can you even ask me something like that?!"'
-		elseif npc_rel['A14'] <= 20:
-			'Katja looks around nervously when she sees you approaching. She catches sight of her sister and dashes over to her, clearly wanting to avoid speaking to you.'
-		else
-			'Katja doesn''t look too happy to see you and spends most of your awkwardly one sided conversation fumbling as she looks for a way out. As soon as the bell rings, she immediately dashes off.'
-		end
-	elseif grupTipe = 1:
-		if npc_rel['A14'] >= 50:
-			'You spend some time hanging around Kat''s locker, laughing and joking as she tells you some personal stories about Vicky. "She had been drinking all night and had to go, but all the stalls were full, so she drags me out behind the community center to go pee behind a bush." She breaks out into a fit of giggles.'
-			'"She was so drunk, as she was squatting, she stumbled and fell into her own pee!"'
-		elseif npc_rel['A14'] <= 20:
-			'You smile at her as you approach. "Hey Katja, trying a new lipstick out? That color looks pretty on you." '
-			'She smiles sheepishly at your compliment. "Yeah... Just wanted to try something a little different..." she answers quietly. The conversation doesn''t really go anywhere as she keeps her answers short or doesn''t say anything at all. At least she''s willing to actually talk to you.'
-		else
-			'With Katja being a quiet girl, she doesn''t do much talking, but she seems to enjoy some lighthearted banter with you, so long as you''re doing most of the talking. You get the feeling that if you were closer, she''d open up more, but for now you''ll have to settle with this.'
-		end
-	elseif grupTipe = 2:
-		if npc_rel['A14'] >= 50:
-			'You approach Katja and have a lively conversation where you exchange funny stories about Vanya. "And that''s how my sister fell in love with the biggest clown in school!" she laughs with a snort.'
-                        '"And I wouldn''t change him for the world!" Vicky adds with a smile.'
-		elseif npc_rel['A14'] <= 20:
-			'Katja looks around nervously when she sees you approaching. "Why do you want to talk to me? I''m not sporty like you or my sister or Albina. Could you go and....speak with someone else please?"'
-		else
-			'With Katja being a quiet girl, she doesn''t do much talking, but she seems to enjoy some lighthearted banter with you, so long as you''re doing most of the talking. You get the feeling that if you were closer, she''d open up more, but for now you''ll have to settle with this.'
-		end
-	elseif grupTipe = 3:
-		if npc_rel['A14'] >= 50:
-			'Katja smiles as you approach and you have a lively conversation about your favorite subjects and her plans for going to university after school. "I want to become a teacher. Helping others achieve their potential just sounds like the perfect job!" she gleefully states.'
-		elseif npc_rel['A14'] <= 20:
-			'Katja doesn''t look too happy to see you and your conversation doesn''t really go anywhere as she keeps her answers short or doesn''t say anything at all. At least she''s willing to actually talk to you.'
-		else
-			'Altough Katja is happy to see you, she doesn''t do much talking. You get the feeling that she''d open up more if you were closer, but for now you''ll have to settle with this.'
-		end
-	elseif grupTipe = 4:
-		if npc_rel['A14'] >= 50:
-			'Katja takes a surprising interest in what you and your fellow gopniks get up to outside of school and listens carefully when you answer her numerous questions.'
-		elseif npc_rel['A14'] <= 20:
-			'Katja looks around nervously when she sees you approaching. She catches sight of her sister and dashes over to hide behind her, clearly scared of you and wanting to avoid speaking to you.'
-		else
-			'With Katja being a quiet girl, she doesn''t do much talking and often avoids eye contact with you. You get the feeling she''d open up more if you were closer, but for now you''ll have to settle with this.'
+
+		if katjaQW['QWstage'] > 2 and katjaQW['knows_masterbation'] + katjaQW['knows_BJ'] + katjaQW['knows_sex'] + katjaQW['knows_anal']+ katjaQW['knows_cuni'] >= 2:
+
+			act 'Kiss Katja':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/tanga_kiss.jpg"></center>'
+				'You lean in to kiss Katja.'
+				if katjaQW['horny'] < 30:
+					cla & *nl
+					'She pulls away from you as you try and kiss her, looking around to see if anyone seen you. "Not here and not now."'
+					act 'Time for the next class': gt 'gschool_lessons', 'short_break'
+				else
+					*clr & cla
+					'<center><b><font color="maroon"><<$npc_firstname[''A14'']>> <<$npc_lastname[''A14'']>></font></b></center>'
+					'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
+					'You slowly lean in towards Katja to kiss her. Unable to resist, Katja closes her eyes, slowly opens her mouth and leans in to meet your kiss.'
+					gs 'katjaEvDin', 'kiss_events'
+				end
+			end
 		end
-	else
-		if npc_rel['A14'] >= 50:
-			'Despite the judgmental stares and insults the other cool kids and jocks throw at you, Katja makes the time to briefly speak with you before Vicky pulls her away to "save" her from the "social embarrassment" of speaking with you.'
-		elseif npc_rel['A14'] <= 20:
-			'Katja looks around nervously when she sees you approaching. She catches sight of her sister and dashes over to her, clearly wanting to avoid speaking to you.'
+
+		if katjaQW['QWstage'] > 1 and pcs_makeup <= 1:
+			'Katja looks at you with a smile. "<<$pcs_nickname>>, I bet you would look great with a little make-up on you! What do you say?"'
+
+			act 'Let her put makeup on you':
+				*clr & cla
+				pcs_hairbsh = 1
+				gs 'stat'
+				'<center><b><font color="maroon"><<$npc_firstname[''A14'']>> <<$npc_lastname[''A14'']>></font></b></center>'
+				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big14.jpg"></center>'
+				'Katja happily grins as she quickly straightens your hair. "What do you want? A light touch-up, some normal make-up or shall I just shovel it on?"'
+
+				act 'Light touch-up':
+					cla
+					pcs_makeup = 2
+					'Katja subtly applies some neutral tones, with a light application of makeup to bring out your natural beauty.'
+					if katjaQW['QWstage'] > 2:katjaQW['horny'] += 5*(1 + npc_sex['A14']) & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
+
+					act 'Time for the next class': gt 'gschool_lessons', 'short_break'
+					act 'Keep talking to her': gt 'gschool_coolkid_chats', 'katja'
+				end
+
+				act 'Normal make-up':
+					cla
+					pcs_makeup = 3
+					'Katja applies some mildly vibrate tones and colors of makeup to cover your minor imperfections and enhance your best features.'
+					if katjaQW['QWstage'] > 2:katjaQW['horny'] += 5*(1 + npc_sex['A14']) & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
+
+					act 'Time for the next class': gt 'gschool_lessons', 'short_break'
+					act 'Keep talking to her': gt 'gschool_coolkid_chats', 'katja'
+				end
+
+				act 'Heavy make-up':
+					cla
+					pcs_makeup = 4
+					'Katja applies some deeper, richer shades of makeup that are thick enough to cover most imperfections while drawing attention to your eyes and lips.'
+					if katjaQW['QWstage'] > 2:katjaQW['horny'] += 5*(1 + npc_sex['A14']) & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
+
+					act 'Time for the next class': gt 'gschool_lessons', 'short_break'
+					act 'Keep talking to her': gt 'gschool_coolkid_chats', 'katja'
+				end
+			end
 		else
-			'With Katja being a quiet girl, she doesn''t do much talking, the judgmental stares of the other cool kids only making things worse for her. You get the feeling she''d be more comfortable speaking with you if you were closer to her or more popular with your peers.'
+			if fame['pav_slut'] >= 200:
+				if npc_rel['A14'] >= 50:
+					'"Hey Katja, I was wondering if you had any recommendations for lipstick that won''t smear? Things can get kind of messy when I''m... you know." You press your tongue against the inside of your cheek to imitate sucking cock.'
+					'She looks at you in confusion for a few seconds before she gasps softly. "That... that''s gross!" she huffs. "How can you even ask me something like that?!"'
+				elseif npc_rel['A14'] <= 20:
+					'Katja looks around nervously when she sees you approaching. She catches sight of her sister and dashes over to her, clearly wanting to avoid speaking to you.'
+				else
+					'Katja doesn''t look too happy to see you and spends most of your awkwardly one sided conversation fumbling as she looks for a way out. As soon as the bell rings, she immediately dashes off.'
+				end
+			else
+				if grupTipe = 1:
+					if npc_rel['A14'] >= 50:
+						'You spend some time hanging around Kat''s locker, laughing and joking as she tells you some personal stories about Vicky. "She had been drinking all night and had to go, but all the stalls were full, so she drags me out behind the community center to go pee behind a bush." She breaks out into a fit of giggles.'
+						'"She was so drunk, as she was squatting, she stumbled and fell into her own pee!"'
+					elseif npc_rel['A14'] <= 20:
+						'You smile at her as you approach. "Hey Katja, trying a new lipstick out? That color looks pretty on you." '
+						'She smiles sheepishly at your compliment. "Yeah... Just wanted to try something a little different..." she answers quietly. The conversation doesn''t really go anywhere as she keeps her answers short or doesn''t say anything at all. At least she''s willing to actually talk to you.'
+					else
+						'With Katja being a quiet girl, she doesn''t do much talking, but she seems to enjoy some lighthearted banter with you, so long as you''re doing most of the talking. You get the feeling that if you were closer, she''d open up more, but for now you''ll have to settle with this.'
+					end
+				elseif grupTipe = 2:
+					if npc_rel['A14'] >= 50:
+						'You approach Katja and have a lively conversation where you exchange funny stories about Vanya. "And that''s how my sister fell in love with the biggest clown in school!" she laughs with a snort.'
+									'"And I wouldn''t change him for the world!" Vicky adds with a smile.'
+					elseif npc_rel['A14'] <= 20:
+						'Katja looks around nervously when she sees you approaching. "Why do you want to talk to me? I''m not sporty like you or my sister or Albina. Could you go and....speak with someone else please?"'
+					else
+						'With Katja being a quiet girl, she doesn''t do much talking, but she seems to enjoy some lighthearted banter with you, so long as you''re doing most of the talking. You get the feeling that if you were closer, she''d open up more, but for now you''ll have to settle with this.'
+					end
+				elseif grupTipe = 3:
+					if npc_rel['A14'] >= 50:
+						'Katja smiles as you approach and you have a lively conversation about your favorite subjects and her plans for going to university after school. "I want to become a teacher. Helping others achieve their potential just sounds like the perfect job!" she gleefully states.'
+					elseif npc_rel['A14'] <= 20:
+						'Katja doesn''t look too happy to see you and your conversation doesn''t really go anywhere as she keeps her answers short or doesn''t say anything at all. At least she''s willing to actually talk to you.'
+					else
+						'Altough Katja is happy to see you, she doesn''t do much talking. You get the feeling that she''d open up more if you were closer, but for now you''ll have to settle with this.'
+					end
+				elseif grupTipe = 4:
+					if npc_rel['A14'] >= 50:
+						'Katja takes a surprising interest in what you and your fellow gopniks get up to outside of school and listens carefully when you answer her numerous questions.'
+					elseif npc_rel['A14'] <= 20:
+						'Katja looks around nervously when she sees you approaching. She catches sight of her sister and dashes over to hide behind her, clearly scared of you and wanting to avoid speaking to you.'
+					else
+						'With Katja being a quiet girl, she doesn''t do much talking and often avoids eye contact with you. You get the feeling she''d open up more if you were closer, but for now you''ll have to settle with this.'
+					end
+				else
+					if npc_rel['A14'] >= 50:
+						'Despite the judgmental stares and insults the other cool kids and jocks throw at you, Katja makes the time to briefly speak with you before Vicky pulls her away to "save" her from the "social embarrassment" of speaking with you.'
+					elseif npc_rel['A14'] <= 20:
+						'Katja looks around nervously when she sees you approaching. She catches sight of her sister and dashes over to her, clearly wanting to avoid speaking to you.'
+					else
+						'With Katja being a quiet girl, she doesn''t do much talking, the judgmental stares of the other cool kids only making things worse for her. You get the feeling she''d be more comfortable speaking with you if you were closer to her or more popular with your peers.'
+					end
+				end
+			end
 		end
+
+		act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 	end
 end
 
-
 if $ARGS[0] = 'Katjaproblems':
 	cls
 	menu_off = 1
@@ -804,31 +835,31 @@ if $ARGS[0] = 'lizaveta':
 		if npc_rel['A140'] >= 50:
 			'The perks of being a close friend of Liza go beyond just running in the same social circle. She tells you some gossip that no one else should know about.'
 			'"I heard from a little red bird that one time while Vicky was out partying at the community center, she couldn''t hold it in, so she went to do her business behind a bush, buuuut..." Liza drags it out to build a little suspense. "She was so drunk that she ended up falling into her own piss! Luckily Kat-- her friend, I mean, was there to take her home before anyone saw!"'
-			act 'Latest gossip': gt 'gschool_coolkid_chats', 'latest_gossip'
+			act 'Latest gossip': gt 'gschool_coolkid_chats', 'lizaveta_latest_gossip'
 		elseif npc_rel['A140'] <= 20:
 			'"You know, you really shouldn''t shit where you sleep." Lizaveta says while shaking her head disapprovingly.'
 			'"What? What is that supposed to mean?" you ask, but she just sighs.'
 			'"You''re dumber than I thought..." she mutters. You try to get an answer out of her, but she dances around your questions while talking to Bella.'
 		else
 			'You spend some time talking with Lizaveta, and for a while you manage to avoid talking about anything gossipy, but considering she''s the queen of it, it eventually devolves into some "He said, she said."'
-			act 'Latest gossip': gt 'gschool_coolkid_chats', 'latest_gossip'
+			act 'Latest gossip': gt 'gschool_coolkid_chats', 'lizaveta_latest_gossip'
 		end
 	elseif grupTipe = 2:
 		if npc_rel['A140'] >= 50:
 			'You would think that being close friends with Lizaveta would mean getting some exclusive gossip from her, but she keeps her lips sealed. "I know everyone likes to say I can''t keep my mouth shut, but even I need to have some secrets of my own." she winks.'
 			'"Oh come on!" you plead. "You gotta give me a little bit of something..."'
 			'With a dramatic sigh, Liza caves and shares some harmless, yet juicy gossip you hadn''t heard about until now.'
-			act 'Latest gossip': gt 'gschool_coolkid_chats', 'latest_gossip'
+			act 'Latest gossip': gt 'gschool_coolkid_chats', 'lizaveta_latest_gossip'
 		elseif npc_rel['A140'] <= 20:
 			'The conversation is stale and lifeless as Lizaveta taps away at her phone while you talk, only managing an occasional "Yeah..." or "Uh-huh..."'
 		else
 			'You spend some time talking with Lizaveta, and for a while you manage to avoid talking about anything gossipy, but considering she''s the queen of it, it eventually devolves into some "He said, she said."'
-			act 'Latest gossip': gt 'gschool_coolkid_chats', 'latest_gossip'
+			act 'Latest gossip': gt 'gschool_coolkid_chats', 'lizaveta_latest_gossip'
 		end
 	elseif grupTipe = 3:
 		if npc_rel['A140'] >= 50:
 			'When you sit on the floor next to Lizaveta, she smiles at you and the two of you are soon talking about a variety of subjects. However, she can''t help herself and soon starts asking you all sorts of questions about your fellow nerds. You can barely even get a word in edge wise as she pumps you for gossip. You can''t help yourself and start letting some stuff slip as the two of you talk.'
-			act 'Latest gossip': gt 'gschool_coolkid_chats', 'latest_gossip'
+			act 'Latest gossip': gt 'gschool_coolkid_chats', 'lizaveta_latest_gossip'
 		elseif npc_rel['A140'] <= 20:
 			'When you sit on the floor next to Lizaveta, she looks at you in shock and surprise. "Why are you sitting next to me, loser? Get away from me." Her outburst attracts the attention of the other cool kids and jocks around and now everyone is staring at you, making you feel very unwelcome. She continues to stare at you until you get up and leave.'
 		else
@@ -837,7 +868,7 @@ if $ARGS[0] = 'lizaveta':
 	elseif grupTipe = 4:
 		if npc_rel['A140'] >= 50:
 			'When you sit on the floor next to Lizaveta, she smiles at you and the two of you are soon talking about a variety of subjects. However, she can''t help herself and starts asking you all sorts of questions about your fellow gopniks. You can barely even get a word in edge wise as she pumps you for gossip. You can''t help yourself and start letting some stuff slip as the two of you talk.'
-			act 'Latest gossip': gt 'gschool_coolkid_chats', 'latest_gossip'
+			act 'Latest gossip': gt 'gschool_coolkid_chats', 'lizaveta_latest_gossip'
 		elseif npc_rel['A140'] <= 20:
 			'When you sit on the floor next to Lizaveta, she looks at you in shock and surprise before scooting away. "Why are you sitting next to me, freak? Get away from me." Her outburst attracts the attention of the other cool kids and jocks around and now everyone is staring at you, making you feel very unwelcome. She continues to stare at you until you get up and leave.'
 		else
@@ -851,6 +882,13 @@ if $ARGS[0] = 'lizaveta':
 			'When you sit on the floor next to Lizaveta, she looks at you in shock and surprise before scooting away. "What the fuck, loser? Who said you could leave your cave or wherever it is you hide and socialize with the other freaks?" Her outburst attracts the attention of the other cool kids and jocks around and many of them laugh at her comment. Everyone is staring at you and making you feel very unwelcome as she continues to stare at you until you get up and leave.'
 		end
 	end
+	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
+end
+
+if $ARGS[0] = 'lizaveta_latest_gossip':
+	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big140.jpg"></center>'
+	gs 'gschool_gossip', 'Lizaveta'
+	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 end
 
 if $ARGS[0] = 'marcus':
@@ -916,6 +954,7 @@ if $ARGS[0] = 'marcus':
 			'You walk up to Marcus and try to talk to him. He mostly ignores you, with only the occasional "uh-huh" for an answer. You notice the others giving you disgusted looks and he finally speaks up. "Look, I don''t mean to be rude, but we''re not friends and I don''t want to talk to you." You sigh and nod before walking away.'
 		end
 	end
+	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 end
 
 if $ARGS[0] = 'Marcus_Katja_talk':
@@ -925,7 +964,7 @@ if $ARGS[0] = 'Marcus_Katja_talk':
 	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big146.jpg"></center>'
 	'"So you know how we sometimes have fun together?" you ask him.'
 	'"Yeah?" he answers and you smile. "Well, I have this friend who have never been with a boy before but would like to try. So I was wondering if you were up for helping me give her an amazing first time? She''s '+iif( hotcat < hotcat_rating['A14'], 'even hotter that I am', 'totally hot')+' so you won''t regret it."'
-	'"Are you asking me if I want to have a threesome with two beautiful girls, with one of them even being a virgin?" he asks with a surprised look on his face. "Of course I''m up for this!" he exclaims as his face turns into a huge grin.' 
+	'"Are you asking me if I want to have a threesome with two beautiful girls, with one of them even being a virgin?" he asks with a surprised look on his face. "Of course I''m up for this!" he exclaims as his face turns into a huge grin.'
 	'"Great," you answer. "I''ll call you with her address when we are ready. But you have to be discrete, we don''t want any rumors spread around!" you tell him and he smiles. "Of course, I''m a gentleman and gentlemen never kiss and tell. I look forward to your call."'
 	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 end
@@ -1001,6 +1040,7 @@ if $ARGS[0] = 'andrey':
 		'"Hey, Andrey! How''s it been?" you ask with a small smile.'
 		'He gives you a slightly confused look as to why you''re talking to him. "Get lost, loser! No one wants to talk to you." He proceeds to ignore you and you can feel everyone else staring at you. Afraid someone might start picking on you, you quickly leave.'
 	end
+	act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 end
 
 if $ARGS[0] = 'mefodiy':

+ 8 - 8
locations/gschool_grounds.qsrc

@@ -519,10 +519,10 @@ if $ARGS[0] = 'SchoolRun':
 		wait 725
 
 		begminus = 0
-		if bmi_calc > 25: 
-			begminus = ((bmi_calc - 25)*4)
-		elseif bmi_calc < 18:
-			begminus = ((25 - bmi_calc)*6)
+		if pcs_bmi > 25: 
+			begminus = ((pcs_bmi - 25)*4)
+		elseif pcs_bmi < 18:
+			begminus = ((25 - pcs_bmi)*6)
 		end
         begresult = pcs_run - begminus
 		
@@ -631,10 +631,10 @@ if $ARGS[0] = 'SchoolRun2':
 		wait 725
 
 		begminus = 0
-		if bmi_calc > 25: 
-			begminus = ((bmi_calc - 25)*4)
-		elseif bmi_calc < 18:
-			begminus = ((25 - bmi_calc)*6)
+		if pcs_bmi > 25: 
+			begminus = ((pcs_bmi - 25)*4)
+		elseif pcs_bmi < 18:
+			begminus = ((25 - pcs_bmi)*6)
 		end
         begresult = pcs_run - begminus
 		

+ 1 - 0
locations/gschool_jock_chats.qsrc

@@ -340,6 +340,7 @@ if $ARGS[0] = 'albina':
 		else
 			'Albina is on her phone as you approach. She looks up at you before returning her attention to her phone and ignoring you. After a few seconds, she looks up at you again and stares in confusion. "What do you want loser?" She then laughs. "Wait, you want to talk to <i>me</i>? As if that will ever happen! Fuck off and go hang out with the other losers where you belong." She shoos you away with a motion of her hand before going back to her phone.'
 		end
+		act 'Time for the next class': gt 'gschool_lessons', 'short_break'
 	end
 end
 

+ 86 - 0
locations/hookup_sms.qsrc

@@ -0,0 +1,86 @@
+# hookup_sms
+
+$SMSFrM = '<table width=80%><tr><td collspan=2 bgcolor="#D4CEF9"><font color=black> '
+$SMSBkM = '</font></td><td width=10%></td></tr></table>'
+$SMSFrF = '<table width=80%><tr><td width=10%></td><td collspan=2 bgcolor=pink><font color=black>'
+$SMSBkF = '</font></td></tr></table>'
+
+if $ARGS[0] = 'start':
+	$menu_loc = 'hookup_sms'
+	$menu_arg = 'start'
+	menu_off = 0
+	$loc_arg = 'start'
+	minut += 2
+	gs 'stat'
+end
+
+$VM['0'] = 'Come over, I want to have sex'
+
+	$VF['0a'] = 'That is cool, which time?'
+		$VM['1a'] = 'Right now !'
+
+			$VF['1a'] = 'OK !'
+
+	$VF['0b'] = 'I''m busy right now. Can I come by at 8?'
+		$VM['1b'] = 'OK, but I cannot provide the dinner then!'
+
+			$VF['1b'] = 'That is OK, I will suck you dry'
+
+
+if $ARGS[0] = 'Add SMS':
+	$trialSMS  = $SMSFrM+$VM['0']+$SMSBkM
+	$trialSMS += '<table><tr><th> Reply</th></tr>'
+	$trialSMS += '<tr><td><a href="exec: gs ''hookup_sms'', ''V1'',SMSid">'+$VF['0a']+'</a></td></tr>'
+	$trialSMS += '<tr><td><a href="exec: gs ''hookup_sms'', ''V2'',SMSid">'+$VF['0b']+'</a></td></tr></table>'
+	gs 'telefon', 'add_sms', 'A1', $trialSMS
+end
+
+if $ARGS[0] = 'V1':
+	$trialSMS  = $SMSFrM+$VM[ '0']+$SMSBkM
+	$trialSMS += $SMSFrF+$VF['0a']+$SMSBkF
+	$SMSMessage[ARGS[1]] = $trialSMS
+	gs 'telefon', 'show_sms', ARGS[1]
+	wait 1000
+	$trialSMS += $SMSFrM+$VM['1a']+$SMSBkM
+	$trialSMS += '<table><tr><th> Reply</th></tr>'
+	$trialSMS += '<tr><td><a href="exec: gs ''hookup_sms'', ''V11'',SMSid">'+$VF['1a']+'</a></td></tr></table>'
+	$SMSMessage[ARGS[1]] = $trialSMS
+	gs 'telefon', 'show_sms', ARGS[1]
+end
+
+if $ARGS[0] = 'V11':
+	$trialSMS =  $SMSFrM+$VM[ '0']+$SMSBkM
+	$trialSMS += $SMSFrF+$VF['0a']+$SMSBkF
+	$trialSMS += $SMSFrM+$VM['1a']+$SMSBkM
+	$trialSMS += $SMSFrF+$VF['1a']+$SMSBkF
+	$SMSMessage[ARGS[1]] = $trialSMS
+	gs 'telefon', 'show_sms', ARGS[1]
+end
+
+if $ARGS[0] = 'V2':
+	$trialSMS  = $SMSFrM+$VM[ '0']+$SMSBkM
+	$trialSMS += $SMSFrF+$VF['0b']+$SMSBkF
+	$SMSMessage[ARGS[1]] = $trialSMS
+	gs 'telefon', 'show_sms', ARGS[1]
+	wait 1000
+	$trialSMS += $SMSFrM+$VM['1b']+$SMSBkM
+	$trialSMS += '<table><tr><th> Reply</th></tr>'
+	$trialSMS += '<tr><td><a href="exec: gs ''hookup_sms'', ''V21'',SMSid">'+$VF['1b']+'</a></td></tr></table>'
+	$SMSMessage[ARGS[1]] = $trialSMS
+	gs 'telefon', 'show_sms', ARGS[1]
+end
+
+if $ARGS[0] = 'V21':
+	$trialSMS  = $SMSFrM+$VM[ '0']+$SMSBkM
+	$trialSMS += $SMSFrF+$VF['0b']+$SMSBkF
+	$trialSMS += $SMSFrM+$VM['1b']+$SMSBkM
+	$trialSMS += $SMSFrF+$VF['1b']+$SMSBkF
+	$SMSMessage[ARGS[1]] = $trialSMS
+	gs 'telefon', 'show_sms', ARGS[1]
+end
+killvar '$trialSMS'
+killvar '$VF'
+killvar '$MF'
+
+
+--- hookup_sms ---------------------------------

+ 1 - 1
locations/intro_initialization.qsrc

@@ -101,7 +101,7 @@ nathcol = pcs_haircol
 pcs_pubecol = pcs_haircol & pcs_pubecol[1] = 1
 oldsavepcs_haircol = 1
 
-gs 'body_shape', 'initial'
+gs 'body', 'initial'
 
 !! Adding underwear and default shoes and assigning them
 

+ 1 - 1
locations/lover_change.qsrc

@@ -1098,7 +1098,7 @@ if $ARGS[0] = 'Figure':
 								salo = 20 * figurePrefMin + 1
 								if salo < 11: salo = 11
 
-								gs 'body_shape', 'softreset'
+								gs 'body', 'softreset'
 								!!'<<salocatnow>> is the value for salocatnow, the value for fat is <<fat>>, and the value for salo is <<salo>>.'
 								
 							if salocatnow > figurePrefMax:jump 'loopfatRemover'

+ 1 - 1
locations/obj_din.qsrc

@@ -121,7 +121,7 @@ if $ARGS[0] = 'menu_disabled': '<font color="red"><b>Menu is disabled for this e
 if $ARGS[0] = 'description':
 	*clr & cla
 	gs 'obj_din','chartabs'
-	gs 'body'
+	gs 'AppearanceSystem'
 	gs 'body_desc'
 	!'<center><img src="images/system/icons/description.png"><br></center>'
 	'<center><h1>Character Description</h1></center>'

+ 2 - 2
locations/pav_clinic.qsrc

@@ -162,7 +162,7 @@ if $ARGS[0] = '':
 							*clr & cla
 							money -= zubpay
 							minut += 60
-							gs 'body_shape', 'basebeautycalc', 1
+							gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 							gs 'stat'
 							if pcs_teeth > 0:
 								pcs_teeth = 0
@@ -180,7 +180,7 @@ if $ARGS[0] = '':
 							*clr & cla
 							karta -= zubpay
 							minut += 60
-							gs 'body_shape', 'basebeautycalc', 1
+							gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 							gs 'stat'
 							if pcs_teeth > 0:
 								pcs_teeth = 0

+ 1 - 1
locations/pav_lake.qsrc

@@ -243,7 +243,7 @@ if temper >= 15 and month >= 5 and month <= 9 and hour >= 6 and hour <= 20:
 		elseif PCloswimwear = 1:
 			if pcs_hips >= 110:
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/lake/lake.walk.bikini.fat0,1.jpg"></center>'
-			elseif bmi_calc > 24:
+			elseif pcs_bmi > 24:
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/lake/lake.walk.bikini.fat0,0.jpg"></center>'
 			else
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/lake/lake.walk.bikini0,'+rand(0,3)+'.jpg"></center>'

+ 1 - 1
locations/pav_market.qsrc

@@ -34,7 +34,7 @@ else
 	end
 end
 *nl
-'Pavlovsk''s modest train station, is near the Pavlovsk market Square. You can enter the central hall of the <a href="exec:minut += 3 & gt ''pav_train_hall''">train station</a>. Down the street from the train station is the <a href="exec:minut += 5 & gt ''gkafe''">Borislav''s cafe</a>' + iif(storyline = 1,' where your mother works','') + '. Also nearby is the small <a href="exec:minut += 3 & gt ''pav_station'', ''station_outside''">police station</a> of Pavlovsk. '
+'Pavlovsk''s modest train station, is near the Pavlovsk market Square. You can enter the central hall of the <a href="exec:minut += 3 & gt ''pav_train_hall''">train station</a>. Down the street from the train station is the <a href="exec:minut += 5 & gt ''gkafe''">Borislav''s cafe</a>' + iif(storyline = 1,' where your mother works','') + '. Next to the train station you can see the <a href="exec:minut += 5 & gt ''pav_station'', ''station_outside''">Pavlovsk police station</a> where you can find Pavlovsk''s finest.'
 *nl
 'The other side of the train station is a large square, where you can find a <a href="exec:minut += 1 & gt ''pav_train_market'', ''start''">market</a> on most days.'
 *nl

+ 1 - 1
locations/preCUST.qsrc

@@ -366,7 +366,7 @@ if $ARGS[0] = 'Done':
 	pcs_pubecol = pcs_haircol & pcs_pubecol[1] = 1
 	oldsavepcs_haircol = 1
 
-	gs 'body_shape', 'initial'
+	gs 'body', 'initial'
 
 !! Adding underwear and default shoes and assigning them
 

+ 5 - 5
locations/salon.qsrc

@@ -1122,7 +1122,7 @@ if $ARGS[0] = 'lashTreatment':
 	else
 		money -= 5000
 	end
-	gs 'body_shape', 'basebeautycalc', 1
+	gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 	
 	gs 'stat'
 	'The specialist collects your payment and moves you over to a chair with a headrest, which she has you tilt your head back up against.'
@@ -1155,7 +1155,7 @@ if $ARGS[0] = 'lashFalsies':
 		end
 		'She spends a few minutes selecting and trimming a set of ornate, dramatically-feathered false lashes to get them to line up neatly with your own natural set, and with practiced ease she glues them delicately in place, only having to give them one or two gentle, settling nudges.'
 	end
-	gs 'body_shape', 'basebeautycalc', 1
+	gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 	gs 'stat'
 	'"There you go! You''re all set! Have fun with wherever you''re going!"'
 	act 'Leave':gt 'salon', 'start'
@@ -1262,7 +1262,7 @@ if $ARGS[0] = 'lashExtension':
 		killvar 'lashextensionduration'
 		killvar 'lashextensionstyle'
 	end
-	gs 'body_shape', 'basebeautycalc', 1
+	gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 	gs 'stat'
 	'After what seems like forever, you''re finally allowed to open your eyes and take a look.'
 	act 'Leave':gt 'salon', 'start'
@@ -1577,7 +1577,7 @@ if $ARGS[0] = 'skin_care':
 	else
 		money -= 5000
 	end
-	gs 'body_shape', 'basebeautycalc', 1
+	gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/salon/facialmask.jpg"></center>'
 	'You get a beauty mask treatment, afterwards your face feels smooth and your skin tight.'
@@ -1594,7 +1594,7 @@ if $ARGS[0] = 'rejuvination':
 	else
 		money -= 25000
 	end
-	gs 'body_shape', 'basebeautycalc', 1
+	gs 'AppearanceSystem', 'UpdateBaseAppearnce'
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/salon/bodyscrub.jpg"></center>'
 	'You get a full body rejuvenation procedure, afterwards your skin feels soft and silky smooth.'

+ 19 - 1
locations/stat.qsrc

@@ -1031,9 +1031,27 @@ elseif rape > 0 and rape ! rape_count and orgasm > 0 and orgasm ! orgasm_count:
 	orgasm_count = orgasm
 	rape_count = rape
 end
+!! Drug stats
+if StrongNarkota <= 0:
+	if SNarkTimes >= 3 and SLomka = 0:SLomka = 1
+end
+
+if amphCount > 3 and amphHigh <= 0:
+	addictChance = rand(1,10)
+	if addictChance > 8:
+		amphWithdrawl = 2
+	end
+end
+
+if StrongNarkota > 0:
+	if SLomka > 0:SLomka = 0
+	pcs_mood = 100
+end
 
 !!Health, Willpower, Auto Birth Control pregnancy check
-gs 'body'
+gs 'body', 'RegularUpdate'
+gs 'AppearanceSystem'
+gs 'body_desc'
 
 if pcs_health >= healthmax:
 	$pcs_health = '<font color="green">You are very healthy.</font>'

+ 1 - 1
locations/tatiana_lab.qsrc

@@ -383,7 +383,7 @@ if $ARGS[0] = 'Tatiana':
 					cla
 					minut += 30
 					dounspell = 1
-					gs 'body_shape', 'hardreset'
+					gs 'body', 'hardreset'
 					gs 'stat'
 					'<center><img <<$set_imgh>> src="images/characters/city/tatiana/magiclook.jpg"></center>'
 					'Tatiana lowers her glasses and stares deeply into your eyes. It feels like time just stops being a thing and you are floating.'

Some files were not shown because too many files changed in this diff