@@ -229,28 +229,41 @@ private static void RemoveTemporaryCostume(Maid maid) {
229229 }
230230
231231 internal static Maid GetHeadMaid ( ) {
232- var characterMgr = GameMain . Instance . CharacterMgr ;
233232 Maid firstMaid = null ;
234233 Maid firstStockMaid = null ;
234+ foreach ( var maid in GetMaids ( ) ) {
235+ firstMaid ??= maid ;
236+ if ( maid . status . leader ) {
237+ return maid ;
238+ }
239+ }
240+ foreach ( var maid in GetStockMaids ( ) ) {
241+ firstStockMaid ??= maid ;
242+ if ( maid . status . leader ) {
243+ return maid ;
244+ }
245+ }
246+ return firstMaid ?? firstStockMaid ;
247+ }
248+
249+ internal static IEnumerable < Maid > GetMaids ( ) {
250+ var characterMgr = GameMain . Instance . CharacterMgr ;
235251 for ( var i = 0 ; i < characterMgr . GetMaidCount ( ) ; i ++ ) {
236252 var maid = characterMgr . GetMaid ( i ) ;
237253 if ( maid != null ) {
238- firstMaid ??= maid ;
239- if ( maid . status . leader ) {
240- return maid ;
241- }
254+ yield return maid ;
242255 }
243256 }
257+ }
258+
259+ internal static IEnumerable < Maid > GetStockMaids ( ) {
260+ var characterMgr = GameMain . Instance . CharacterMgr ;
244261 for ( var i = 0 ; i < characterMgr . GetStockMaidCount ( ) ; i ++ ) {
245262 var maid = characterMgr . GetStockMaid ( i ) ;
246263 if ( maid != null ) {
247- firstStockMaid ??= maid ;
248- if ( maid . status . leader ) {
249- return maid ;
250- }
264+ yield return maid ;
251265 }
252266 }
253- return firstMaid ?? firstStockMaid ;
254267 }
255268
256269 internal static IEnumerator WaitMaidPropBusy ( Maid maid , Action callback ) {
@@ -357,12 +370,8 @@ private static void OnSceneUnloaded(Scene scene) {
357370
358371 // reset costumes if no scene is active
359372 if ( _activeCostumeScene == CostumeScene . None ) {
360- var numMaids = GameMain . Instance . CharacterMgr . GetMaidCount ( ) ;
361- for ( var i = 0 ; i < numMaids ; i ++ ) {
362- var maid = GameMain . Instance . CharacterMgr . GetMaid ( i ) ;
363- if ( maid != null && maid . body0 ) {
364- ResetCostume ( maid ) ;
365- }
373+ foreach ( var maid in GetMaids ( ) . Where ( e => e . body0 ) ) {
374+ ResetCostume ( maid ) ;
366375 }
367376 _originalCostume . Clear ( ) ;
368377 _temporaryCostume . Clear ( ) ;
@@ -376,16 +385,12 @@ private static void OnSceneUnloaded(Scene scene) {
376385 }
377386
378387 if ( nextCostumeScene != CostumeScene . None ) {
379- var numMaids = GameMain . Instance . CharacterMgr . GetMaidCount ( ) ;
380- for ( var i = 0 ; i < numMaids ; i ++ ) {
381- var maid = GameMain . Instance . CharacterMgr . GetMaid ( i ) ;
382- if ( maid != null && maid . body0 ) {
383- // allow honeymoon costume to load properly on startup
384- if ( nextCostumeScene == CostumeScene . Honeymoon ) {
385- maid . Visible = true ;
386- }
387- SetCostume ( maid , nextCostumeScene , TemporaryCostumeScenes . Contains ( nextCostumeScene ) ) ;
388+ foreach ( var maid in GetMaids ( ) . Where ( e => e . body0 ) ) {
389+ // allow honeymoon costume to load properly on startup
390+ if ( nextCostumeScene == CostumeScene . Honeymoon ) {
391+ maid . Visible = true ;
388392 }
393+ SetCostume ( maid , nextCostumeScene , TemporaryCostumeScenes . Contains ( nextCostumeScene ) ) ;
389394 }
390395 }
391396 }
0 commit comments