@@ -145,15 +145,19 @@ private static void BackupCostume(Maid maid) {
145145
146146 var costume = new List < MaidProp > ( ) ;
147147 foreach ( var maidProp in maid . m_aryMaidProp ) {
148- costume . Add ( new ( ) {
148+ var originalMaidProp = new MaidProp {
149149 idx = maidProp . idx ,
150150 strFileName = maidProp . strFileName ,
151151 nFileNameRID = maidProp . nFileNameRID ,
152152 m_dicTBodySkinPos = new ( maidProp . m_dicTBodySkinPos ) ,
153153 m_dicTBodyAttachPos = new ( maidProp . m_dicTBodyAttachPos ) ,
154154 m_dicMaterialProp = new ( maidProp . m_dicMaterialProp ) ,
155155 m_dicBoneLength = new ( maidProp . m_dicBoneLength ) ,
156- } ) ;
156+ } ;
157+ if ( maidProp . listSubProp != null ) {
158+ originalMaidProp . listSubProp = new ( maidProp . listSubProp ) ;
159+ }
160+ costume . Add ( originalMaidProp ) ;
157161 }
158162 _originalCostume . Add ( maid . status . guid , costume ) ;
159163 }
@@ -162,13 +166,24 @@ private static void RestoreCostume(Maid maid) {
162166 LogDebug ( $ "Restoring costume for { maid . name } ") ;
163167
164168 var costume = _originalCostume [ maid . status . guid ] ;
165- foreach ( var maidProp in costume ) {
166- maid . SetProp ( ( MPN ) maidProp . idx , maidProp . strFileName , maidProp . nFileNameRID ) ;
167- var newProp = maid . GetProp ( ( MPN ) maidProp . idx ) ;
168- newProp . m_dicTBodySkinPos = maidProp . m_dicTBodySkinPos ;
169- newProp . m_dicTBodyAttachPos = maidProp . m_dicTBodyAttachPos ;
170- newProp . m_dicMaterialProp = maidProp . m_dicMaterialProp ;
171- newProp . m_dicBoneLength = maidProp . m_dicBoneLength ;
169+ foreach ( var originalMaidProp in costume ) {
170+ maid . SetProp ( ( MPN ) originalMaidProp . idx , originalMaidProp . strFileName , originalMaidProp . nFileNameRID ) ;
171+ var maidProp = maid . GetProp ( ( MPN ) originalMaidProp . idx ) ;
172+ maidProp . m_dicTBodySkinPos = originalMaidProp . m_dicTBodySkinPos ;
173+ maidProp . m_dicTBodyAttachPos = originalMaidProp . m_dicTBodyAttachPos ;
174+ maidProp . m_dicMaterialProp = originalMaidProp . m_dicMaterialProp ;
175+ maidProp . m_dicBoneLength = originalMaidProp . m_dicBoneLength ;
176+ if ( originalMaidProp . listSubProp != null && originalMaidProp . listSubProp . Count > 0 ) {
177+ maid . DelProp ( ( MPN ) originalMaidProp . idx ) ;
178+ for ( int i = 0 ; i < originalMaidProp . listSubProp . Count ; i ++ ) {
179+ var originalSubProp = originalMaidProp . listSubProp [ i ] ;
180+ if ( originalSubProp != null ) {
181+ maid . SetSubProp ( ( MPN ) originalMaidProp . idx , i , originalSubProp . strFileName , originalSubProp . nFileNameRID ) ;
182+ var subProp = maid . GetSubProp ( ( MPN ) originalMaidProp . idx , i ) ;
183+ subProp . fTexMulAlpha = originalSubProp . fTexMulAlpha ;
184+ }
185+ }
186+ }
172187 }
173188 _originalCostume . Remove ( maid . status . guid ) ;
174189 }
0 commit comments