@@ -121,7 +121,7 @@ public class MpPedCustomization
121121 private float _shapeMixValue ;
122122 private float _skinMixValue ;
123123 private readonly Dictionary < int , int > shapeFaceValues = [ ] ;
124- private readonly Dictionary < int , Tuple < int , int , float > > apperanceValues = [ ] ;
124+ private readonly Dictionary < int , Tuple < int , int , float > > appearanceValues = [ ] ;
125125 private int _hairSelection ;
126126 private int _hairColorSelection ;
127127 private int _hairHighlightColorSelection ;
@@ -179,6 +179,17 @@ private void MakeCreateCharacterMenu(bool male, bool editPed = false)
179179 propsMenu . ClearMenuItems ( ) ;
180180
181181 #region appearance menu.
182+ // Clears any saved appearance values from prior peds
183+ _hairSelection = 0 ;
184+ _hairColorSelection = 0 ;
185+ _hairHighlightColorSelection = 0 ;
186+ _eyeColorSelection = 0 ;
187+
188+ for ( int i = 0 ; i < 12 ; i ++ )
189+ {
190+ appearanceValues [ i ] = new Tuple < int , int , float > ( 0 , 0 , 0f ) ;
191+ }
192+
182193 var opacity = new List < string > ( ) { "0%" , "10%" , "20%" , "30%" , "40%" , "50%" , "60%" , "70%" , "80%" , "90%" , "100%" } ;
183194
184195 var maxHairStyles = GetNumberOfPedDrawableVariations ( Game . PlayerPed . Handle , 2 ) ;
@@ -1805,6 +1816,7 @@ void ApplySavedTattoos()
18051816 case 1 :
18061817 if ( ! currentCharacter . IsMale )
18071818 {
1819+ appearanceValues [ i ] = new Tuple < int , int , float > ( 0 , 0 , 0f ) ;
18081820 continue ;
18091821 }
18101822
@@ -1837,6 +1849,7 @@ void ApplySavedTattoos()
18371849 case 8 :
18381850 if ( currentCharacter . IsMale )
18391851 {
1852+ appearanceValues [ i ] = new Tuple < int , int , float > ( 0 , 0 , 0f ) ;
18401853 continue ;
18411854 }
18421855
@@ -1859,6 +1872,7 @@ void ApplySavedTattoos()
18591872 case 10 :
18601873 if ( ! currentCharacter . IsMale )
18611874 {
1875+ appearanceValues [ i ] = new Tuple < int , int , float > ( 0 , 0 , 0f ) ;
18621876 continue ;
18631877 }
18641878
@@ -1879,16 +1893,16 @@ void ApplySavedTattoos()
18791893 break ;
18801894
18811895 default :
1882- apperanceValues [ i ] = new Tuple < int , int , float > ( 0 , 0 , 0 ) ;
1896+ appearanceValues [ i ] = new Tuple < int , int , float > ( 0 , 0 , 0 ) ;
18831897 continue ;
18841898 }
18851899
1886- apperanceValues [ i ] = new Tuple < int , int , float > ( value , color , opacity ) ;
1887- SetPedHeadOverlay ( Game . PlayerPed . Handle , i , apperanceValues [ i ] . Item1 , apperanceValues [ i ] . Item3 ) ;
1900+ appearanceValues [ i ] = new Tuple < int , int , float > ( value , color , opacity ) ;
1901+ SetPedHeadOverlay ( Game . PlayerPed . Handle , i , appearanceValues [ i ] . Item1 , appearanceValues [ i ] . Item3 ) ;
18881902
18891903 if ( colorRequired )
18901904 {
1891- SetPedHeadOverlayColor ( Game . PlayerPed . Handle , i , colorIndex , apperanceValues [ i ] . Item2 , apperanceValues [ i ] . Item2 ) ;
1905+ SetPedHeadOverlayColor ( Game . PlayerPed . Handle , i , colorIndex , appearanceValues [ i ] . Item2 , appearanceValues [ i ] . Item2 ) ;
18921906 }
18931907 }
18941908
@@ -1988,54 +2002,59 @@ void ApplySavedTattoos()
19882002 {
19892003 List < MenuItem > items = appearanceMenu . GetMenuItems ( ) ;
19902004
2005+ // Chris: This is so, so terrible... (and I wrote it)
2006+ // This needs to be re-done at some point.
2007+ // TODO: Make not trash
19912008 ( ( MenuListItem ) items [ 0 ] ) . ListIndex = _hairSelection ;
19922009 ( ( MenuListItem ) items [ 1 ] ) . ListIndex = _hairColorSelection ;
19932010 ( ( MenuListItem ) items [ 2 ] ) . ListIndex = _hairHighlightColorSelection ;
19942011 ( ( MenuListItem ) items [ 33 ] ) . ListIndex = _eyeColorSelection ;
19952012
1996- ( ( MenuListItem ) items [ 3 ] ) . ListIndex = apperanceValues [ 0 ] . Item1 ;
1997- ( ( MenuListItem ) items [ 4 ] ) . ListIndex = ( int ) ( apperanceValues [ 0 ] . Item3 * 10 ) ;
2013+ ( ( MenuListItem ) items [ 3 ] ) . ListIndex = appearanceValues [ 0 ] . Item1 ;
2014+ ( ( MenuListItem ) items [ 4 ] ) . ListIndex = ( int ) ( appearanceValues [ 0 ] . Item3 * 10 ) ;
19982015
1999- ( ( MenuListItem ) items [ 5 ] ) . ListIndex = apperanceValues [ 1 ] . Item1 ;
2000- ( ( MenuListItem ) items [ 6 ] ) . ListIndex = ( int ) ( apperanceValues [ 1 ] . Item3 * 10 ) ;
2001- ( ( MenuListItem ) items [ 7 ] ) . ListIndex = apperanceValues [ 1 ] . Item1 ;
2016+ ( ( MenuListItem ) items [ 5 ] ) . ListIndex = appearanceValues [ 1 ] . Item1 ;
2017+ ( ( MenuListItem ) items [ 6 ] ) . ListIndex = ( int ) ( appearanceValues [ 1 ] . Item3 * 10 ) ;
2018+ ( ( MenuListItem ) items [ 7 ] ) . ListIndex = appearanceValues [ 1 ] . Item1 ;
20022019
2003- ( ( MenuListItem ) items [ 8 ] ) . ListIndex = apperanceValues [ 2 ] . Item1 ;
2004- ( ( MenuListItem ) items [ 9 ] ) . ListIndex = ( int ) ( apperanceValues [ 2 ] . Item3 * 10 ) ;
2005- ( ( MenuListItem ) items [ 10 ] ) . ListIndex = apperanceValues [ 2 ] . Item1 ;
2020+ ( ( MenuListItem ) items [ 8 ] ) . ListIndex = appearanceValues [ 2 ] . Item1 ;
2021+ ( ( MenuListItem ) items [ 9 ] ) . ListIndex = ( int ) ( appearanceValues [ 2 ] . Item3 * 10 ) ;
2022+ ( ( MenuListItem ) items [ 10 ] ) . ListIndex = appearanceValues [ 2 ] . Item1 ;
20062023
2007- ( ( MenuListItem ) items [ 11 ] ) . ListIndex = apperanceValues [ 3 ] . Item1 ;
2008- ( ( MenuListItem ) items [ 12 ] ) . ListIndex = ( int ) ( apperanceValues [ 3 ] . Item3 * 10 ) ;
2024+ ( ( MenuListItem ) items [ 11 ] ) . ListIndex = appearanceValues [ 3 ] . Item1 ;
2025+ ( ( MenuListItem ) items [ 12 ] ) . ListIndex = ( int ) ( appearanceValues [ 3 ] . Item3 * 10 ) ;
20092026
2010- ( ( MenuListItem ) items [ 13 ] ) . ListIndex = apperanceValues [ 4 ] . Item1 ;
2011- ( ( MenuListItem ) items [ 14 ] ) . ListIndex = ( int ) ( apperanceValues [ 4 ] . Item3 * 10 ) ;
2012- ( ( MenuListItem ) items [ 15 ] ) . ListIndex = apperanceValues [ 4 ] . Item1 ;
2027+ ( ( MenuListItem ) items [ 13 ] ) . ListIndex = appearanceValues [ 4 ] . Item1 ;
2028+ ( ( MenuListItem ) items [ 14 ] ) . ListIndex = ( int ) ( appearanceValues [ 4 ] . Item3 * 10 ) ;
2029+ ( ( MenuListItem ) items [ 15 ] ) . ListIndex = appearanceValues [ 4 ] . Item1 ;
20132030
2014- ( ( MenuListItem ) items [ 16 ] ) . ListIndex = apperanceValues [ 5 ] . Item1 ;
2015- ( ( MenuListItem ) items [ 17 ] ) . ListIndex = ( int ) ( apperanceValues [ 5 ] . Item3 * 10 ) ;
2016- ( ( MenuListItem ) items [ 18 ] ) . ListIndex = apperanceValues [ 5 ] . Item1 ;
2031+ ( ( MenuListItem ) items [ 16 ] ) . ListIndex = appearanceValues [ 5 ] . Item1 ;
2032+ ( ( MenuListItem ) items [ 17 ] ) . ListIndex = ( int ) ( appearanceValues [ 5 ] . Item3 * 10 ) ;
2033+ ( ( MenuListItem ) items [ 18 ] ) . ListIndex = appearanceValues [ 5 ] . Item1 ;
20172034
2018- ( ( MenuListItem ) items [ 19 ] ) . ListIndex = apperanceValues [ 6 ] . Item1 ;
2019- ( ( MenuListItem ) items [ 20 ] ) . ListIndex = ( int ) ( apperanceValues [ 6 ] . Item3 * 10 ) ;
2035+ ( ( MenuListItem ) items [ 19 ] ) . ListIndex = appearanceValues [ 6 ] . Item1 ;
2036+ ( ( MenuListItem ) items [ 20 ] ) . ListIndex = ( int ) ( appearanceValues [ 6 ] . Item3 * 10 ) ;
20202037
2021- ( ( MenuListItem ) items [ 21 ] ) . ListIndex = apperanceValues [ 7 ] . Item1 ;
2022- ( ( MenuListItem ) items [ 22 ] ) . ListIndex = ( int ) ( apperanceValues [ 7 ] . Item3 * 10 ) ;
2038+ ( ( MenuListItem ) items [ 21 ] ) . ListIndex = appearanceValues [ 7 ] . Item1 ;
2039+ ( ( MenuListItem ) items [ 22 ] ) . ListIndex = ( int ) ( appearanceValues [ 7 ] . Item3 * 10 ) ;
20232040
2024- ( ( MenuListItem ) items [ 23 ] ) . ListIndex = apperanceValues [ 8 ] . Item1 ;
2025- ( ( MenuListItem ) items [ 24 ] ) . ListIndex = ( int ) ( apperanceValues [ 8 ] . Item3 * 10 ) ;
2026- ( ( MenuListItem ) items [ 25 ] ) . ListIndex = apperanceValues [ 8 ] . Item1 ;
2041+ ( ( MenuListItem ) items [ 23 ] ) . ListIndex = appearanceValues [ 8 ] . Item1 ;
2042+ ( ( MenuListItem ) items [ 24 ] ) . ListIndex = ( int ) ( appearanceValues [ 8 ] . Item3 * 10 ) ;
2043+ ( ( MenuListItem ) items [ 25 ] ) . ListIndex = appearanceValues [ 8 ] . Item1 ;
20272044
2028- ( ( MenuListItem ) items [ 26 ] ) . ListIndex = apperanceValues [ 9 ] . Item1 ;
2029- ( ( MenuListItem ) items [ 27 ] ) . ListIndex = ( int ) ( apperanceValues [ 9 ] . Item3 * 10 ) ;
2045+ ( ( MenuListItem ) items [ 26 ] ) . ListIndex = appearanceValues [ 9 ] . Item1 ;
2046+ ( ( MenuListItem ) items [ 27 ] ) . ListIndex = ( int ) ( appearanceValues [ 9 ] . Item3 * 10 ) ;
20302047
2031- ( ( MenuListItem ) items [ 28 ] ) . ListIndex = apperanceValues [ 10 ] . Item1 ;
2032- ( ( MenuListItem ) items [ 29 ] ) . ListIndex = ( int ) ( apperanceValues [ 10 ] . Item3 * 10 ) ;
2033- ( ( MenuListItem ) items [ 30 ] ) . ListIndex = apperanceValues [ 10 ] . Item1 ;
2048+ ( ( MenuListItem ) items [ 28 ] ) . ListIndex = appearanceValues [ 10 ] . Item1 ;
2049+ ( ( MenuListItem ) items [ 29 ] ) . ListIndex = ( int ) ( appearanceValues [ 10 ] . Item3 * 10 ) ;
2050+ ( ( MenuListItem ) items [ 30 ] ) . ListIndex = appearanceValues [ 10 ] . Item1 ;
20342051
2035- ( ( MenuListItem ) items [ 31 ] ) . ListIndex = apperanceValues [ 11 ] . Item1 ;
2036- ( ( MenuListItem ) items [ 32 ] ) . ListIndex = ( int ) ( apperanceValues [ 11 ] . Item3 * 10 ) ;
2052+ ( ( MenuListItem ) items [ 31 ] ) . ListIndex = appearanceValues [ 11 ] . Item1 ;
2053+ ( ( MenuListItem ) items [ 32 ] ) . ListIndex = ( int ) ( appearanceValues [ 11 ] . Item3 * 10 ) ;
20372054
20382055 appearanceMenu . RefreshIndex ( ) ;
2056+
2057+ SetHeadBlend ( ) ;
20392058 }
20402059 } ;
20412060
@@ -2072,9 +2091,8 @@ void ApplySavedTattoos()
20722091 ClearPedDecorations ( Game . PlayerPed . Handle ) ;
20732092 ClearPedFacialDecorations ( Game . PlayerPed . Handle ) ;
20742093 SetPedDefaultComponentVariation ( Game . PlayerPed . Handle ) ;
2075- SetPedHairColor ( Game . PlayerPed . Handle , 0 , 0 ) ;
2076- SetPedEyeColor ( Game . PlayerPed . Handle , 0 ) ;
20772094 ClearAllPedProps ( Game . PlayerPed . Handle ) ;
2095+ DefaultPlayerColors ( ) ;
20782096
20792097 MakeCreateCharacterMenu ( male : true ) ;
20802098 }
@@ -2108,9 +2126,8 @@ void ApplySavedTattoos()
21082126 ClearPedDecorations ( Game . PlayerPed . Handle ) ;
21092127 ClearPedFacialDecorations ( Game . PlayerPed . Handle ) ;
21102128 SetPedDefaultComponentVariation ( Game . PlayerPed . Handle ) ;
2111- SetPedHairColor ( Game . PlayerPed . Handle , 0 , 0 ) ;
2112- SetPedEyeColor ( Game . PlayerPed . Handle , 0 ) ;
21132129 ClearAllPedProps ( Game . PlayerPed . Handle ) ;
2130+ DefaultPlayerColors ( ) ;
21142131
21152132 MakeCreateCharacterMenu ( male : false ) ;
21162133 }
@@ -3093,6 +3110,50 @@ internal void SetPlayerClothing()
30933110 }
30943111 }
30953112
3113+ /// <summary>
3114+ /// Sets all the ped's overlay colors to their default (0) entry.
3115+ /// When called, prevents default color being bright green.
3116+ /// </summary>
3117+ internal void DefaultPlayerColors ( )
3118+ {
3119+ SetHeadBlend ( ) ;
3120+
3121+ for ( int i = 0 ; i < 12 ; i ++ )
3122+ {
3123+ int color = 0 ;
3124+ int colorIndex = 0 ;
3125+
3126+ switch ( i )
3127+ {
3128+ case 1 :
3129+ colorIndex = 1 ;
3130+ break ;
3131+
3132+ case 2 :
3133+ colorIndex = 1 ;
3134+ break ;
3135+
3136+ case 8 :
3137+ colorIndex = 2 ;
3138+ break ;
3139+
3140+ case 10 :
3141+ colorIndex = 1 ;
3142+ break ;
3143+
3144+ default :
3145+ continue ;
3146+ }
3147+
3148+ SetPedHeadOverlay ( Game . PlayerPed . Handle , i , 0 , 0f ) ;
3149+
3150+ if ( colorIndex > 0 )
3151+ {
3152+ SetPedHeadOverlayColor ( Game . PlayerPed . Handle , i , colorIndex , color , color ) ;
3153+ }
3154+ }
3155+ }
3156+
30963157 /// <summary>
30973158 /// Create the menu if it doesn't exist, and then returns it.
30983159 /// </summary>
0 commit comments