summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMax Roncace <me@caseif.net>2025-11-25 15:32:01 -0500
committerGitHub <noreply@github.com>2025-11-25 22:32:01 +0200
commit9f76ba2f69e32317377477fdd341f4951a012cf0 (patch)
treebaeeb93b7e97f335bd4fc445817b7c00f2ea0e22 /include
parent360bad39952e0b9ad72cfa75a2763ef9dab69064 (diff)
d_a_npc debug work (#2863)
* Remove d_a_npc3.cpp This file appears to not actually be real and the asserts in its functions all reference d_a_npc2.cpp instead. * d_a_npc debug almost matching
Diffstat (limited to 'include')
-rw-r--r--include/SSystem/SComponent/c_lib.h2
-rw-r--r--include/d/actor/d_a_npc.h677
-rw-r--r--include/d/actor/d_a_npc2.h184
-rw-r--r--include/d/actor/d_a_npc4.h459
-rw-r--r--include/d/actor/d_a_npc_ash.h2
-rw-r--r--include/d/actor/d_a_npc_ashB.h2
-rw-r--r--include/d/actor/d_a_npc_blue_ns.h2
-rw-r--r--include/d/actor/d_a_npc_bouS.h2
-rw-r--r--include/d/actor/d_a_npc_chat.h2
-rw-r--r--include/d/actor/d_a_npc_chin.h2
-rw-r--r--include/d/actor/d_a_npc_doorboy.h2
-rw-r--r--include/d/actor/d_a_npc_drainSol.h2
-rw-r--r--include/d/actor/d_a_npc_gra.h3
-rw-r--r--include/d/actor/d_a_npc_grc.h3
-rw-r--r--include/d/actor/d_a_npc_grd.h2
-rw-r--r--include/d/actor/d_a_npc_gro.h2
-rw-r--r--include/d/actor/d_a_npc_grr.h2
-rw-r--r--include/d/actor/d_a_npc_grs.h2
-rw-r--r--include/d/actor/d_a_npc_grz.h3
-rw-r--r--include/d/actor/d_a_npc_gwolf.h2
-rw-r--r--include/d/actor/d_a_npc_impal.h2
-rw-r--r--include/d/actor/d_a_npc_ins.h2
-rw-r--r--include/d/actor/d_a_npc_kasi_hana.h2
-rw-r--r--include/d/actor/d_a_npc_kasi_kyu.h2
-rw-r--r--include/d/actor/d_a_npc_kasi_mich.h2
-rw-r--r--include/d/actor/d_a_npc_moir.h2
-rw-r--r--include/d/actor/d_a_npc_myna2.h2
-rw-r--r--include/d/actor/d_a_npc_prayer.h2
-rw-r--r--include/d/actor/d_a_npc_rafrel.h2
-rw-r--r--include/d/actor/d_a_npc_shad.h2
-rw-r--r--include/d/actor/d_a_npc_shoe.h2
-rw-r--r--include/d/actor/d_a_npc_soldierA.h2
-rw-r--r--include/d/actor/d_a_npc_soldierB.h2
-rw-r--r--include/d/actor/d_a_npc_the.h2
-rw-r--r--include/d/actor/d_a_npc_theB.h2
-rw-r--r--include/d/actor/d_a_npc_tk.h20
-rw-r--r--include/d/actor/d_a_npc_tkc.h2
-rw-r--r--include/d/actor/d_a_npc_tks.h2
-rw-r--r--include/d/actor/d_a_npc_wrestler.h1
-rw-r--r--include/d/actor/d_a_npc_zra.h3
-rw-r--r--include/d/actor/d_a_npc_zrc.h2
-rw-r--r--include/d/actor/d_a_npc_zrz.h2
-rw-r--r--include/d/actor/d_a_obj_gra2.h3
-rw-r--r--include/d/actor/d_a_obj_tks.h2
-rw-r--r--include/d/actor/d_a_obj_zraMark.h1
-rw-r--r--include/d/actor/d_a_startAndGoal.h2
-rw-r--r--include/d/d_bg_s.h2
-rw-r--r--include/d/d_cc_d.h2
-rw-r--r--include/m_Do/m_Do_ext.h3
-rw-r--r--include/m_Do/m_Do_mtx.h4
50 files changed, 741 insertions, 697 deletions
diff --git a/include/SSystem/SComponent/c_lib.h b/include/SSystem/SComponent/c_lib.h
index 1dcd862402..a93ba51aa5 100644
--- a/include/SSystem/SComponent/c_lib.h
+++ b/include/SSystem/SComponent/c_lib.h
@@ -92,7 +92,7 @@ T cLib_getRndValue(T min, T range) {
template <typename T>
T cLib_calcTimer(T* value) {
if (*(T*)value != 0) {
- *value = *value - 1;
+ --*value;
}
return *value;
}
diff --git a/include/d/actor/d_a_npc.h b/include/d/actor/d_a_npc.h
index c8a8f4b1b0..59bf616126 100644
--- a/include/d/actor/d_a_npc.h
+++ b/include/d/actor/d_a_npc.h
@@ -6,7 +6,6 @@
#include "SSystem/SComponent/c_math.h"
#include "Z2AudioLib/Z2Creature.h"
#include "d/actor/d_a_player.h"
-#include "d/d_bg_s_movebg_actor.h"
#include "d/d_path.h"
#include "d/d_msg_flow.h"
#include "d/d_particle_copoly.h"
@@ -151,36 +150,41 @@ public:
f32, f32, f32, f32, f32, f32, cXyz*);
/* 80147858 */ void calc(f32);
/* 80147C38 */ void calcJntRad(f32, f32, f32);
+#if DEBUG
+ void drawDbgInfo();
+#endif
void setEyeAngleX(cXyz param_1, f32 param_2, s16 param_3) {
- cXyz cStack_50;
+ cXyz unusedXyz;
+ f32 param_2_recip = 0.0f;
s16 sVar3 = 0;
if (mAttnPosP != NULL) {
- cStack_50 = *mAttnPosP - param_1;
+ cXyz cStack_50 = *mAttnPosP - param_1;
sVar3 = -cM_atan2s(cStack_50.y, cStack_50.absXZ());
sVar3 += param_3;
}
sVar3 += field_0x150.x;
- mEyeAngle.x = field_0x132.x * (1.0f - 1.0f / param_2) +
- sVar3 * (1.0f / param_2);
+ param_2_recip = 1.0f / param_2;
+ mEyeAngle.x = field_0x132.x * (1.0f - param_2_recip) +
+ sVar3 * param_2_recip;
}
void setEyeAngleY(cXyz param_1, s16 param_2, BOOL param_3, f32 param_4, s16 param_5) {
- cXyz cStack_50;
+ f32 param_4_recip = 0.0f;
s16 sVar3 = 0;
if (mAttnPosP != NULL) {
- cStack_50 = *mAttnPosP - param_1;
- sVar3 = cM_atan2s(cStack_50.x, cStack_50.z);
+ cXyz cStack_50 = *mAttnPosP - param_1;
+ sVar3 += cM_atan2s(cStack_50.x, cStack_50.z);
sVar3 -= param_2;
- s16 diff = field_0x150.y - param_2;
- sVar3 -= diff;
+ sVar3 -= (s16)(field_0x150.y - param_2);
sVar3 += param_5;
}
if (param_3) {
- sVar3 = -sVar3;
+ sVar3 = sVar3 * -1;
}
- mEyeAngle.y = field_0x132.y * (1.0f - 1.0f / param_4) +
- sVar3 * (1.0f / param_4);
+ param_4_recip = 1.0f / param_4;
+ mEyeAngle.y = field_0x132.y * (1.0f - param_4_recip) +
+ sVar3 * param_4_recip;
}
void setEyeAngleY(s16 param_1, f32 param_2) {
@@ -192,7 +196,8 @@ public:
s16 getEyeAngleY() { return mEyeAngle.y; }
f32 getJntRadX(int param_0) {
- f32 ret = field_0xe4[2].x;
+ f32 ret = 0.0f;
+ ret = field_0xe4[2].x;
if (param_0 == 0) {
ret += field_0xe4[0].x * (1.0f - field_0x148);
} else if (param_0 == 1) {
@@ -202,7 +207,8 @@ public:
}
f32 getJntRadY(int param_0) {
- f32 ret = field_0xe4[2].y;
+ f32 ret = 0.0f;
+ ret = field_0xe4[2].y;
if (param_0 == 0) {
ret += field_0xe4[0].y * (1.0f - field_0x148);
} else if (param_0 == 1) {
@@ -421,11 +427,10 @@ public:
f32 GetH10() { return H10; }
f32 GetH11() { return H11; }
- // constants might be wrong, regalloc
void Set(f32 param_1) {
field_0x00 = param_1;
+ f32 cubed = param_1 * param_1 * param_1;
f32 sqr = param_1 * param_1;
- f32 cubed = param_1 * sqr;
H00 = 1.0f + (2.0f * cubed - 3.0f * sqr);
H01 = -2.0f * cubed + 3.0f * sqr;
@@ -477,8 +482,7 @@ public:
int getArg2() { return mPathInfo->m_points[mIdx].mArg2; }
int chkClose() {
- BOOL rt = dPath_ChkClose(mPathInfo);
- return rt;
+ return dPath_ChkClose(mPathInfo);
}
bool chkReverse() { return mDirection == 1; }
@@ -501,6 +505,10 @@ public:
field_0x1E = 1;
}
+ bool checkReverse() {
+ return mDirection == 1;
+ }
+
BOOL chkNextId() { return mPathInfo->m_nextID != 0xFFFF; }
};
@@ -684,7 +692,10 @@ public:
/* 8014BFB0 */ fopAc_ac_c* getShopItemTagP();
/* 8014C030 */ void setHitodamaPrtcl();
- /* 8014CD20 */ virtual ~daNpcT_c() {}
+ /* 8014CD20 */ virtual ~daNpcT_c() {
+ // "daNpcT_c -> destructed"
+ OS_REPORT("|%06d:%x|daNpcT_c -> デストラクト\n", g_Counter.mCounter0, this);
+ }
/* 801490D4 */ virtual BOOL ctrlBtk();
/* 8014CC14 */ virtual void ctrlSubFaceMotion(int) {}
/* 8014CC40 */ virtual BOOL checkChangeJoint(int) { return FALSE; }
@@ -760,6 +771,10 @@ public:
field_0xde4 = 0.2f;
}
+ BOOL chkFindPlayer(BOOL param_0, s16 param_1) {
+ return chkFindActor(daPy_getPlayerActorClass(), param_0, param_1);
+ }
+
static dCcD_SrcGObjInf const mCcDObjData;
static dCcD_SrcCyl mCcDCyl;
static dCcD_SrcSph mCcDSph;
@@ -817,591 +832,7 @@ BOOL daNpcT_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz* o_spawn
csXyz* o_angle);
int daNpcT_judgeRace(dPath* i_path, fopAc_ac_c** param_1, daNpcT_pntData_c* i_pntData, int param_3, int* param_4);
BOOL daNpcT_chkActorInScreen(fopAc_ac_c* i_ActorP, f32 param_1, f32 param_2, f32 param_3,
- f32 param_4, f32 param_5, f32 param_6, f32 param_7, int param_8);
-
-class daBaseNpc_matAnm_c : public J3DMaterialAnm {
-public:
- /* 80150444 */ virtual ~daBaseNpc_matAnm_c() {}
- /* 8014D884 */ virtual void calc(J3DMaterial*) const;
-
- /* 0x0F4 */ mutable f32 field_0xF4;
- /* 0x0F8 */ mutable f32 field_0xF8;
- /* 0x0FC */ f32 mNowOffsetX;
- /* 0x100 */ f32 mNowOffsetY;
- /* 0x104 */ u8 mEyeMoveFlg;
- /* 0x105 */ u8 mMorfFrm;
-};
-
-class daBaseNpc_acMngr_c {
-public:
- /* 8014D804 */ daBaseNpc_acMngr_c();
- /* 8014D81C */ void entry(fopAc_ac_c*);
- /* 8014D838 */ fopAc_ac_c* getActor();
- /* 80150524 */ virtual ~daBaseNpc_acMngr_c() {}
-
-private:
- /* 0x04 */ fpc_ProcID mActorId;
-};
-
-class daBaseNpc_path_c {
-public:
- /* 8014D998 */ daBaseNpc_path_c();
- /* 8014D9A8 */ BOOL isPath();
- /* 8014D9BC */ int setPathInfo(u8, s8, s8);
- /* 8014DA48 */ void reverseDir();
- /* 8014DA64 */ s32 chkPnt(cXyz);
- /* 8014DAC4 */ BOOL setNextPnt();
- /* 8014DB04 */ u16 getIdx();
- /* 8014DB0C */ void setIdx(u16);
- /* 8014DB14 */ Vec getPntPos(u16);
- /* 801503FC */ virtual ~daBaseNpc_path_c() {}
-
- static const int MAXNUMCONTROLPNT_e = 64;
-
-public:
- /* 0x004 */ dPath* mPathInfo;
- /* 0x008 */ f32 field_0x8;
- /* 0x00C */ dPnt mCurvePnts[160];
- /* 0xA0C */ u8 field_0xa0c[0xA0E - 0xA0C];
- /* 0xA0E */ u16 mCurvePntNum;
- /* 0xA10 */ u16 mIdx;
- /* 0xA12 */ s8 mDirection;
- /* 0xA13 */ u8 field_0xa13;
- /* 0xA14 */ s16 field_0xa14;
- /* 0xA16 */ u8 field_0xa16[2];
- /* 0xA18 */ int field_0xa18;
- /* 0xA1C */ u8 field_0xa1c[8];
-};
-
-class daBaseNpc_lookat_c {
-public:
- /* 8014DB40 */ void limitter(s16, s16*, s16, s16);
- /* 8014DBB4 */ void calc(fopAc_ac_c*, f32 (*)[4], s16);
- /* 8014E634 */ void setMaxJntLmt(csXyz, int);
- /* 8014E658 */ void setMinJntLmt(csXyz, int);
- /* 8014E67C */ void setJntPos(cXyz, int);
- /* 8014E6A0 */ int setAttnPos(cXyz*);
- /* 8014E6AC */ csXyz getRot(int);
- /* 801502EC */ virtual ~daBaseNpc_lookat_c() {}
-
- /* 0x04 */ csXyz mMaxJntLmt[4];
- /* 0x1C */ csXyz mMinJntLmt[4];
- /* 0x34 */ cXyz mJntPos[4];
- /* 0x64 */ csXyz field_0x64[4];
- /* 0x7C */ csXyz mRot[4];
- /* 0x94 */ u8 field_0x94[4];
- /* 0x98 */ cXyz* mpAttnPos;
-};
-
-class daBaseNpc_c : public fopAc_ac_c {
-public:
- /* 8014E6C8 */ daBaseNpc_c();
- /* 8014EE44 */ J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int);
- /* 8014EE80 */ int setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
- /* 8014EEE4 */ int setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
- /* 8014EF28 */ J3DAnmTransform* getTexPtrnAnmP(char*, int);
- /* 8014EF64 */ int setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
- /* 8014EFF4 */ void orderEvent(int, char*);
- /* 8014F0A0 */ void setEnvTevColor();
- /* 8014F0FC */ void setRoomNo();
- /* 8014F148 */ int checkEndAnm(f32);
- /* 8014F1C8 */ int checkEndAnm(J3DFrameCtrl*);
-
- /* 8014E89C */ virtual ~daBaseNpc_c();
- /* 8014EAD0 */ virtual int execute();
- /* 8014EC50 */ virtual int draw(f32);
- /* 8014EE3C */ virtual const char* getResName();
- /* 8014EFA4 */ virtual void attnSttsOn(int, int);
- /* 8014EFF0 */ virtual void setParam();
- /* 8014F09C */ virtual void mainProc();
- /* 8014F140 */ virtual BOOL btkCtrl();
- /* 8014F228 */ virtual void allAnmPlay();
- /* 8014F38C */ virtual void adjustShapeAngle();
- /* 8014F390 */ virtual void setMtx(int);
- /* 8014F4A0 */ virtual void setCollisions();
- /* 8014F4A4 */ virtual void setAttnPos();
- /* 8014F4A8 */ virtual void drawOtherMdls();
- /* 8014F4AC */ virtual bool dbgDraw();
-
- static dCcD_SrcGObjInf const mCcDObj;
- static dCcD_SrcCyl mCcDCyl;
- static dCcD_SrcSph mCcDSph;
-
-public:
- /* 0x56C */ dBgS_ObjAcch mAcch;
- /* 0x744 */ char field_0x744;
- /* 0x745 */ u8 field_0x745[0x74c - 0x745];
- /* 0x74C */ request_of_phase_process_class mPhase;
- /* 0x754 */ mDoExt_McaMorfSO* mpModelMorf;
- /* 0x758 */ Z2Creature mSound;
- /* 0x7E8 */ u32 mShadowId;
- /* 0x7EC */ mDoExt_bckAnm mBck;
- /* 0x808 */ mDoExt_btpAnm mBtp;
- /* 0x820 */ mDoExt_btkAnm mBtk;
- /* 0x838 */ s16 field_0x838;
- /* 0x83C */ u16* field_0x83c;
- /* 0x840 */ u16 field_0x840;
- /* 0x842 */ u16 field_0x842;
- /* 0x844 */ u8 field_0x844;
- /* 0x845 */ u8 field_0x845[0x848 - 0x845];
- /* 0x848 */ s32 field_0x848;
- /* 0x84C */ dMsgFlow_c mMsgFlow;
- /* 0x898 */ u8 field_0x898[0x89A - 0x898];
- /* 0x89A */ s16 mEvtIdx;
- /* 0x89C */ dCcD_Stts mCcStts;
- /* 0x8D8 */ dBgS_AcchCir mAcchCir;
- /* 0x918 */ s16 field_0x918;
- /* 0x91A */ csXyz field_0x91a;
- /* 0x920 */ daBaseNpc_lookat_c mLookat;
- /* 0x9BC */ csXyz field_0x9bc;
- /* 0x9C2 */ csXyz field_0x9c2;
- /* 0x9C8 */ csXyz field_0x9c8;
- /* 0x9CE */ csXyz field_0x9ce;
- /* 0x9D4 */ cBgS_GndChk field_0x9d4;
- /* 0xA10 */ f32 mGroundY;
-};
-
-STATIC_ASSERT(sizeof(daBaseNpc_c) == 0xA14);
-
-class daBaseNpc_moveBgActor_c : public daBaseNpc_c {
-public:
- /* 8014F4B4 */ daBaseNpc_moveBgActor_c();
- /* 8014F518 */ int MoveBGCreateHeap();
- /* 8014F60C */ int MoveBGCreate(char const*, int, MoveBGActor_SetFunc, u32);
- /* 8014F6FC */ int MoveBGDelete();
- /* 8014F770 */ int MoveBGExecute();
- int MoveBGDraw() {
- int ret = Draw();
- return ret;
- }
-
- /* 80155FB0 */ virtual ~daBaseNpc_moveBgActor_c() {}
- /* 801503BC */ virtual int CreateHeap() { return 1; }
- /* 801503C4 */ virtual int Create() { return 1; }
- /* 801503D4 */ virtual int Execute(Mtx**) { return 1; }
- /* 801503DC */ virtual int Draw() { return 1; }
- /* 801503CC */ virtual int Delete() { return 1; }
- /* 801503E4 */ virtual int IsDelete() { return 1; }
- /* 801503EC */ virtual int ToFore() { return 1; }
- /* 801503F4 */ virtual int ToBack() { return 1; }
-
- static const char* m_name;
- static int m_dzb_id;
- static MoveBGActor_SetFunc m_set_func;
-
-public:
- /* 0xA14 */ dBgW* mpBgw;
- /* 0xA18 */ Mtx mBgMtx;
-};
-
-class daNpcF_ActorMngr_c {
-private:
- /* 0x0 */ fpc_ProcID mActorID;
-
-public:
- daNpcF_ActorMngr_c() { initialize(); }
-
- /* 801506B0 */ void initialize();
- /* 801506D8 */ void entry(unsigned int);
- /* 801506BC */ void entry(fopAc_ac_c*);
- /* 801506E0 */ void remove();
- /* 801506EC */ fopAc_ac_c* getActorP();
-
- fpc_ProcID getPId() { return mActorID; }
-
- /* 80155E40 */ virtual ~daNpcF_ActorMngr_c() {}
-};
-
-class daNpcF_c : public fopAc_ac_c {
-protected:
- /* 0x568 */ mDoExt_McaMorfSO* mAnm_p;
- /* 0x56C */ mDoExt_bckAnm mBckAnm;
- /* 0x588 */ mDoExt_btpAnm mBtpAnm;
- /* 0x5A0 */ mDoExt_btkAnm mBtkAnm;
- /* 0x5B8 */ mDoExt_brkAnm mBrkAnm;
- /* 0x5D0 */ dBgS_ObjAcch mAcch;
- /* 0x7A8 */ dCcD_Stts mCcStts;
- /* 0x7E4 */ dBgS_AcchCir mAcchCir;
- /* 0x824 */ daNpcF_ActorMngr_c field_0x824;
- /* 0x82C */ daNpcF_ActorMngr_c mAttnActor[5];
- /* 0x854 */ cXyz mLookatPos[3];
- /* 0x878 */ cXyz mLookPos;
- /* 0x884 */ cXyz field_0x884;
- /* 0x890 */ cXyz field_0x890;
- /* 0x89C */ cXyz field_0x89c;
- /* 0x8A8 */ cXyz field_0x8a8;
- /* 0x8B4 */ cXyz field_0x8b4;
- /* 0x8C0 */ cXyz field_0x8c0;
- /* 0x8CC */ cXyz field_0x8cc;
- /* 0x8D8 */ cXyz field_0x8d8;
- /* 0x8E4 */ cXyz mHeadPos;
- /* 0x8F0 */ csXyz mCurAngle;
- /* 0x8F6 */ csXyz mOldAngle;
- /* 0x8FC */ csXyz mEyeAngle;
- /* 0x902 */ csXyz mHeadAngle;
- /* 0x908 */ csXyz field_0x908[3];
- /* 0x91A */ csXyz mLookatAngle[3];
- /* 0x92C */ int mStaffID;
- /* 0x930 */ int mCutType;
- /* 0x934 */ int mAttnIdx;
- /* 0x938 */ int mAttnChangeTimer;
- /* 0x93C */ int mAttnActorTimer[5];
- /* 0x950 */ int mMsgTimer;
- /* 0x954 */ int mDamageTimer;
- /* 0x958 */ int mTotalDamageTimer;
- /* 0x95C */ int field_0x95c;
- /* 0x960 */ int mEventTimer;
- /* 0x964 */ int mBtpTimer;
- /* 0x968 */ int mTurnAmount;
- /* 0x96C */ int mTurnMode;
- /* 0x970 */ f32 mTurnStepNum;
- /* 0x974 */ f32 mExpressionMorfOverride;
- /* 0x978 */ f32 mExpressionMorf;
- /* 0x97C */ f32 mMotionMorfOverride;
- /* 0x980 */ f32 mGroundH;
- /* 0x984 */ f32 field_0x984[3];
- /* 0x990 */ s16 field_0x990;
- /* 0x992 */ s16 field_0x992;
- /* 0x994 */ s16 mTurnStartAngle;
- /* 0x996 */ s16 mTurnTargetAngle;
- /* 0x998 */ s16 field_0x998;
- /* 0x99C */ u32 mAnmFlags;
- /* 0x9A0 */ u32 mShadowKey;
- /* 0x9A4 */ u32 field_0x9a4;
- /* 0x9A8 */ u32 mHitodamaParticleKey[2];
- /* 0x9B0 */ u32 mPolySound;
- /* 0x9B4 */ int mFlowNodeNo;
- /* 0x9B8 */ cXyz field_0x9b8;
- /* 0x9C4 */ cXyz field_0x9c4;
- /* 0x9D0 */ s16 field_0x9d0;
- /* 0x9D2 */ s16 field_0x9d2;
- /* 0x9D4 */ s16 mEventIdx;
- /* 0x9D6 */ s16 mExpressionPhase;
- /* 0x9D8 */ s16 mExpressionPrevPhase;
- /* 0x9DA */ s16 mMotionPhase;
- /* 0x9DC */ s16 mMotionPrevPhase;
- /* 0x9DE */ s16 mExpression;
- /* 0x9E0 */ s16 mMotion;
- /* 0x9E2 */ u16 mMotionLoops;
- /* 0x9E4 */ u16 mExpressionLoops;
- /* 0x9E6 */ u16 mOrderEvtNo;
- /* 0x9E8 */ s8 mReverb;
- /* 0x9E9 */ bool mOrderSpeakEvt;
- /* 0x9EA */ bool field_0x9ea;
- /* 0x9EB */ bool field_0x9eb;
- /* 0x9EC */ bool field_0x9ec;
- /* 0x9ED */ bool mOrderNewEvt;
- /* 0x9EE */ bool field_0x9ee;
- /* 0x9EF */ u8 field_0x9ef;
- /* 0x9F0 */ bool mIsDamaged;
- /* 0x9F1 */ u8 field_0x9f1;
- /* 0x9F2 */ bool mHide;
- /* 0x9F3 */ u8 field_0x9f3;
- /* 0x9F4 */ u8 mTwilight;
- /* 0x9F5 */ u8 field_0x9f5;
- /* 0x9F6 */ u8 field_0x9f6;
- /* 0x9F8 */ dMsgFlow_c mFlow;
- /* 0xA44 */ cBgS_GndChk mGndChk;
- /* 0xA80 */ dBgS_GndChk field_0xa80;
- /* 0xAD4 */ dBgS_LinChk field_0xad4;
-
-public:
- struct daNpcF_anmPlayData {
- u16 idx;
- f32 morf;
- int numLoops;
- };
-
- enum AnmFlags {
- ANM_PAUSE_MORF = 0x0001,
- ANM_PAUSE_BTK = 0x0002,
- ANM_PAUSE_BRK = 0x0004,
- ANM_PLAY_MORF = 0x0008,
- ANM_PLAY_BTK = 0x0010,
- ANM_PLAY_BRK = 0x0020,
- ANM_PAUSE_BCK = 0x0040,
- ANM_PAUSE_BTP = 0x0080,
- ANM_PLAY_BCK = 0x0100,
- ANM_PLAY_BTP = 0x0200,
- ANM_FLAG_400 = 0x0400,
- ANM_FLAG_800 = 0x0800,
- ANM_PAUSE_EXPRESSION = 0x1000,
- ANM_PAUSE_BPK = 0x2000,
- ANM_PLAY_BPK = 0x4000,
- ANM_MOTION_FLAGS = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PLAY_MORF |
- ANM_PLAY_BTK | ANM_PLAY_BRK,
- ANM_EXPRESSION_FLAGS = ANM_PAUSE_BCK | ANM_PAUSE_BTP | ANM_PLAY_BCK | ANM_PLAY_BTP |
- ANM_FLAG_400 | ANM_FLAG_800 | ANM_PAUSE_EXPRESSION,
- ANM_PAUSE_ALL = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PAUSE_BCK |
- ANM_PAUSE_BTP | ANM_PAUSE_EXPRESSION,
- };
-
- enum LookMode {
- /* 0 */ LOOK_NONE,
- /* 1 */ LOOK_RESET,
- /* 2 */ LOOK_PLAYER,
- /* 3 */ LOOK_PLAYER_TALK,
- /* 4 */ LOOK_ACTOR,
- /* 5 */ LOOK_ATTN,
- };
-
- daNpcF_c() {
- FORCE_DONT_INLINE;
- initialize();
- }
- /* 80152014 */ BOOL execute();
- /* 801522AC */ int draw(BOOL, BOOL, f32, _GXColorS10*, BOOL);
- /* 80152614 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*,
- dCcD_GObjInf*);
- /* 80152654 */ static void* srchAttnActor1(void*, void*);
- /* 801526E8 */ static void* srchActor(void*, void*);
-
- /* 801528C8 */ void initialize();
- /* 80152B2C */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char*, int);
- /* 80152B68 */ J3DAnmTexPattern* getTexPtrnAnmP(char*, int);
- /* 80152BA4 */ J3DAnmTextureSRTKey* getTexSRTKeyAnmP(char*, int);
- /* 80152BE0 */ J3DAnmTevRegKey* getTevRegKeyAnmP(char*, int);
- /* 80152C1C */ BOOL setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_rate, f32 i_morf, int i_attr,
- int i_start, int i_end);
- /* 80152C80 */ BOOL setBckAnm(J3DAnmTransform* i_bck, f32 i_rate, int i_attr, int i_start,
- int i_end, bool i_modify);
- /* 80152CC4 */ BOOL setBtpAnm(J3DAnmTexPattern* i_btp, J3DModelData* i_modelData, f32 i_rate,
- int i_attr);
- /* 80152D04 */ BOOL setBtkAnm(J3DAnmTextureSRTKey* i_btk, J3DModelData* i_modelData, f32 i_rate,
- int i_attr);
- /* 80152D44 */ BOOL setBrkAnm(J3DAnmTevRegKey* i_brk, J3DModelData* i_modelData, f32 i_rate,
- int i_attr);
- /* 80152D84 */ void setEnvTevColor();
- /* 80152DE0 */ void setRoomNo();
- /* 80152E24 */ BOOL chkEndAnm(f32);
- /* 80152EC4 */ BOOL chkEndAnm(J3DFrameCtrl*, f32);
- /* 80152F40 */ BOOL playAllAnm();
- /* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***);
- /* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***);
- /* 8015337C */ void setLookatMtx(int, int*, f32);
- /* 80153578 */ BOOL hitChk2(dCcD_Cyl*, BOOL, BOOL);
- /* 80153658 */ void setDamage(int, int, int);
- /* 80153718 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*, BOOL);
- /* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16);
- /* 80153954 */ void changeEvent(char*, char*, u16, u16);
- /* 801539F0 */ BOOL chkActorInSight(fopAc_ac_c*, f32);
- /* 80153A78 */ BOOL chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16);
- /* 80153BDC */ BOOL chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int);
- /* 80153D1C */ BOOL initTalk(int, fopAc_ac_c**);
- /* 80153D84 */ BOOL talkProc(int*, BOOL, fopAc_ac_c**);
- /* 80153EF4 */ BOOL turn(s16, f32, int);
- /* 801540A4 */ BOOL step(s16, int, int, int);
- /* 80154250 */ void setAngle(s16);
- /* 80154278 */ u8 getDistTableIdx(int, int);
- /* 801542A0 */ fopAc_ac_c* getEvtAreaTagP(int, int);
- /* 8015436C */ fopAc_ac_c* getAttnActorP(BOOL, fpcLyIt_JudgeFunc, f32, f32, f32, f32, s16,
- int, BOOL);
- /* 80154730 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16);
- /* 80154834 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
- /* 801548F4 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16);
- /* 8015496C */ cXyz getAttentionPos(fopAc_ac_c*);
- /* 801549E0 */ BOOL chkFindPlayer2(BOOL, s16);
- /* 80154BD8 */ void setHitodamaPrtcl();
-
- /* 80155BF4 */ virtual ~daNpcF_c() {}
- /* 80155BC8 */ virtual void setParam() {}
- /* 80155BC0 */ virtual BOOL main() { return TRUE; }
- /* 80155BD8 */ virtual BOOL ctrlBtk() { return FALSE; }
- /* 80155BBC */ virtual void adjustShapeAngle() {}
- /* 8015276C */ virtual void setMtx();
- /* 801527FC */ virtual void setMtx2();
- /* 80155BB8 */ virtual void setAttnPos() {}
- /* 80155BB4 */ virtual void setCollisions() {}
- /* 80155BE0 */ virtual bool setExpressionAnm(int i_idx, bool i_modify) { return true; }
- /* 80155EC8 */ virtual bool setExpressionBtp(int i_idx) { return true; }
- /* 80155BF0 */ virtual void setExpression(int i_expression, f32 i_morf) {}
- /* 80155BE8 */ virtual void setMotionAnm(int i_idx, f32 i_morf) {}
- /* 80155BEC */ virtual void setMotion(int i_motion, f32 i_morf, int i_restart) {}
- /* 80155BD0 */ virtual BOOL drawDbgInfo() { return TRUE; }
- /* 80155BCC */ virtual void drawOtherMdls() {}
-
- BOOL chkActorInSpeakArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
- return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.distances[fopAc_attn_SPEAK_e]);
- }
- BOOL chkPlayerInSpeakArea(fopAc_ac_c* i_actor) {
- return chkActorInSpeakArea(daPy_getPlayerActorClass(), i_actor);
- }
- BOOL chkActorInTalkArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
- return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.distances[fopAc_attn_TALK_e]);
- }
- BOOL chkPlayerInTalkArea(fopAc_ac_c* i_actor) {
- return chkActorInTalkArea(daPy_getPlayerActorClass(), i_actor);
- }
- BOOL checkHide() { return mHide || (mTwilight && !dComIfGs_wolfeye_effect_check()); }
- void setIntDemander(fopAc_ac_c* i_actor) { field_0x824.entry(i_actor); }
- void setIntFlowNodeNo(int i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; }
- void setCutType(int i_cutType) { mCutType = i_cutType; }
- void onInterrupt(u8 param_0) { field_0x9ef = param_0; }
- void onHide() { mHide = true; }
- void offHide() { mHide = false; }
-
- static dCcD_SrcGObjInf const mCcDObjInfo;
- static dCcD_SrcCyl mCcDCyl;
- static dCcD_SrcSph mCcDSph;
- static fopAc_ac_c* mFindActorPList[100];
- static s32 mFindCount;
- static s16 mSrchActorName;
-};
-
-STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48);
-
-BOOL daNpcF_chkEvtBit(u32 i_idx);
-void daNpcF_onEvtBit(u32 i_idx);
-BOOL daNpcF_chkTmpBit(u32 i_idx);
-void daNpcF_onTmpBit(u32 i_idx);
-void daNpcF_offTmpBit(u32 i_idx);
-u8 daNpcF_getDistTableIdx(int param_0, int param_1);
-#if DEBUG
-class daNpcF_HIOParam;
-void daNpcF_commonListenPropertyEvent(char*, int*, daNpcF_HIOParam*);
-void daNpcF_commonGenMessage(JORMContext*, daNpcF_HIOParam*);
-#endif
-void daNpcF_clearMessageTmpBit();
-BOOL daNpcF_chkPointInArea(cXyz, cXyz, cXyz, s16);
-int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3);
-s16 daNpcF_getGroundAngle(cBgS_PolyInfo*, s16);
-BOOL daNpcF_pntVsLineSegmentLengthSquare2D(f32 i_pntX, f32 i_pntZ, f32 i_startX, f32 i_startZ,
- f32 i_endX, f32 i_endZ, f32* o_projX, f32* o_projZ,
- f32* o_dist2);
-BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_isClosed,
- BOOL i_isReversed);
-BOOL daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p);
-
-class daNpcF_MatAnm_c : public J3DMaterialAnm {
-private:
- /* 0x0F4 */ mutable f32 field_0xF4;
- /* 0x0F8 */ mutable f32 field_0xF8;
- /* 0x0FC */ f32 mNowOffsetX;
- /* 0x100 */ f32 mNowOffsetY;
- /* 0x104 */ u8 mEyeMoveFlag;
- /* 0x105 */ u8 mMorfFrm;
-
-public:
- daNpcF_MatAnm_c() { initialize(); }
- /* 80150738 */ void initialize();
- /* 8015075C */ void calc(J3DMaterial*) const;
- /* 80155ED0 */ ~daNpcF_MatAnm_c() {}
- void setNowOffsetX(float i_nowOffsetX) { mNowOffsetX = i_nowOffsetX; }
- void setNowOffsetY(float i_nowOffsetY) { mNowOffsetY = i_nowOffsetY; }
- void onEyeMoveFlag() { mEyeMoveFlag = 1; }
- void offEyeMoveFlag() { mEyeMoveFlag = 0; }
-};
-
-class daNpcF_SPCurve_c {
-private:
- /* 0x00 */ u16 mNurbs;
- /* 0x02 */ u16 field_0x02;
- /* 0x04 */ u8 mIsReversed;
- /* 0x05 */ u8 mIsClosed;
- /* 0x08 */ dPnt mPoints[96];
-
-public:
- /* 80150870 */ void initialize(dPath*, int);
-
- daNpcF_SPCurve_c() {
- initialize(NULL, 0);
- }
-
- virtual ~daNpcF_SPCurve_c() {}
-}; // Size: 0x60C
-
-class daNpcF_Path_c {
-protected:
- /* 0x00 */ u16 mIdx;
- /* 0x02 */ u8 mIsReversed;
- /* 0x03 */ bool mIsClosed;
- /* 0x04 */ dPath* mPathInfo;
- /* 0x08 */ f32 mRange;
- /* 0x0C */ f32 mPosDst;
- /* 0x10 */ f32 field_0x10;
- /* 0x14 */ cXyz mPosition;
- /* 0x20 */ daNpcF_SPCurve_c mSPCurve;
-
-public:
- /* 80150900 */ void initialize();
- /* 8015095C */ int setPathInfo(u8, s8, u8);
- /* 80150A24 */ BOOL chkPassed(cXyz);
- /* 80150A7C */ BOOL chkPassedDst(cXyz);
- /* 80150BBC */ void reverse();
- /* 80150BE0 */ BOOL setNextIdx();
- /* 80150C18 */ int getNextIdx();
- /* 80150C60 */ int getBeforeIdx();
- /* 80150CA8 */ BOOL getBeforePos(cXyz&);
- /* 80150D44 */ BOOL getNextPos(cXyz&);
- /* 80150DE0 */ BOOL getDstPos(cXyz, cXyz&);
- /* 80150EB4 */ void setNextIdxDst(cXyz);
-
- daNpcF_Path_c() {
- initialize();
- }
-
- virtual ~daNpcF_Path_c() {}
-
- int getIdx() { return mIdx; };
- void setIdx(int i_idx) { mIdx = i_idx; }
- int getArg0() { return mPathInfo->m_points[mIdx].mArg0; }
- u8 getArg0(int i_idx) { return mPathInfo->m_points[i_idx].mArg0; }
- Vec getPntPos(int i_idx) { return mPathInfo->m_points[i_idx].m_position; }
- BOOL chkClose() { return dPath_ChkClose(mPathInfo); }
- BOOL chkReverse() { return mIsReversed == true; }
- void onReverse() { mIsReversed = true; }
- void offReverse() { mIsReversed = false; }
- dPath* getPathInfo() { return mPathInfo; }
- void setRange(f32 i_range) { mRange = i_range; }
- u16 getNumPnts() { return mPathInfo->m_num; }
-#if DEBUG
- void drawDbgInfoXyz();
-#endif
-}; // Size: 0x630
-
-class daNpcF_Lookat_c {
-private:
- /* 0x00 */ cXyz mJointPos[4];
- /* 0x30 */ cXyz* mAttnPos_p;
- /* 0x34 */ csXyz mAngularMoveDis[4];
- /* 0x4C */ csXyz mMinAngle[4];
- /* 0x64 */ csXyz mMaxAngle[4];
- /* 0x7C */ csXyz mRotAngle[4];
- /* 0x94 */ bool field_0x94[4];
- /* 0x98 vtable */
-
-public:
- /* 80151038 */ void initialize();
- /* 801510B8 */ void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16,
- cXyz*);
- /* 80151350 */ void calc(fopAc_ac_c*, Mtx, csXyz**, BOOL, int, BOOL);
- /* 801515D4 */ void adjustMoveDisAngle(s16&, s16, s16, s16);
- /* 80151648 */ void initCalc(fopAc_ac_c*, Mtx, cXyz*, csXyz*, f32*, cXyz&, BOOL);
- /* 80151A54 */ void update(cXyz*, csXyz*, f32*);
- /* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, BOOL);
- /* 80151F54 */ void setRotAngle();
- /* 80151FE0 */ void clrRotAngle();
-
- daNpcF_Lookat_c() { initialize(); }
- virtual ~daNpcF_Lookat_c() {}
-
- cXyz* getAttnPos() { return mAttnPos_p; }
- void setAttnPos(cXyz* i_attnPos) { mAttnPos_p = i_attnPos; }
-};
-
-class daNpcF_MoveBgActor_c : public daNpcF_c {
-private:
-public:
- /* 80155B54 */ ~daNpcF_MoveBgActor_c() {}
- /* 80155E88 */ virtual bool CreateHeap() { return true; }
- /* 80155E90 */ virtual bool Create() { return true; }
- /* 80155EA0 */ virtual bool Execute(Mtx**) { return true; }
- /* 80155EA8 */ virtual bool Draw() { return true; }
- /* 80155E98 */ virtual bool Delete() { return true; }
- /* 80155EB0 */ virtual bool IsDelete() { return true; }
- /* 80155EB8 */ virtual bool ToFore() { return true; }
- /* 80155EC0 */ virtual bool ToBack() { return true; }
-};
+f32 param_4, f32 param_5, f32 param_6, f32 param_7, int param_8);
struct daNpcT_HIOParam {
/* 0x00 */ f32 attention_offset;
@@ -1451,40 +882,4 @@ void daNpcT_cmnGenMessage(JORMContext*, daNpcT_HIOParam* param_1);
void daNpcT_cmnListenPropertyEvent(char*, int*, daNpcT_HIOParam*);
-struct daNpcF_HIOParam {
- /* 0x00 */ f32 attention_offset;
- /* 0x04 */ f32 gravity;
- /* 0x08 */ f32 scale;
- /* 0x0C */ f32 real_shadow_size;
- /* 0x10 */ f32 weight;
- /* 0x14 */ f32 height;
- /* 0x18 */ f32 knee_length;
- /* 0x1C */ f32 width;
- /* 0x20 */ f32 body_angleX_max;
- /* 0x24 */ f32 body_angleX_min;
- /* 0x28 */ f32 body_angleY_max;
- /* 0x2C */ f32 body_angleY_min;
- /* 0x30 */ f32 head_angleX_max;
- /* 0x34 */ f32 head_angleX_min;
- /* 0x38 */ f32 head_angleY_max;
- /* 0x3C */ f32 head_angleY_min;
- /* 0x40 */ f32 neck_rotation_ratio;
- /* 0x44 */ f32 morf_frame;
- /* 0x48 */ s16 talk_distance;
- /* 0x4A */ s16 talk_angle;
- /* 0x4C */ s16 attention_distance;
- /* 0x4E */ s16 attention_angle;
- /* 0x50 */ f32 fov;
- /* 0x54 */ f32 search_distance;
- /* 0x58 */ f32 search_height;
- /* 0x5C */ f32 search_depth;
- /* 0x60 */ s16 attention_time;
- /* 0x62 */ s16 damage_time;
- /* 0x64 */ s16 face_expression;
- /* 0x66 */ s16 motion;
- /* 0x68 */ s16 look_mode;
- /* 0x6A */ u8 debug_mode_ON;
- /* 0x6B */ u8 debug_info_ON;
-};
-
#endif /* D_A_D_A_NPC_H */
diff --git a/include/d/actor/d_a_npc2.h b/include/d/actor/d_a_npc2.h
new file mode 100644
index 0000000000..e58a8c1b7b
--- /dev/null
+++ b/include/d/actor/d_a_npc2.h
@@ -0,0 +1,184 @@
+#ifndef D_A_NPC2
+#define D_A_NPC2
+
+#include "d/d_bg_s_movebg_actor.h"
+#include "d/d_msg_flow.h"
+#include "d/d_path.h"
+
+class daBaseNpc_acMngr_c {
+public:
+ /* 8014D804 */ daBaseNpc_acMngr_c();
+ /* 8014D81C */ void entry(fopAc_ac_c*);
+ /* 8014D838 */ fopAc_ac_c* getActor();
+ /* 80150524 */ virtual ~daBaseNpc_acMngr_c() {}
+
+private:
+ /* 0x04 */ fpc_ProcID mActorId;
+};
+
+class daBaseNpc_matAnm_c : public J3DMaterialAnm {
+public:
+ /* 80150444 */ virtual ~daBaseNpc_matAnm_c() {}
+ /* 8014D884 */ virtual void calc(J3DMaterial*) const;
+
+ /* 0x0F4 */ mutable f32 field_0xF4;
+ /* 0x0F8 */ mutable f32 field_0xF8;
+ /* 0x0FC */ f32 mNowOffsetX;
+ /* 0x100 */ f32 mNowOffsetY;
+ /* 0x104 */ u8 mEyeMoveFlg;
+ /* 0x105 */ u8 mMorfFrm;
+};
+
+class daBaseNpc_path_c {
+public:
+ /* 8014D998 */ daBaseNpc_path_c();
+ /* 8014D9A8 */ BOOL isPath();
+ /* 8014D9BC */ int setPathInfo(u8, s8, s8);
+ /* 8014DA48 */ void reverseDir();
+ /* 8014DA64 */ s32 chkPnt(cXyz);
+ /* 8014DAC4 */ BOOL setNextPnt();
+ /* 8014DB04 */ u16 getIdx();
+ /* 8014DB0C */ void setIdx(u16);
+ /* 8014DB14 */ Vec getPntPos(u16);
+ void dbgDraw(f32);
+ /* 801503FC */ virtual ~daBaseNpc_path_c() {}
+
+ static const int MAXNUMCONTROLPNT_e = 64;
+
+public:
+ /* 0x004 */ dPath* mPathInfo;
+ /* 0x008 */ f32 field_0x8;
+ /* 0x00C */ dPnt mCurvePnts[160];
+ /* 0xA0C */ u8 field_0xa0c[0xA0E - 0xA0C];
+ /* 0xA0E */ u16 mCurvePntNum;
+ /* 0xA10 */ u16 mIdx;
+ /* 0xA12 */ s8 mDirection;
+ /* 0xA13 */ u8 field_0xa13;
+ /* 0xA14 */ s16 field_0xa14;
+ /* 0xA16 */ u8 field_0xa16[2];
+ /* 0xA18 */ int field_0xa18;
+ /* 0xA1C */ u8 field_0xa1c[8];
+};
+
+class daBaseNpc_lookat_c {
+public:
+ /* 8014DB40 */ void limitter(s16, s16*, s16, s16);
+ /* 8014DBB4 */ void calc(fopAc_ac_c*, f32 (*)[4], s16);
+ /* 8014E634 */ void setMaxJntLmt(csXyz, int);
+ /* 8014E658 */ void setMinJntLmt(csXyz, int);
+ /* 8014E67C */ void setJntPos(cXyz, int);
+ /* 8014E6A0 */ int setAttnPos(cXyz*);
+ /* 8014E6AC */ csXyz getRot(int);
+ /* 801502EC */ virtual ~daBaseNpc_lookat_c() {}
+
+ /* 0x04 */ csXyz mMaxJntLmt[4];
+ /* 0x1C */ csXyz mMinJntLmt[4];
+ /* 0x34 */ cXyz mJntPos[4];
+ /* 0x64 */ csXyz field_0x64[4];
+ /* 0x7C */ csXyz mRot[4];
+ /* 0x94 */ u8 field_0x94[4];
+ /* 0x98 */ cXyz* mpAttnPos;
+};
+
+class daBaseNpc_c : public fopAc_ac_c {
+public:
+ /* 8014E6C8 */ daBaseNpc_c();
+ /* 8014EE44 */ J3DAnmTransform* getTrnsfrmKeyAnmP(char*, int);
+ /* 8014EE80 */ int setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
+ /* 8014EEE4 */ int setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
+ /* 8014EF28 */ J3DAnmTransform* getTexPtrnAnmP(char*, int);
+ /* 8014EF64 */ int setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
+ /* 8014EFF4 */ void orderEvent(int, char*);
+ /* 8014F0A0 */ void setEnvTevColor();
+ /* 8014F0FC */ void setRoomNo();
+ /* 8014F148 */ int checkEndAnm(f32);
+ /* 8014F1C8 */ int checkEndAnm(J3DFrameCtrl*);
+
+ /* 8014E89C */ virtual ~daBaseNpc_c();
+ /* 8014EAD0 */ virtual int execute();
+ /* 8014EC50 */ virtual int draw(f32);
+ /* 8014EE3C */ virtual const char* getResName();
+ /* 8014EFA4 */ virtual void attnSttsOn(int, int);
+ /* 8014EFF0 */ virtual void setParam();
+ /* 8014F09C */ virtual void mainProc();
+ /* 8014F140 */ virtual BOOL btkCtrl();
+ /* 8014F228 */ virtual void allAnmPlay();
+ /* 8014F38C */ virtual void adjustShapeAngle();
+ /* 8014F390 */ virtual void setMtx(int);
+ /* 8014F4A0 */ virtual void setCollisions();
+ /* 8014F4A4 */ virtual void setAttnPos();
+ /* 8014F4A8 */ virtual void drawOtherMdls();
+ /* 8014F4AC */ virtual bool dbgDraw();
+
+ static dCcD_SrcGObjInf const mCcDObj;
+ static dCcD_SrcCyl mCcDCyl;
+ static dCcD_SrcSph mCcDSph;
+
+public:
+ /* 0x56C */ dBgS_ObjAcch mAcch;
+ /* 0x744 */ char field_0x744;
+ /* 0x745 */ u8 field_0x745[0x74c - 0x745];
+ /* 0x74C */ request_of_phase_process_class mPhase;
+ /* 0x754 */ mDoExt_McaMorfSO* mpModelMorf;
+ /* 0x758 */ Z2Creature mSound;
+ /* 0x7E8 */ u32 mShadowId;
+ /* 0x7EC */ mDoExt_bckAnm mBck;
+ /* 0x808 */ mDoExt_btpAnm mBtp;
+ /* 0x820 */ mDoExt_btkAnm mBtk;
+ /* 0x838 */ s16 field_0x838;
+ /* 0x83C */ u16* field_0x83c;
+ /* 0x840 */ u16 field_0x840;
+ /* 0x842 */ u16 field_0x842;
+ /* 0x844 */ u8 field_0x844;
+ /* 0x845 */ u8 field_0x845[0x848 - 0x845];
+ /* 0x848 */ s32 field_0x848;
+ /* 0x84C */ dMsgFlow_c mMsgFlow;
+ /* 0x898 */ u8 field_0x898[0x89A - 0x898];
+ /* 0x89A */ s16 mEvtIdx;
+ /* 0x89C */ dCcD_Stts mCcStts;
+ /* 0x8D8 */ dBgS_AcchCir mAcchCir;
+ /* 0x918 */ s16 field_0x918;
+ /* 0x91A */ csXyz field_0x91a;
+ /* 0x920 */ daBaseNpc_lookat_c mLookat;
+ /* 0x9BC */ csXyz field_0x9bc;
+ /* 0x9C2 */ csXyz field_0x9c2;
+ /* 0x9C8 */ csXyz field_0x9c8;
+ /* 0x9CE */ csXyz field_0x9ce;
+ /* 0x9D4 */ cBgS_GndChk field_0x9d4;
+ /* 0xA10 */ f32 mGroundY;
+};
+
+STATIC_ASSERT(sizeof(daBaseNpc_c) == 0xA14);
+
+class daBaseNpc_moveBgActor_c : public daBaseNpc_c {
+public:
+ /* 8014F4B4 */ daBaseNpc_moveBgActor_c();
+ /* 8014F518 */ int MoveBGCreateHeap();
+ /* 8014F60C */ int MoveBGCreate(char const*, int, MoveBGActor_SetFunc, u32);
+ /* 8014F6FC */ int MoveBGDelete();
+ /* 8014F770 */ int MoveBGExecute();
+ int MoveBGDraw() {
+ int ret = Draw();
+ return ret;
+ }
+
+ /* 80155FB0 */ virtual ~daBaseNpc_moveBgActor_c() {}
+ /* 801503BC */ virtual int CreateHeap() { return 1; }
+ /* 801503C4 */ virtual int Create() { return 1; }
+ /* 801503D4 */ virtual int Execute(Mtx**) { return 1; }
+ /* 801503DC */ virtual int Draw() { return 1; }
+ /* 801503CC */ virtual int Delete() { return 1; }
+ /* 801503E4 */ virtual int IsDelete() { return 1; }
+ /* 801503EC */ virtual int ToFore() { return 1; }
+ /* 801503F4 */ virtual int ToBack() { return 1; }
+
+ static const char* m_name;
+ static int m_dzb_id;
+ static MoveBGActor_SetFunc m_set_func;
+
+public:
+ /* 0xA14 */ dBgW* mpBgw;
+ /* 0xA18 */ Mtx mBgMtx;
+};
+
+#endif /* D_A_NPC2 */
diff --git a/include/d/actor/d_a_npc4.h b/include/d/actor/d_a_npc4.h
new file mode 100644
index 0000000000..69f38f4a7c
--- /dev/null
+++ b/include/d/actor/d_a_npc4.h
@@ -0,0 +1,459 @@
+#ifndef D_A_NPC4
+#define D_A_NPC4
+
+#include "d/actor/d_a_player.h"
+#include "d/d_msg_flow.h"
+#include "d/d_bg_s_gnd_chk.h"
+#include "d/d_bg_s_lin_chk.h"
+#include "d/d_path.h"
+#include "f_op/f_op_actor.h"
+#include "f_pc/f_pc_base.h"
+#include "m_Do/m_Do_ext.h"
+
+class daNpcF_ActorMngr_c {
+private:
+ /* 0x0 */ fpc_ProcID mActorID;
+
+public:
+ daNpcF_ActorMngr_c() { initialize(); }
+
+ /* 801506B0 */ void initialize();
+ /* 801506D8 */ void entry(unsigned int);
+ /* 801506BC */ void entry(fopAc_ac_c*);
+ /* 801506E0 */ void remove();
+ /* 801506EC */ fopAc_ac_c* getActorP();
+
+ fpc_ProcID getPId() { return mActorID; }
+
+ /* 80155E40 */ virtual ~daNpcF_ActorMngr_c() {}
+};
+
+BOOL daNpcF_chkEvtBit(u32 i_idx);
+void daNpcF_onEvtBit(u32 i_idx);
+BOOL daNpcF_chkTmpBit(u32 i_idx);
+void daNpcF_onTmpBit(u32 i_idx);
+void daNpcF_offTmpBit(u32 i_idx);
+u8 daNpcF_getDistTableIdx(int param_0, int param_1);
+#if DEBUG
+class daNpcF_HIOParam;
+void daNpcF_commonListenPropertyEvent(char*, int*, daNpcF_HIOParam*);
+void daNpcF_commonGenMessage(JORMContext*, daNpcF_HIOParam*);
+#endif
+void daNpcF_clearMessageTmpBit();
+BOOL daNpcF_chkPointInArea(cXyz, cXyz, cXyz, s16);
+int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3);
+s16 daNpcF_getGroundAngle(cBgS_PolyInfo*, s16);
+BOOL daNpcF_pntVsLineSegmentLengthSquare2D(f32 i_pntX, f32 i_pntZ, f32 i_startX, f32 i_startZ,
+ f32 i_endX, f32 i_endZ, f32* o_projX, f32* o_projZ,
+ f32* o_dist2);
+BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_isClosed,
+ BOOL i_isReversed);
+BOOL daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_actor_p);
+
+class daNpcF_c : public fopAc_ac_c {
+protected:
+ /* 0x568 */ mDoExt_McaMorfSO* mAnm_p;
+ /* 0x56C */ mDoExt_bckAnm mBckAnm;
+ /* 0x588 */ mDoExt_btpAnm mBtpAnm;
+ /* 0x5A0 */ mDoExt_btkAnm mBtkAnm;
+ /* 0x5B8 */ mDoExt_brkAnm mBrkAnm;
+ /* 0x5D0 */ dBgS_ObjAcch mAcch;
+ /* 0x7A8 */ dCcD_Stts mCcStts;
+ /* 0x7E4 */ dBgS_AcchCir mAcchCir;
+ /* 0x824 */ daNpcF_ActorMngr_c field_0x824;
+ /* 0x82C */ daNpcF_ActorMngr_c mAttnActor[5];
+ /* 0x854 */ cXyz mLookatPos[3];
+ /* 0x878 */ cXyz mLookPos;
+ /* 0x884 */ cXyz field_0x884;
+ /* 0x890 */ cXyz field_0x890;
+ /* 0x89C */ cXyz field_0x89c;
+ /* 0x8A8 */ cXyz field_0x8a8;
+ /* 0x8B4 */ cXyz field_0x8b4;
+ /* 0x8C0 */ cXyz field_0x8c0;
+ /* 0x8CC */ cXyz field_0x8cc;
+ /* 0x8D8 */ cXyz field_0x8d8;
+ /* 0x8E4 */ cXyz mHeadPos;
+ /* 0x8F0 */ csXyz mCurAngle;
+ /* 0x8F6 */ csXyz mOldAngle;
+ /* 0x8FC */ csXyz mEyeAngle;
+ /* 0x902 */ csXyz mHeadAngle;
+ /* 0x908 */ csXyz field_0x908[3];
+ /* 0x91A */ csXyz mLookatAngle[3];
+ /* 0x92C */ int mStaffID;
+ /* 0x930 */ int mCutType;
+ /* 0x934 */ int mAttnIdx;
+ /* 0x938 */ int mAttnChangeTimer;
+ /* 0x93C */ int mAttnActorTimer[5];
+ /* 0x950 */ int mMsgTimer;
+ /* 0x954 */ int mDamageTimer;
+ /* 0x958 */ int mTotalDamageTimer;
+ /* 0x95C */ int field_0x95c;
+ /* 0x960 */ int mEventTimer;
+ /* 0x964 */ int mBtpTimer;
+ /* 0x968 */ int mTurnAmount;
+ /* 0x96C */ int mTurnMode;
+ /* 0x970 */ f32 mTurnStepNum;
+ /* 0x974 */ f32 mExpressionMorfOverride;
+ /* 0x978 */ f32 mExpressionMorf;
+ /* 0x97C */ f32 mMotionMorfOverride;
+ /* 0x980 */ f32 mGroundH;
+ /* 0x984 */ f32 field_0x984[3];
+ /* 0x990 */ s16 field_0x990;
+ /* 0x992 */ s16 field_0x992;
+ /* 0x994 */ s16 mTurnStartAngle;
+ /* 0x996 */ s16 mTurnTargetAngle;
+ /* 0x998 */ s16 field_0x998;
+ /* 0x99C */ u32 mAnmFlags;
+ /* 0x9A0 */ u32 mShadowKey;
+ /* 0x9A4 */ u32 field_0x9a4;
+ /* 0x9A8 */ u32 mHitodamaParticleKey[2];
+ /* 0x9B0 */ u32 mPolySound;
+ /* 0x9B4 */ int mFlowNodeNo;
+ /* 0x9B8 */ cXyz field_0x9b8;
+ /* 0x9C4 */ cXyz field_0x9c4;
+ /* 0x9D0 */ s16 field_0x9d0;
+ /* 0x9D2 */ s16 field_0x9d2;
+ /* 0x9D4 */ s16 mEventIdx;
+ /* 0x9D6 */ s16 mExpressionPhase;
+ /* 0x9D8 */ s16 mExpressionPrevPhase;
+ /* 0x9DA */ s16 mMotionPhase;
+ /* 0x9DC */ s16 mMotionPrevPhase;
+ /* 0x9DE */ s16 mExpression;
+ /* 0x9E0 */ s16 mMotion;
+ /* 0x9E2 */ u16 mMotionLoops;
+ /* 0x9E4 */ u16 mExpressionLoops;
+ /* 0x9E6 */ u16 mOrderEvtNo;
+ /* 0x9E8 */ s8 mReverb;
+ /* 0x9E9 */ bool mOrderSpeakEvt;
+ /* 0x9EA */ bool field_0x9ea;
+ /* 0x9EB */ bool field_0x9eb;
+ /* 0x9EC */ bool field_0x9ec;
+ /* 0x9ED */ bool mOrderNewEvt;
+ /* 0x9EE */ bool field_0x9ee;
+ /* 0x9EF */ u8 field_0x9ef;
+ /* 0x9F0 */ bool mIsDamaged;
+ /* 0x9F1 */ u8 field_0x9f1;
+ /* 0x9F2 */ bool mHide;
+ /* 0x9F3 */ u8 field_0x9f3;
+ /* 0x9F4 */ u8 mTwilight;
+ /* 0x9F5 */ u8 field_0x9f5;
+ /* 0x9F6 */ u8 field_0x9f6;
+ /* 0x9F8 */ dMsgFlow_c mFlow;
+ /* 0xA44 */ cBgS_GndChk mGndChk;
+ /* 0xA80 */ dBgS_GndChk field_0xa80;
+ /* 0xAD4 */ dBgS_LinChk field_0xad4;
+
+public:
+ struct daNpcF_anmPlayData {
+ u16 idx;
+ f32 morf;
+ int numLoops;
+ };
+
+ enum AnmFlags {
+ ANM_PAUSE_MORF = 0x0001,
+ ANM_PAUSE_BTK = 0x0002,
+ ANM_PAUSE_BRK = 0x0004,
+ ANM_PLAY_MORF = 0x0008,
+ ANM_PLAY_BTK = 0x0010,
+ ANM_PLAY_BRK = 0x0020,
+ ANM_PAUSE_BCK = 0x0040,
+ ANM_PAUSE_BTP = 0x0080,
+ ANM_PLAY_BCK = 0x0100,
+ ANM_PLAY_BTP = 0x0200,
+ ANM_FLAG_400 = 0x0400,
+ ANM_FLAG_800 = 0x0800,
+ ANM_PAUSE_EXPRESSION = 0x1000,
+ ANM_PAUSE_BPK = 0x2000,
+ ANM_PLAY_BPK = 0x4000,
+ ANM_MOTION_FLAGS = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PLAY_MORF |
+ ANM_PLAY_BTK | ANM_PLAY_BRK,
+ ANM_EXPRESSION_FLAGS = ANM_PAUSE_BCK | ANM_PAUSE_BTP | ANM_PLAY_BCK | ANM_PLAY_BTP |
+ ANM_FLAG_400 | ANM_FLAG_800 | ANM_PAUSE_EXPRESSION,
+ ANM_PAUSE_ALL = ANM_PAUSE_MORF | ANM_PAUSE_BTK | ANM_PAUSE_BRK | ANM_PAUSE_BCK |
+ ANM_PAUSE_BTP | ANM_PAUSE_EXPRESSION,
+ };
+
+ enum LookMode {
+ /* 0 */ LOOK_NONE,
+ /* 1 */ LOOK_RESET,
+ /* 2 */ LOOK_PLAYER,
+ /* 3 */ LOOK_PLAYER_TALK,
+ /* 4 */ LOOK_ACTOR,
+ /* 5 */ LOOK_ATTN,
+ };
+
+ daNpcF_c() {
+ FORCE_DONT_INLINE;
+ initialize();
+ }
+ /* 80152014 */ BOOL execute();
+ /* 801522AC */ int draw(BOOL, BOOL, f32, _GXColorS10*, BOOL);
+ /* 80152614 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*,
+ dCcD_GObjInf*);
+ /* 80152654 */ static void* srchAttnActor1(void*, void*);
+ /* 801526E8 */ static void* srchActor(void*, void*);
+
+ /* 801528C8 */ void initialize();
+ /* 80152B2C */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char*, int);
+ /* 80152B68 */ J3DAnmTexPattern* getTexPtrnAnmP(char*, int);
+ /* 80152BA4 */ J3DAnmTextureSRTKey* getTexSRTKeyAnmP(char*, int);
+ /* 80152BE0 */ J3DAnmTevRegKey* getTevRegKeyAnmP(char*, int);
+ /* 80152C1C */ BOOL setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_rate, f32 i_morf, int i_attr,
+ int i_start, int i_end);
+ /* 80152C80 */ BOOL setBckAnm(J3DAnmTransform* i_bck, f32 i_rate, int i_attr, int i_start,
+ int i_end, bool i_modify);
+ /* 80152CC4 */ BOOL setBtpAnm(J3DAnmTexPattern* i_btp, J3DModelData* i_modelData, f32 i_rate,
+ int i_attr);
+ /* 80152D04 */ BOOL setBtkAnm(J3DAnmTextureSRTKey* i_btk, J3DModelData* i_modelData, f32 i_rate,
+ int i_attr);
+ /* 80152D44 */ BOOL setBrkAnm(J3DAnmTevRegKey* i_brk, J3DModelData* i_modelData, f32 i_rate,
+ int i_attr);
+ /* 80152D84 */ void setEnvTevColor();
+ /* 80152DE0 */ void setRoomNo();
+ /* 80152E24 */ BOOL chkEndAnm(f32);
+ /* 80152EC4 */ BOOL chkEndAnm(J3DFrameCtrl*, f32);
+ /* 80152F40 */ BOOL playAllAnm();
+ /* 80153150 */ void playExpressionAnm(daNpcF_c::daNpcF_anmPlayData***);
+ /* 80153264 */ void playMotionAnm(daNpcF_c::daNpcF_anmPlayData***);
+ /* 8015337C */ void setLookatMtx(int, int*, f32);
+ /* 80153578 */ BOOL hitChk2(dCcD_Cyl*, BOOL, BOOL);
+ /* 80153658 */ void setDamage(int, int, int);
+ /* 80153718 */ int ctrlMsgAnm(int&, int&, fopAc_ac_c*, BOOL);
+ /* 8015387C */ void orderEvent(int, char*, u16, u16, u8, u16);
+ /* 80153954 */ void changeEvent(char*, char*, u16, u16);
+ /* 801539F0 */ BOOL chkActorInSight(fopAc_ac_c*, f32);
+ /* 80153A78 */ BOOL chkActorInArea(fopAc_ac_c*, cXyz, cXyz, s16);
+ /* 80153BDC */ BOOL chkActorInAttnArea(fopAc_ac_c*, fopAc_ac_c*, int);
+ /* 80153D1C */ BOOL initTalk(int, fopAc_ac_c**);
+ /* 80153D84 */ BOOL talkProc(int*, BOOL, fopAc_ac_c**);
+ /* 80153EF4 */ BOOL turn(s16, f32, int);
+ /* 801540A4 */ BOOL step(s16, int, int, int);
+ /* 80154250 */ void setAngle(s16);
+ /* 80154278 */ u8 getDistTableIdx(int, int);
+ /* 801542A0 */ fopAc_ac_c* getEvtAreaTagP(int, int);
+ /* 8015436C */ fopAc_ac_c* getAttnActorP(BOOL, fpcLyIt_JudgeFunc, f32, f32, f32, f32, s16,
+ int, BOOL);
+ /* 80154730 */ BOOL chkActorInSight2(fopAc_ac_c*, f32, s16);
+ /* 80154834 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
+ /* 801548F4 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16);
+ /* 8015496C */ cXyz getAttentionPos(fopAc_ac_c*);
+ /* 801549E0 */ BOOL chkFindPlayer2(BOOL, s16);
+ /* 80154BD8 */ void setHitodamaPrtcl();
+
+ /* 80155BF4 */ virtual ~daNpcF_c() {}
+ /* 80155BC8 */ virtual void setParam() {}
+ /* 80155BC0 */ virtual BOOL main() { return TRUE; }
+ /* 80155BD8 */ virtual BOOL ctrlBtk() { return FALSE; }
+ /* 80155BBC */ virtual void adjustShapeAngle() {}
+ /* 8015276C */ virtual void setMtx();
+ /* 801527FC */ virtual void setMtx2();
+ /* 80155BB8 */ virtual void setAttnPos() {}
+ /* 80155BB4 */ virtual void setCollisions() {}
+ /* 80155BE0 */ virtual bool setExpressionAnm(int i_idx, bool i_modify) { return true; }
+ /* 80155EC8 */ virtual bool setExpressionBtp(int i_idx) { return true; }
+ /* 80155BF0 */ virtual void setExpression(int i_expression, f32 i_morf) {}
+ /* 80155BE8 */ virtual void setMotionAnm(int i_idx, f32 i_morf) {}
+ /* 80155BEC */ virtual void setMotion(int i_motion, f32 i_morf, int i_restart) {}
+ /* 80155BD0 */ virtual BOOL drawDbgInfo() { return TRUE; }
+ /* 80155BCC */ virtual void drawOtherMdls() {}
+
+ BOOL chkActorInSpeakArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
+ return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.distances[fopAc_attn_SPEAK_e]);
+ }
+ BOOL chkPlayerInSpeakArea(fopAc_ac_c* i_actor) {
+ return chkActorInSpeakArea(daPy_getPlayerActorClass(), i_actor);
+ }
+ BOOL chkActorInTalkArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorArea) {
+ return chkActorInAttnArea(i_actorCheck, i_actorArea, attention_info.distances[fopAc_attn_TALK_e]);
+ }
+ BOOL chkPlayerInTalkArea(fopAc_ac_c* i_actor) {
+ return chkActorInTalkArea(daPy_getPlayerActorClass(), i_actor);
+ }
+ BOOL checkHide() { return mHide || (mTwilight && !dComIfGs_wolfeye_effect_check()); }
+ void setIntDemander(fopAc_ac_c* i_actor) { field_0x824.entry(i_actor); }
+ void setIntFlowNodeNo(int i_flowNodeNo) { mFlowNodeNo = i_flowNodeNo; }
+ void setCutType(int i_cutType) { mCutType = i_cutType; }
+ void onInterrupt(u8 param_0) { field_0x9ef = param_0; }
+ void onHide() { mHide = true; }
+ void offHide() { mHide = false; }
+
+ static dCcD_SrcGObjInf const mCcDObjInfo;
+ static dCcD_SrcCyl mCcDCyl;
+ static dCcD_SrcSph mCcDSph;
+ static fopAc_ac_c* mFindActorPList[100];
+ static s32 mFindCount;
+ static s16 mSrchActorName;
+ static char mFileNameBuf[0x15];
+};
+
+STATIC_ASSERT(sizeof(daNpcF_c) == 0xB48);
+
+class daNpcF_MatAnm_c : public J3DMaterialAnm {
+private:
+ /* 0x0F4 */ mutable f32 field_0xF4;
+ /* 0x0F8 */ mutable f32 field_0xF8;
+ /* 0x0FC */ f32 mNowOffsetX;
+ /* 0x100 */ f32 mNowOffsetY;
+ /* 0x104 */ u8 mEyeMoveFlag;
+ /* 0x105 */ u8 mMorfFrm;
+
+public:
+ daNpcF_MatAnm_c() { initialize(); }
+ /* 80150738 */ void initialize();
+ /* 8015075C */ void calc(J3DMaterial*) const;
+ /* 80155ED0 */ ~daNpcF_MatAnm_c() {}
+ void setNowOffsetX(float i_nowOffsetX) { mNowOffsetX = i_nowOffsetX; }
+ void setNowOffsetY(float i_nowOffsetY) { mNowOffsetY = i_nowOffsetY; }
+ void onEyeMoveFlag() { mEyeMoveFlag = 1; }
+ void offEyeMoveFlag() { mEyeMoveFlag = 0; }
+};
+
+class daNpcF_SPCurve_c {
+private:
+ /* 0x00 */ u16 mNurbs;
+ /* 0x02 */ u16 field_0x02;
+ /* 0x04 */ u8 mIsReversed;
+ /* 0x05 */ u8 mIsClosed;
+ /* 0x08 */ dPnt mPoints[96];
+
+public:
+ /* 80150870 */ void initialize(dPath*, int);
+
+ daNpcF_SPCurve_c() {
+ initialize(NULL, 0);
+ }
+
+ virtual ~daNpcF_SPCurve_c() {}
+}; // Size: 0x60C
+
+class daNpcF_Path_c {
+protected:
+ /* 0x00 */ u16 mIdx;
+ /* 0x02 */ u8 mIsReversed;
+ /* 0x03 */ u8 mIsClosed;
+ /* 0x04 */ dPath* mPathInfo;
+ /* 0x08 */ f32 mRange;
+ /* 0x0C */ f32 mPosDst;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ cXyz mPosition;
+ /* 0x20 */ daNpcF_SPCurve_c mSPCurve;
+
+public:
+ /* 80150900 */ void initialize();
+ /* 8015095C */ int setPathInfo(u8, s8, u8);
+ /* 80150A24 */ BOOL chkPassed(cXyz);
+ /* 80150A7C */ BOOL chkPassedDst(cXyz);
+ /* 80150BBC */ void reverse();
+ /* 80150BE0 */ BOOL setNextIdx();
+ /* 80150C18 */ int getNextIdx();
+ /* 80150C60 */ int getBeforeIdx();
+ /* 80150CA8 */ BOOL getBeforePos(cXyz&);
+ /* 80150D44 */ BOOL getNextPos(cXyz&);
+ /* 80150DE0 */ BOOL getDstPos(cXyz, cXyz&);
+ /* 80150EB4 */ void setNextIdxDst(cXyz);
+
+ daNpcF_Path_c() {
+ initialize();
+ }
+
+ virtual ~daNpcF_Path_c() {}
+
+ int getIdx() { return mIdx; };
+ void setIdx(int i_idx) { mIdx = i_idx; }
+ int getArg0() { return mPathInfo->m_points[mIdx].mArg0; }
+ u8 getArg0(int i_idx) { return mPathInfo->m_points[i_idx].mArg0; }
+ Vec getPntPos(int i_idx) { return mPathInfo->m_points[i_idx].m_position; }
+ BOOL chkClose() { return dPath_ChkClose(mPathInfo); }
+ BOOL chkReverse() { return mIsReversed == true; }
+ void onReverse() { mIsReversed = true; }
+ void offReverse() { mIsReversed = false; }
+ dPath* getPathInfo() { return mPathInfo; }
+ void setRange(f32 i_range) { mRange = i_range; }
+ int getNumPnts() { return mPathInfo->m_num; }
+#if DEBUG
+ void drawDbgInfoXyz();
+#endif
+}; // Size: 0x630
+
+class daNpcF_Lookat_c {
+private:
+ /* 0x00 */ cXyz mJointPos[4];
+ /* 0x30 */ cXyz* mAttnPos_p;
+ /* 0x34 */ csXyz mAngularMoveDis[4];
+ /* 0x4C */ csXyz mMinAngle[4];
+ /* 0x64 */ csXyz mMaxAngle[4];
+ /* 0x7C */ csXyz mRotAngle[4];
+ /* 0x94 */ bool field_0x94[4];
+ /* 0x98 vtable */
+
+public:
+ /* 80151038 */ void initialize();
+ /* 801510B8 */ void setParam(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s16,
+ cXyz*);
+ /* 80151350 */ void calc(fopAc_ac_c*, Mtx, csXyz**, BOOL, int, BOOL);
+ /* 801515D4 */ void adjustMoveDisAngle(s16&, s16, s16, s16);
+ /* 80151648 */ void initCalc(fopAc_ac_c*, Mtx, cXyz*, csXyz*, f32*, cXyz&, BOOL);
+ /* 80151A54 */ void update(cXyz*, csXyz*, f32*);
+ /* 80151B68 */ void calcMoveDisAngle(int, cXyz*, csXyz*, cXyz, int, BOOL);
+ /* 80151F54 */ void setRotAngle();
+ /* 80151FE0 */ void clrRotAngle();
+
+ daNpcF_Lookat_c() { initialize(); }
+ virtual ~daNpcF_Lookat_c() {}
+
+ cXyz* getAttnPos() { return mAttnPos_p; }
+ void setAttnPos(cXyz* i_attnPos) { mAttnPos_p = i_attnPos; }
+};
+
+class daNpcF_MoveBgActor_c : public daNpcF_c {
+private:
+public:
+ /* 80155B54 */ ~daNpcF_MoveBgActor_c() {}
+ /* 80155E88 */ virtual bool CreateHeap() { return true; }
+ /* 80155E90 */ virtual bool Create() { return true; }
+ /* 80155EA0 */ virtual bool Execute(Mtx**) { return true; }
+ /* 80155EA8 */ virtual bool Draw() { return true; }
+ /* 80155E98 */ virtual bool Delete() { return true; }
+ /* 80155EB0 */ virtual bool IsDelete() { return true; }
+ /* 80155EB8 */ virtual bool ToFore() { return true; }
+ /* 80155EC0 */ virtual bool ToBack() { return true; }
+};
+
+struct daNpcF_HIOParam {
+ /* 0x00 */ f32 attention_offset;
+ /* 0x04 */ f32 gravity;
+ /* 0x08 */ f32 scale;
+ /* 0x0C */ f32 real_shadow_size;
+ /* 0x10 */ f32 weight;
+ /* 0x14 */ f32 height;
+ /* 0x18 */ f32 knee_length;
+ /* 0x1C */ f32 width;
+ /* 0x20 */ f32 body_angleX_max;
+ /* 0x24 */ f32 body_angleX_min;
+ /* 0x28 */ f32 body_angleY_max;
+ /* 0x2C */ f32 body_angleY_min;
+ /* 0x30 */ f32 head_angleX_max;
+ /* 0x34 */ f32 head_angleX_min;
+ /* 0x38 */ f32 head_angleY_max;
+ /* 0x3C */ f32 head_angleY_min;
+ /* 0x40 */ f32 neck_rotation_ratio;
+ /* 0x44 */ f32 morf_frame;
+ /* 0x48 */ s16 talk_distance;
+ /* 0x4A */ s16 talk_angle;
+ /* 0x4C */ s16 attention_distance;
+ /* 0x4E */ s16 attention_angle;
+ /* 0x50 */ f32 fov;
+ /* 0x54 */ f32 search_distance;
+ /* 0x58 */ f32 search_height;
+ /* 0x5C */ f32 search_depth;
+ /* 0x60 */ s16 attention_time;
+ /* 0x62 */ s16 damage_time;
+ /* 0x64 */ s16 face_expression;
+ /* 0x66 */ s16 motion;
+ /* 0x68 */ s16 look_mode;
+ /* 0x6A */ u8 debug_mode_ON;
+ /* 0x6B */ u8 debug_info_ON;
+};
+
+#endif /* D_A_NPC4 */
diff --git a/include/d/actor/d_a_npc_ash.h b/include/d/actor/d_a_npc_ash.h
index d8a892c36a..48313e79bf 100644
--- a/include/d/actor/d_a_npc_ash.h
+++ b/include/d/actor/d_a_npc_ash.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_ASH_H
#define D_A_NPC_ASH_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpcAsh_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_ashB.h b/include/d/actor/d_a_npc_ashB.h
index 490f11a2e2..0b442c0500 100644
--- a/include/d/actor/d_a_npc_ashB.h
+++ b/include/d/actor/d_a_npc_ashB.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_ASHB_H
#define D_A_NPC_ASHB_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpcAshB_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_blue_ns.h b/include/d/actor/d_a_npc_blue_ns.h
index b6735b3fa4..ed2cfb12cc 100644
--- a/include/d/actor/d_a_npc_blue_ns.h
+++ b/include/d/actor/d_a_npc_blue_ns.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_BLUE_NS_H
#define D_A_NPC_BLUE_NS_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
#include "d/actor/d_a_tag_yami.h"
#include "d/actor/d_a_obj_carry.h"
diff --git a/include/d/actor/d_a_npc_bouS.h b/include/d/actor/d_a_npc_bouS.h
index eba7f50f59..c530c6fac1 100644
--- a/include/d/actor/d_a_npc_bouS.h
+++ b/include/d/actor/d_a_npc_bouS.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_BOUS_H
#define D_A_NPC_BOUS_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_chat.h b/include/d/actor/d_a_npc_chat.h
index 39347c4849..81e8b7b381 100644
--- a/include/d/actor/d_a_npc_chat.h
+++ b/include/d/actor/d_a_npc_chat.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_CHAT_H
#define D_A_NPC_CHAT_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_chin.h b/include/d/actor/d_a_npc_chin.h
index 175ccaddbe..b3679d080b 100644
--- a/include/d/actor/d_a_npc_chin.h
+++ b/include/d/actor/d_a_npc_chin.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_CHIN_H
#define D_A_NPC_CHIN_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
#include "d/actor/d_a_obj_glowSphere.h"
struct daNpcChin_HIOParam {
diff --git a/include/d/actor/d_a_npc_doorboy.h b/include/d/actor/d_a_npc_doorboy.h
index a7173ea6da..834c521f69 100644
--- a/include/d/actor/d_a_npc_doorboy.h
+++ b/include/d/actor/d_a_npc_doorboy.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_DOORBOY_H
#define D_A_NPC_DOORBOY_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
#include "d/d_msg_object.h"
/**
diff --git a/include/d/actor/d_a_npc_drainSol.h b/include/d/actor/d_a_npc_drainSol.h
index fa7559c664..6aa677f4f4 100644
--- a/include/d/actor/d_a_npc_drainSol.h
+++ b/include/d/actor/d_a_npc_drainSol.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_DRAINSOL_H
#define D_A_NPC_DRAINSOL_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_gra.h b/include/d/actor/d_a_npc_gra.h
index 82c86509d4..a2acb2a692 100644
--- a/include/d/actor/d_a_npc_gra.h
+++ b/include/d/actor/d_a_npc_gra.h
@@ -1,7 +1,8 @@
#ifndef D_A_NPC_GRA_H
#define D_A_NPC_GRA_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
+#include "d/d_particle_copoly.h"
class daNpc_grA_HIOParam {
diff --git a/include/d/actor/d_a_npc_grc.h b/include/d/actor/d_a_npc_grc.h
index c49f8833fd..08ff6fedac 100644
--- a/include/d/actor/d_a_npc_grc.h
+++ b/include/d/actor/d_a_npc_grc.h
@@ -1,7 +1,8 @@
#ifndef D_A_NPC_GRC_H
#define D_A_NPC_GRC_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
+#include "d/d_particle_copoly.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_grd.h b/include/d/actor/d_a_npc_grd.h
index bb2c4d131d..055978b267 100644
--- a/include/d/actor/d_a_npc_grd.h
+++ b/include/d/actor/d_a_npc_grd.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_GRD_H
#define D_A_NPC_GRD_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpc_Grd_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_gro.h b/include/d/actor/d_a_npc_gro.h
index 1671e048e4..bf4f21a06d 100644
--- a/include/d/actor/d_a_npc_gro.h
+++ b/include/d/actor/d_a_npc_gro.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_GRO_H
#define D_A_NPC_GRO_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_grr.h b/include/d/actor/d_a_npc_grr.h
index cd2854db1e..211f29a2b6 100644
--- a/include/d/actor/d_a_npc_grr.h
+++ b/include/d/actor/d_a_npc_grr.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_GRR_H
#define D_A_NPC_GRR_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_grs.h b/include/d/actor/d_a_npc_grs.h
index ff5e00a509..d7729b036a 100644
--- a/include/d/actor/d_a_npc_grs.h
+++ b/include/d/actor/d_a_npc_grs.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_GRS_H
#define D_A_NPC_GRS_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpc_grS_HIOParam {
/* 0x000 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_grz.h b/include/d/actor/d_a_npc_grz.h
index 4e6df3d782..5b6b0f42d2 100644
--- a/include/d/actor/d_a_npc_grz.h
+++ b/include/d/actor/d_a_npc_grz.h
@@ -1,7 +1,8 @@
#ifndef D_A_NPC_GRZ_H
#define D_A_NPC_GRZ_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
+#include "d/d_particle_copoly.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_gwolf.h b/include/d/actor/d_a_npc_gwolf.h
index 7b3aa0a2e2..b140bbe56b 100644
--- a/include/d/actor/d_a_npc_gwolf.h
+++ b/include/d/actor/d_a_npc_gwolf.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_GWOLF_H
#define D_A_NPC_GWOLF_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_impal.h b/include/d/actor/d_a_npc_impal.h
index 9745e2c74d..3b0b640567 100644
--- a/include/d/actor/d_a_npc_impal.h
+++ b/include/d/actor/d_a_npc_impal.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_IMPAL_H
#define D_A_NPC_IMPAL_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpcImpal_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_ins.h b/include/d/actor/d_a_npc_ins.h
index 601488a52b..85d316bfb7 100644
--- a/include/d/actor/d_a_npc_ins.h
+++ b/include/d/actor/d_a_npc_ins.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_INS_H
#define D_A_NPC_INS_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_kasi_hana.h b/include/d/actor/d_a_npc_kasi_hana.h
index b31f1d57bd..64b55ea95a 100644
--- a/include/d/actor/d_a_npc_kasi_hana.h
+++ b/include/d/actor/d_a_npc_kasi_hana.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_KASI_HANA_H
#define D_A_NPC_KASI_HANA_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
#include "d/actor/d_a_tag_escape.h"
/**
diff --git a/include/d/actor/d_a_npc_kasi_kyu.h b/include/d/actor/d_a_npc_kasi_kyu.h
index 310304fce1..b4ad3f5859 100644
--- a/include/d/actor/d_a_npc_kasi_kyu.h
+++ b/include/d/actor/d_a_npc_kasi_kyu.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_KASI_KYU_H
#define D_A_NPC_KASI_KYU_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
#include "d/actor/d_a_tag_escape.h"
/**
diff --git a/include/d/actor/d_a_npc_kasi_mich.h b/include/d/actor/d_a_npc_kasi_mich.h
index 4db9aa41cf..00c84422f0 100644
--- a/include/d/actor/d_a_npc_kasi_mich.h
+++ b/include/d/actor/d_a_npc_kasi_mich.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_KASI_MICH_H
#define D_A_NPC_KASI_MICH_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
#include "d/actor/d_a_tag_escape.h"
/**
diff --git a/include/d/actor/d_a_npc_moir.h b/include/d/actor/d_a_npc_moir.h
index 97fd762500..d3a10e6447 100644
--- a/include/d/actor/d_a_npc_moir.h
+++ b/include/d/actor/d_a_npc_moir.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_MOIR_H
#define D_A_NPC_MOIR_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_myna2.h b/include/d/actor/d_a_npc_myna2.h
index 2c47c65aa6..837689eec1 100644
--- a/include/d/actor/d_a_npc_myna2.h
+++ b/include/d/actor/d_a_npc_myna2.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_MYNA2_H
#define D_A_NPC_MYNA2_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_prayer.h b/include/d/actor/d_a_npc_prayer.h
index d5b145d288..d11c6d2149 100644
--- a/include/d/actor/d_a_npc_prayer.h
+++ b/include/d/actor/d_a_npc_prayer.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_PRAYER_H
#define D_A_NPC_PRAYER_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_rafrel.h b/include/d/actor/d_a_npc_rafrel.h
index 8ca054d23c..4b39fa974d 100644
--- a/include/d/actor/d_a_npc_rafrel.h
+++ b/include/d/actor/d_a_npc_rafrel.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_RAFREL_H
#define D_A_NPC_RAFREL_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_shad.h b/include/d/actor/d_a_npc_shad.h
index 17852f4d62..69678e06a5 100644
--- a/include/d/actor/d_a_npc_shad.h
+++ b/include/d/actor/d_a_npc_shad.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_SHAD_H
#define D_A_NPC_SHAD_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpcShad_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_shoe.h b/include/d/actor/d_a_npc_shoe.h
index 0f5e0f7a0b..d45e81bf13 100644
--- a/include/d/actor/d_a_npc_shoe.h
+++ b/include/d/actor/d_a_npc_shoe.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_SHOE_H
#define D_A_NPC_SHOE_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpcShoe_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_soldierA.h b/include/d/actor/d_a_npc_soldierA.h
index d129fe0000..4245ea6983 100644
--- a/include/d/actor/d_a_npc_soldierA.h
+++ b/include/d/actor/d_a_npc_soldierA.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_SOLDIERA_H
#define D_A_NPC_SOLDIERA_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_soldierB.h b/include/d/actor/d_a_npc_soldierB.h
index ff6c69e252..dd01e6100c 100644
--- a/include/d/actor/d_a_npc_soldierB.h
+++ b/include/d/actor/d_a_npc_soldierB.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_SOLDIERB_H
#define D_A_NPC_SOLDIERB_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpc_SoldierB_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_the.h b/include/d/actor/d_a_npc_the.h
index 56aaf8d515..dbd999922c 100644
--- a/include/d/actor/d_a_npc_the.h
+++ b/include/d/actor/d_a_npc_the.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_THE_H
#define D_A_NPC_THE_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daNpcThe_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_npc_theB.h b/include/d/actor/d_a_npc_theB.h
index 959765ec6c..8611823849 100644
--- a/include/d/actor/d_a_npc_theB.h
+++ b/include/d/actor/d_a_npc_theB.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_THEB_H
#define D_A_NPC_THEB_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_tk.h b/include/d/actor/d_a_npc_tk.h
index de5a8d3708..c3faacb836 100644
--- a/include/d/actor/d_a_npc_tk.h
+++ b/include/d/actor/d_a_npc_tk.h
@@ -80,11 +80,11 @@ public:
/* 80B0BBC8 */ int CreateHeap();
/* 80B0BD24 */ int create();
- void setBump() { mFlags |= 4; }
- void setEventWolf() { mFlags |= 0x80; }
- void setEvent() { mFlags |= 0x8; }
- void setAway() { mFlags |= 2; }
- void setAttack() { mFlags |= 1; }
+ void setBump() { mFlags |= (u16)4; }
+ void setEventWolf() { mFlags |= (u16)0x80; }
+ void setEvent() { mFlags |= (u16)0x8; }
+ void setAway() { mFlags |= (u16)2; }
+ void setAttack() { mFlags |= (u16)1; }
void setHawkPath(u8 i_pathNo) {
if (i_pathNo != 0xFF) {
@@ -93,13 +93,13 @@ public:
}
BOOL isAttackLink() { return field_0x71a != 0; }
- void setAttackLink() { mFlags |= 0x10; }
- void setBackHanjo() { mFlags |= 0x20; }
- void setHanjoHand() { mFlags |= 0x40; }
- void setQuickHanjoHand() { mFlags |= 0x200; }
+ void setAttackLink() { mFlags |= (u16)0x10; }
+ void setBackHanjo() { mFlags |= (u16)0x20; }
+ void setHanjoHand() { mFlags |= (u16)0x40; }
+ void setQuickHanjoHand() { mFlags |= (u16)0x200; }
BOOL isHanjoHand() { return mIsHanjoHand != 0; }
- void setResistanceDemo() { mFlags |= 0x100; }
+ void setResistanceDemo() { mFlags |= (u16)0x100; }
/* 0x568 */ request_of_phase_process_class mPhase;
/* 0x570 */ mDoExt_McaMorfSO* mpMorf;
diff --git a/include/d/actor/d_a_npc_tkc.h b/include/d/actor/d_a_npc_tkc.h
index 1d4d4d79d3..2a5762a950 100644
--- a/include/d/actor/d_a_npc_tkc.h
+++ b/include/d/actor/d_a_npc_tkc.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_TKC_H
#define D_A_NPC_TKC_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_tks.h b/include/d/actor/d_a_npc_tks.h
index 4c99e1b9ee..c7677ed86b 100644
--- a/include/d/actor/d_a_npc_tks.h
+++ b/include/d/actor/d_a_npc_tks.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_TKS_H
#define D_A_NPC_TKS_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_wrestler.h b/include/d/actor/d_a_npc_wrestler.h
index a5e867545c..c8e9d5fb99 100644
--- a/include/d/actor/d_a_npc_wrestler.h
+++ b/include/d/actor/d_a_npc_wrestler.h
@@ -2,6 +2,7 @@
#define D_A_NPC_WRESTLER_H
#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_zra.h b/include/d/actor/d_a_npc_zra.h
index d788856671..898754a558 100644
--- a/include/d/actor/d_a_npc_zra.h
+++ b/include/d/actor/d_a_npc_zra.h
@@ -1,7 +1,8 @@
#ifndef D_A_NPC_ZRA_H
#define D_A_NPC_ZRA_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
+#include "d/d_particle_copoly.h"
class daNpc_zrA_HIO_c;
/**
diff --git a/include/d/actor/d_a_npc_zrc.h b/include/d/actor/d_a_npc_zrc.h
index a7d8811b28..ae5f6a2c33 100644
--- a/include/d/actor/d_a_npc_zrc.h
+++ b/include/d/actor/d_a_npc_zrc.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_ZRC_H
#define D_A_NPC_ZRC_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
/**
* @ingroup actors-npcs
diff --git a/include/d/actor/d_a_npc_zrz.h b/include/d/actor/d_a_npc_zrz.h
index 18ffbe28d6..f78c86dbf0 100644
--- a/include/d/actor/d_a_npc_zrz.h
+++ b/include/d/actor/d_a_npc_zrz.h
@@ -1,7 +1,7 @@
#ifndef D_A_NPC_ZRZ_H
#define D_A_NPC_ZRZ_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
class daGraveStone_c;
class daObjZraRock_c;
diff --git a/include/d/actor/d_a_obj_gra2.h b/include/d/actor/d_a_obj_gra2.h
index c437cf198c..57c02149b9 100644
--- a/include/d/actor/d_a_obj_gra2.h
+++ b/include/d/actor/d_a_obj_gra2.h
@@ -1,7 +1,8 @@
#ifndef D_A_OBJ_GRA2_H
#define D_A_OBJ_GRA2_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc2.h"
+#include "d/d_particle_copoly.h"
#include "f_op/f_op_actor_mng.h"
diff --git a/include/d/actor/d_a_obj_tks.h b/include/d/actor/d_a_obj_tks.h
index 7d6973c832..b4e6ebfaf4 100644
--- a/include/d/actor/d_a_obj_tks.h
+++ b/include/d/actor/d_a_obj_tks.h
@@ -2,7 +2,7 @@
#define D_A_OBJ_TKS_H
#include "f_op/f_op_actor_mng.h"
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
struct daObjTks_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
diff --git a/include/d/actor/d_a_obj_zraMark.h b/include/d/actor/d_a_obj_zraMark.h
index a23117ea3b..23262b0949 100644
--- a/include/d/actor/d_a_obj_zraMark.h
+++ b/include/d/actor/d_a_obj_zraMark.h
@@ -3,6 +3,7 @@
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
#include "d/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
diff --git a/include/d/actor/d_a_startAndGoal.h b/include/d/actor/d_a_startAndGoal.h
index f4984dae11..8c0b895acb 100644
--- a/include/d/actor/d_a_startAndGoal.h
+++ b/include/d/actor/d_a_startAndGoal.h
@@ -1,7 +1,7 @@
#ifndef D_A_STARTANDGOAL_H
#define D_A_STARTANDGOAL_H
-#include "d/actor/d_a_npc.h"
+#include "d/actor/d_a_npc4.h"
class daStartAndGoal_Path_c : public daNpcF_Path_c {
public:
diff --git a/include/d/d_bg_s.h b/include/d/d_bg_s.h
index a925ee2720..f8cb52660d 100644
--- a/include/d/d_bg_s.h
+++ b/include/d/d_bg_s.h
@@ -118,7 +118,7 @@ public:
s32 GetRoomPathPntNo(cBgS_PolyInfo const&);
int GetGrpSoundId(cBgS_PolyInfo const&);
u32 ChkGrpInf(cBgS_PolyInfo const&, u32);
- s32 GetRoomId(cBgS_PolyInfo const&);
+ int GetRoomId(cBgS_PolyInfo const&);
bool GetPolyAttackThrough(cBgS_PolyInfo const&);
u32 ChkPolyHSStick(cBgS_PolyInfo const&);
void WallCorrect(dBgS_Acch*);
diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h
index 9d13c848b0..590f299728 100644
--- a/include/d/d_cc_d.h
+++ b/include/d/d_cc_d.h
@@ -241,7 +241,7 @@ public:
void ClrTg() { mTg = 0; }
void SetAtApid(fpc_ProcID id) { mAtApid = id; }
void SetTgApid(fpc_ProcID id) { mTgApid = id; }
- u8 GetRoomId() { return mRoomId; }
+ int GetRoomId() { return mRoomId; }
void SetRoomId(int id) { mRoomId = id; }
fpc_ProcID GetAtOldApid() { return mAtOldApid; }
fpc_ProcID GetTgOldApid() { return mTgOldApid; }
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index a75897c346..bc3aa12e7c 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -169,8 +169,7 @@ public:
J3DAnmTransform* getBckAnm() { return mAnm; }
void removeJoint(J3DModelData* i_modelData, u16 i_idx) {
- J3DJoint* mpJnt = i_modelData->getJointNodePointer(i_idx);
- mpJnt->setMtxCalc(0);
+ i_modelData->getJointNodePointer(i_idx)->setMtxCalc(0);
}
private:
diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h
index a2229295a6..d6b2fef63e 100644
--- a/include/m_Do/m_Do_mtx.h
+++ b/include/m_Do/m_Do_mtx.h
@@ -40,7 +40,7 @@ inline void mDoMtx_multVec(CMtxP m, const Vec* src, Vec* dst) {
PSMTXMultVec(m, src, dst);
}
-inline void mDoMtx_multVecArray(Mtx m, const Vec* src, Vec* dst, u32 count) {
+inline void mDoMtx_multVecArray(const Mtx m, const Vec* src, Vec* dst, u32 count) {
MTXMultVecArray(m, src, dst, count);
}
@@ -96,7 +96,7 @@ inline void cMtx_copy(const Mtx src, Mtx dst) {
mDoMtx_copy(src, dst);
}
-inline void cMtx_multVecArray(Mtx mtx, const Vec* src, Vec* dst, u32 count) {
+inline void cMtx_multVecArray(const Mtx mtx, const Vec* src, Vec* dst, u32 count) {
mDoMtx_multVecArray(mtx, src, dst, count);
}