diff --git a/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index 6c4160133..9cf9271bb 100644 --- a/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -1480,8 +1480,12 @@ void EnFsn_Init(Actor* thisx, PlayState* play) { EnFsn* this = THIS; ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 20.0f); + + // #region 2S2H [Port] ENFSN_LIMB_MAX originally had a +1 because the game incorrectly thought the skel had 18 limbs when it + // only has 17. We also need to patch the count in skelAnime because it is reading the wrong number from the skeleton header. SkelAnime_InitFlex(play, &this->skelAnime, &gFsnSkel, &gFsnIdleAnim, this->jointTable, this->morphTable, ENFSN_LIMB_MAX); + this->skelAnime.limbCount = ENFSN_LIMB_MAX; if (ENFSN_IS_SHOP(&this->actor)) { this->actor.shape.rot.y = BINANG_ROT180(this->actor.shape.rot.y); diff --git a/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h b/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h index 22133322e..2cb1e0cc6 100644 --- a/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h +++ b/mm/src/overlays/actors/ovl_En_Fsn/z_en_fsn.h @@ -13,7 +13,9 @@ #define ENFSN_ANGRY (1 << 8) #define ENFSN_CALM_DOWN (1 << 9) -#define ENFSN_LIMB_MAX FSN_LIMB_MAX + 1 // Note: adding 1 to FSN_LIMB_MAX due to bug in the skeleton, see bug in object_fsn.xml + +//#region 2S2H [Port] This originally had a +1 because the game incorrectly thought the skel had 18 limbs when it only has 17. +#define ENFSN_LIMB_MAX FSN_LIMB_MAX struct EnFsn;