d_a_npc_lud matching (#2694)

* d_a_npc_lud matching

* Fixes
This commit is contained in:
hev7 2025-09-25 16:20:14 +01:00 committed by GitHub
parent 749de8e36d
commit 4635fcb666
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 1546 additions and 1807 deletions

View File

@ -1860,7 +1860,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_kyury"),
ActorRel(NonMatching, "d_a_npc_len"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_lf"),
ActorRel(NonMatching, "d_a_npc_lud"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_lud"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_midp"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_mk"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_moi"),
@ -1902,7 +1902,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_tks", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_toby"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tr"),
ActorRel(NonMatching, "d_a_npc_uri"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_uri"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_worm"),
ActorRel(NonMatching, "d_a_npc_wrestler", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_yamid"),

View File

@ -182,6 +182,11 @@ public:
sVar3 * (1.0f / param_4);
}
void setEyeAngleY(s16 param_1, f32 param_2) {
mEyeAngle.y = field_0x132.y * (1.0f - 1.0f / param_2) +
param_1 * (1.0f / param_2);
}
s16 getEyeAngleX() { return mEyeAngle.x; }
s16 getEyeAngleY() { return mEyeAngle.y; }

View File

@ -11,73 +11,115 @@
* @details
*
*/
class daNpc_Lud_c : public fopAc_ac_c {
struct daNpc_Lud_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ f32 play_speed;
};
class daNpc_Lud_Param_c {
public:
/* 80A6FD10 */ virtual ~daNpc_Lud_Param_c() {}
static const daNpc_Lud_HIOParam m;
};
class daNpc_Lud_c : public daNpcT_c {
public:
typedef int (daNpc_Lud_c::*actionFunc)(void*);
typedef int (daNpc_Lud_c::*cutFunc)(int);
/* 80A6ABAC */ ~daNpc_Lud_c();
/* 80A6ACF4 */ void create();
/* 80A6AFA8 */ void CreateHeap();
/* 80A6B5FC */ void Delete();
/* 80A6B630 */ void Execute();
/* 80A6B650 */ void Draw();
/* 80A6B6E4 */ void createHeapCallBack(fopAc_ac_c*);
/* 80A6B704 */ void ctrlJointCallBack(J3DJoint*, int);
/* 80A6B75C */ void getType();
/* 80A6B7CC */ void isDelete();
/* 80A6ACF4 */ int create();
/* 80A6AFA8 */ int CreateHeap();
/* 80A6B5FC */ int Delete();
/* 80A6B630 */ int Execute();
/* 80A6B650 */ int Draw();
/* 80A6B6E4 */ static int createHeapCallBack(fopAc_ac_c*);
/* 80A6B704 */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80A6B75C */ u8 getType();
/* 80A6B7CC */ BOOL isDelete();
/* 80A6B954 */ void reset();
/* 80A6BB1C */ void afterJntAnm(int);
/* 80A6BBA8 */ void setParam();
/* 80A6BD44 */ void checkChangeEvt();
/* 80A6BD44 */ BOOL checkChangeEvt();
/* 80A6BE6C */ void setAfterTalkMotion();
/* 80A6BEE4 */ void srchActors();
/* 80A6BFA4 */ void evtTalk();
/* 80A6C044 */ void evtCutProc();
/* 80A6BFA4 */ BOOL evtTalk();
/* 80A6C044 */ BOOL evtCutProc();
/* 80A6C10C */ void action();
/* 80A6C2E4 */ void beforeMove();
/* 80A6C3A8 */ void setAttnPos();
/* 80A6C8EC */ void setCollision();
/* 80A6CA9C */ bool drawDbgInfo();
/* 80A6CA9C */ int drawDbgInfo();
/* 80A6CAA4 */ void drawOtherMdl();
/* 80A6CC2C */ void setBowlAnm(int, int, f32);
/* 80A6CCFC */ void afterSetMotionAnm(int, int, f32, int);
/* 80A6CD30 */ void selectAction();
/* 80A6CDF4 */ void chkAction(int (daNpc_Lud_c::*)(void*));
/* 80A6CE20 */ void setAction(int (daNpc_Lud_c::*)(void*));
/* 80A6CC2C */ bool setBowlAnm(int, int, f32);
/* 80A6CCFC */ bool afterSetMotionAnm(int, int, f32, int);
/* 80A6CD30 */ int selectAction();
/* 80A6CDF4 */ BOOL chkAction(actionFunc);
/* 80A6CE20 */ int setAction(actionFunc);
/* 80A6CEC8 */ void mop(int, int);
/* 80A6D01C */ void cutHurry(int);
/* 80A6D160 */ void cutConversationInHotel(int);
/* 80A6D450 */ void cutConversationAboutDeathMt(int);
/* 80A6D708 */ void cutConversationAboutGoron(int);
/* 80A6D998 */ void cutNurse(int);
/* 80A6DC48 */ void cutClothTry(int);
/* 80A6DCE8 */ void cutThankYou(int);
/* 80A6DE14 */ void wait(void*);
/* 80A6E32C */ void nurse(void*);
/* 80A6E6EC */ void giveSoup(void*);
/* 80A6E7EC */ void talk(void*);
/* 80A6FC04 */ daNpc_Lud_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_evtData_c const*, char**);
/* 80A6FCD0 */ u16 getEyeballMaterialNo();
/* 80A6FCD8 */ s32 getHeadJointNo();
/* 80A6FCE0 */ s32 getNeckJointNo();
/* 80A6FCE8 */ bool getBackboneJointNo();
/* 80A6FCF0 */ void checkChangeJoint(int);
/* 80A6FD00 */ void checkRemoveJoint(int);
/* 80A6D01C */ int cutHurry(int);
/* 80A6D160 */ int cutConversationInHotel(int);
/* 80A6D450 */ int cutConversationAboutDeathMt(int);
/* 80A6D708 */ int cutConversationAboutGoron(int);
/* 80A6D998 */ int cutNurse(int);
/* 80A6DC48 */ int cutClothTry(int);
/* 80A6DCE8 */ int cutThankYou(int);
/* 80A6DE14 */ int wait(void*);
/* 80A6E32C */ int nurse(void*);
/* 80A6E6EC */ int giveSoup(void*);
/* 80A6E7EC */ int talk(void*);
/* 80A6FC04 */ daNpc_Lud_c(
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
daNpcT_motionAnmData_c const* i_motionAnmData,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
int i_faceMotionStepNum,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum,
daNpcT_evtData_c const* i_evtData, char** i_arcNames)
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
i_arcNames) {}
/* 80A6FCD0 */ u16 getEyeballMaterialNo() { return 1; }
/* 80A6FCD8 */ s32 getHeadJointNo() { return 4; }
/* 80A6FCE0 */ s32 getNeckJointNo() { return 3; }
/* 80A6FCE8 */ s32 getBackboneJointNo() { return 1; }
/* 80A6FCF0 */ BOOL checkChangeJoint(int param_0) { return param_0 == 4; }
/* 80A6FD00 */ BOOL checkRemoveJoint(int param_0) { return param_0 == 10; }
int getFlowNodeNo() {
u16 nodeNo = home.angle.x;
if (nodeNo == 0xffff) {
return -1;
}
return nodeNo;
}
u8 getBitSW() { return (fopAcM_GetParam(this) & 0xff0000) >> 16; }
static char* mCutNameList[8];
static cutFunc mCutList[8];
static void* mCutNameList[8];
static u8 mCutList[96];
private:
/* 0x568 */ u8 field_0x568[0xfdc - 0x568];
/* 0xE40 */ mDoExt_McaMorfSO* mpBowlMorf;
/* 0xE44 */ u8 field_0xe44[0xe48 - 0xe44];
/* 0xE48 */ J3DModel* mpModel[2];
/* 0xE50 */ dCcD_Cyl mCyl;
/* 0xF8C */ u8 mType;
/* 0xF90 */ daNpcT_ActorMngr_c mActorMngr[3];
/* 0xFA8 */ actionFunc field_0xfa8;
/* 0xFB4 */ actionFunc mAction;
/* 0xFC0 */ int field_0xfc0;
/* 0xFC4 */ int field_0xfc4;
/* 0xFC8 */ int field_0xfc8;
/* 0xFCC */ int field_0xfcc;
/* 0xFD0 */ s16 field_0xfd0;
/* 0xFD2 */ u8 field_0xfd2;
/* 0xFD3 */ u8 field_0xfd3;
/* 0xFD4 */ u8 field_0xfd4;
/* 0xFD5 */ u8 field_0xfd5;
/* 0xFD8 */ int field_0xfd8;
};
STATIC_ASSERT(sizeof(daNpc_Lud_c) == 0xfdc);
class daNpc_Lud_Param_c {
public:
/* 80A6FD10 */ ~daNpc_Lud_Param_c();
static u8 const m[144];
};
#endif /* D_A_NPC_LUD_H */

View File

@ -13,32 +13,8 @@
*/
struct daNpc_Moi_HIOParam {
/* 0x00 */ f32 field_0x00;
/* 0x04 */ f32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0c;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
/* 0x40 */ f32 field_0x40;
/* 0x44 */ f32 field_0x44;
/* 0x48 */ s16 field_0x48;
/* 0x4A */ s16 field_0x4a;
/* 0x4C */ s16 field_0x4c;
/* 0x4E */ s16 field_0x4e;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ u8 field_0x54[24];
/* 0x6C */ f32 field_0x6c;
/* 0x70 */ u8 field_0x70[40];
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ u8 field_0x70[12];
/* 0x98 */ s16 field_0x98;
/* 0x9A */ s16 field_0x9a;
/* 0x9C */ s16 field_0x9c;
@ -55,7 +31,7 @@ class daNpc_Moi_Param_c {
public:
/* 80A7AE84 */ virtual ~daNpc_Moi_Param_c() {};
static daNpc_Moi_HIOParam const m;
static const daNpc_Moi_HIOParam m;
};
class daNpc_Moi_HIO_c
@ -146,7 +122,13 @@ public:
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
i_arcNames) {}
/* 80A7AE0C */ u16 getEyeballMaterialNo() { if (chkMoiN()) { return 4; } else { return 2; } }
/* 80A7AE0C */ u16 getEyeballMaterialNo() {
if (chkMoiN()) {
return 4;
} else {
return 2;
}
}
/* 80A7AE3C */ s32 getHeadJointNo() { return 4; }
/* 80A7AE44 */ s32 getNeckJointNo() { return 3; }
/* 80A7AE4C */ s32 getBackboneJointNo() { return 1; }
@ -166,7 +148,7 @@ public:
bool chkSFight() { return field_0x166b == 1; }
u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; }
static const char* mCutNameList[5];
static char* mCutNameList[5];
static cutFunc mCutList[5];
private:

File diff suppressed because it is too large Load Diff

View File

@ -1,14 +1,14 @@
/**
* @file d_a_npc_moi.cpp
* @file d_a_npc_moi.cpp
*
*/
#include "d/dolzel_rel.h"
#include "d/actor/d_a_npc_moi.h"
#include "SSystem/SComponent/c_counter.h"
#include "Z2AudioLib/Z2Instances.h"
#include "d/actor/d_a_ep.h"
#include "d/actor/d_a_npc_moi.h"
#include "d/actor/d_a_npc_uri.h"
/* 80A7B17C-80A7B1BC 000020 0040+00 1/1 0/0 0/0 .data l_bmdData */
@ -98,50 +98,55 @@ static daNpcT_motionAnmData_c l_motionAnmData[35] = {
/* 80A7B82C-80A7B98C 0006D0 0160+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[88] = {
1, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 2, -1, 1, 12, 0, 0, -1, 0, 0, -1, 0, 0,
3, -1, 1, 13, 0, 0, -1, 0, 0, -1, 0, 0, 4, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0,
5, -1, 1, 9, 0, 0, -1, 0, 0, -1, 0, 0, 6, -1, 1, 10, 0, 0, -1, 0, 0, -1, 0, 0,
7, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 18, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
8, -1, 1, 16, 0, 0, -1, 0, 0, -1, 0, 0, 17, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
16, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 15, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
9, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 10, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
14, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 11, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0,
12, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 13, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
19, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
{1, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {2, -1, 1}, {12, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {3, -1, 1}, {13, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, {14, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {5, -1, 1}, {9, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {6, -1, 1},
{10, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{18, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, {16, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {17, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {16, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {15, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{9, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {10, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {14, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 1}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {12, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {13, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {19, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
};
/* 80A7B98C-80A7BC9C 000830 0310+00 0/1 0/0 0/0 .data l_motionSequenceData */
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[196] = {
0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 8, -1, 1, 2, 0, 0, -1, 0, 0, -1, 0, 0,
1, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 9, -1, 1, 1, 0, 0, -1, 0, 0, -1, 0, 0,
4, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 10, -1, 1, 1, 0, 0, -1, 0, 0, -1, 0, 0,
11, -1, 1, 5, 0, 0, -1, 0, 0, -1, 0, 0, 2, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
7, -1, 1, 1, 0, 0, -1, 0, 0, -1, 0, 0, 6, -1, 1, 0, 0, 0, -1, 0, 0, -1, 0, 0,
22, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 25, -1, 1, 22, 0, 0, -1, 0, 0, -1, 0, 0,
28, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 27, 0, 1, 29, 0, 0, -1, 0, 0, -1, 0, 0,
14, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 15, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0,
23, -1, 1, 22, 0, 0, -1, 0, 0, -1, 0, 0, 16, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0,
17, -1, 1, 14, 0, 0, -1, 0, 0, -1, 0, 0, 33, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
31, -1, 1, 32, 0, 0, -1, 0, 0, -1, 0, 0, 32, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
29, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 20, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0,
21, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 26, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0,
18, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
25, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 24, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0,
13, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0, 12, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
3, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 30, -1, 1, -1, 0, 0, -1, 0, 0, -1, 0, 0,
18, 4, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0,
{0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, {2, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {1, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {9, -1, 1}, {1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {4, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {10, -1, 1},
{1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 1}, {5, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{2, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {6, -1, 1}, {0, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {22, -1, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {25, -1, 1}, {22, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {28, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {27, 0, 1}, {29, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{14, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {15, -1, 1}, {14, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {23, -1, 1}, {22, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {16, -1, 1}, {14, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {17, -1, 1}, {14, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {33, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {31, -1, 1}, {32, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{32, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {29, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {20, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {21, -1, 1}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {26, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {18, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{25, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {24, -1, 1}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {13, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {12, -1, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {3, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {30, -1, 1},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {18, 4, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
};
/* 80A7BC9C-80A7BCB0 -00001 0014+00 1/1 0/0 0/0 .data mCutNameList__11daNpc_Moi_c */
const char* daNpc_Moi_c::mCutNameList[5] = {
char* daNpc_Moi_c::mCutNameList[5] = {
"", "DELIVERED_SW", "APPEARANCE_MOI", "CONVERSATION_WITH_URI", "FIND_WOLF",
};
@ -189,116 +194,14 @@ daNpc_Moi_c::~daNpc_Moi_c() {
}
/* 80A7AEF0-80A7AFAC 000000 00BC+00 19/19 0/0 0/0 .rodata m__17daNpc_Moi_Param_c */
daNpc_Moi_HIOParam const daNpc_Moi_Param_c::m = {
200.0f, // field_0x00
-3.0f, // field_0x04
1.0f, // field_0x08
400.0f, // field_0x0c
255.0f, // field_0x10
180.0f, // field_0x14
35.0f, // field_0x18
30.0f, // field_0x1c
0.0f, // field_0x20
0.0f, // field_0x24
10.0f, // field_0x28
-10.0f, // field_0x2c
30.0f, // field_0x30
-10.0f, // field_0x34
45.0f, // field_0x38
-45.0f, // field_0x3c
0.6000000238418579f, // field_0x40
12.0f, // field_0x44
3, // field_0x48
6, // field_0x4a
5, // field_0x4c
6, // field_0x4e
110.0f, // field_0x50
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x3C,
0x00,
0x08,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
4.0f, // field_0x6c
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x43,
0xAF,
0x00,
0x00,
0x43,
0x96,
0x00,
0x00,
0xC2,
0xC8,
0x00,
0x00,
90, // field_0x98
200, // field_0x9a
235, // field_0x9c
125, // field_0x9e
0, // field_0xa0
0, // field_0xa2
1.0f, // field_0xa4
0x44,
0x7A,
0x00,
0x00,
0x43,
0x96,
0x00,
0x00,
0xC3,
0x96,
0x00,
0x00,
30.0f, // field_0xb4
60.0f, // field_0xb8
const daNpc_Moi_HIOParam daNpc_Moi_Param_c::m = {
200.0f, -3.0f, 1.0f, 400.0f, 255.0f, 180.0f, 35.0f, 30.0f, 0.0f, 0.0f, 10.0f,
-10.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6,
110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0,
4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x43, 0xAF, 0x00,
0x00, 0x43, 0x96, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 90, 200,
235, 125, 0, 0, 1.0f, 0x44, 0x7A, 0x00, 0x00, 0x43, 0x96,
0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 30.0f, 60.0f,
};
/* 80A74150-80A74474 0002F0 0324+00 1/1 0/0 0/0 .text create__11daNpc_Moi_cFv */
@ -331,7 +234,7 @@ int daNpc_Moi_c::create() {
reset();
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
mCcStts.Init(daNpc_Moi_Param_c::m.field_0x10, 0, this);
mCcStts.Init(daNpc_Moi_Param_c::m.common.weight, 0, this);
for (int i = 0; i < 4; i++) {
mCyl[i].Set(mCcDCyl);
mCyl[i].SetStts(&mCcStts);
@ -632,64 +535,67 @@ void daNpc_Moi_c::setParam() {
srchActors();
int uVar5 = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
s16 sVar7 = daNpc_Moi_Param_c::m.field_0x48;
s16 sVar6 = daNpc_Moi_Param_c::m.field_0x4a;
s16 sVar5 = daNpc_Moi_Param_c::m.field_0x4c;
s16 sVar4 = daNpc_Moi_Param_c::m.field_0x4e;
s16 talk_distance = daNpc_Moi_Param_c::m.common.talk_distance;
s16 talk_angle = daNpc_Moi_Param_c::m.common.talk_angle;
s16 attention_distance = daNpc_Moi_Param_c::m.common.attention_distance;
s16 attention_angle = daNpc_Moi_Param_c::m.common.attention_angle;
if (mType == TYPE_2) {
if (field_0x166d) {
sVar7 = 1;
sVar6 = 6;
sVar5 = 1;
sVar4 = 6;
talk_distance = 1;
talk_angle = 6;
attention_distance = 1;
attention_angle = 6;
uVar5 = fopAc_AttnFlag_UNK_0x800000 | fopAc_AttnFlag_SPEAK_e;
} else {
sVar7 = 6;
sVar6 = 6;
sVar5 = 19;
sVar4 = 6;
talk_distance = 6;
talk_angle = 6;
attention_distance = 19;
attention_angle = 6;
uVar5 = fopAc_AttnFlag_LOCK_e;
}
} else if (mType == TYPE_1) {
sVar7 = 5;
sVar5 = 7;
talk_distance = 5;
attention_distance = 7;
}
if (daPy_getPlayerActorClass()->checkHorseRide()) {
if (sVar7 < 7) {
sVar7 = 7;
if (talk_distance < 7) {
talk_distance = 7;
}
if (sVar5 < 9) {
sVar5 = 9;
if (attention_distance < 9) {
attention_distance = 9;
}
}
if (mType == TYPE_2) {
attention_info.distances[fopAc_attn_LOCK_e] = 0x35;
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(sVar7, sVar6);
attention_info.distances[fopAc_attn_SPEAK_e] =
daNpcT_getDistTableIdx(talk_distance, talk_angle);
attention_info.flags = 0;
fopAcM_OffStatus(this, 0x100);
} else {
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(sVar5, sVar4);
attention_info.distances[fopAc_attn_LOCK_e] =
daNpcT_getDistTableIdx(attention_distance, attention_angle);
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(sVar7, sVar6);
attention_info.distances[fopAc_attn_SPEAK_e] =
daNpcT_getDistTableIdx(talk_distance, talk_angle);
attention_info.flags = uVar5;
}
scale.set(daNpc_Moi_Param_c::m.field_0x08, daNpc_Moi_Param_c::m.field_0x08,
daNpc_Moi_Param_c::m.field_0x08);
mCcStts.SetWeight(daNpc_Moi_Param_c::m.field_0x10);
mCylH = daNpc_Moi_Param_c::m.field_0x14;
mWallR = daNpc_Moi_Param_c::m.field_0x1c;
mAttnFovY = daNpc_Moi_Param_c::m.field_0x50;
scale.set(daNpc_Moi_Param_c::m.common.scale, daNpc_Moi_Param_c::m.common.scale,
daNpc_Moi_Param_c::m.common.scale);
mCcStts.SetWeight(daNpc_Moi_Param_c::m.common.weight);
mCylH = daNpc_Moi_Param_c::m.common.height;
mWallR = daNpc_Moi_Param_c::m.common.width;
mAttnFovY = daNpc_Moi_Param_c::m.common.fov;
if (mType == TYPE_2) {
mAttnFovY = 135.0f;
}
mAcchCir.SetWallR(mWallR);
mAcchCir.SetWallH(daNpc_Moi_Param_c::m.field_0x18);
mRealShadowSize = daNpc_Moi_Param_c::m.field_0x0c;
mAcchCir.SetWallH(daNpc_Moi_Param_c::m.common.knee_length);
mRealShadowSize = daNpc_Moi_Param_c::m.common.real_shadow_size;
if (mType == TYPE_1) {
mRealShadowSize = 600.0f;
} else if (mType == TYPE_2) {
@ -698,9 +604,9 @@ void daNpc_Moi_c::setParam() {
mRealShadowSize = 800.0f;
}
}
gravity = daNpc_Moi_Param_c::m.field_0x04;
mExpressionMorfFrame = daNpc_Moi_Param_c::m.field_0x6c;
mMorfFrames = daNpc_Moi_Param_c::m.field_0x44;
gravity = daNpc_Moi_Param_c::m.common.gravity;
mExpressionMorfFrame = daNpc_Moi_Param_c::m.common.expression_morf_frame;
mMorfFrames = daNpc_Moi_Param_c::m.common.morf_frame;
if (mType == TYPE_3) {
mAcch.SetGrndNone();
mAcch.SetWallNone();
@ -730,7 +636,7 @@ BOOL daNpc_Moi_c::checkChangeEvt() {
/* 80A75514-80A755C8 0016B4 00B4+00 2/0 0/0 0/0 .text setAfterTalkMotion__11daNpc_Moi_cFv
*/
void daNpc_Moi_c::setAfterTalkMotion() {
int iVar2 = 21;
int iVar2 = MOT_UNK_21;
switch (mFaceMotionSeqMngr.getNo()) {
case MOT_UNK_1:
iVar2 = MOT_UNK_18;
@ -836,8 +742,9 @@ void daNpc_Moi_c::action() {
}
if (mSph.ChkAtHit() && fopAcM_GetProfName(mSph.GetAtHitAc()) == PROC_ALINK) {
/* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo
(Used to connect with conversation after wearing clothes) */
/* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo
(Used to connect with conversation after wearing clothes)
*/
daNpcF_onTmpBit(0x47);
}
}
@ -868,13 +775,15 @@ void daNpc_Moi_c::setAttnPos() {
if (mType == 3) {
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
getNeckJointNo(), getHeadJointNo(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, l_HIO.m.field_0x40, dVar6, NULL);
0.0f, 0.0f, l_HIO.m.common.neck_rotation_ratio, dVar6, NULL);
} else {
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
getNeckJointNo(), getHeadJointNo(), l_HIO.m.field_0x24, l_HIO.m.field_0x20,
l_HIO.m.field_0x2c, l_HIO.m.field_0x28, l_HIO.m.field_0x34,
l_HIO.m.field_0x30, l_HIO.m.field_0x3c, l_HIO.m.field_0x38,
l_HIO.m.field_0x40, dVar6, NULL);
getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min,
l_HIO.m.common.body_angleX_max, l_HIO.m.common.body_angleY_min,
l_HIO.m.common.body_angleY_max, l_HIO.m.common.head_angleX_min,
l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min,
l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar6,
NULL);
}
mJntAnm.calcJntRad(0.2f, 1.0f, dVar6);
@ -886,7 +795,7 @@ void daNpc_Moi_c::setAttnPos() {
mJntAnm.setEyeAngleY(eyePos, mCurAngle.y + field_0xd8a.y, 1, 1.0f, 0);
acStack_3c.set(0.0f, 0.0f, 0.0f);
acStack_3c.y = l_HIO.m.field_0x00;
acStack_3c.y = l_HIO.m.common.attention_offset;
if (mType == TYPE_3) {
acStack_3c.set(0.0f, 140.0f, -60.0f);
@ -1135,7 +1044,8 @@ BOOL daNpc_Moi_c::chkPlayerGetWoodShield() {
/* 80A766DC-80A76888 00287C 01AC+00 2/2 0/0 0/0 .text setSSlash__11daNpc_Moi_cFi */
void daNpc_Moi_c::setSSlash(int param_1) {
mMotionSeqMngr.setNo(MOT_UNK_43, 0.0f, 1, 0);
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night
*/
if (dComIfGs_isTmpBit(0x1308)) {
mSound.startCreatureVoice(JAISoundID(Z2SE_MOI_V_GUARD_SWING), -1);
} else {
@ -1153,7 +1063,7 @@ void daNpc_Moi_c::setSSlash(int param_1) {
field_0x1658 = 0;
field_0x166b = 1;
field_0x166c = 1;
/* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo
/* dSv_event_tmp_flag_c::T_0047 - Ordon Village - Right after wrestling with Bo
(Used to connect with conversation after wearing clothes) */
daNpcT_onTmpBit(0x47);
}
@ -1312,7 +1222,8 @@ int daNpc_Moi_c::injuryTurn(cXyz param_1) {
/* 80A76F3C-80A770FC 0030DC 01C0+00 1/1 0/0 0/0 .text injuryWalk__11daNpc_Moi_cFv */
int daNpc_Moi_c::injuryWalk() {
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night
*/
dComIfGs_offTmpBit(0x1308);
cXyz cStack_40;
@ -1398,7 +1309,8 @@ int daNpc_Moi_c::poise() {
field_0x1648 = cLib_getRndValue(iVar13 * 0.5f, iVar13 * 1.5f);
} else if (!cLib_calcTimer(&field_0x1648)) {
mMotionSeqMngr.setNo(MOT_UNK_43, 0.0f, 1, 0);
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding
* Uli, Ordon village night */
if (dComIfGs_isTmpBit(0x1308)) {
mSound.startCreatureVoice(JAISoundID(Z2SE_MOI_V_GUARD_SWING), -1);
} else {
@ -1926,7 +1838,9 @@ int daNpc_Moi_c::walkOnEggshell(void* param_1) {
if (field_0x1658) {
field_0x1658 = injuryCheck();
if (field_0x1658) {
if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) {
if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) !=
0)
{
f32 fVar = daPy_getPlayerActorClass()->attention_info.position.absXZ(
attention_info.position);
}