@@ -125,13 +125,15 @@ private static bool PlayerFarming_SetSkin(ref Skin __result, PlayerFarming __ins
125125
126126 SkinUtils . InvokeOnFindSkin ( playerType ) ;
127127
128- if ( ! PlayerSkinOverride . ContainsKey ( playerType ) && ! CustomPlayerSpines . ContainsKey ( SelectedSpine ) ) return true ;
128+ var spineOverride = ( CoopManager . CoopActive && __instance . playerID == 1 ) ? SelectedSpine2 : SelectedSpine ;
129+
130+ if ( ! PlayerSkinOverride . ContainsKey ( playerType ) && ! CustomPlayerSpines . ContainsKey ( spineOverride ) ) return true ;
129131
130132 __instance . IsGoat = DataManager . Instance . PlayerVisualFleece == 1003 ;
131133 __instance . PlayerSkin = new Skin ( "Player Skin" ) ;
132134 List < Skin ? > ? skinToUse = null ;
133135
134- if ( PlayerSkinOverride . ContainsKey ( playerType ) && ! CustomPlayerSpines . ContainsKey ( SelectedSpine ) )
136+ if ( PlayerSkinOverride . ContainsKey ( playerType ) && ! CustomPlayerSpines . ContainsKey ( spineOverride ) )
135137 {
136138 skinToUse = PlayerSkinOverride [ playerType ] ;
137139 if ( skinToUse == null ) return true ;
@@ -141,7 +143,7 @@ private static bool PlayerFarming_SetSkin(ref Skin __result, PlayerFarming __ins
141143 }
142144 else
143145 {
144- var selectedSpineSkin = SelectedSpine . Split ( [ '/' ] , 2 ) [ 1 ] ;
146+ var selectedSpineSkin = spineOverride . Split ( [ '/' ] , 2 ) [ 1 ] ;
145147 __instance . PlayerSkin . AddSkin ( __instance . Spine . Skeleton . Data . FindSkin ( selectedSpineSkin ) ) ;
146148 }
147149
@@ -231,15 +233,20 @@ private static bool PlayerFarming_BleatRoutine(PlayerFarming __instance)
231233 [ HarmonyPrefix ]
232234 private static bool PlayerFarming_Start ( PlayerFarming __instance )
233235 {
234- if ( CustomPlayerSpines . Count == 0 )
236+ // swap the placeholder with the default spine when player enters the game
237+ if ( ! CustomPlayerSpines . ContainsKey ( "Default" ) )
235238 AddPlayerSpine ( "Default" , PlayerFarming . Instance . Spine . skeletonDataAsset , [ "Lamb" , "Goat" , "Owl" , "Snake" ] ) ;
236239
237- if ( SelectedSpine == "" ) return true ;
238- if ( ! CustomPlayerSpines . ContainsKey ( SelectedSpine ) ) return true ;
239- if ( CustomPlayerSpines [ SelectedSpine ] == null ) return true ;
240+ if ( CustomPlayerSpines . ContainsKey ( "Placeholder" ) )
241+ CustomPlayerSpines . Remove ( "Placeholder" ) ;
242+
243+ var spineOverride = ( CoopManager . CoopActive && __instance . playerID == 1 ) ? SelectedSpine2 : SelectedSpine ;
244+ if ( spineOverride == "" ) return true ;
245+ if ( ! CustomPlayerSpines . ContainsKey ( spineOverride ) ) return true ;
246+ if ( CustomPlayerSpines [ spineOverride ] == null ) return true ;
240247
241- var selectedSpineSkin = SelectedSpine . Split ( [ '/' ] , 2 ) [ 1 ] ;
242- var runtimeSkeletonAsset = CustomPlayerSpines [ SelectedSpine ] ;
248+ var selectedSpineSkin = spineOverride . Split ( [ '/' ] , 2 ) [ 1 ] ;
249+ var runtimeSkeletonAsset = CustomPlayerSpines [ spineOverride ] ;
243250 PlayerFarming . Instance . Spine . skeletonDataAsset = runtimeSkeletonAsset ;
244251 PlayerFarming . Instance . Spine . initialSkinName = selectedSpineSkin ;
245252 PlayerFarming . Instance . Spine . Initialize ( true ) ;
@@ -251,7 +258,7 @@ private static bool PlayerFarming_Start(PlayerFarming __instance)
251258 PlayerFarming . Instance . simpleSpineAnimator . anim . AnimationState . Event +=
252259 PlayerFarming . Instance . simpleSpineAnimator . SpineEventHandler ;
253260
254- LogInfo ( "Loaded Custom Spine " + SelectedSpine + " with skin " + selectedSpineSkin ) ;
261+ LogInfo ( "Loaded Custom Spine " + spineOverride + " with skin " + selectedSpineSkin + " For player ID " + __instance . playerID ) ;
255262
256263 return true ;
257264 }
0 commit comments