Browse Source

Facial Surgery

Stephan Fuchs 9 months ago
parent
commit
d405109b11

+ 57 - 10
sugarcube/src/locations/city/city_clinic.tw

@@ -1182,15 +1182,36 @@
 :: clinic_cosmeticSurgeon[quest]
 	<<image "locations/city/residential/clinic/cosmetic1.jpg">>
 	<p>You're greeted by a nurse who explains what procedures are available.</p>
-	<p>"Electrolysis will remove your body hair and stop it from growing."</p>
-	<p>"Fillable breast implants allow you to fill them after the surgery. We stock silicone you use to fill them."</p>
-	<p>"String implants slowly absorb your body fluids and grow larger over time. We can also drain it for you if it becomes too large."</p>
+	/*<p>"Fillable breast implants allow you to fill them after the surgery. We stock silicone you use to fill them."</p>
+	<p>"String implants slowly absorb your body fluids and grow larger over time. We can also drain it for you if it becomes too large."</p>*/
 
-	<<act 'Electrolysis' undefined `{cost:{both:80000}}`>>
-		<<gt 'clinic_cosmeticSurgeon_electrolysis'>>
-	<</act>>
-	<p>Electrolysis - laser hair removal of legs and pubic area - 80,000 <b>₽</b></p>
 
+	<h3>Electrolysis (<<money 80000>>)</h3>
+	<p>
+		Your leg hair and pubes will be shaved off and, using laser technology, permanently prevented from growing again. This procedure can't be undone.
+		<<if $pc.legHairIsLasered && $pc.pubesAreLasered>>
+			<<positive>>You already got this treatment.<</positive>>
+		<<else>>
+			<<act 'Electrolysis' undefined `{cost:{bank:80000}}`>>
+				<<gt 'clinic_cosmeticSurgeon_electrolysis'>>
+			<</act>>
+
+		<</if>>
+	</p>
+
+	<h3>Facial surgery (<<money 110000>>)</h3>
+	<p>
+		Using minimal corrections to the distribution of you facial bone structure and fat distribution, your appearance can be increased permanently by a small amount.
+		<<if $pc.faceAttractiveness >= 3>>
+			<<positive>>You won't benefit from this treatment.<</positive>>
+		<<elseif $pc.faceSurgeries >= 1>>
+			<<positive>>You already got this treatment. You need to see an expert to improve your facial appearance further.<</positive>>
+		<<else>>
+			<<act 'Facial surgery' undefined `{cost:{bank:110000}}`>>
+				<<gt 'clinic_cosmeticSurgeon_face'>>
+			<</act>>
+		<</if>>
+	</p>
 	/*<<if $finances.cash >= 25000 and $pc.lip_size < 4>>
 		<<link "Lip enlargement surgery">><<gt 'city_clinic' 'lipPlus'>><</link>> - 25,000 <b>₽</b>
 	<<else>>
@@ -1268,14 +1289,40 @@
 
 :: clinic_cosmeticSurgeon_electrolysis[event]
 	<<addtime 120>>
-	<<set $pc.legHair = 0>>
-	<<set $pc.pubesLength = 0>>
-	<<set $lashair = 1>>
+	<<set $pc.legHairIsLasered = true>>
+	<<set $pc.pubesAreLasered = true>>
+
 	<<image "locations/city/residential/clinic/electrolysis.jpg">>
 	The surgeon has you strip completely and lie down on the table. Over the next few hours, you're treated by a laser over and over again. When the treatment is finished and you get up from the table, your skin feels silky smooth.
 	<<act 'Continue'>>
 		<<gt 'clinic_cosmeticSurgeon'>>
 	<</act>>
+
+:: clinic_cosmeticSurgeon_face[event]
+	<<addtime 240>>
+	<<set $pc.faceSurgeries += 1>>
+	<<run $pc.painInc('face',30)>>
+	<<image "locations/city/residential/clinic/cosmeticsur.jpg">>
+	
+	<p>
+		Under the soft glow of the sterile surgical suite's overhead lights, you lay on the operating table, your heart pounding with a mixture of excitement and apprehension.
+		The scent of antiseptic hung in the air, and the room was a symphony of beeping monitors and hushed conversations among the medical staff.
+	</p>
+	<p>
+		The surgeon's voice, soothing and reassuring, offers words of comfort as they describe the procedure that is about to unfold.
+		The anesthesia takes effect, and you begin to drift into a peaceful slumber, blissfully unaware of the intricate work being done on your face.
+		Time seems to slip away as the surgeon delicately reshapes and refines your features, sculpting a new image of yourself.
+	</p>
+	<p>
+		Hours pass like moments, and when you finally awaken, it's as if you're emerging from a dream.
+		You feel a slight soreness and tightness in your face.
+		Your appearance has been subtly altered, enhancing your natural beauty.
+	</p>
+
+	<<act 'Continue'>>
+		<<gt 'clinic_cosmeticSurgeon'>>
+	<</act>>
+
 :: clinic_cosmeticSurgeon_deprecated[deprecated]
 <<if $location_var[$here][0] == 'lipPlus'>>
 	<<set $time.minutes += 60>>

+ 1 - 1
sugarcube/src/playerCharacter/Appearance.tw

@@ -468,7 +468,7 @@ setup.appearanceModificators = {
 
 		/* Genetic */
 			/* Base Face */
-				<<switch $pc.faceGeneticAttractiveness>>
+				<<switch $pc.faceAttractiveness>>
 					<<case -3>>
 						<<run _appearanceModificators.genetic.push(func('Appearance','getModificator','base_m3'))>>
 					<<case -2>>

+ 42 - 11
sugarcube/src/playerCharacter/PlayerCharacter.js

@@ -593,8 +593,24 @@ class PlayerCharacter{
 
 
 
-	pubesLength = 0;					  // Pubes hair length in mm
-	pubestyle = 0;					  // The style the pubes get shaved into. 0 is not shaving.
+	pubesLength = 0;					// Pubes hair length in mm
+	pubestyle = 0;				  		// The style the pubes get shaved into. 0 is not shaving.
+	pubesState = 0;						// 0: Default, 1: lasered
+	get pubesGrowth(){
+		switch(this.pubesState){
+			case 0: return 0.5;
+			case 1: return 0;
+		}
+	}
+	get pubesAreLasered(){return (this.pubesState == 1);}
+	set pubesAreLasered(v){
+		if(v){
+			this.pubesLength = 0;
+			this.pubesState = 1;
+		}else{
+			this.pubesState = 0;
+		}
+	}
 
 	preg = 0;						   // 1: is pregnant, 0: is not pregnant
 	knowpreg = 0;					   // 1: Is pregnant and knows it, 0: doesn't know is pregnant but could be
@@ -683,6 +699,23 @@ class PlayerCharacter{
 	get legHair(){return this._leghair;}
 	set legHair(v){this._leghair = v;}
 
+	legHairState = 0;	//0: default, 1: lasered
+	get legHairGrowth(){
+		switch(this.legHairState){
+			case 0: return (this.age < 18 ? 0.14 : 0.21);
+			case 1: return 0;
+		}
+	}
+	get legHairIsLasered(){return (this.legHairState == 1);}
+	set legHairIsLasered(v){
+		if(v){
+			this.legHair = 0;
+			this.legHairState = 1;
+		}else{
+			this.legHairState = 0;
+		}
+	}
+
 	get legHairVisibility(){
 		if(this.legHair <= 0)
 			return 0;
@@ -797,14 +830,9 @@ class PlayerCharacter{
 			this.hairDyeFade = Math.max(this.hairDyeFade - 1 , 0);
 		}
 		// Leg and pubes hair growth
-		if(this.lashair != 1){
-			if(this.age >= 18)
-				this.legHair += 0.21;
-			else
-				this.legHair += 0.14;
-			//Pubic hair growth at 1/2 per night
-			this.pubesLength += 0.5;
-		}
+		this.legHair += this.legHairGrowth;
+		//Pubic hair growth at 1/2 per night
+		this.pubesLength += this.pubesGrowth;
 
 		this.teeth += 1;
 
@@ -1084,7 +1112,10 @@ class PlayerCharacter{
 	}
 
 	faceGeneticAttractiveness = 0;
-
+	faceSurgeries = 0;
+	get faceAttractiveness(){
+		return Math.clamp(this.faceGeneticAttractiveness+this.faceSurgeries,-3,3);
+	}
 
 	get appearance_accessoriesBonus(){
 		let wardrobe = State.variables.wardrobe;