|
@@ -863,23 +863,8 @@ class PlayerCharacter implements Character{
|
|
|
|
|
|
//#region Eyes
|
|
|
|
|
|
- /**
|
|
|
- * 0: brown
|
|
|
- * 1: grey
|
|
|
- * 2: green
|
|
|
- * 3: blue
|
|
|
- * @type {(0|1|2|3)}
|
|
|
- */
|
|
|
- eyecolor:0|1|2|3 = 3;
|
|
|
-
|
|
|
- /**
|
|
|
- * 0: small
|
|
|
- * 1: medium
|
|
|
- * 2: large
|
|
|
- * 3: huge
|
|
|
- * @type {(0|1|2|3)}
|
|
|
- */
|
|
|
- eyesize:0|1|2|3 = 1;
|
|
|
+ eyecolor:EEyeColor = EEyeColor.BLUE;
|
|
|
+ eyesize:EEyeSize = EEyeSize.MEDIUM;
|
|
|
//#endregion
|
|
|
|
|
|
faceGeneticAttractiveness = 0;
|
|
@@ -1029,6 +1014,18 @@ class PlayerCharacter implements Character{
|
|
|
get hairLength(){return this.pcs_hairlng;}
|
|
|
set hairLength(v){this.pcs_hairlng = v;}
|
|
|
|
|
|
+ get hairLengthCategory():EHairLength{
|
|
|
+ const categories = [
|
|
|
+ 30,80,160,260,400,600,800
|
|
|
+ ];
|
|
|
+ for(let index = 0; index < categories.length; index++){
|
|
|
+ let maxLengthOfCategory = categories[index];
|
|
|
+ if(this.hairLength <= maxLengthOfCategory)
|
|
|
+ return index;
|
|
|
+ }
|
|
|
+ return categories.length;
|
|
|
+ }
|
|
|
+
|
|
|
hairColor:EHairColor = 0;
|
|
|
hairColorNatural:EHairColor = 0;
|
|
|
hairDyeFade = 0;
|
|
@@ -1044,48 +1041,54 @@ class PlayerCharacter implements Character{
|
|
|
_leghair = 0;
|
|
|
/**
|
|
|
* The length of the hair on the legs in mm.
|
|
|
- * @date 7/23/2023 - 9:25:25 AM
|
|
|
- *
|
|
|
* @type {number}
|
|
|
*/
|
|
|
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;
|
|
|
- }
|
|
|
+ _legHairState:ELegHairState = ELegHairState.DEFAULT;
|
|
|
+ _legHairWaxExpiration:Date;
|
|
|
+
|
|
|
+ get legHairState():ELegHairState{
|
|
|
+ if(this._legHairState == ELegHairState.WAXED && !this._legHairWaxExpiration.isFuture)
|
|
|
+ this._legHairState = ELegHairState.DEFAULT;
|
|
|
+ return this._legHairState;
|
|
|
}
|
|
|
- get legHairIsLasered(){return (this.legHairState == 1);}
|
|
|
- set legHairIsLasered(v){
|
|
|
- if(v){
|
|
|
+ set legHairState(v:ELegHairState){
|
|
|
+ if(v != ELegHairState.DEFAULT)
|
|
|
this.legHair = 0;
|
|
|
- this.legHairState = 1;
|
|
|
- }else{
|
|
|
- this.legHairState = 0;
|
|
|
+ if(v == ELegHairState.WAXED)
|
|
|
+ this._legHairWaxExpiration = State.variables.time.dayWithOffsetS(28);
|
|
|
+ this._legHairState = v;
|
|
|
+ }
|
|
|
+
|
|
|
+ get legHairGrowth(){
|
|
|
+ switch(this.legHairState){
|
|
|
+ case ELegHairState.DEFAULT: return (this.age < 18 ? 0.14 : 0.21);
|
|
|
+ case ELegHairState.WAXED: return 0;
|
|
|
+ case ELegHairState.LASERED: return 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- get legHairVisibility(){
|
|
|
- if(this.legHair <= 0)
|
|
|
- return 0;
|
|
|
+
|
|
|
+ get legHairVisibility():ELegHairVisibility{
|
|
|
+ if(this.legHair <= 0.25)
|
|
|
+ return ELegHairVisibility.SMOOTH;
|
|
|
else if(this.legHair <= 0.5) // ~3 Days
|
|
|
- return 1;
|
|
|
+ return ELegHairVisibility.INVISIBLE;
|
|
|
else if(this.legHair <= 1.5) // ~1 Week
|
|
|
- return 2;
|
|
|
+ return ELegHairVisibility.NOTICABLE;
|
|
|
else if(this.legHair <= 6) // ~1 Month
|
|
|
- return 3;
|
|
|
- return 4;
|
|
|
+ return ELegHairVisibility.LONG;
|
|
|
+ return ELegHairVisibility.MANLY;
|
|
|
}
|
|
|
set legHairVisibility(v){
|
|
|
switch (v) {
|
|
|
- case 0: this._leghair = 0; return;
|
|
|
- case 1: this._leghair = 0.2; return;
|
|
|
- case 2: this._leghair = 1; return;
|
|
|
- case 3: this._leghair = 4; return;
|
|
|
- default:this._leghair = 20; return;
|
|
|
+ case ELegHairVisibility.SMOOTH: this._leghair = 0; return;
|
|
|
+ case ELegHairVisibility.INVISIBLE: this._leghair = 0.2; return;
|
|
|
+ case ELegHairVisibility.NOTICABLE: this._leghair = 1; return;
|
|
|
+ case ELegHairVisibility.LONG: this._leghair = 4; return;
|
|
|
+ default: this._leghair = 20; return;
|
|
|
}
|
|
|
}
|
|
|
//#endregion
|