diff --git a/assets/xml/objects/object_ahg.xml b/assets/xml/objects/object_ahg.xml
index 4d37b1b110..8147abb75f 100644
--- a/assets/xml/objects/object_ahg.xml
+++ b/assets/xml/objects/object_ahg.xml
@@ -1,61 +1,66 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_aob.xml b/assets/xml/objects/object_aob.xml
index 61b28914bd..74838f6af3 100644
--- a/assets/xml/objects/object_aob.xml
+++ b/assets/xml/objects/object_aob.xml
@@ -1,59 +1,58 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/assets/xml/objects/object_bba.xml b/assets/xml/objects/object_bba.xml
index ccc5c21365..f988d8fbe4 100644
--- a/assets/xml/objects/object_bba.xml
+++ b/assets/xml/objects/object_bba.xml
@@ -1,45 +1,50 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_bji.xml b/assets/xml/objects/object_bji.xml
index c665b6b001..8dd89dd875 100644
--- a/assets/xml/objects/object_bji.xml
+++ b/assets/xml/objects/object_bji.xml
@@ -1,56 +1,61 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_bob.xml b/assets/xml/objects/object_bob.xml
index 289e994e47..ad59e56ea3 100644
--- a/assets/xml/objects/object_bob.xml
+++ b/assets/xml/objects/object_bob.xml
@@ -1,47 +1,52 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_boj.xml b/assets/xml/objects/object_boj.xml
index 4be4764ab5..d43332de00 100644
--- a/assets/xml/objects/object_boj.xml
+++ b/assets/xml/objects/object_boj.xml
@@ -1,65 +1,73 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_cne.xml b/assets/xml/objects/object_cne.xml
index 0c14d0bc54..ecf151d641 100644
--- a/assets/xml/objects/object_cne.xml
+++ b/assets/xml/objects/object_cne.xml
@@ -1,53 +1,57 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
-
+
+
diff --git a/assets/xml/objects/object_cob.xml b/assets/xml/objects/object_cob.xml
index ba051cfa74..b5047b4993 100644
--- a/assets/xml/objects/object_cob.xml
+++ b/assets/xml/objects/object_cob.xml
@@ -1,41 +1,46 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/include/z64message.h b/include/z64message.h
index 609f737fb7..ad2e19f547 100644
--- a/include/z64message.h
+++ b/include/z64message.h
@@ -153,27 +153,27 @@ typedef enum MaskReactionSet {
/* 0x22 */ MASK_REACTION_SET_GERUDO_WHITE,
/* 0x23 */ MASK_REACTION_SET_NABOORU,
/* 0x24 */ MASK_REACTION_SET_DANCING_COUPLE,
- /* 0x25 */ MASK_REACTION_SET_37, // ENHY_TYPE_AOB
- /* 0x26 */ MASK_REACTION_SET_38, // ENHY_TYPE_COB
- /* 0x27 */ MASK_REACTION_SET_39, // ENHY_TYPE_AHG_2
- /* 0x28 */ MASK_REACTION_SET_40, // ENHY_TYPE_BOJ_3
- /* 0x29 */ MASK_REACTION_SET_41, // ENHY_TYPE_AHG_4
- /* 0x2A */ MASK_REACTION_SET_42, // ENHY_TYPE_BOJ_5
- /* 0x2B */ MASK_REACTION_SET_43, // ENHY_TYPE_BBA
- /* 0x2C */ MASK_REACTION_SET_44, // ENHY_TYPE_BJI_7
- /* 0x2D */ MASK_REACTION_SET_45, // ENHY_TYPE_CNE_8
- /* 0x2E */ MASK_REACTION_SET_46, // ENHY_TYPE_BOJ_9
- /* 0x2F */ MASK_REACTION_SET_47, // ENHY_TYPE_BOJ_10
- /* 0x30 */ MASK_REACTION_SET_48, // ENHY_TYPE_CNE_11
- /* 0x31 */ MASK_REACTION_SET_49, // ENHY_TYPE_BOJ_12
- /* 0x32 */ MASK_REACTION_SET_50, // ENHY_TYPE_AHG_13
- /* 0x33 */ MASK_REACTION_SET_51, // ENHY_TYPE_BOJ_14
- /* 0x34 */ MASK_REACTION_SET_52, // ENHY_TYPE_BJI_15
- /* 0x35 */ MASK_REACTION_SET_53, // ENHY_TYPE_BOJ_16
- /* 0x36 */ MASK_REACTION_SET_54, // ENHY_TYPE_AHG_17
- /* 0x37 */ MASK_REACTION_SET_55, // ENHY_TYPE_BOB_18
- /* 0x38 */ MASK_REACTION_SET_56, // ENHY_TYPE_BJI_19
- /* 0x39 */ MASK_REACTION_SET_57, // ENHY_TYPE_AHG_20
+ /* 0x25 */ MASK_REACTION_SET_DOG_LADY,
+ /* 0x26 */ MASK_REACTION_SET_WOMAN_3,
+ /* 0x27 */ MASK_REACTION_SET_MAN_1_BEARD,
+ /* 0x28 */ MASK_REACTION_SET_MAN_2_BALD,
+ /* 0x29 */ MASK_REACTION_SET_MAN_1_SHAVED_BLACK_SHIRT,
+ /* 0x2A */ MASK_REACTION_SET_BEGGAR,
+ /* 0x2B */ MASK_REACTION_SET_OLD_WOMAN,
+ /* 0x2C */ MASK_REACTION_SET_OLD_MAN,
+ /* 0x2D */ MASK_REACTION_SET_YOUNG_WOMAN_BROWN_HAIR,
+ /* 0x2E */ MASK_REACTION_SET_MAN_2_MUSTACHE_RED_SHIRT,
+ /* 0x2F */ MASK_REACTION_SET_MAN_2_MUSTACHE_BLUE_SHIRT,
+ /* 0x30 */ MASK_REACTION_SET_YOUNG_WOMAN_ORANGE_HAIR,
+ /* 0x31 */ MASK_REACTION_SET_MAN_2_ALT_MUSTACHE,
+ /* 0x32 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_PURPLE_SHIRT,
+ /* 0x33 */ MASK_REACTION_SET_MAN_2_BEARD,
+ /* 0x34 */ MASK_REACTION_SET_OLD_MAN_BALD_BROWN_ROBE,
+ /* 0x35 */ MASK_REACTION_SET_MAN_2_MUSTACHE_WHITE_SHIRT,
+ /* 0x36 */ MASK_REACTION_SET_MAN_1_SHAVED_GREEN_SHIRT,
+ /* 0x37 */ MASK_REACTION_SET_WOMAN_2,
+ /* 0x38 */ MASK_REACTION_SET_OLD_MAN_BALD_PURPLE_ROBE,
+ /* 0x39 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_GREEN_SHIRT,
/* 0x3A */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_1,
/* 0x3B */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_2,
/* 0x3C */ MASK_REACTION_SET_MAX
diff --git a/src/code/z_face_reaction.c b/src/code/z_face_reaction.c
index a06bd4dc85..9864944b1c 100644
--- a/src/code/z_face_reaction.c
+++ b/src/code/z_face_reaction.c
@@ -112,67 +112,67 @@ u16 sMaskReactionSetTextIds[MASK_REACTION_SET_MAX][PLAYER_MASK_MAX] = {
// MASK_REACTION_SET_DANCING_COUPLE
{ 0x0000, 0x711C, 0x711E, 0x711C, 0x711F, 0x711E, 0x711C, 0x711D, 0x711F },
- // MASK_REACTION_SET_37
+ // MASK_REACTION_SET_DOG_LADY
{ 0x0000, 0x7104, 0x7105, 0x7107, 0x7107, 0x7105, 0x7106, 0x7107, 0x7107 },
- // MASK_REACTION_SET_38
+ // MASK_REACTION_SET_WOMAN_3
{ 0x0000, 0x7107, 0x7105, 0x7107, 0x7107, 0x7106, 0x7107, 0x7107, 0x7105 },
- // MASK_REACTION_SET_39
+ // MASK_REACTION_SET_MAN_1_BEARD
{ 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 },
- // MASK_REACTION_SET_40
+ // MASK_REACTION_SET_MAN_2_BALD
{ 0x0000, 0x7113, 0x7113, 0x7113, 0x7113, 0x7113, 0x7113, 0x7111, 0x7113 },
- // MASK_REACTION_SET_41
+ // MASK_REACTION_SET_MAN_1_SHAVED_BLACK_SHIRT
{ 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 },
- // MASK_REACTION_SET_42
+ // MASK_REACTION_SET_BEGGAR
{ 0x0000, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7117, 0x7113 },
- // MASK_REACTION_SET_43
+ // MASK_REACTION_SET_OLD_WOMAN
{ 0x0000, 0x7101, 0x7100, 0x7102, 0x7103, 0x7101, 0x7100, 0x7102, 0x7103 },
- // MASK_REACTION_SET_44
+ // MASK_REACTION_SET_OLD_MAN
{ 0x0000, 0x7100, 0x7102, 0x7100, 0x7100, 0x7100, 0x7100, 0x7100, 0x7102 },
- // MASK_REACTION_SET_45
+ // MASK_REACTION_SET_YOUNG_WOMAN_BROWN_HAIR
{ 0x0000, 0x710A, 0x7109, 0x7109, 0x710A, 0x710B, 0x7108, 0x7109, 0x710B },
- // MASK_REACTION_SET_46
+ // MASK_REACTION_SET_MAN_2_MUSTACHE_RED_SHIRT
{ 0x0000, 0x7117, 0x7112, 0x7113, 0x7110, 0x710C, 0x7117, 0x710E, 0x7112 },
- // MASK_REACTION_SET_47
+ // MASK_REACTION_SET_MAN_2_MUSTACHE_BLUE_SHIRT
{ 0x0000, 0x710D, 0x710F, 0x710C, 0x7112, 0x710D, 0x710C, 0x710C, 0x710F },
- // MASK_REACTION_SET_48
+ // MASK_REACTION_SET_YOUNG_WOMAN_ORANGE_HAIR
{ 0x0000, 0x710A, 0x7109, 0x711A, 0x710A, 0x7109, 0x7108, 0x710B, 0x7109 },
- // MASK_REACTION_SET_49
+ // MASK_REACTION_SET_MAN_2_ALT_MUSTACHE
{ 0x0000, 0x710C, 0x710F, 0x7113, 0x7110, 0x710D, 0x7112, 0x7116, 0x710D },
- // MASK_REACTION_SET_50
+ // MASK_REACTION_SET_MAN_1_BOWL_CUT_PURPLE_SHIRT
{ 0x0000, 0x7115, 0x7114, 0x7114, 0x7115, 0x7114, 0x7114, 0x7116, 0x7117 },
- // MASK_REACTION_SET_51
+ // MASK_REACTION_SET_MAN_2_BEARD
{ 0x0000, 0x7113, 0x710F, 0x7113, 0x7110, 0x710C, 0x711A, 0x710D, 0x7112 },
- // MASK_REACTION_SET_52
+ // MASK_REACTION_SET_OLD_MAN_BALD_BROWN_ROBE
{ 0x0000, 0x7101, 0x7102, 0x7103, 0x7101, 0x7100, 0x7100, 0x7102, 0x7100 },
- // MASK_REACTION_SET_53
+ // MASK_REACTION_SET_MAN_2_MUSTACHE_WHITE_SHIRT
{ 0x0000, 0x7112, 0x710E, 0x7112, 0x710E, 0x710D, 0x7112, 0x710E, 0x710F },
- // MASK_REACTION_SET_54
+ // MASK_REACTION_SET_MAN_1_SHAVED_GREEN_SHIRT
{ 0x0000, 0x7142, 0x7141, 0x7142, 0x7143, 0x7140, 0x7140, 0x7141, 0x7143 },
- // MASK_REACTION_SET_55
+ // MASK_REACTION_SET_WOMAN_2
{ 0x0000, 0x713C, 0x713D, 0x713D, 0x713E, 0x713E, 0x713F, 0x713D, 0x713F },
- // MASK_REACTION_SET_56
+ // MASK_REACTION_SET_OLD_MAN_BALD_PURPLE_ROBE
{ 0x0000, 0x7101, 0x7102, 0x7103, 0x7101, 0x7100, 0x7100, 0x7102, 0x7100 },
- // MASK_REACTION_SET_57
+ // MASK_REACTION_SET_MAN_1_BOWL_CUT_GREEN_SHIRT
{ 0x0000, 0x7113, 0x7117, 0x7113, 0x7110, 0x7112, 0x7112, 0x7116, 0x7112 },
// MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_1
diff --git a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
index a505b061ce..0d6ba9ed5d 100644
--- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
+++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
@@ -504,7 +504,7 @@ void DemoEc_DrawKokiriGirl(DemoEc* this, PlayState* play) {
}
void DemoEc_InitOldMan(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
- DemoEc_InitSkelAnime(this, play, &object_bji_Skel_0000F0);
+ DemoEc_InitSkelAnime(this, play, &gHylianOldManSkel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@@ -522,9 +522,9 @@ void DemoEc_UpdateOldMan(DemoEc* this, PlayState* play) {
void DemoEc_DrawOldMan(DemoEc* this, PlayState* play) {
static void* eyeTextures[] = {
- object_bji_Tex_0005FC,
- object_bji_Tex_0009FC,
- object_bji_Tex_000DFC,
+ gHylianOldManEyeOpenTex,
+ gHylianOldManEyeHalfTex,
+ gHylianOldManEyeClosedTex,
};
static u8 color1[] = { 0, 50, 100, 255 };
static u8 color2[] = { 0, 50, 160, 255 };
@@ -536,7 +536,7 @@ void DemoEc_DrawOldMan(DemoEc* this, PlayState* play) {
void DemoEc_InitBeardedMan(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
- DemoEc_InitSkelAnime(this, play, &object_ahg_Skel_0000F0);
+ DemoEc_InitSkelAnime(this, play, &gHylianMan1Skel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@@ -554,9 +554,9 @@ void DemoEc_UpdateBeardedMan(DemoEc* this, PlayState* play) {
void DemoEc_DrawBeardedMan(DemoEc* this, PlayState* play) {
static void* eyeTextures[] = {
- object_ahg_Tex_00057C,
- object_ahg_Tex_00067C,
- object_ahg_Tex_00077C,
+ gHylianMan1BeardedEyeOpenTex,
+ gHylianMan1BeardedEyeHalfTex,
+ gHylianMan1BeardedEyeClosedTex,
};
static u8 color1[] = { 255, 255, 255, 255 };
static u8 color2[] = { 255, 255, 255, 255 };
@@ -568,7 +568,7 @@ void DemoEc_DrawBeardedMan(DemoEc* this, PlayState* play) {
void DemoEc_InitWoman(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
- DemoEc_InitSkelAnime(this, play, &object_bob_Skel_0000F0);
+ DemoEc_InitSkelAnime(this, play, &gHylianWoman2Skel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@@ -586,9 +586,9 @@ void DemoEc_UpdateWoman(DemoEc* this, PlayState* play) {
void DemoEc_DrawWoman(DemoEc* this, PlayState* play) {
static void* eyeTextures[] = {
- object_bob_Tex_0007C8,
- object_bob_Tex_000FC8,
- object_bob_Tex_0017C8,
+ gHylianWoman2EyeOpenTex,
+ gHylianWoman2EyeHalfTex,
+ gHylianWoman2EyeClosedTex,
};
s32 eyeTexIndex = this->eyeTexIndex;
void* eyeTexture = eyeTextures[eyeTexIndex];
@@ -598,7 +598,7 @@ void DemoEc_DrawWoman(DemoEc* this, PlayState* play) {
void DemoEc_InitOldWoman(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
- DemoEc_InitSkelAnime(this, play, &object_bba_Skel_0000F0);
+ DemoEc_InitSkelAnime(this, play, &gHylianOldWomanSkel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@@ -614,7 +614,7 @@ void DemoEc_UpdateOldWoman(DemoEc* this, PlayState* play) {
}
void DemoEc_DrawOldWoman(DemoEc* this, PlayState* play) {
- DemoEc_DrawSkeleton(this, play, &object_bba_Tex_0004C8, NULL, NULL, NULL);
+ DemoEc_DrawSkeleton(this, play, &gHylianOldWomanEyeTex, NULL, NULL, NULL);
}
void DemoEc_InitBossCarpenter(DemoEc* this, PlayState* play) {
diff --git a/src/overlays/actors/ovl_En_Guest/z_en_guest.c b/src/overlays/actors/ovl_En_Guest/z_en_guest.c
index a5cfc07103..e302681584 100644
--- a/src/overlays/actors/ovl_En_Guest/z_en_guest.c
+++ b/src/overlays/actors/ovl_En_Guest/z_en_guest.c
@@ -80,8 +80,7 @@ void EnGuest_Update(Actor* thisx, PlayState* play) {
this->actor.flags &= ~ACTOR_FLAG_4;
Actor_ProcessInitChain(&this->actor, sInitChain);
- SkelAnime_InitFlex(play, &this->skelAnime, &object_boj_Skel_0000F0, NULL, this->jointTable, this->morphTable,
- 16);
+ SkelAnime_InitFlex(play, &this->skelAnime, &gHylianMan2Skel, NULL, this->jointTable, this->morphTable, 16);
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->osAnimeObjectSlot].segment);
Animation_Change(&this->skelAnime, &gObjOsAnim_42AC, 1.0f, 0.0f, Animation_GetLastFrame(&gObjOsAnim_42AC),
ANIMMODE_LOOP, 0.0f);
@@ -186,7 +185,7 @@ s32 EnGuest_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
OPEN_DISPS(play->state.gfxCtx, "../z_en_guest.c", 352);
if (limbIndex == 15) {
- *dList = object_boj_DL_0059B0;
+ *dList = gHylianMan2BeardedHeadDL;
Matrix_Translate(1400.0f, 0.0f, 0.0f, MTXMODE_APPLY);
limbRot = this->interactInfo.headRot;
Matrix_RotateX(BINANG_TO_RAD_ALT(limbRot.y), MTXMODE_APPLY);
@@ -212,9 +211,9 @@ s32 EnGuest_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
void EnGuest_Draw(Actor* thisx, PlayState* play) {
static void* D_80A50BA4[] = {
- object_boj_Tex_0005FC,
- object_boj_Tex_0006FC,
- object_boj_Tex_0007FC,
+ gHylianMan2MustachedEyeOpenTex,
+ gHylianMan2MustachedEyeHalfTex,
+ gHylianMan2MustachedEyeClosedTex,
};
EnGuest* this = (EnGuest*)thisx;
s32 pad;
diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/src/overlays/actors/ovl_En_Hy/z_en_hy.c
index 16a448a1d9..9ac751d4e7 100644
--- a/src/overlays/actors/ovl_En_Hy/z_en_hy.c
+++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.c
@@ -23,15 +23,15 @@ void EnHy_Destroy(Actor* thisx, PlayState* play);
void EnHy_Update(Actor* thisx, PlayState* play);
void EnHy_Draw(Actor* thisx, PlayState* play);
-void EnHy_InitImpl(EnHy* this, PlayState* play);
-void func_80A7134C(EnHy* this, PlayState* play);
-void func_80A71530(EnHy* this, PlayState* play);
-void func_80A711B4(EnHy* this, PlayState* play);
-void func_80A712C0(EnHy* this, PlayState* play);
-void func_80A710F8(EnHy* this, PlayState* play);
-void func_80A7127C(EnHy* this, PlayState* play);
+void EnHy_WaitForObjects(EnHy* this, PlayState* play);
+void EnHy_Pace(EnHy* this, PlayState* play);
+void EnHy_FinishGivingDogFoundReward(EnHy* this, PlayState* play);
+void EnHy_Walk(EnHy* this, PlayState* play);
+void EnHy_SetupPace(EnHy* this, PlayState* play);
+void EnHy_WatchDog(EnHy* this, PlayState* play);
+void EnHy_Fidget(EnHy* this, PlayState* play);
void EnHy_DoNothing(EnHy* this, PlayState* play);
-void func_80A714C4(EnHy* this, PlayState* play);
+void EnHy_WaitDogFoundRewardGiven(EnHy* this, PlayState* play);
ActorProfile En_Hy_Profile = {
/**/ ACTOR_EN_HY,
@@ -68,82 +68,110 @@ static ColliderCylinderInit sColCylInit = {
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
// NULL-terminated arrays of eye textures
-static void* sEyeTexturesAOB[] = { gDogLadyEyeOpenTex, gDogLadyEyeHalfTex, gDogLadyEyeClosedTex, NULL };
-static void* sEyeTexturesAHG7[] = { object_ahg_Tex_00057C, object_ahg_Tex_00067C, object_ahg_Tex_00077C, NULL };
-static void* sEyeTexturesBBA[] = { object_bba_Tex_0004C8, NULL };
-static void* sEyeTexturesBJI13[] = { object_bji_Tex_0005FC, object_bji_Tex_0009FC, object_bji_Tex_000DFC, NULL };
-static void* sEyeTexturesBOJ2[] = { object_boj_Tex_0005FC, object_boj_Tex_0006FC, object_boj_Tex_0007FC, NULL };
-static void* sEyeTexturesBOB[] = { object_bob_Tex_0007C8, object_bob_Tex_000FC8, object_bob_Tex_0017C8, NULL };
+static void* sHylianWoman1EyeTextures[] = {
+ gHylianWoman1EyeOpenTex,
+ gHylianWoman1EyeHalfTex,
+ gHylianWoman1EyeClosedTex,
+ NULL,
+};
+static void* sHylianMan1EyeTextures[] = {
+ gHylianMan1BeardedEyeOpenTex,
+ gHylianMan1BeardedEyeHalfTex,
+ gHylianMan1BeardedEyeClosedTex,
+ NULL,
+};
+static void* sHylainOldWomanEyeTextures[] = {
+ gHylianOldWomanEyeTex,
+ NULL,
+};
+static void* sHylianOldManEyeTextures[] = {
+ gHylianOldManEyeOpenTex,
+ gHylianOldManEyeHalfTex,
+ gHylianOldManEyeClosedTex,
+ NULL,
+};
+static void* sHylianMan2EyeTextures[] = {
+ gHylianMan2MustachedEyeOpenTex,
+ gHylianMan2MustachedEyeHalfTex,
+ gHylianMan2MustachedEyeClosedTex,
+ NULL,
+};
+static void* sHylianWoman2EyeTextures[] = {
+ gHylianWoman2EyeOpenTex,
+ gHylianWoman2EyeHalfTex,
+ gHylianWoman2EyeClosedTex,
+ NULL,
+};
typedef struct EnHyHeadInfo {
- /* 0x00 */ s16 objectId;
- /* 0x04 */ Gfx* headDList;
- /* 0x08 */ void** eyeTextures;
+ /* 0x0 */ s16 objectId;
+ /* 0x4 */ Gfx* headDList;
+ /* 0x8 */ void** eyeTextures;
} EnHyHeadInfo; // size = 0xC
-typedef enum EnHyHeadIndex {
- /* 0 */ ENHY_HEAD_AOB,
- /* 1 */ ENHY_HEAD_BOB,
- /* 2 */ ENHY_HEAD_BOJ_2,
- /* 3 */ ENHY_HEAD_BOJ_3,
- /* 4 */ ENHY_HEAD_BOJ_4,
- /* 5 */ ENHY_HEAD_BOJ_5,
- /* 6 */ ENHY_HEAD_BOJ_6,
- /* 7 */ ENHY_HEAD_AHG_7,
- /* 8 */ ENHY_HEAD_AHG_8,
- /* 9 */ ENHY_HEAD_AHG_9,
- /* 10 */ ENHY_HEAD_BBA,
- /* 11 */ ENHY_HEAD_CNE_11,
- /* 12 */ ENHY_HEAD_CNE_12,
- /* 13 */ ENHY_HEAD_BJI_13,
- /* 14 */ ENHY_HEAD_BJI_14,
- /* 15 */ ENHY_HEAD_COB
+typedef enum {
+ /* 0 */ ENHY_HEAD_WOMAN_1,
+ /* 1 */ ENHY_HEAD_WOMAN_2,
+ /* 2 */ ENHY_HEAD_MAN_2_MUSTACHE,
+ /* 3 */ ENHY_HEAD_MAN_2_BALD,
+ /* 4 */ ENHY_HEAD_MAN_2_LONG_HAIR,
+ /* 5 */ ENHY_HEAD_MAN_2_ALT_MUSTACHE,
+ /* 6 */ ENHY_HEAD_MAN_2_BEARD,
+ /* 7 */ ENHY_HEAD_MAN_1_BEARD,
+ /* 8 */ ENHY_HEAD_MAN_1_SHAVED,
+ /* 9 */ ENHY_HEAD_MAN_1_BOWL_CUT,
+ /* 10 */ ENHY_HEAD_OLD_WOMAN,
+ /* 11 */ ENHY_HEAD_YOUNG_WOMAN_BROWN_HAIR,
+ /* 12 */ ENHY_HEAD_YOUNG_WOMAN_ORANGE_HAIR,
+ /* 13 */ ENHY_HEAD_OLD_MAN,
+ /* 14 */ ENHY_HEAD_OLD_MAN_BALD,
+ /* 15 */ ENHY_HEAD_WOMAN_3
} EnHyHeadIndex;
static EnHyHeadInfo sHeadInfo[] = {
- /* ENHY_HEAD_AOB */ { OBJECT_AOB, gDogLadyHeadDL, sEyeTexturesAOB },
- /* ENHY_HEAD_BOB */ { OBJECT_BOB, object_bob_DL_003B78, sEyeTexturesBOB },
- /* ENHY_HEAD_BOJ_2 */ { OBJECT_BOJ, object_boj_DL_0026F0, sEyeTexturesBOJ2 },
- /* ENHY_HEAD_BOJ_3 */ { OBJECT_BOJ, object_boj_DL_0052E0, NULL },
- /* ENHY_HEAD_BOJ_4 */ { OBJECT_BOJ, object_boj_DL_005528, NULL },
- /* ENHY_HEAD_BOJ_5 */ { OBJECT_BOJ, object_boj_DL_005738, NULL },
- /* ENHY_HEAD_BOJ_6 */ { OBJECT_BOJ, object_boj_DL_0059B0, NULL },
- /* ENHY_HEAD_AHG_7 */ { OBJECT_AHG, object_ahg_DL_0030F0, sEyeTexturesAHG7 },
- /* ENHY_HEAD_AHG_8 */ { OBJECT_AHG, object_ahg_DL_005508, NULL },
- /* ENHY_HEAD_AHG_9 */ { OBJECT_AHG, object_ahg_DL_005728, NULL },
- /* ENHY_HEAD_BBA */ { OBJECT_BBA, object_bba_DL_002948, sEyeTexturesBBA },
- /* ENHY_HEAD_CNE_11 */ { OBJECT_CNE, gCneHeadBrownHairDL, NULL },
- /* ENHY_HEAD_CNE_12 */ { OBJECT_CNE, gCneHeadOrangeHairDL, NULL },
- /* ENHY_HEAD_BJI_13 */ { OBJECT_BJI, object_bji_DL_002560, sEyeTexturesBJI13 },
- /* ENHY_HEAD_BJI_14 */ { OBJECT_BJI, object_bji_DL_003F68, NULL },
- /* ENHY_HEAD_COB */ { OBJECT_COB, object_cob_DL_001300, NULL },
+ /* ENHY_HEAD_WOMAN_1 */ { OBJECT_AOB, gHylianWoman1HeadDL, sHylianWoman1EyeTextures },
+ /* ENHY_HEAD_WOMAN_2 */ { OBJECT_BOB, gHylianWoman2HeadDL, sHylianWoman2EyeTextures },
+ /* ENHY_HEAD_MAN_2_MUSTACHE */ { OBJECT_BOJ, gHylianMan2MustachedHeadDL, sHylianMan2EyeTextures },
+ /* ENHY_HEAD_MAN_2_BALD */ { OBJECT_BOJ, gHylianMan2BaldHeadDL, NULL },
+ /* ENHY_HEAD_MAN_2_LONG_HAIR */ { OBJECT_BOJ, gHylianMan2LongHairHeadDL, NULL },
+ /* ENHY_HEAD_MAN_2_ALT_MUSTACHE */ { OBJECT_BOJ, gHylianMan2AltMustachedHeadDL, NULL },
+ /* ENHY_HEAD_MAN_2_BEARD */ { OBJECT_BOJ, gHylianMan2BeardedHeadDL, NULL },
+ /* ENHY_HEAD_MAN_1_BEARD */ { OBJECT_AHG, gHylianMan1BeardedHeadDL, sHylianMan1EyeTextures },
+ /* ENHY_HEAD_MAN_1_SHAVED */ { OBJECT_AHG, gHylianMan1ShavedHeadDL, NULL },
+ /* ENHY_HEAD_MAN_1_BOWL_CUT */ { OBJECT_AHG, gHylianMan1BowlCutHeadDL, NULL },
+ /* ENHY_HEAD_OLD_WOMAN */ { OBJECT_BBA, gHylianOldWomanHeadDL, sHylainOldWomanEyeTextures },
+ /* ENHY_HEAD_YOUNG_WOMAN_BROWN_HAIR */ { OBJECT_CNE, gHylianYoungWomanBrownHairHeadDL, NULL },
+ /* ENHY_HEAD_YOUNG_WOMAN_ORANGE_HAIR */ { OBJECT_CNE, gHylianYoungWomanOrangeHairHeadDL, NULL },
+ /* ENHY_HEAD_OLD_MAN */ { OBJECT_BJI, gHylianOldManHeadDL, sHylianOldManEyeTextures },
+ /* ENHY_HEAD_OLD_MAN_BALD */ { OBJECT_BJI, gHylianOldManBaldHeadDL, NULL },
+ /* ENHY_HEAD_WOMAN_3 */ { OBJECT_COB, gHylianWoman3HeadDL, NULL },
};
typedef struct EnHySkeletonInfo {
- /* 0x00 */ s16 objectId;
- /* 0x04 */ FlexSkeletonHeader* skeleton;
+ /* 0x0 */ s16 objectId;
+ /* 0x4 */ FlexSkeletonHeader* skeleton;
} EnHySkeletonInfo; // size = 0x8
-typedef enum EnHySkeletonIndex {
- /* 0 */ ENHY_SKEL_AOB,
- /* 1 */ ENHY_SKEL_BOB,
- /* 2 */ ENHY_SKEL_BOJ,
- /* 3 */ ENHY_SKEL_AHG,
- /* 4 */ ENHY_SKEL_BBA,
- /* 5 */ ENHY_SKEL_CNE,
- /* 6 */ ENHY_SKEL_BJI,
- /* 7 */ ENHY_SKEL_COB
+typedef enum {
+ /* 0 */ ENHY_SKEL_WOMAN_1,
+ /* 1 */ ENHY_SKEL_WOMAN_2,
+ /* 2 */ ENHY_SKEL_MAN_2,
+ /* 3 */ ENHY_SKEL_MAN_1,
+ /* 4 */ ENHY_SKEL_OLD_WOMAN,
+ /* 5 */ ENHY_SKEL_YOUNG_WOMAN,
+ /* 6 */ ENHY_SKEL_OLD_MAN,
+ /* 7 */ ENHY_SKEL_WOMAN_3
} EnHySkeletonIndex;
static EnHySkeletonInfo sSkeletonInfo[] = {
- /* ENHY_SKEL_AOB */ { OBJECT_AOB, &gDogLadySkel },
- /* ENHY_SKEL_BOB */ { OBJECT_BOB, &object_bob_Skel_0000F0 },
- /* ENHY_SKEL_BOJ */ { OBJECT_BOJ, &object_boj_Skel_0000F0 },
- /* ENHY_SKEL_AHG */ { OBJECT_AHG, &object_ahg_Skel_0000F0 },
- /* ENHY_SKEL_BBA */ { OBJECT_BBA, &object_bba_Skel_0000F0 },
- /* ENHY_SKEL_CNE */ { OBJECT_CNE, &gCneSkel },
- /* ENHY_SKEL_BJI */ { OBJECT_BJI, &object_bji_Skel_0000F0 },
- /* ENHY_SKEL_COB */ { OBJECT_COB, &object_cob_Skel_0021F8 },
+ /* ENHY_SKEL_WOMAN_1 */ { OBJECT_AOB, &gHylianWoman1Skel },
+ /* ENHY_SKEL_WOMAN_2 */ { OBJECT_BOB, &gHylianWoman2Skel },
+ /* ENHY_SKEL_MAN_2 */ { OBJECT_BOJ, &gHylianMan2Skel },
+ /* ENHY_SKEL_MAN_1 */ { OBJECT_AHG, &gHylianMan1Skel },
+ /* ENHY_SKEL_OLD_WOMAN */ { OBJECT_BBA, &gHylianOldWomanSkel },
+ /* ENHY_SKEL_YOUNG_WOMAN */ { OBJECT_CNE, &gHylianYoungWomanSkel },
+ /* ENHY_SKEL_OLD_MAN */ { OBJECT_BJI, &gHylianOldManSkel },
+ /* ENHY_SKEL_WOMAN_3 */ { OBJECT_COB, &gHylianWoman3Skel },
};
typedef enum EnHyAnimationIndex {
@@ -177,117 +205,264 @@ typedef enum EnHyAnimationIndex {
} EnHyAnimationIndex;
static AnimationInfo sAnimationInfo[] = {
- /* ENHY_ANIM_0 */ { &gObjOsAnim_092C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_1 */ { &gObjOsAnim_0228, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_2 */ { &gObjOsAnim_4CF4, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_3 */ { &gObjOsAnim_16EC, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_4 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_5 */ { &gObjOsAnim_42AC, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_6 */ { &gObjOsAnim_28DC, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_7 */ { &gObjOsAnim_2160, 1.0f, 0.0f, -1.0f, 0x00, -10.0f },
- /* ENHY_ANIM_8 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, 0x00, -10.0f },
- /* ENHY_ANIM_9 */ { &gObjOsAnim_4E90, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_10 */ { &gObjOsAnim_1E7C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_11 */ { &gObjOsAnim_0170, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_12 */ { &gObjOsAnim_00B4, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_13 */ { &gObjOsAnim_3D84, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_14 */ { &gObjOsAnim_41F8, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_15 */ { &gObjOsAnim_300C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_16 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_17 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, 0x00, -8.0f },
- /* ENHY_ANIM_18 */ { &gObjOsAnim_2D0C, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_19 */ { &gObjOsAnim_2DC0, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_20 */ { &gObjOsAnim_4408, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_21 */ { &gObjOsAnim_1F18, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_22 */ { &gObjOsAnim_4F28, 1.0f, 0.0f, -1.0f, 0x00, 0.0f },
- /* ENHY_ANIM_23 */ { &gObjOsAnim_33B4, 1.0f, 0.0f, -1.0f, 0x00, -8.0f },
- /* ENHY_ANIM_24 */ { &gObjOsAnim_12E8, 1.0f, 0.0f, -1.0f, 0x00, -8.0f },
- /* ENHY_ANIM_25 */ { &gObjOsAnim_0FE4, 1.0f, 0.0f, -1.0f, 0x00, -8.0f },
- /* ENHY_ANIM_26 */ { &gObjOsAnim_0BFC, 1.0f, 0.0f, -1.0f, 0x00, -8.0f },
+ /* ENHY_ANIM_0 */ { &gObjOsAnim_092C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_1 */ { &gObjOsAnim_0228, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_2 */ { &gObjOsAnim_4CF4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_3 */ { &gObjOsAnim_16EC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_4 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_5 */ { &gObjOsAnim_42AC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_6 */ { &gObjOsAnim_28DC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_7 */ { &gObjOsAnim_2160, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
+ /* ENHY_ANIM_8 */ { &gObjOsAnim_265C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
+ /* ENHY_ANIM_9 */ { &gObjOsAnim_4E90, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_10 */ { &gObjOsAnim_1E7C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_11 */ { &gObjOsAnim_0170, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_12 */ { &gObjOsAnim_00B4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_13 */ { &gObjOsAnim_3D84, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_14 */ { &gObjOsAnim_41F8, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_15 */ { &gObjOsAnim_300C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_16 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_17 */ { &gObjOsAnim_31B0, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f },
+ /* ENHY_ANIM_18 */ { &gObjOsAnim_2D0C, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_19 */ { &gObjOsAnim_2DC0, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_20 */ { &gObjOsAnim_4408, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_21 */ { &gObjOsAnim_1F18, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_22 */ { &gObjOsAnim_4F28, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, 0.0f },
+ /* ENHY_ANIM_23 */ { &gObjOsAnim_33B4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f },
+ /* ENHY_ANIM_24 */ { &gObjOsAnim_12E8, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f },
+ /* ENHY_ANIM_25 */ { &gObjOsAnim_0FE4, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f },
+ /* ENHY_ANIM_26 */ { &gObjOsAnim_0BFC, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -8.0f },
};
typedef struct EnHyModelInfo {
- /* 0x00 */ u8 headInfoIndex; // EnHyHeadIndex
- /* 0x01 */ u8 skelInfoIndex2; // EnHySkeletonIndex, see EnHy.objectSlotSkel2
- /* 0x02 */ Color_RGBA8 envColorSeg8;
- /* 0x06 */ u8 skelInfoIndex1; // EnHySkeletonIndex, see EnHy.objectSlotSkel1
- /* 0x07 */ Color_RGBA8 envColorSeg9;
- /* 0x0B */ u8 animInfoIndex; // EnHyAnimationIndex
-} EnHyModelInfo; // size = 0xC
+ /* 0x0 */ u8 headInfoIndex; // EnHyHeadIndex
+ /* 0x1 */ u8 upperSkelInfoIndex; // EnHySkeletonIndex, see EnHy.objectSlotUpperSkel
+ /* 0x2 */ Color_RGBA8 envColorSeg8;
+ /* 0x6 */ u8 lowerSkelInfoIndex; // EnHySkeletonIndex, see EnHy.objectSlotLowerSkel
+ /* 0x7 */ Color_RGBA8 envColorSeg9;
+ /* 0xB */ u8 animInfoIndex; // EnHyAnimationIndex
+} EnHyModelInfo; // size = 0xC
static EnHyModelInfo sModelInfo[] = {
- /* ENHY_TYPE_AOB */
- { ENHY_HEAD_AOB, ENHY_SKEL_AOB, { 255, 255, 255, 255 }, ENHY_SKEL_AOB, { 255, 255, 255, 255 }, ENHY_ANIM_0 },
- /* ENHY_TYPE_COB */
- { ENHY_HEAD_COB, ENHY_SKEL_COB, { 255, 255, 255, 255 }, ENHY_SKEL_COB, { 255, 255, 255, 255 }, ENHY_ANIM_22 },
- /* ENHY_TYPE_AHG_2 */
- { ENHY_HEAD_AHG_7, ENHY_SKEL_AHG, { 255, 255, 255, 255 }, ENHY_SKEL_AHG, { 255, 255, 255, 255 }, ENHY_ANIM_1 },
- /* ENHY_TYPE_BOJ_3 */
- { ENHY_HEAD_BOJ_3, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_SKEL_BOJ, { 55, 55, 255, 0 }, ENHY_ANIM_15 },
- /* ENHY_TYPE_AHG_4 */
- { ENHY_HEAD_AHG_8, ENHY_SKEL_AHG, { 0, 0, 0, 0 }, ENHY_SKEL_AHG, { 255, 0, 0, 0 }, ENHY_ANIM_11 },
- /* ENHY_TYPE_BOJ_5 */
- { ENHY_HEAD_BOJ_4, ENHY_SKEL_BOJ, { 50, 80, 0, 0 }, ENHY_SKEL_BOJ, { 50, 80, 0, 0 }, ENHY_ANIM_16 },
- /* ENHY_TYPE_BBA */
- { ENHY_HEAD_BBA, ENHY_SKEL_BBA, { 255, 255, 255, 255 }, ENHY_SKEL_BBA, { 255, 255, 255, 255 }, ENHY_ANIM_10 },
- /* ENHY_TYPE_BJI_7 */
- { ENHY_HEAD_BJI_13, ENHY_SKEL_BJI, { 0, 50, 160, 0 }, ENHY_SKEL_BJI, { 255, 255, 255, 0 }, ENHY_ANIM_4 },
- /* ENHY_TYPE_CNE_8 */
- { ENHY_HEAD_CNE_11, ENHY_SKEL_CNE, { 160, 180, 255, 0 }, ENHY_SKEL_CNE, { 160, 180, 255, 0 }, ENHY_ANIM_9 },
- /* ENHY_TYPE_BOJ_9 */
- { ENHY_HEAD_BOJ_2, ENHY_SKEL_BOJ, { 220, 0, 80, 0 }, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_ANIM_13 },
- /* ENHY_TYPE_BOJ_10 */
- { ENHY_HEAD_BOJ_2, ENHY_SKEL_BOJ, { 0, 130, 220, 0 }, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_ANIM_14 },
- /* ENHY_TYPE_CNE_11 */
- { ENHY_HEAD_CNE_12, ENHY_SKEL_CNE, { 70, 160, 230, 0 }, ENHY_SKEL_CNE, { 255, 255, 100, 0 }, ENHY_ANIM_20 },
- /* ENHY_TYPE_BOJ_12 */
- { ENHY_HEAD_BOJ_5, ENHY_SKEL_BOJ, { 150, 60, 90, 0 }, ENHY_SKEL_BOJ, { 255, 240, 150, 0 }, ENHY_ANIM_18 },
- /* ENHY_TYPE_AHG_13 */
- { ENHY_HEAD_AHG_9, ENHY_SKEL_AHG, { 200, 180, 255, 0 }, ENHY_SKEL_AHG, { 200, 180, 255, 0 }, ENHY_ANIM_12 },
- /* ENHY_TYPE_BOJ_14 */
- { ENHY_HEAD_BOJ_6, ENHY_SKEL_BOJ, { 140, 255, 110, 0 }, ENHY_SKEL_BOJ, { 255, 255, 255, 0 }, ENHY_ANIM_19 },
- /* ENHY_TYPE_BJI_15 */
- { ENHY_HEAD_BJI_14, ENHY_SKEL_BJI, { 130, 70, 20, 0 }, ENHY_SKEL_BJI, { 130, 180, 255, 0 }, ENHY_ANIM_21 },
- /* ENHY_TYPE_BOJ_16 */
- { ENHY_HEAD_BOJ_2, ENHY_SKEL_BOJ, { 255, 255, 255, 255 }, ENHY_SKEL_BOJ, { 255, 255, 255, 255 }, ENHY_ANIM_5 },
- /* ENHY_TYPE_AHG_17 */
- { ENHY_HEAD_AHG_8, ENHY_SKEL_AHG, { 90, 100, 20, 255 }, ENHY_SKEL_AHG, { 100, 140, 50, 255 }, ENHY_ANIM_11 },
- /* ENHY_TYPE_BOB_18 */
- { ENHY_HEAD_BOB, ENHY_SKEL_BOB, { 255, 255, 255, 255 }, ENHY_SKEL_BOB, { 255, 255, 255, 255 }, ENHY_ANIM_6 },
- /* ENHY_TYPE_BJI_19 */
- { ENHY_HEAD_BJI_14, ENHY_SKEL_BJI, { 160, 0, 100, 0 }, ENHY_SKEL_BJI, { 70, 130, 210, 0 }, ENHY_ANIM_21 },
- /* ENHY_TYPE_AHG_20 */
- { ENHY_HEAD_AHG_9, ENHY_SKEL_AHG, { 160, 230, 0, 0 }, ENHY_SKEL_AHG, { 0, 150, 110, 0 }, ENHY_ANIM_12 },
+ /* ENHY_TYPE_DOG_LADY */
+ {
+ ENHY_HEAD_WOMAN_1,
+ ENHY_SKEL_WOMAN_1,
+ { 255, 255, 255, 255 },
+ ENHY_SKEL_WOMAN_1,
+ { 255, 255, 255, 255 },
+ ENHY_ANIM_0,
+ },
+ /* ENHY_TYPE_WOMAN_3 */
+ {
+ ENHY_HEAD_WOMAN_3,
+ ENHY_SKEL_WOMAN_3,
+ { 255, 255, 255, 255 },
+ ENHY_SKEL_WOMAN_3,
+ { 255, 255, 255, 255 },
+ ENHY_ANIM_22,
+ },
+ /* ENHY_TYPE_MAN_1_BEARD */
+ {
+ ENHY_HEAD_MAN_1_BEARD,
+ ENHY_SKEL_MAN_1,
+ { 255, 255, 255, 255 },
+ ENHY_SKEL_MAN_1,
+ { 255, 255, 255, 255 },
+ ENHY_ANIM_1,
+ },
+ /* ENHY_TYPE_MAN_2_BALD */
+ {
+ ENHY_HEAD_MAN_2_BALD,
+ ENHY_SKEL_MAN_2,
+ { 255, 255, 255, 0 },
+ ENHY_SKEL_MAN_2,
+ { 55, 55, 255, 0 },
+ ENHY_ANIM_15,
+ },
+ /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */
+ {
+ ENHY_HEAD_MAN_1_SHAVED,
+ ENHY_SKEL_MAN_1,
+ { 0, 0, 0, 0 },
+ ENHY_SKEL_MAN_1,
+ { 255, 0, 0, 0 },
+ ENHY_ANIM_11,
+ },
+ /* ENHY_TYPE_BEGGAR */
+ {
+ ENHY_HEAD_MAN_2_LONG_HAIR,
+ ENHY_SKEL_MAN_2,
+ { 50, 80, 0, 0 },
+ ENHY_SKEL_MAN_2,
+ { 50, 80, 0, 0 },
+ ENHY_ANIM_16,
+ },
+ /* ENHY_TYPE_OLD_WOMAN */
+ {
+ ENHY_HEAD_OLD_WOMAN,
+ ENHY_SKEL_OLD_WOMAN,
+ { 255, 255, 255, 255 },
+ ENHY_SKEL_OLD_WOMAN,
+ { 255, 255, 255, 255 },
+ ENHY_ANIM_10,
+ },
+ /* ENHY_TYPE_OLD_MAN */
+ {
+ ENHY_HEAD_OLD_MAN,
+ ENHY_SKEL_OLD_MAN,
+ { 0, 50, 160, 0 },
+ ENHY_SKEL_OLD_MAN,
+ { 255, 255, 255, 0 },
+ ENHY_ANIM_4,
+ },
+ /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */
+ {
+ ENHY_HEAD_YOUNG_WOMAN_BROWN_HAIR,
+ ENHY_SKEL_YOUNG_WOMAN,
+ { 160, 180, 255, 0 },
+ ENHY_SKEL_YOUNG_WOMAN,
+ { 160, 180, 255, 0 },
+ ENHY_ANIM_9,
+ },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */
+ {
+ ENHY_HEAD_MAN_2_MUSTACHE,
+ ENHY_SKEL_MAN_2,
+ { 220, 0, 80, 0 },
+ ENHY_SKEL_MAN_2,
+ { 255, 255, 255, 0 },
+ ENHY_ANIM_13,
+ },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */
+ {
+ ENHY_HEAD_MAN_2_MUSTACHE,
+ ENHY_SKEL_MAN_2,
+ { 0, 130, 220, 0 },
+ ENHY_SKEL_MAN_2,
+ { 255, 255, 255, 0 },
+ ENHY_ANIM_14,
+ },
+ /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */
+ {
+ ENHY_HEAD_YOUNG_WOMAN_ORANGE_HAIR,
+ ENHY_SKEL_YOUNG_WOMAN,
+ { 70, 160, 230, 0 },
+ ENHY_SKEL_YOUNG_WOMAN,
+ { 255, 255, 100, 0 },
+ ENHY_ANIM_20,
+ },
+ /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */
+ {
+ ENHY_HEAD_MAN_2_ALT_MUSTACHE,
+ ENHY_SKEL_MAN_2,
+ { 150, 60, 90, 0 },
+ ENHY_SKEL_MAN_2,
+ { 255, 240, 150, 0 },
+ ENHY_ANIM_18,
+ },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */
+ {
+ ENHY_HEAD_MAN_1_BOWL_CUT,
+ ENHY_SKEL_MAN_1,
+ { 200, 180, 255, 0 },
+ ENHY_SKEL_MAN_1,
+ { 200, 180, 255, 0 },
+ ENHY_ANIM_12,
+ },
+ /* ENHY_TYPE_MAN_2_BEARD */
+ {
+ ENHY_HEAD_MAN_2_BEARD,
+ ENHY_SKEL_MAN_2,
+ { 140, 255, 110, 0 },
+ ENHY_SKEL_MAN_2,
+ { 255, 255, 255, 0 },
+ ENHY_ANIM_19,
+ },
+ /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */
+ {
+ ENHY_HEAD_OLD_MAN_BALD,
+ ENHY_SKEL_OLD_MAN,
+ { 130, 70, 20, 0 },
+ ENHY_SKEL_OLD_MAN,
+ { 130, 180, 255, 0 },
+ ENHY_ANIM_21,
+ },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */
+ {
+ ENHY_HEAD_MAN_2_MUSTACHE,
+ ENHY_SKEL_MAN_2,
+ { 255, 255, 255, 255 },
+ ENHY_SKEL_MAN_2,
+ { 255, 255, 255, 255 },
+ ENHY_ANIM_5,
+ },
+ /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */
+ {
+ ENHY_HEAD_MAN_1_SHAVED,
+ ENHY_SKEL_MAN_1,
+ { 90, 100, 20, 255 },
+ ENHY_SKEL_MAN_1,
+ { 100, 140, 50, 255 },
+ ENHY_ANIM_11,
+ },
+ /* ENHY_TYPE_WOMAN_2 */
+ {
+ ENHY_HEAD_WOMAN_2,
+ ENHY_SKEL_WOMAN_2,
+ { 255, 255, 255, 255 },
+ ENHY_SKEL_WOMAN_2,
+ { 255, 255, 255, 255 },
+ ENHY_ANIM_6,
+ },
+ /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */
+ {
+ ENHY_HEAD_OLD_MAN_BALD,
+ ENHY_SKEL_OLD_MAN,
+ { 160, 0, 100, 0 },
+ ENHY_SKEL_OLD_MAN,
+ { 70, 130, 210, 0 },
+ ENHY_ANIM_21,
+ },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */
+ {
+ ENHY_HEAD_MAN_1_BOWL_CUT,
+ ENHY_SKEL_MAN_1,
+ { 160, 230, 0, 0 },
+ ENHY_SKEL_MAN_1,
+ { 0, 150, 110, 0 },
+ ENHY_ANIM_12,
+ },
};
typedef struct EnHyColliderInfo {
- /* 0x00 */ Vec3s offset;
- /* 0x06 */ s16 radius;
- /* 0x08 */ s16 height;
+ /* 0x0 */ Vec3s offset;
+ /* 0x6 */ s16 radius;
+ /* 0x8 */ s16 height;
} EnHyColliderInfo; // size 0xA
static EnHyColliderInfo sColliderInfo[] = {
- /* ENHY_TYPE_AOB */ { { 0, 0, 4 }, 24, 70 },
- /* ENHY_TYPE_COB */ { { 0, 0, 8 }, 28, 62 },
- /* ENHY_TYPE_AHG_2 */ { { 0, 0, 4 }, 20, 60 },
- /* ENHY_TYPE_BOJ_3 */ { { 0, 0, 2 }, 20, 60 },
- /* ENHY_TYPE_AHG_4 */ { { 0, 0, -2 }, 20, 60 },
- /* ENHY_TYPE_BOJ_5 */ { { 0, 0, 8 }, 24, 40 },
- /* ENHY_TYPE_BBA */ { { 0, 0, 10 }, 26, 40 },
- /* ENHY_TYPE_BJI_7 */ { { 0, 0, 12 }, 26, 58 },
- /* ENHY_TYPE_CNE_8 */ { { 0, 0, 2 }, 18, 68 },
- /* ENHY_TYPE_BOJ_9 */ { { 0, 0, 4 }, 20, 60 },
- /* ENHY_TYPE_BOJ_10 */ { { 0, 0, 4 }, 20, 60 },
- /* ENHY_TYPE_CNE_11 */ { { 0, 0, 6 }, 20, 64 },
- /* ENHY_TYPE_BOJ_12 */ { { 0, 0, 0 }, 18, 60 },
- /* ENHY_TYPE_AHG_13 */ { { 0, 0, 0 }, 16, 60 },
- /* ENHY_TYPE_BOJ_14 */ { { 0, 0, 0 }, 16, 64 },
- /* ENHY_TYPE_BJI_15 */ { { 0, 0, 8 }, 20, 58 },
- /* ENHY_TYPE_BOJ_16 */ { { 4, 0, 0 }, 18, 62 },
- /* ENHY_TYPE_AHG_17 */ { { 4, 0, 0 }, 18, 62 },
- /* ENHY_TYPE_BOB_18 */ { { 0, 0, 8 }, 28, 62 },
- /* ENHY_TYPE_BJI_19 */ { { 0, 0, 0 }, 16, 60 },
- /* ENHY_TYPE_AHG_20 */ { { 0, 0, 8 }, 20, 58 },
+ /* ENHY_TYPE_DOG_LADY */ { { 0, 0, 4 }, 24, 70 },
+ /* ENHY_TYPE_WOMAN_3 */ { { 0, 0, 8 }, 28, 62 },
+ /* ENHY_TYPE_MAN_1_BEARD */ { { 0, 0, 4 }, 20, 60 },
+ /* ENHY_TYPE_MAN_2_BALD */ { { 0, 0, 2 }, 20, 60 },
+ /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */ { { 0, 0, -2 }, 20, 60 },
+ /* ENHY_TYPE_BEGGAR */ { { 0, 0, 8 }, 24, 40 },
+ /* ENHY_TYPE_OLD_WOMAN */ { { 0, 0, 10 }, 26, 40 },
+ /* ENHY_TYPE_OLD_MAN */ { { 0, 0, 12 }, 26, 58 },
+ /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */ { { 0, 0, 2 }, 18, 68 },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */ { { 0, 0, 4 }, 20, 60 },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */ { { 0, 0, 4 }, 20, 60 },
+ /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */ { { 0, 0, 6 }, 20, 64 },
+ /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */ { { 0, 0, 0 }, 18, 60 },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */ { { 0, 0, 0 }, 16, 60 },
+ /* ENHY_TYPE_MAN_2_BEARD */ { { 0, 0, 0 }, 16, 64 },
+ /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */ { { 0, 0, 8 }, 20, 58 },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */ { { 4, 0, 0 }, 18, 62 },
+ /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */ { { 4, 0, 0 }, 18, 62 },
+ /* ENHY_TYPE_WOMAN_2 */ { { 0, 0, 8 }, 28, 62 },
+ /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */ { { 0, 0, 0 }, 16, 60 },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */ { { 0, 0, 8 }, 20, 58 },
};
typedef struct EnHyPlayerTrackingInfo {
@@ -297,27 +472,27 @@ typedef struct EnHyPlayerTrackingInfo {
} EnHyPlayerTrackingInfo; // size = 0xC
static EnHyPlayerTrackingInfo sPlayerTrackingInfo[] = {
- /* ENHY_TYPE_AOB */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_COB */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_AHG_2 */ { 0x07, 40.0f, 20.0f },
- /* ENHY_TYPE_BOJ_3 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_AHG_4 */ { 0x07, 40.0f, 20.0f },
- /* ENHY_TYPE_BOJ_5 */ { 0x08, 0.0f, -20.0f },
- /* ENHY_TYPE_BBA */ { 0x09, 20.0f, 0.0f },
- /* ENHY_TYPE_BJI_7 */ { 0x09, 20.0f, 0.0f },
- /* ENHY_TYPE_CNE_8 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_BOJ_9 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_BOJ_10 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_CNE_11 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_BOJ_12 */ { 0x00, 0.0f, 0.0f },
- /* ENHY_TYPE_AHG_13 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_BOJ_14 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_BJI_15 */ { 0x0A, 20.0f, 0.0f },
- /* ENHY_TYPE_BOJ_16 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_AHG_17 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_BOB_18 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_BJI_19 */ { 0x06, 20.0f, 10.0f },
- /* ENHY_TYPE_AHG_20 */ { 0x0A, 20.0f, 0.0f },
+ /* ENHY_TYPE_DOG_LADY */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_WOMAN_3 */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_1_BEARD */ { 7, 40.0f, 20.0f },
+ /* ENHY_TYPE_MAN_2_BALD */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */ { 7, 40.0f, 20.0f },
+ /* ENHY_TYPE_BEGGAR */ { 8, 0.0f, -20.0f },
+ /* ENHY_TYPE_OLD_WOMAN */ { 9, 20.0f, 0.0f },
+ /* ENHY_TYPE_OLD_MAN */ { 9, 20.0f, 0.0f },
+ /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */ { 0, 0.0f, 0.0f },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_2_BEARD */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */ { 10, 20.0f, 0.0f },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_WOMAN_2 */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */ { 6, 20.0f, 10.0f },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */ { 10, 20.0f, 0.0f },
};
typedef struct EnHyInit2Info {
@@ -329,41 +504,41 @@ typedef struct EnHyInit2Info {
} EnHyInit2Info; // size = 0x1C
static EnHyInit2Info sInit2Info[] = {
- /* ENHY_TYPE_AOB */ { 36.0f, { 0.0f, 0.0f, 600.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_COB */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_AHG_2 */ { 22.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOJ_3 */ { 20.0f, { -100.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_AHG_4 */ { 22.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOJ_5 */ { 21.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BBA */ { 25.0f, { -100.0f, 0.0f, 600.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BJI_7 */ { 28.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_CNE_8 */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOJ_9 */ { 18.0f, { 0.0f, 0.0f, 100.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOJ_10 */ { 18.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_CNE_11 */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOJ_12 */ { 21.0f, { 0.0f, 0.0f, -300.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_AHG_13 */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOJ_14 */ { 18.0f, { -200.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BJI_15 */ { 27.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOJ_16 */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 0x04, 30.0f },
- /* ENHY_TYPE_AHG_17 */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BOB_18 */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_BJI_19 */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 0x06, 30.0f },
- /* ENHY_TYPE_AHG_20 */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 0x06, 30.0f },
+ /* ENHY_TYPE_DOG_LADY */ { 36.0f, { 0.0f, 0.0f, 600.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_WOMAN_3 */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_1_BEARD */ { 22.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_2_BALD */ { 20.0f, { -100.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT */ { 22.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_BEGGAR */ { 21.0f, { 0.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_OLD_WOMAN */ { 25.0f, { -100.0f, 0.0f, 600.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_OLD_MAN */ { 28.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT */ { 18.0f, { 0.0f, 0.0f, 100.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT */ { 18.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_2_ALT_MUSTACHE */ { 21.0f, { 0.0f, 0.0f, -300.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_2_BEARD */ { 18.0f, { -200.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE */ { 27.0f, { -100.0f, 0.0f, 800.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 4, 30.0f },
+ /* ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT */ { 19.0f, { 400.0f, 0.0f, 0.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_WOMAN_2 */ { 40.0f, { -100.0f, 0.0f, 400.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE */ { 17.0f, { 0.0f, 0.0f, 700.0f }, 0.01f, 6, 30.0f },
+ /* ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT */ { 20.0f, { 0.0f, 0.0f, -200.0f }, 0.01f, 6, 30.0f },
};
s32 EnHy_FindSkelAndHeadObjects(EnHy* this, PlayState* play) {
- u8 headInfoIndex = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].headInfoIndex;
- u8 skelInfoIndex2 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].skelInfoIndex2;
- u8 skelInfoIndex1 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].skelInfoIndex1;
+ u8 headInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].headInfoIndex;
+ u8 upperSkelInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].upperSkelInfoIndex;
+ u8 lowerSkelInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].lowerSkelInfoIndex;
- this->objectSlotSkel1 = Object_GetSlot(&play->objectCtx, sSkeletonInfo[skelInfoIndex1].objectId);
- if (this->objectSlotSkel1 < 0) {
+ this->objectSlotLowerSkel = Object_GetSlot(&play->objectCtx, sSkeletonInfo[lowerSkelInfoIndex].objectId);
+ if (this->objectSlotLowerSkel < 0) {
return false;
}
- this->objectSlotSkel2 = Object_GetSlot(&play->objectCtx, sSkeletonInfo[skelInfoIndex2].objectId);
- if (this->objectSlotSkel2 < 0) {
+ this->objectSlotUpperSkel = Object_GetSlot(&play->objectCtx, sSkeletonInfo[upperSkelInfoIndex].objectId);
+ if (this->objectSlotUpperSkel < 0) {
return false;
}
@@ -376,11 +551,11 @@ s32 EnHy_FindSkelAndHeadObjects(EnHy* this, PlayState* play) {
}
s32 EnHy_AreSkelAndHeadObjectsLoaded(EnHy* this, PlayState* play) {
- if (!Object_IsLoaded(&play->objectCtx, this->objectSlotSkel1)) {
+ if (!Object_IsLoaded(&play->objectCtx, this->objectSlotLowerSkel)) {
return false;
}
- if (!Object_IsLoaded(&play->objectCtx, this->objectSlotSkel2)) {
+ if (!Object_IsLoaded(&play->objectCtx, this->objectSlotUpperSkel)) {
return false;
}
@@ -409,8 +584,8 @@ s32 EnHy_IsOsAnimeObjectLoaded(EnHy* this, PlayState* play) {
return true;
}
-void func_80A6F7CC(EnHy* this, PlayState* play, s32 getItemId) {
- this->unkGetItemId = getItemId;
+void EnHy_GiveItem(EnHy* this, PlayState* play, s32 getItemId) {
+ this->getItemId = getItemId;
Actor_OfferGetItem(&this->actor, play, getItemId, this->actor.xzDistToPlayer + 1.0f,
fabsf(this->actor.yDistToPlayer) + 1.0f);
}
@@ -418,19 +593,19 @@ void func_80A6F7CC(EnHy* this, PlayState* play, s32 getItemId) {
u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
Player* player = GET_PLAYER(play);
EnHy* this = (EnHy*)thisx;
- u16 textId = MaskReaction_GetTextId(play, MASK_REACTION_SET_37 + PARAMS_GET_S(this->actor.params, 0, 7));
+ u16 textId = MaskReaction_GetTextId(play, ENHY_GET_TYPE(&this->actor) + MASK_REACTION_SET_DOG_LADY);
if (textId != 0) {
- if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_5) {
+ if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_BEGGAR) {
player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE;
}
return textId;
}
- switch (PARAMS_GET_S(this->actor.params, 0, 7)) {
- case ENHY_TYPE_AOB:
+ switch (ENHY_GET_TYPE(&this->actor)) {
+ case ENHY_TYPE_DOG_LADY:
if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
- return (this->unk_330 & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK)
+ return (this->talonEventChkInf & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK)
? 0x508D
: (GET_INFTABLE(INFTABLE_CB) ? 0x508C : 0x508B);
} else if (play->sceneId == SCENE_MARKET_DAY) {
@@ -439,7 +614,7 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
s16 followingDog = (gSaveContext.dogParams & 0xF00) >> 8;
if (followingDog != 0) {
- this->unk_215 = false;
+ this->playedSfx = false;
return (followingDog == 1) ? 0x709F : 0x709E;
} else {
return 0x709D;
@@ -447,13 +622,15 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
} else {
return 0x70A0;
}
- case ENHY_TYPE_COB:
+
+ case ENHY_TYPE_WOMAN_3:
if (GET_EVENTCHKINF(EVENTCHKINF_80)) {
return GET_INFTABLE(INFTABLE_C1) ? 0x7017 : 0x7045;
} else {
return GET_INFTABLE(INFTABLE_C0) ? 0x7017 : 0x7016;
}
- case ENHY_TYPE_AHG_2:
+
+ case ENHY_TYPE_MAN_1_BEARD:
if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
return 0x5086;
} else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) {
@@ -469,16 +646,21 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
} else {
return 0x701A;
}
- case ENHY_TYPE_BOJ_3:
+
+ case ENHY_TYPE_MAN_2_BALD:
return GET_EVENTCHKINF(EVENTCHKINF_80) ? (GET_INFTABLE(INFTABLE_C4) ? 0x7001 : 0x70EB) : 0x7001;
- case ENHY_TYPE_AHG_4:
+
+ case ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT:
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704B : (GET_INFTABLE(INFTABLE_C5) ? 0x7024 : 0x7023);
- case ENHY_TYPE_BOJ_5:
+
+ case ENHY_TYPE_BEGGAR:
player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE;
return 0x700C;
- case ENHY_TYPE_BBA:
+
+ case ENHY_TYPE_OLD_WOMAN:
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704A : (GET_INFTABLE(INFTABLE_C6) ? 0x7022 : 0x7021);
- case ENHY_TYPE_BJI_7:
+
+ case ENHY_TYPE_OLD_MAN:
if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
return 0x5088;
} else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) {
@@ -486,13 +668,15 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
} else {
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704D : (GET_INFTABLE(INFTABLE_C7) ? 0x7028 : 0x7027);
}
- case ENHY_TYPE_CNE_8:
+
+ case ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR:
if (GET_EVENTCHKINF(EVENTCHKINF_80)) {
return GET_INFTABLE(INFTABLE_C9) ? 0x701E : 0x7048;
} else {
return GET_INFTABLE(INFTABLE_C8) ? 0x701E : 0x701D;
}
- case ENHY_TYPE_BOJ_9:
+
+ case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT:
if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
return GET_EVENTCHKINF(EVENTCHKINF_AA) ? 0x5082 : 0x5081;
} else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) {
@@ -500,7 +684,8 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
} else {
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7049 : (GET_INFTABLE(INFTABLE_CA) ? 0x7020 : 0x701F);
}
- case ENHY_TYPE_BOJ_10:
+
+ case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT:
if (play->sceneId == SCENE_IMPAS_HOUSE) {
return GET_EVENTCHKINF(EVENTCHKINF_AA) ? 0x507E : 0x507D;
} else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) {
@@ -512,24 +697,31 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7046 : (GET_INFTABLE(INFTABLE_CD) ? 0x7019 : 0x7018);
#endif
}
- case ENHY_TYPE_CNE_11:
+
+ case ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR:
return GET_INFTABLE(INFTABLE_MALON_SPAWNED_AT_HYRULE_CASTLE) ? (GET_INFTABLE(INFTABLE_CC) ? 0x7014 : 0x70A4)
: 0x7014;
- case ENHY_TYPE_BOJ_12:
+
+ case ENHY_TYPE_MAN_2_ALT_MUSTACHE:
if (play->sceneId == SCENE_KAKARIKO_VILLAGE) {
return !IS_DAY ? 0x5084 : 0x5083;
} else {
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7044 : 0x7015;
}
- case ENHY_TYPE_AHG_13:
+
+ case ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT:
return 0x7055;
- case ENHY_TYPE_BOJ_14:
+
+ case ENHY_TYPE_MAN_2_BEARD:
return 0x7089;
- case ENHY_TYPE_BJI_15:
+
+ case ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE:
return 0x708A;
- case ENHY_TYPE_BOJ_16:
+
+ case ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT:
return 0x700E;
- case ENHY_TYPE_AHG_17:
+
+ case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT:
if (!LINK_IS_ADULT) {
if (IS_DAY) {
return GET_INFTABLE(INFTABLE_160) ? 0x5058 : 0x5057;
@@ -541,18 +733,22 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
} else {
return 0x5058;
}
- case ENHY_TYPE_BOB_18:
+
+ case ENHY_TYPE_WOMAN_2:
if (!LINK_IS_ADULT) {
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x505F : (GET_INFTABLE(INFTABLE_163) ? 0x505E : 0x505D);
} else {
- return (this->unk_330 & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK)
+ return (this->talonEventChkInf & EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_MASK)
? 0x5062
: (GET_INFTABLE(INFTABLE_164) ? 0x5061 : 0x5060);
}
- case ENHY_TYPE_BJI_19:
+
+ case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE:
return 0x7120;
- case ENHY_TYPE_AHG_20:
+
+ case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT:
return 0x7121;
+
default:
return 0;
}
@@ -572,17 +768,19 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) {
case TEXT_STATE_8:
case TEXT_STATE_9:
return NPC_TALK_STATE_TALKING;
+
case TEXT_STATE_DONE_FADING:
switch (this->actor.textId) {
case 0x709E:
case 0x709F:
- if (!this->unk_215) {
+ if (!this->playedSfx) {
Audio_PlaySfxGeneral(this->actor.textId == 0x709F ? NA_SE_SY_CORRECT_CHIME : NA_SE_SY_ERROR,
&gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
- this->unk_215 = true;
+ this->playedSfx = true;
}
break;
+
case 0x70F0:
case 0x70F1:
case 0x70F2:
@@ -594,6 +792,7 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) {
break;
}
return NPC_TALK_STATE_TALKING;
+
case TEXT_STATE_CLOSING:
switch (this->actor.textId) {
case 0x70F0:
@@ -604,39 +803,51 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_17);
Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
break;
+
case 0x7016:
SET_INFTABLE(INFTABLE_C0);
break;
+
case 0x7045:
SET_INFTABLE(INFTABLE_C1);
break;
+
case 0x701B:
SET_INFTABLE(INFTABLE_C2);
break;
+
case 0x7047:
SET_INFTABLE(INFTABLE_C3);
break;
+
case 0x70EB:
SET_INFTABLE(INFTABLE_C4);
break;
+
case 0x7023:
SET_INFTABLE(INFTABLE_C5);
break;
+
case 0x7021:
SET_INFTABLE(INFTABLE_C6);
break;
+
case 0x7027:
SET_INFTABLE(INFTABLE_C7);
break;
+
case 0x701D:
SET_INFTABLE(INFTABLE_C8);
break;
+
case 0x7048:
SET_INFTABLE(INFTABLE_C9);
break;
+
case 0x701F:
SET_INFTABLE(INFTABLE_CA);
break;
+
case 0x7018:
#if OOT_VERSION < NTSC_1_1
SET_INFTABLE(INFTABLE_CB);
@@ -644,50 +855,61 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) {
SET_INFTABLE(INFTABLE_CD);
#endif
break;
+
case 0x70A4:
SET_INFTABLE(INFTABLE_CC);
break;
+
case 0x5057:
SET_INFTABLE(INFTABLE_160);
break;
+
case 0x5059:
SET_INFTABLE(INFTABLE_161);
break;
+
case 0x505B:
SET_INFTABLE(INFTABLE_162);
break;
+
case 0x505D:
SET_INFTABLE(INFTABLE_163);
break;
+
case 0x5060:
SET_INFTABLE(INFTABLE_164);
break;
+
case 0x508B:
SET_INFTABLE(INFTABLE_CB);
break;
+
case 0x709E:
gSaveContext.dogParams = 0;
break;
+
case 0x709F:
- func_80A6F7CC(this, play, GET_INFTABLE(INFTABLE_191) ? GI_RUPEE_BLUE : GI_HEART_PIECE);
- this->actionFunc = func_80A714C4;
+ EnHy_GiveItem(this, play, GET_INFTABLE(INFTABLE_191) ? GI_RUPEE_BLUE : GI_HEART_PIECE);
+ this->actionFunc = EnHy_WaitDogFoundRewardGiven;
break;
}
return NPC_TALK_STATE_IDLE;
+
case TEXT_STATE_EVENT:
if (!Message_ShouldAdvance(play)) {
return NPC_TALK_STATE_TALKING;
} else {
return NPC_TALK_STATE_ACTION;
}
- }
- return NPC_TALK_STATE_TALKING;
+ default:
+ return NPC_TALK_STATE_TALKING;
+ }
}
void EnHy_UpdateEyes(EnHy* this) {
if (DECR(this->nextEyeIndexTimer) == 0) {
- u8 headInfoIndex = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].headInfoIndex;
+ u8 headInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].headInfoIndex;
this->curEyeIndex++;
if ((sHeadInfo[headInfoIndex].eyeTextures != NULL) &&
@@ -699,14 +921,14 @@ void EnHy_UpdateEyes(EnHy* this) {
}
void EnHy_InitCollider(EnHy* this) {
- u8 type = PARAMS_GET_S(this->actor.params, 0, 7);
+ u8 type = ENHY_GET_TYPE(&this->actor);
this->collider.dim.radius = sColliderInfo[type].radius;
this->collider.dim.height = sColliderInfo[type].height;
}
void EnHy_InitSetProperties(EnHy* this) {
- u8 type = PARAMS_GET_S(this->actor.params, 0, 7);
+ u8 type = ENHY_GET_TYPE(&this->actor);
this->actor.shape.shadowScale = sInit2Info[type].shadowScale;
Actor_SetScale(&this->actor, sInit2Info[type].scale);
@@ -722,17 +944,17 @@ void EnHy_UpdateCollider(EnHy* this, PlayState* play) {
pos.x = this->actor.world.pos.x;
pos.y = this->actor.world.pos.y;
pos.z = this->actor.world.pos.z;
- pos.x += sColliderInfo[PARAMS_GET_S(this->actor.params, 0, 7)].offset.x;
- pos.y += sColliderInfo[PARAMS_GET_S(this->actor.params, 0, 7)].offset.y;
- pos.z += sColliderInfo[PARAMS_GET_S(this->actor.params, 0, 7)].offset.z;
+ pos.x += sColliderInfo[ENHY_GET_TYPE(&this->actor)].offset.x;
+ pos.y += sColliderInfo[ENHY_GET_TYPE(&this->actor)].offset.y;
+ pos.z += sColliderInfo[ENHY_GET_TYPE(&this->actor)].offset.z;
this->collider.dim.pos = pos;
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
}
-void func_80A70834(EnHy* this, PlayState* play) {
+void EnHy_OfferBuyBottledItem(EnHy* this, PlayState* play) {
Player* player = GET_PLAYER(play);
- if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_5) {
+ if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_BEGGAR) {
if (!Inventory_HasSpecificBottle(ITEM_BOTTLE_BLUE_FIRE) && !Inventory_HasSpecificBottle(ITEM_BOTTLE_BUG) &&
!Inventory_HasSpecificBottle(ITEM_BOTTLE_FISH)) {
switch (func_8002F368(play)) {
@@ -741,6 +963,7 @@ void func_80A70834(EnHy* this, PlayState* play) {
case EXCH_ITEM_BOTTLE_RUTOS_LETTER:
this->actor.textId = 0x70EF;
break;
+
default:
if (Player_GetMask(play) == PLAYER_MASK_NONE) {
this->actor.textId = 0x70ED;
@@ -752,12 +975,15 @@ void func_80A70834(EnHy* this, PlayState* play) {
case EXCH_ITEM_BOTTLE_BLUE_FIRE:
this->actor.textId = 0x70F0;
break;
+
case EXCH_ITEM_BOTTLE_FISH:
this->actor.textId = 0x70F1;
break;
+
case EXCH_ITEM_BOTTLE_BUG:
this->actor.textId = 0x70F2;
break;
+
default:
if (Player_GetMask(play) == PLAYER_MASK_NONE) {
this->actor.textId = 0x700C;
@@ -770,30 +996,34 @@ void func_80A70834(EnHy* this, PlayState* play) {
}
}
-void func_80A70978(EnHy* this, PlayState* play) {
+void EnHy_UpdateNPC(EnHy* this, PlayState* play) {
Player* player = GET_PLAYER(play);
s16 trackingMode;
- switch (PARAMS_GET_S(this->actor.params, 0, 7)) {
- case ENHY_TYPE_BOJ_3:
- case ENHY_TYPE_BJI_7:
- case ENHY_TYPE_BOJ_9:
- case ENHY_TYPE_BOJ_10:
+ switch (ENHY_GET_TYPE(&this->actor)) {
+ case ENHY_TYPE_MAN_2_BALD:
+ case ENHY_TYPE_OLD_MAN:
+ case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT:
+ case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT:
trackingMode =
(this->interactInfo.talkState == NPC_TALK_STATE_IDLE) ? NPC_TRACKING_NONE : NPC_TRACKING_HEAD_AND_TORSO;
break;
- case ENHY_TYPE_BOJ_12:
+
+ case ENHY_TYPE_MAN_2_ALT_MUSTACHE:
trackingMode = NPC_TRACKING_NONE;
break;
- case ENHY_TYPE_AHG_2:
- case ENHY_TYPE_AHG_17:
+
+ case ENHY_TYPE_MAN_1_BEARD:
+ case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT:
trackingMode = NPC_TRACKING_FULL_BODY;
break;
- case ENHY_TYPE_AOB:
- case ENHY_TYPE_BOB_18:
+
+ case ENHY_TYPE_DOG_LADY:
+ case ENHY_TYPE_WOMAN_2:
trackingMode = (this->interactInfo.talkState == NPC_TALK_STATE_IDLE) ? NPC_TRACKING_HEAD_AND_TORSO
: NPC_TRACKING_FULL_BODY;
break;
+
default:
trackingMode = NPC_TRACKING_HEAD_AND_TORSO;
break;
@@ -802,48 +1032,50 @@ void func_80A70978(EnHy* this, PlayState* play) {
this->interactInfo.trackPos = player->actor.world.pos;
if (LINK_IS_ADULT) {
- this->interactInfo.yOffset = sPlayerTrackingInfo[PARAMS_GET_S(this->actor.params, 0, 7)].adultYOffset;
+ this->interactInfo.yOffset = sPlayerTrackingInfo[ENHY_GET_TYPE(&this->actor)].adultYOffset;
} else {
- this->interactInfo.yOffset = sPlayerTrackingInfo[PARAMS_GET_S(this->actor.params, 0, 7)].childYOffset;
+ this->interactInfo.yOffset = sPlayerTrackingInfo[ENHY_GET_TYPE(&this->actor)].childYOffset;
}
- Npc_TrackPoint(&this->actor, &this->interactInfo,
- sPlayerTrackingInfo[PARAMS_GET_S(this->actor.params, 0, 7)].presetIndex, trackingMode);
+ Npc_TrackPoint(&this->actor, &this->interactInfo, sPlayerTrackingInfo[ENHY_GET_TYPE(&this->actor)].presetIndex,
+ trackingMode);
if (Npc_UpdateTalking(play, &this->actor, &this->interactInfo.talkState, this->interactRange, EnHy_GetTextId,
EnHy_UpdateTalkState)) {
- func_80A70834(this, play);
+ EnHy_OfferBuyBottledItem(this, play);
}
}
s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
switch (play->sceneId) {
case SCENE_KAKARIKO_VILLAGE:
- if (!(PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_9 ||
- PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_10 ||
- PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_12 ||
- PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_AHG_2 ||
- PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BJI_7)) {
+ if (!(ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT ||
+ ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT ||
+ ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_ALT_MUSTACHE ||
+ ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_1_BEARD ||
+ ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_OLD_MAN)) {
return true;
} else if (!LINK_IS_ADULT) {
return true;
- } else if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_BOJ_12 && IS_NIGHT) {
+ } else if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_MAN_2_ALT_MUSTACHE && IS_NIGHT) {
return false;
} else {
return true;
}
+
case SCENE_IMPAS_HOUSE:
- if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_BOJ_10) {
+ if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT) {
return true;
} else if (LINK_IS_CHILD) {
return false;
- } else if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_10 && IS_DAY) {
+ } else if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT && IS_DAY) {
return false;
} else {
return true;
}
+
case SCENE_DOG_LADY_HOUSE:
- if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_AOB) {
+ if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_DOG_LADY) {
return true;
} else if (IS_DAY) {
return false;
@@ -851,11 +1083,11 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
return true;
}
case SCENE_KAKARIKO_CENTER_GUEST_HOUSE:
- if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_AOB) {
+ if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_DOG_LADY) {
return !LINK_IS_ADULT ? false : true;
- } else if (!(PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_9 ||
- PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_AHG_2 ||
- PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BJI_7)) {
+ } else if (!(ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT ||
+ ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_1_BEARD ||
+ ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_OLD_MAN)) {
return true;
} else if (IS_DAY) {
return false;
@@ -864,9 +1096,10 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
} else {
return true;
}
+
case SCENE_BACK_ALLEY_DAY:
case SCENE_BACK_ALLEY_NIGHT:
- if (PARAMS_GET_S(this->actor.params, 0, 7) != ENHY_TYPE_BOJ_14) {
+ if (ENHY_GET_TYPE(&this->actor) != ENHY_TYPE_MAN_2_BEARD) {
return true;
} else if (IS_NIGHT) {
return false;
@@ -875,22 +1108,25 @@ s32 EnHy_ShouldSpawn(EnHy* this, PlayState* play) {
} else {
return true;
}
+
default:
- switch (PARAMS_GET_S(this->actor.params, 0, 7)) {
- case ENHY_TYPE_BJI_19:
- case ENHY_TYPE_AHG_20:
+ switch (ENHY_GET_TYPE(&this->actor)) {
+ case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE:
+ case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT:
if (LINK_IS_ADULT) {
return false;
}
+ FALLTHROUGH;
+ default:
+ return true;
}
- return true;
}
}
void EnHy_Init(Actor* thisx, PlayState* play) {
EnHy* this = (EnHy*)thisx;
- if (PARAMS_GET_S(this->actor.params, 0, 7) >= ENHY_TYPE_MAX || !EnHy_FindOsAnimeObject(this, play) ||
+ if ((ENHY_GET_TYPE(&this->actor) >= ENHY_TYPE_MAX) || !EnHy_FindOsAnimeObject(this, play) ||
!EnHy_FindSkelAndHeadObjects(this, play)) {
Actor_Kill(&this->actor);
}
@@ -899,7 +1135,7 @@ void EnHy_Init(Actor* thisx, PlayState* play) {
Actor_Kill(&this->actor);
}
- this->actionFunc = EnHy_InitImpl;
+ this->actionFunc = EnHy_WaitForObjects;
}
void EnHy_Destroy(Actor* thisx, PlayState* play) {
@@ -908,21 +1144,20 @@ void EnHy_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyCylinder(play, &this->collider);
}
-void EnHy_InitImpl(EnHy* this, PlayState* play) {
+void EnHy_WaitForObjects(EnHy* this, PlayState* play) {
if (EnHy_IsOsAnimeObjectLoaded(this, play) && EnHy_AreSkelAndHeadObjectsLoaded(this, play)) {
- this->actor.objectSlot = this->objectSlotSkel1;
+ this->actor.objectSlot = this->objectSlotLowerSkel;
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->actor.objectSlot].segment);
SkelAnime_InitFlex(play, &this->skelAnime,
- sSkeletonInfo[sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].skelInfoIndex1].skeleton,
- NULL, this->jointTable, this->morphTable, 16);
+ sSkeletonInfo[sModelInfo[ENHY_GET_TYPE(&this->actor)].lowerSkelInfoIndex].skeleton, NULL,
+ this->jointTable, this->morphTable, ENHY_LIMB_MAX);
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.0f);
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotOsAnime].segment);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sColCylInit);
EnHy_InitCollider(this);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
- Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo,
- sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].animInfoIndex);
+ Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, sModelInfo[ENHY_GET_TYPE(&this->actor)].animInfoIndex);
if ((play->sceneId == SCENE_BACK_ALLEY_DAY) || (play->sceneId == SCENE_MARKET_DAY)) {
this->actor.flags &= ~ACTOR_FLAG_4;
@@ -930,51 +1165,55 @@ void EnHy_InitImpl(EnHy* this, PlayState* play) {
}
if (play->sceneId == SCENE_KAKARIKO_CENTER_GUEST_HOUSE) {
- this->unk_330 = gSaveContext.save.info.eventChkInf[EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX];
+ this->talonEventChkInf = gSaveContext.save.info.eventChkInf[EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO_INDEX];
}
EnHy_InitSetProperties(this);
- this->path = Path_GetByIndex(play, PARAMS_GET_S(this->actor.params, 7, 4), 15);
+ this->path = Path_GetByIndex(play, ENHY_GET_PATH_INDEX(&this->actor), 15);
- switch (PARAMS_GET_S(this->actor.params, 0, 7)) {
- case ENHY_TYPE_BOJ_3:
+ switch (ENHY_GET_TYPE(&this->actor)) {
+ case ENHY_TYPE_MAN_2_BALD:
if (this->path != NULL) {
this->actor.speed = 3.0f;
}
- this->actionFunc = func_80A711B4;
+ this->actionFunc = EnHy_Walk;
break;
- case ENHY_TYPE_BJI_7:
+
+ case ENHY_TYPE_OLD_MAN:
this->pathReverse = false;
- this->actionFunc = func_80A712C0;
+ this->actionFunc = EnHy_SetupPace;
break;
- case ENHY_TYPE_AOB:
+
+ case ENHY_TYPE_DOG_LADY:
if (play->sceneId == SCENE_MARKET_DAY) {
- this->actionFunc = func_80A710F8;
+ this->actionFunc = EnHy_WatchDog;
break;
}
FALLTHROUGH;
- case ENHY_TYPE_COB:
- case ENHY_TYPE_AHG_2:
- case ENHY_TYPE_AHG_4:
- case ENHY_TYPE_BBA:
- case ENHY_TYPE_CNE_8:
- case ENHY_TYPE_AHG_13:
- case ENHY_TYPE_BOJ_14:
- case ENHY_TYPE_BJI_15:
- case ENHY_TYPE_BOJ_16:
- case ENHY_TYPE_AHG_17:
- case ENHY_TYPE_BOB_18:
- case ENHY_TYPE_BJI_19:
- case ENHY_TYPE_AHG_20:
- this->actionFunc = func_80A7127C;
+ case ENHY_TYPE_WOMAN_3:
+ case ENHY_TYPE_MAN_1_BEARD:
+ case ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT:
+ case ENHY_TYPE_OLD_WOMAN:
+ case ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR:
+ case ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT:
+ case ENHY_TYPE_MAN_2_BEARD:
+ case ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE:
+ case ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT:
+ case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT:
+ case ENHY_TYPE_WOMAN_2:
+ case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE:
+ case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT:
+ this->actionFunc = EnHy_Fidget;
break;
- case ENHY_TYPE_BOJ_5:
- case ENHY_TYPE_BOJ_9:
- case ENHY_TYPE_BOJ_10:
- case ENHY_TYPE_CNE_11:
- case ENHY_TYPE_BOJ_12:
+
+ case ENHY_TYPE_BEGGAR:
+ case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT:
+ case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT:
+ case ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR:
+ case ENHY_TYPE_MAN_2_ALT_MUSTACHE:
this->actionFunc = EnHy_DoNothing;
break;
+
default:
Actor_Kill(&this->actor);
break;
@@ -982,7 +1221,7 @@ void EnHy_InitImpl(EnHy* this, PlayState* play) {
}
}
-void func_80A710F8(EnHy* this, PlayState* play) {
+void EnHy_WatchDog(EnHy* this, PlayState* play) {
if (this->interactInfo.talkState != NPC_TALK_STATE_IDLE) {
if (this->skelAnime.animation != &gObjOsAnim_0BFC) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_26);
@@ -996,7 +1235,7 @@ void func_80A710F8(EnHy* this, PlayState* play) {
}
}
-void func_80A711B4(EnHy* this, PlayState* play) {
+void EnHy_Walk(EnHy* this, PlayState* play) {
s16 yaw;
f32 distSq;
@@ -1012,24 +1251,24 @@ void func_80A711B4(EnHy* this, PlayState* play) {
}
}
-void func_80A7127C(EnHy* this, PlayState* play) {
- func_80034F54(play, this->unk_21C, this->unk_23C, 16);
+void EnHy_Fidget(EnHy* this, PlayState* play) {
+ func_80034F54(play, this->fidgetTableY, this->fidgetTableZ, 16);
}
void EnHy_DoNothing(EnHy* this, PlayState* play) {
}
-void func_80A712C0(EnHy* this, PlayState* play) {
+void EnHy_SetupPace(EnHy* this, PlayState* play) {
if ((this->actor.xzDistToPlayer <= 100.0f) && (this->path != NULL)) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_7);
this->actor.speed = 0.4f;
- this->actionFunc = func_80A7134C;
+ this->actionFunc = EnHy_Pace;
}
- func_80034F54(play, this->unk_21C, this->unk_23C, 16);
+ func_80034F54(play, this->fidgetTableY, this->fidgetTableZ, 16);
}
-void func_80A7134C(EnHy* this, PlayState* play) {
+void EnHy_Pace(EnHy* this, PlayState* play) {
s16 yaw;
f32 distSq;
@@ -1063,23 +1302,24 @@ void func_80A7134C(EnHy* this, PlayState* play) {
}
}
-void func_80A714C4(EnHy* this, PlayState* play) {
+void EnHy_WaitDogFoundRewardGiven(EnHy* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) {
- this->actionFunc = func_80A71530;
+ this->actionFunc = EnHy_FinishGivingDogFoundReward;
} else {
- Actor_OfferGetItem(&this->actor, play, this->unkGetItemId, this->actor.xzDistToPlayer + 1.0f,
+ Actor_OfferGetItem(&this->actor, play, this->getItemId, this->actor.xzDistToPlayer + 1.0f,
fabsf(this->actor.yDistToPlayer) + 1.0f);
}
}
-void func_80A71530(EnHy* this, PlayState* play) {
+void EnHy_FinishGivingDogFoundReward(EnHy* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
- switch (this->unkGetItemId) {
+ switch (this->getItemId) {
case GI_HEART_PIECE:
gSaveContext.dogParams = 0;
gSaveContext.dogIsLost = false;
SET_INFTABLE(INFTABLE_191);
break;
+
case GI_RUPEE_BLUE:
Rupees_ChangeBy(5);
gSaveContext.dogParams = 0;
@@ -1087,14 +1327,14 @@ void func_80A71530(EnHy* this, PlayState* play) {
break;
}
- this->actionFunc = func_80A7127C;
+ this->actionFunc = EnHy_Fidget;
}
}
void EnHy_Update(Actor* thisx, PlayState* play) {
EnHy* this = (EnHy*)thisx;
- if (this->actionFunc != EnHy_InitImpl) {
+ if (this->actionFunc != EnHy_WaitForObjects) {
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotOsAnime].segment);
SkelAnime_Update(&this->skelAnime);
EnHy_UpdateEyes(this);
@@ -1107,7 +1347,7 @@ void EnHy_Update(Actor* thisx, PlayState* play) {
}
this->actionFunc(this, play);
- func_80A70978(this, play);
+ EnHy_UpdateNPC(this, play);
EnHy_UpdateCollider(this, play);
}
@@ -1115,26 +1355,26 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
EnHy* this = (EnHy*)thisx;
s32 pad;
Vec3s limbRot;
- u8 i;
- void* ptr;
+ u8 headInfoIndex;
+ void* eyeTex;
OPEN_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2170);
- if (limbIndex == 15) {
+ if (limbIndex == ENHY_LIMB_HEAD) {
gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->objectSlotHead].segment);
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotHead].segment);
- i = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].headInfoIndex;
- *dList = sHeadInfo[i].headDList;
+ headInfoIndex = sModelInfo[ENHY_GET_TYPE(&this->actor)].headInfoIndex;
+ *dList = sHeadInfo[headInfoIndex].headDList;
- if (sHeadInfo[i].eyeTextures != NULL) {
- ptr = sHeadInfo[i].eyeTextures[this->curEyeIndex];
- gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(ptr));
+ if (sHeadInfo[headInfoIndex].eyeTextures != NULL) {
+ eyeTex = sHeadInfo[headInfoIndex].eyeTextures[this->curEyeIndex];
+ gSPSegment(POLY_OPA_DISP++, 0x0A, SEGMENTED_TO_VIRTUAL(eyeTex));
}
- gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotSkel1].segment);
+ gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotLowerSkel].segment);
}
- if (limbIndex == 15) {
+ if (limbIndex == ENHY_LIMB_HEAD) {
Matrix_Translate(1400.0f, 0.0f, 0.0f, MTXMODE_APPLY);
limbRot = this->interactInfo.headRot;
Matrix_RotateX(BINANG_TO_RAD_ALT(limbRot.y), MTXMODE_APPLY);
@@ -1142,15 +1382,16 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
Matrix_Translate(-1400.0f, 0.0f, 0.0f, MTXMODE_APPLY);
}
- if (limbIndex == 8) {
+ if (limbIndex == ENHY_LIMB_TORSO) {
limbRot = this->interactInfo.torsoRot;
Matrix_RotateX(BINANG_TO_RAD_ALT(-limbRot.y), MTXMODE_APPLY);
Matrix_RotateZ(BINANG_TO_RAD_ALT(limbRot.x), MTXMODE_APPLY);
}
- if ((limbIndex == 8) || (limbIndex == 9) || (limbIndex == 12)) {
- rot->y += Math_SinS(this->unk_21C[limbIndex]) * 200.0f;
- rot->z += Math_CosS(this->unk_23C[limbIndex]) * 200.0f;
+ if ((limbIndex == ENHY_LIMB_TORSO) || (limbIndex == ENHY_LIMB_LEFT_UPPER_ARM) ||
+ (limbIndex == ENHY_LIMB_RIGHT_UPPER_ARM)) {
+ rot->y += Math_SinS(this->fidgetTableY[limbIndex]) * 200.0f;
+ rot->z += Math_CosS(this->fidgetTableZ[limbIndex]) * 200.0f;
}
CLOSE_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2228);
@@ -1161,34 +1402,33 @@ s32 EnHy_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
void EnHy_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
EnHy* this = (EnHy*)thisx;
s32 pad;
- Vec3f sp3C = { 400.0f, 0.0f, 0.0f };
+ Vec3f focusOffset = { 400.0f, 0.0f, 0.0f };
OPEN_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2255);
- if (limbIndex == 7) {
- gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->objectSlotSkel2].segment);
- gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotSkel2].segment);
+ if (limbIndex == ENHY_LIMB_RIGHT_FOOT) {
+ gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[this->objectSlotUpperSkel].segment);
+ gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotUpperSkel].segment);
}
- if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_BOJ_3 && limbIndex == 8) {
- gSPDisplayList(POLY_OPA_DISP++, object_boj_DL_005BC8);
+ if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_MAN_2_BALD && limbIndex == ENHY_LIMB_TORSO) {
+ gSPDisplayList(POLY_OPA_DISP++, gHylianMan2BagDL);
}
- if (limbIndex == 15) {
- Matrix_MultVec3f(&sp3C, &this->actor.focus.pos);
+ if (limbIndex == ENHY_LIMB_HEAD) {
+ Matrix_MultVec3f(&focusOffset, &this->actor.focus.pos);
}
CLOSE_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2281);
}
-Gfx* EnHy_SetEnvColor(GraphicsContext* play, u8 envR, u8 envG, u8 envB, u8 envA) {
- Gfx* dList;
+Gfx* EnHy_SetEnvColor(GraphicsContext* gfxCtx, u8 envR, u8 envG, u8 envB, u8 envA) {
+ Gfx* gfx = GRAPH_ALLOC(gfxCtx, 2 * sizeof(Gfx));
- dList = GRAPH_ALLOC(play, 2 * sizeof(Gfx));
- gDPSetEnvColor(dList, envR, envG, envB, envA);
- gSPEndDisplayList(dList + 1);
+ gDPSetEnvColor(&gfx[0], envR, envG, envB, envA);
+ gSPEndDisplayList(&gfx[1]);
- return dList;
+ return gfx;
}
void EnHy_Draw(Actor* thisx, PlayState* play) {
@@ -1199,34 +1439,30 @@ void EnHy_Draw(Actor* thisx, PlayState* play) {
OPEN_DISPS(play->state.gfxCtx, "../z_en_hy.c", 2318);
- if (this->actionFunc != EnHy_InitImpl) {
+ if (this->actionFunc != EnHy_WaitForObjects) {
Gfx_SetupDL_25Opa(play->state.gfxCtx);
Matrix_Translate(this->modelOffset.x, this->modelOffset.y, this->modelOffset.z, MTXMODE_APPLY);
- envColorSeg8 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].envColorSeg8;
- envColorSeg9 = sModelInfo[PARAMS_GET_S(this->actor.params, 0, 7)].envColorSeg9;
+ envColorSeg8 = sModelInfo[ENHY_GET_TYPE(&this->actor)].envColorSeg8;
+ envColorSeg9 = sModelInfo[ENHY_GET_TYPE(&this->actor)].envColorSeg9;
- switch (PARAMS_GET_S(this->actor.params, 0, 7)) {
- // ENHY_TYPE_AOB
- // ENHY_TYPE_COB
- case ENHY_TYPE_AHG_2:
- case ENHY_TYPE_BOJ_3:
- case ENHY_TYPE_AHG_4:
- case ENHY_TYPE_BOJ_5:
- // ENHY_TYPE_BBA
- case ENHY_TYPE_BJI_7:
- case ENHY_TYPE_CNE_8:
- case ENHY_TYPE_BOJ_9:
- case ENHY_TYPE_BOJ_10:
- case ENHY_TYPE_CNE_11:
- case ENHY_TYPE_BOJ_12:
- case ENHY_TYPE_AHG_13:
- case ENHY_TYPE_BOJ_14:
- case ENHY_TYPE_BJI_15:
- case ENHY_TYPE_BOJ_16:
- case ENHY_TYPE_AHG_17:
- // ENHY_TYPE_BOB_18
- case ENHY_TYPE_BJI_19:
- case ENHY_TYPE_AHG_20:
+ switch (ENHY_GET_TYPE(&this->actor)) {
+ case ENHY_TYPE_MAN_1_BEARD:
+ case ENHY_TYPE_MAN_2_BALD:
+ case ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT:
+ case ENHY_TYPE_BEGGAR:
+ case ENHY_TYPE_OLD_MAN:
+ case ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR:
+ case ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT:
+ case ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT:
+ case ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR:
+ case ENHY_TYPE_MAN_2_ALT_MUSTACHE:
+ case ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT:
+ case ENHY_TYPE_MAN_2_BEARD:
+ case ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE:
+ case ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT:
+ case ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT:
+ case ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE:
+ case ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT:
gSPSegment(POLY_OPA_DISP++, 0x08,
EnHy_SetEnvColor(play->state.gfxCtx, envColorSeg8.r, envColorSeg8.g, envColorSeg8.b,
envColorSeg8.a));
@@ -1234,12 +1470,12 @@ void EnHy_Draw(Actor* thisx, PlayState* play) {
EnHy_SetEnvColor(play->state.gfxCtx, envColorSeg9.r, envColorSeg9.g, envColorSeg9.b,
envColorSeg9.a));
- if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_8 ||
- PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_11) {
- if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_8) {
+ if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR ||
+ ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR) {
+ if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR) {
envColorSeg10 = envColorSeg8;
}
- if (PARAMS_GET_S(this->actor.params, 0, 7) == ENHY_TYPE_CNE_11) {
+ if (ENHY_GET_TYPE(&this->actor) == ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR) {
envColorSeg10.r = envColorSeg10.g = envColorSeg10.b = 255;
envColorSeg10.a = 0;
}
@@ -1248,6 +1484,13 @@ void EnHy_Draw(Actor* thisx, PlayState* play) {
envColorSeg10.a));
}
break;
+
+ // ENHY_TYPE_DOG_LADY
+ // ENHY_TYPE_WOMAN_3
+ // ENHY_TYPE_OLD_WOMAN
+ // ENHY_TYPE_WOMAN_2
+ default:
+ break;
}
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.h b/src/overlays/actors/ovl_En_Hy/z_en_hy.h
index c8e28bdd4b..00aa85bbce 100644
--- a/src/overlays/actors/ovl_En_Hy/z_en_hy.h
+++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.h
@@ -4,31 +4,54 @@
#include "ultra64.h"
#include "global.h"
+#define ENHY_GET_TYPE(thisx) PARAMS_GET_S((thisx)->params, 0, 7)
+#define ENHY_GET_PATH_INDEX(thisx) PARAMS_GET_S((thisx)->params, 7, 4)
+
typedef enum EnHyType {
- /* 0 */ ENHY_TYPE_AOB,
- /* 1 */ ENHY_TYPE_COB,
- /* 2 */ ENHY_TYPE_AHG_2,
- /* 3 */ ENHY_TYPE_BOJ_3,
- /* 4 */ ENHY_TYPE_AHG_4,
- /* 5 */ ENHY_TYPE_BOJ_5,
- /* 6 */ ENHY_TYPE_BBA,
- /* 7 */ ENHY_TYPE_BJI_7,
- /* 8 */ ENHY_TYPE_CNE_8,
- /* 9 */ ENHY_TYPE_BOJ_9,
- /* 10 */ ENHY_TYPE_BOJ_10,
- /* 11 */ ENHY_TYPE_CNE_11,
- /* 12 */ ENHY_TYPE_BOJ_12,
- /* 13 */ ENHY_TYPE_AHG_13,
- /* 14 */ ENHY_TYPE_BOJ_14,
- /* 15 */ ENHY_TYPE_BJI_15,
- /* 16 */ ENHY_TYPE_BOJ_16,
- /* 17 */ ENHY_TYPE_AHG_17,
- /* 18 */ ENHY_TYPE_BOB_18,
- /* 19 */ ENHY_TYPE_BJI_19,
- /* 20 */ ENHY_TYPE_AHG_20,
+ /* 0 */ ENHY_TYPE_DOG_LADY,
+ /* 1 */ ENHY_TYPE_WOMAN_3,
+ /* 2 */ ENHY_TYPE_MAN_1_BEARD,
+ /* 3 */ ENHY_TYPE_MAN_2_BALD,
+ /* 4 */ ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT,
+ /* 5 */ ENHY_TYPE_BEGGAR,
+ /* 6 */ ENHY_TYPE_OLD_WOMAN,
+ /* 7 */ ENHY_TYPE_OLD_MAN,
+ /* 8 */ ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR,
+ /* 9 */ ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT,
+ /* 10 */ ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT,
+ /* 11 */ ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR,
+ /* 12 */ ENHY_TYPE_MAN_2_ALT_MUSTACHE,
+ /* 13 */ ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT,
+ /* 14 */ ENHY_TYPE_MAN_2_BEARD,
+ /* 15 */ ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE,
+ /* 16 */ ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT,
+ /* 17 */ ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT,
+ /* 18 */ ENHY_TYPE_WOMAN_2,
+ /* 19 */ ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE,
+ /* 20 */ ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT,
/* 21 */ ENHY_TYPE_MAX
} EnHyType;
+typedef enum EnHyLimb {
+ /* 0x00 */ ENHY_LIMB_NONE,
+ /* 0x01 */ ENHY_LIMB_PELVIS,
+ /* 0x02 */ ENHY_LIMB_LEFT_THIGH,
+ /* 0x03 */ ENHY_LIMB_LEFT_SHIN,
+ /* 0x04 */ ENHY_LIMB_LEFT_FOOT,
+ /* 0x05 */ ENHY_LIMB_RIGHT_THIGH,
+ /* 0x06 */ ENHY_LIMB_RIGHT_SHIN,
+ /* 0x07 */ ENHY_LIMB_RIGHT_FOOT,
+ /* 0x08 */ ENHY_LIMB_TORSO,
+ /* 0x09 */ ENHY_LIMB_LEFT_UPPER_ARM,
+ /* 0x0A */ ENHY_LIMB_LEFT_FOREARM,
+ /* 0x0B */ ENHY_LIMB_LEFT_HAND,
+ /* 0x0C */ ENHY_LIMB_RIGHT_UPPER_ARM,
+ /* 0x0D */ ENHY_LIMB_RIGHT_FOREARM,
+ /* 0x0E */ ENHY_LIMB_RIGHT_HAND,
+ /* 0x0F */ ENHY_LIMB_HEAD,
+ /* 0x10 */ ENHY_LIMB_MAX
+} EnHyLimb;
+
struct EnHy;
typedef void (*EnHyActionFunc)(struct EnHy*, PlayState*);
@@ -40,25 +63,25 @@ typedef struct EnHy {
/* 0x0194 */ char unk_194; // unused
/* 0x0195 */ u8 pathReverse;
/* 0x0196 */ s8 objectSlotHead;
- /* 0x0197 */ s8 objectSlotSkel2; // 7 < limb < 15 (upper part?) (always same as objectSlotSkel1)
- /* 0x0198 */ s8 objectSlotSkel1; // sets the object used when drawing the skeleton for limb <= 7 (lower part?)
+ /* 0x0197 */ s8 objectSlotUpperSkel; // upper body limbs object, 7 < limb < 15 (always same as objectSlotLowerSkel),
+ /* 0x0198 */ s8 objectSlotLowerSkel; // lower body limbs object, limb <= 7
/* 0x0199 */ s8 objectSlotOsAnime;
/* 0x019C */ ColliderCylinder collider;
/* 0x01E8 */ NpcInteractInfo interactInfo;
/* 0x0210 */ Path* path;
/* 0x0214 */ s8 waypoint;
- /* 0x0215 */ s8 unk_215;
+ /* 0x0215 */ s8 playedSfx;
/* 0x0216 */ char unk_216[2]; // unused
/* 0x0218 */ s16 curEyeIndex;
/* 0x021A */ s16 nextEyeIndexTimer;
- /* 0x021C */ s16 unk_21C[16]; // bodyWiggleY ?
- /* 0x023C */ s16 unk_23C[16]; // bodyWiggleZ ?
+ /* 0x021C */ s16 fidgetTableY[16];
+ /* 0x023C */ s16 fidgetTableZ[16];
/* 0x025C */ f32 interactRange;
- /* 0x0260 */ s32 unkGetItemId;
+ /* 0x0260 */ s32 getItemId;
/* 0x0264 */ Vec3f modelOffset;
- /* 0x0270 */ Vec3s jointTable[16];
- /* 0x02D0 */ Vec3s morphTable[16];
- /* 0x0330 */ u16 unk_330;
+ /* 0x0270 */ Vec3s jointTable[ENHY_LIMB_MAX];
+ /* 0x02D0 */ Vec3s morphTable[ENHY_LIMB_MAX];
+ /* 0x0330 */ u16 talonEventChkInf;
} EnHy; // size = 0x0334
#endif
diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c
index 755f1ea208..acf8e5885a 100644
--- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c
+++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c
@@ -61,8 +61,7 @@ static s16 sObjectIds[6] = {
};
static FlexSkeletonHeader* sSkeletons[6] = {
- &object_ahg_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0,
- &object_boj_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0,
+ &gHylianMan1Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel,
};
static AnimationHeader* sAnimations[6] = {