mirror of https://github.com/zeldaret/tp.git
d_a_npc_bou Equivalent (#2411)
* Initial d_a_npc_bou work * d_a_npc_bou 34% done * d_a_npc_bou 56% matching * DONE d_a_npc_bou cutWildGoat * d_a_npc_bou 76% matching * d_a_npc_bou equivalent * Mark d_a_npc_bou as Equivalent in configure(dot)py
This commit is contained in:
parent
657ea58023
commit
7e06b18a2a
|
|
@ -1751,7 +1751,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_npc_ashB"),
|
||||
ActorRel(NonMatching, "d_a_npc_bans"),
|
||||
ActorRel(NonMatching, "d_a_npc_blue_ns"),
|
||||
ActorRel(NonMatching, "d_a_npc_bou"),
|
||||
ActorRel(Equivalent, "d_a_npc_bou"),
|
||||
ActorRel(NonMatching, "d_a_npc_bouS"),
|
||||
ActorRel(NonMatching, "d_a_npc_cdn3"),
|
||||
ActorRel(NonMatching, "d_a_npc_chat"),
|
||||
|
|
|
|||
|
|
@ -262,6 +262,7 @@ public:
|
|||
bool checkCutTurnCancel() const { return checkEndResetStateFlg0(ERFLG0_CUT_TURN_CANCEL); }
|
||||
bool checkTurnCancelKeep() const { return checkStateFlg0(FLG0_TURN_CANCEL_KEEP); }
|
||||
BOOL checkRodeoLeft() const { return checkStateFlg0(FLG0_RODEO_LEFT); }
|
||||
BOOL checkHorseCallWait() const { return checkStateFlg0(FLG0_NO_DRAW_WAIT); }
|
||||
BOOL checkTurn() const { return m_procID == PROC_TURN_e && field_0x1720 == 0; }
|
||||
BOOL checkStop() const { return m_procID == PROC_STOP_e; }
|
||||
bool checkJump() const { return m_procID == PROC_JUMP_e; }
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
*/
|
||||
class daNpc_Bou_Param_c {
|
||||
public:
|
||||
/* 809727F4 */ ~daNpc_Bou_Param_c();
|
||||
/* 809727F4 */ virtual ~daNpc_Bou_Param_c() {}
|
||||
|
||||
struct Data {
|
||||
/* 0x00 */ f32 field_0x00; // 255.0f
|
||||
|
|
@ -65,6 +65,8 @@
|
|||
|
||||
class daNpc_Bou_c : public daNpcT_c {
|
||||
public:
|
||||
typedef int (daNpc_Bou_c::*cutFunc)(int);
|
||||
typedef int (daNpc_Bou_c::*actionFunc)(void*);
|
||||
|
||||
enum Type {
|
||||
TYPE_0,
|
||||
|
|
@ -76,37 +78,39 @@ public:
|
|||
};
|
||||
|
||||
/* 8096CF8C */ ~daNpc_Bou_c();
|
||||
/* 8096D0D8 */ void create();
|
||||
/* 8096D38C */ void CreateHeap();
|
||||
/* 8096D7B8 */ void Delete();
|
||||
/* 8096D7EC */ void Execute();
|
||||
/* 8096D80C */ void Draw();
|
||||
/* 8096D8A0 */ void createHeapCallBack(fopAc_ac_c*);
|
||||
/* 8096D8C0 */ void ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 8096D918 */ void srchCow(void*, void*);
|
||||
/* 8096D9B4 */ void getCowP();
|
||||
/* 8096D0D8 */ int create();
|
||||
/* 8096D38C */ int CreateHeap();
|
||||
/* 8096D7B8 */ int Delete();
|
||||
/* 8096D7EC */ int Execute();
|
||||
/* 8096D80C */ int Draw();
|
||||
/* 8096D8A0 */ static int createHeapCallBack(fopAc_ac_c*);
|
||||
/* 8096D8C0 */ static int ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 8096D918 */ static void* srchCow(void*, void*);
|
||||
/* 8096D9B4 */ fopAc_ac_c* getCowP();
|
||||
/* 8096DA78 */ u8 getType();
|
||||
/* 8096DADC */ void isDelete();
|
||||
/* 8096DADC */ int isDelete();
|
||||
/* 8096DBBC */ void reset();
|
||||
/* 8096E18C */ void srchActors();
|
||||
/* 8096ECC0 */ void selectAction();
|
||||
/* 8096ED3C */ void chkAction(int (daNpc_Bou_c::*)(void*));
|
||||
/* 8096ED68 */ void setAction(int (daNpc_Bou_c::*)(void*));
|
||||
/* 8096EE10 */ void cutWildGoat(int);
|
||||
/* 8096F2E4 */ void cutWildGoatSuccess(int);
|
||||
/* 8096F510 */ void cutWildGoatFailure(int);
|
||||
/* 8096F758 */ void cutSpeakTo(int);
|
||||
/* 8096F9A4 */ void cutConversationWithBou(int);
|
||||
/* 8096FB78 */ void cutConfidentialConversation(int);
|
||||
/* 8096FE40 */ void cutFindWolf(int);
|
||||
/* 80970278 */ void cutMeetingAgain(int);
|
||||
/* 809709EC */ void wait(void*);
|
||||
/* 80970DFC */ void talkwithJagar(void*);
|
||||
/* 80970F9C */ void talk(void*);
|
||||
/* 809726D4 */ daNpc_Bou_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**);
|
||||
/* 8096ECC0 */ int selectAction();
|
||||
/* 8096ED3C */ int chkAction(int (daNpc_Bou_c::*)(void*));
|
||||
/* 8096ED68 */ int setAction(int (daNpc_Bou_c::*)(void*));
|
||||
/* 8096EE10 */ int cutWildGoat(int);
|
||||
/* 8096F2E4 */ int cutWildGoatSuccess(int);
|
||||
/* 8096F510 */ int cutWildGoatFailure(int);
|
||||
/* 8096F758 */ int cutSpeakTo(int);
|
||||
/* 8096F9A4 */ int cutConversationWithBou(int);
|
||||
/* 8096FB78 */ int cutConfidentialConversation(int);
|
||||
/* 8096FE40 */ int cutFindWolf(int);
|
||||
/* 80970278 */ int cutMeetingAgain(int);
|
||||
/* 809709EC */ int wait(void*);
|
||||
/* 80970DFC */ int talkwithJagar(void*);
|
||||
/* 80970F9C */ int talk(void*);
|
||||
/* 809726D4 */ daNpc_Bou_c(daNpcT_faceMotionAnmData_c const* param_1, daNpcT_motionAnmData_c const* param_2,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6,
|
||||
daNpcT_evtData_c const* param_7, char** param_8) :
|
||||
daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
|
||||
{}
|
||||
|
||||
/* 809727D4 */ virtual int checkChangeJoint(int);
|
||||
/* 809727E4 */ virtual int checkRemoveJoint(int);
|
||||
|
|
@ -128,8 +132,16 @@ public:
|
|||
/* 8096EC6C */ virtual int drawDbgInfo();
|
||||
/* 8096EC74 */ virtual void changeAnm(int*, int*);
|
||||
|
||||
static void* mCutNameList[9];
|
||||
static u8 mCutList[108];
|
||||
static char* mCutNameList[9];
|
||||
static cutFunc mCutList[9];
|
||||
|
||||
int getFlowNodeNo() {
|
||||
u16 nodeNo = home.angle.x;
|
||||
if (nodeNo == 0xffff) {
|
||||
return -1;
|
||||
}
|
||||
return nodeNo;
|
||||
}
|
||||
|
||||
BOOL chkFindWolf() {
|
||||
int iVar1 = daNpcT_getDistTableIdx(field_0xfe0, field_0xfe4);
|
||||
|
|
@ -157,7 +169,7 @@ public:
|
|||
}
|
||||
|
||||
BOOL speakTo() {
|
||||
if (field_0xf80 == 4) {
|
||||
if (mType == 4) {
|
||||
if (current.pos.absXZ(daPy_getPlayerActorClass()->current.pos) < 1100.0f && strlen(mpEvtData[5].eventName) != 0) {
|
||||
u32 len = strlen(mpArcNames[mpEvtData[5].num]);
|
||||
if (len != 0) {
|
||||
|
|
@ -176,18 +188,55 @@ public:
|
|||
|
||||
private:
|
||||
/* 0xE40 */ int field_0xe40;
|
||||
/* 0xE44 */ dCcD_Cyl field_0xe44;
|
||||
/* 0xF80 */ u8 field_0xf80;
|
||||
/* 0xF84 */ daNpcT_ActorMngr_c field_0xf84[3];
|
||||
/* 0xE44 */ dCcD_Cyl mCyl1;
|
||||
/* 0xF80 */ u8 mType;
|
||||
/* 0xF84 */ daNpcT_ActorMngr_c mActorMngr[3];
|
||||
/* 0xF9C */ daNpcT_Path_c field_0xf9c;
|
||||
/* 0xFC4 */ u8 field_0xfc4[0xFDC - 0xFC4];
|
||||
/* 0xFC4 */ actionFunc field_0xfc4;
|
||||
/* 0xFD0 */ actionFunc field_0xfd0;
|
||||
/* 0xFDC */ int field_0xfdc;
|
||||
/* 0xFE0 */ int field_0xfe0;
|
||||
/* 0xFE4 */ int field_0xfe4;
|
||||
/* 0xFE8 */ u8 field_0xfe8[0xFFC - 0xFE8];
|
||||
/* 0xFE8 */ u8 field_0xfe8[0xFF4 - 0xFE8];
|
||||
/* 0xFF4 */ u8 field_0xff4;
|
||||
/* 0xFF5 */ u8 field_0xff5[0xFF8 - 0xFF5];
|
||||
/* 0xFF8 */ u8 field_0xff8;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpc_Bou_c) == 0xffc);
|
||||
|
||||
/* 809727B4-809727BC 005914 0008+00 1/0 0/0 0/0 .text getEyeballMaterialNo__11daNpc_Bou_cFv */
|
||||
s32 daNpc_Bou_c::getEyeballMaterialNo() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 809727BC-809727C4 00591C 0008+00 1/0 0/0 0/0 .text getHeadJointNo__11daNpc_Bou_cFv */
|
||||
s32 daNpc_Bou_c::getHeadJointNo() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
/* 809727C4-809727CC 005924 0008+00 1/0 0/0 0/0 .text getNeckJointNo__11daNpc_Bou_cFv */
|
||||
s32 daNpc_Bou_c::getNeckJointNo() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
/* 809727CC-809727D4 00592C 0008+00 1/0 0/0 0/0 .text getBackboneJointNo__11daNpc_Bou_cFv
|
||||
*/
|
||||
s32 daNpc_Bou_c::getBackboneJointNo() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 809727D4-809727E4 005934 0010+00 1/0 0/0 0/0 .text checkChangeJoint__11daNpc_Bou_cFi
|
||||
*/
|
||||
int daNpc_Bou_c::checkChangeJoint(int param_0) {
|
||||
return param_0 == 4;
|
||||
}
|
||||
|
||||
/* 809727E4-809727F4 005944 0010+00 1/0 0/0 0/0 .text checkRemoveJoint__11daNpc_Bou_cFi
|
||||
*/
|
||||
int daNpc_Bou_c::checkRemoveJoint(int param_0) {
|
||||
return param_0 == 8;
|
||||
}
|
||||
|
||||
|
||||
#endif /* D_A_NPC_BOU_H */
|
||||
|
|
|
|||
|
|
@ -166,6 +166,24 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
void setSurpriseMotion() {
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(7, -1.0f, 0, 0);
|
||||
field_0xff8 = 0;
|
||||
}
|
||||
|
||||
void setListenMotion(f32 arg) {
|
||||
mFaceMotionSeqMngr.setNo(8, -1.0f, 0, 0);
|
||||
if (0.0f < arg + (cM_rnd() - 0.5f)) {
|
||||
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
|
||||
} else {
|
||||
mMotionSeqMngr.setNo(5, -1.0f, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void onListen() { mListen = 1; }
|
||||
void offListen() { mListen = 0; }
|
||||
|
||||
u8 getPathID() { return (fopAcM_GetParam(this) & 0xff00) >> 8; }
|
||||
|
||||
static char* mCutNameList[7];
|
||||
|
|
@ -188,7 +206,7 @@ private:
|
|||
/* 0x1002 */ u8 field_0x1002;
|
||||
/* 0x1003 */ u8 field_0x1003;
|
||||
/* 0x1004 */ u8 field_0x1004;
|
||||
/* 0x1005 */ u8 field_0x1005;
|
||||
/* 0x1005 */ u8 mListen;
|
||||
/* 0x1008 */ int field_0x1008;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -899,6 +899,7 @@ public:
|
|||
bool getGrabUpStart() const { return checkResetFlg0(RFLG0_UNK_8000); }
|
||||
bool checkCanoeSlider() const { return mSpecialMode == 0x2D; }
|
||||
bool checkGoatStopGame() const { return mSpecialMode == 0x2A; }
|
||||
bool onGoatStopGame() { return mSpecialMode = 0x2A; }
|
||||
u8 getCutType() const { return mCutType; }
|
||||
u16 getSwordAtUpTime() const { return mSwordUpTimer; }
|
||||
s16 getDamageWaitTimer() const { return mDamageTimer; }
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1416,7 +1416,7 @@ int daNpc_Jagar_c::talkwithBou(void* param_0) {
|
|||
mEvtNo = 7;
|
||||
}
|
||||
if (bo) {
|
||||
if (field_0x1005 == 0) {
|
||||
if (mListen == 0) {
|
||||
if (cLib_calcTimer(&field_0xff8) == 0) {
|
||||
if (chkCondition(0) && bo->chkCondition(0)) {
|
||||
field_0xff8 = cLib_getRndValue(45.0f, 135.0f);
|
||||
|
|
|
|||
Loading…
Reference in New Issue