mirror of https://github.com/zeldaret/tp.git
npc_kn mostly done (#2609)
* npc_kn mostly done * fix shieldD * pr fixes * weak func fixes
This commit is contained in:
parent
956e84b0e7
commit
5ce5bf20cc
|
|
@ -11,7 +11,7 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daNpc_GWolf_c : public fopAc_ac_c {
|
||||
class daNpc_GWolf_c : public daNpcF_c {
|
||||
public:
|
||||
/* 809F30AC */ daNpc_GWolf_c();
|
||||
/* 809F34C0 */ void create();
|
||||
|
|
@ -47,18 +47,18 @@ public:
|
|||
/* 809F797C */ void test(void*);
|
||||
/* 809F7A30 */ void getGroundSlope(dBgS_ObjAcch&, s16);
|
||||
|
||||
/* 809F32C0 */ ~daNpc_GWolf_c();
|
||||
/* 809F4258 */ void setParam();
|
||||
/* 809F4390 */ BOOL main();
|
||||
/* 809F4558 */ BOOL ctrlBtk();
|
||||
/* 809F4638 */ void adjustShapeAngle();
|
||||
/* 809F4698 */ void setAttnPos();
|
||||
/* 809F4BB0 */ bool setExpressionAnm(int, bool);
|
||||
/* 809F4BB8 */ void setExpression(int, f32);
|
||||
/* 809F4BBC */ bool setMotionAnm(int, f32);
|
||||
/* 809F4DE8 */ void setMotion(int, f32, int);
|
||||
/* 809F4E2C */ BOOL drawDbgInfo();
|
||||
/* 809F4E34 */ void drawOtherMdls();
|
||||
/* 809F32C0 */ virtual ~daNpc_GWolf_c();
|
||||
/* 809F4258 */ virtual void setParam();
|
||||
/* 809F4390 */ virtual BOOL main();
|
||||
/* 809F4558 */ virtual BOOL ctrlBtk();
|
||||
/* 809F4638 */ virtual void adjustShapeAngle();
|
||||
/* 809F4698 */ virtual void setAttnPos();
|
||||
/* 809F4BB0 */ virtual bool setExpressionAnm(int, bool);
|
||||
/* 809F4BB8 */ virtual void setExpression(int, f32);
|
||||
/* 809F4BBC */ virtual void setMotionAnm(int, f32);
|
||||
/* 809F4DE8 */ virtual void setMotion(int, f32, int);
|
||||
/* 809F4E2C */ virtual BOOL drawDbgInfo();
|
||||
/* 809F4E34 */ virtual void drawOtherMdls();
|
||||
|
||||
void setHowlingEndFlag() { field_0xe1c = 2; }
|
||||
void setHowlingFlag() { field_0xe1c = 1; }
|
||||
|
|
@ -67,14 +67,17 @@ public:
|
|||
static u8 mEvtCutList[60];
|
||||
|
||||
private:
|
||||
// /* 0xB48 */ Z2Creature mCreature;
|
||||
// /* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
// /* 0xBDC */ daNpcF_Lookat_c mLookAt;
|
||||
// /* 0xC78 */ daNpcF_ActorMngr_c mActorMng[2];
|
||||
// /* 0xC88 */ u8 field_0xc88[4];
|
||||
// /* 0xC8C */ dCcD_Cyl mCyl;
|
||||
// /* 0xDC8 */ u8 field_0xdc8[0xE1C - 0xdc8];
|
||||
/* 0x568 */ u8 field_0xb48[0xE1C - 0x568];
|
||||
/* 0xB48 */ Z2Creature mSound;
|
||||
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBDC */ daNpcF_Lookat_c mLookAt;
|
||||
/* 0xC78 */ daNpcF_ActorMngr_c mActorMng[2];
|
||||
/* 0xC88 */ u8 field_0xC88[0xC8C - 0xC88];
|
||||
/* 0xC8C */ dCcD_Cyl mCcCyl;
|
||||
/* 0xDC8 */ u8 field_0xDC8[0xE08 - 0xDC8];
|
||||
/* 0xE08 */ int field_0xe08;
|
||||
/* 0xE0C */ u8 field_0xE0C[0xE14 - 0xE0C];
|
||||
/* 0xE14 */ u32 field_0xe14;
|
||||
/* 0xE18 */ u8 field_0xe18[0xE1C - 0xE18];
|
||||
/* 0xE1C */ u8 field_0xe1c;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,24 @@ public:
|
|||
typedef int (daNpc_Kn_c::*cutFunc)(int);
|
||||
typedef int (daNpc_Kn_c::*actionFunc)(void*);
|
||||
|
||||
enum AnmFlags {
|
||||
ANM_PAUSE_MORF = 0x1,
|
||||
ANM_PAUSE_BTK = 0x2,
|
||||
ANM_PAUSE_BRK = 0x4,
|
||||
ANM_PAUSE_BPK = 0x8,
|
||||
ANM_PAUSE_BCK = 0x10,
|
||||
ANM_PAUSE_BTP = 0x20,
|
||||
ANM_PLAY_MORF = 0x40,
|
||||
ANM_PLAY_BTK = 0x80,
|
||||
ANM_PLAY_BRK = 0x100,
|
||||
ANM_PLAY_BPK = 0x200,
|
||||
ANM_PLAY_BCK = 0x400,
|
||||
ANM_PLAY_BTP = 0x800,
|
||||
ANM_FLAG_1000 = 0x1000,
|
||||
ANM_PAUSE_TIMER_BTP = 0x2000,
|
||||
ANM_FLAG_4000 = 0x4000,
|
||||
};
|
||||
|
||||
class daNpc_Kn_prtclMngr_c {
|
||||
public:
|
||||
/* 80A2AF98 */ ~daNpc_Kn_prtclMngr_c() {};
|
||||
|
|
@ -32,9 +50,9 @@ public:
|
|||
/* 0x05AC */ const daNpcT_faceMotionAnmData_c* mpFaceMotionAnmData;
|
||||
/* 0x05B0 */ const daNpcT_motionAnmData_c* mpMotionAnmData;
|
||||
/* 0x05B4 */ const daNpcT_evtData_c* mpEventData;
|
||||
/* 0x05B8 */ char** field_0x5B8;
|
||||
/* 0x05BC */ mDoExt_McaMorfSO* mpMorf[2];
|
||||
/* 0x05C4 */ Z2Creature mCreature;
|
||||
/* 0x05B8 */ char** mpArcNames;
|
||||
/* 0x05BC */ mDoExt_McaMorfSO* mpModelMorf[2];
|
||||
/* 0x05C4 */ Z2Creature mSound;
|
||||
/* 0x0654 */ mDoExt_bckAnm mBckAnm;
|
||||
/* 0x0670 */ mDoExt_btpAnm mBtpAnm;
|
||||
/* 0x0688 */ mDoExt_btkAnm mBtkAnm;
|
||||
|
|
@ -48,70 +66,74 @@ public:
|
|||
/* 0x09A0 */ daNpcT_MatAnm_c* mpMatAnm;
|
||||
/* 0x09A4 */ u8 field_0x9a4[4];
|
||||
/* 0x09A8 */ dMsgFlow_c mFlow;
|
||||
/* 0x09F4 */ u8 field_0x9F4[0xa74 - 0x9f4];
|
||||
/* 0x09F4 */ dPaPoT_c field_0x9F4;
|
||||
/* 0x0A74 */ dCcD_Stts mCcStts2;
|
||||
/* 0x0AB0 */ u32 mFlowNodeNo;
|
||||
/* 0x0AB4 */ f32 field_0xab4;
|
||||
/* 0x0AB8 */ f32 field_0xab8;
|
||||
/* 0x0ABC */ u8 field_0xABC;
|
||||
/* 0x0ABD */ u8 field_0xABD;
|
||||
/* 0x0ABE */ u8 field_0xABE[0xAC0 - 0xABE];
|
||||
/* 0x0AB4 */ f32 mExpressionMorfFrame;
|
||||
/* 0x0AB8 */ f32 mMorfFrames;
|
||||
/* 0x0ABC */ u8 mCreating;
|
||||
/* 0x0ABD */ u8 mTwilight;
|
||||
/* 0x0AC0 */ dBgS_GndChk mGndChk2;
|
||||
/* 0x0B14 */ dBgS_LinChk mLinChk;
|
||||
/* 0x0B84 */ daNpcT_MotionSeqMngr_c mMotionSeqMngr1;
|
||||
/* 0x0BA8 */ daNpcT_MotionSeqMngr_c mMotionSeqMngr2;
|
||||
/* 0x0B84 */ daNpcT_MotionSeqMngr_c mFaceMotionSeqMngr;
|
||||
/* 0x0BA8 */ daNpcT_MotionSeqMngr_c mMotionSeqMngr;
|
||||
/* 0x0BCC */ daNpcT_ActorMngr_c mActorMngr1;
|
||||
/* 0x0BD4 */ daNpcT_ActorMngr_c mActorMngr2;
|
||||
/* 0x0BDC */ daNpcT_JntAnm_c mJntAnm;
|
||||
/* 0x0D3C */ daNpcT_DmgStagger_c mDmgStagger;
|
||||
/* 0x0D58 */ cXyz field_0xd58;
|
||||
/* 0x0D64 */ cXyz field_0xD64;
|
||||
/* 0x0D70 */ cXyz field_0xD70;
|
||||
/* 0x0D7C */ cXyz field_0xD7C;
|
||||
/* 0x0D88 */ cXyz field_0xD88;
|
||||
/* 0x0D94 */ cXyz field_0xD94;
|
||||
/* 0x0D58 */ cXyz mFootLPos;
|
||||
/* 0x0D64 */ cXyz mFootRPos;
|
||||
/* 0x0D70 */ cXyz mFootLOffset;
|
||||
/* 0x0D7C */ cXyz mFootROffset;
|
||||
/* 0x0D88 */ cXyz mOldFootLOffset;
|
||||
/* 0x0D94 */ cXyz mOldFootROffset;
|
||||
/* 0x0DA0 */ cXyz field_0xDA0;
|
||||
/* 0x0DAC */ csXyz mTargetAngle;
|
||||
/* 0x0DAC */ csXyz mCurAngle;
|
||||
/* 0x0DB2 */ csXyz field_0xDB2;
|
||||
/* 0x0DB8 */ csXyz field_0xDB8;
|
||||
/* 0x0DBE */ csXyz field_0xDBE;
|
||||
/* 0x0DC4 */ s32 field_0xdc4;
|
||||
/* 0x0DC4 */ fpc_ProcID mItemPartnerId;
|
||||
/* 0x0DC8 */ u32 mShadowKey;
|
||||
/* 0x0DCC */ u32 field_0xdcc;
|
||||
/* 0x0DD0 */ u32 field_0xdd0;
|
||||
/* 0x0DD4 */ s32 mStaffId;
|
||||
/* 0x0DCC */ u32 mAnmFlags;
|
||||
/* 0x0DD0 */ fpc_ProcID mMsgId;
|
||||
/* 0x0DD4 */ int mStaffId;
|
||||
/* 0x0DD8 */ int mCutType;
|
||||
/* 0x0DDC */ int field_0xddc;
|
||||
/* 0x0DE0 */ int field_0xde0;
|
||||
/* 0x0DE0 */ int mTimerStart;
|
||||
/* 0x0DE4 */ int mTimer;
|
||||
/* 0x0DE8 */ int field_0xde8;
|
||||
/* 0x0DE8 */ int mBtpPauseTimer;
|
||||
/* 0x0DEC */ int field_0xdec;
|
||||
/* 0x0DF0 */ s16 field_0xdf0;
|
||||
/* 0x0DF2 */ u8 field_0xdf2[0x0DFA - 0x0DF2];
|
||||
/* 0x0DFA */ s16 field_0xdfa;
|
||||
/* 0x0DFC */ u8 field_0xdfc[0x0DFE - 0x0DFC];
|
||||
/* 0x0DFE */ s16 field_0xdfe;
|
||||
/* 0x0E00 */ s16 field_0xe00;
|
||||
/* 0x0E04 */ f32 field_0xe04;
|
||||
/* 0x0DF0 */ s16 mGroundAngle;
|
||||
/* 0x0DF2 */ s16 field_0xdf2;
|
||||
/* 0x0DF4 */ s16 mFootLPolyAngle;
|
||||
/* 0x0DF5 */ u8 field_0xdf5[0x0DF8 - 0x0DF6];
|
||||
/* 0x0DF8 */ s16 mFootRPolyAngle;
|
||||
/* 0x0DFA */ s16 mStartAngle;
|
||||
/* 0x0DFC */ s16 mTargetAngle;
|
||||
/* 0x0DFE */ s16 mStepMode;
|
||||
/* 0x0E00 */ s16 mTurnAmount;
|
||||
/* 0x0E04 */ f32 mTurnCount;
|
||||
/* 0x0E08 */ u8 field_0xe08[0x0E0C - 0x0E08];
|
||||
/* 0x0E0C */ f32 field_0xe0c;
|
||||
/* 0x0E10 */ f32 mRadius;
|
||||
/* 0x0E14 */ f32 mGroundHeight;
|
||||
/* 0x0E18 */ u8 field_0xe18[0xe24 - 0xe18];
|
||||
/* 0x0E24 */ s16 field_0xe24;
|
||||
/* 0x0E26 */ u16 field_0xe26;
|
||||
/* 0x0E28 */ u16 field_0xe28;
|
||||
/* 0x0E2A */ u16 field_0xe2a;
|
||||
/* 0x0E18 */ u8 field_0xe18[0xe1c - 0xe18];
|
||||
/* 0x0E1C */ u32 mHitodamaPrtclKey[2];
|
||||
/* 0x0E24 */ s16 mEvtId;
|
||||
/* 0x0E26 */ u16 mMorfLoops;
|
||||
/* 0x0E28 */ u16 mBckLoops;
|
||||
/* 0x0E2A */ u16 mMode;
|
||||
/* 0x0E2C */ u8 field_0xe2c;
|
||||
/* 0x0E2D */ u8 field_0xe2d;
|
||||
/* 0x0E2E */ u8 field_0xe2e[0xe30 - 0xe2e];
|
||||
/* 0x0E2E */ u8 mFootLOnGround;
|
||||
/* 0x0E2F */ u8 mFootROnGround;
|
||||
/* 0x0E30 */ u8 field_0xe30;
|
||||
/* 0x0E31 */ u8 field_0xe31;
|
||||
/* 0x0E32 */ u8 field_0xe32;
|
||||
/* 0x0E32 */ u8 mNoDraw;
|
||||
/* 0x0E33 */ u8 field_0xe33;
|
||||
/* 0x0E33 */ u8 field_0xe34[0xe36 - 0xe34];
|
||||
/* 0x0E36 */ u16 mEvtIdx;
|
||||
/* 0x0E38 */ u8 field_0xe38;
|
||||
/* 0x0E34 */ u8 field_0xe34;
|
||||
/* 0x0E36 */ u16 mEvtNo;
|
||||
/* 0x0E38 */ u8 mSpeakEvent;
|
||||
/* 0x0E39 */ u8 field_0xe39;
|
||||
/* 0x0E3A */ u8 field_0xe3a;
|
||||
/* 0x0E3B */ u8 field_0xe3b;
|
||||
|
|
@ -120,27 +142,21 @@ public:
|
|||
|
||||
public:
|
||||
void initialize() {
|
||||
memset(&field_0xd58, 0, (int)&field_0xe3c - (int)&field_0xd58);
|
||||
memset(&mFootLPos, 0, (int)&field_0xe3c - (int)&mFootLPos);
|
||||
|
||||
mMotionSeqMngr1.initialize();
|
||||
mMotionSeqMngr2.initialize();
|
||||
mFaceMotionSeqMngr.initialize();
|
||||
mMotionSeqMngr.initialize();
|
||||
mActorMngr1.initialize();
|
||||
mActorMngr2.initialize();
|
||||
mJntAnm.initialize();
|
||||
mDmgStagger.initialize();
|
||||
field_0xdc4 = -1;
|
||||
mItemPartnerId = -1;
|
||||
field_0xe2d = 1;
|
||||
field_0x15a4 = 0;
|
||||
mPodAnmFlags = 0;
|
||||
}
|
||||
|
||||
bool checkHide() {
|
||||
bool ret = false;
|
||||
|
||||
if (field_0xe2c != 0 || (!dComIfGs_wolfeye_effect_check() && field_0xABD != 0)) {
|
||||
ret = true;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return field_0xe2c != 0 || (!dComIfGs_wolfeye_effect_check() && mTwilight != 0);
|
||||
}
|
||||
|
||||
int getHeadJointNo() {
|
||||
|
|
@ -155,16 +171,21 @@ public:
|
|||
return 1;
|
||||
}
|
||||
|
||||
bool checkChangeJoint(int i_jointNo) { return i_jointNo == 4; }
|
||||
bool checkRemoveJoint(int i_jointNo) { return i_jointNo == 5; }
|
||||
|
||||
void setCutType(int i_type) { mCutType = i_type;}
|
||||
|
||||
void setActionMode(s8 i_actionMode) { mActionMode = i_actionMode;}
|
||||
s8 getActionMode() { return mActionMode; }
|
||||
|
||||
void setTalkFlag(u8 i_flag) { field_0x15bd = i_flag; }
|
||||
|
||||
/* 80A2AFD4 */ s32 create();
|
||||
/* 80A2B278 */ s32 CreateHeap();
|
||||
/* 80A2B620 */ s32 Delete();
|
||||
/* 80A2B654 */ s32 Execute();
|
||||
/* 80A2B6B0 */ void Draw();
|
||||
/* 80A2AFD4 */ int create();
|
||||
/* 80A2B278 */ int CreateHeap();
|
||||
/* 80A2B620 */ int Delete();
|
||||
/* 80A2B654 */ int Execute();
|
||||
/* 80A2B6B0 */ int Draw();
|
||||
/* 80A2B764 */ static int createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80A2B784 */ static int ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80A2B7DC */ u8 getType();
|
||||
|
|
@ -184,7 +205,7 @@ public:
|
|||
/* 80A2C1D0 */ void setAfterTalkMotion();
|
||||
/* 80A2C230 */ void srchActors();
|
||||
/* 80A2C234 */ bool evtTalk();
|
||||
/* 80A2C318 */ bool evtCutProc();
|
||||
/* 80A2C318 */ BOOL evtCutProc();
|
||||
/* 80A2C3FC */ void action();
|
||||
/* 80A2C484 */ void beforeMove();
|
||||
/* 80A2C4FC */ void afterMoved();
|
||||
|
|
@ -253,18 +274,18 @@ public:
|
|||
/* 80A37D20 */ void calcSwordAttackMove(int);
|
||||
/* 80A3805C */ void setSe();
|
||||
/* 80A38520 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
|
||||
/* 80A38550 */ void getTrnsfrmAnmP(char const*, int);
|
||||
/* 80A3858C */ void* getTrnsfrmKeyAnmP(char const*, int);
|
||||
/* 80A385C8 */ void getTexPtrnAnmP(char const*, int);
|
||||
/* 80A38604 */ void getTexSRTKeyAnmP(char const*, int);
|
||||
/* 80A38640 */ void setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
|
||||
/* 80A38550 */ J3DAnmTransform* getTrnsfrmAnmP(char const*, int);
|
||||
/* 80A3858C */ J3DAnmTransformKey* getTrnsfrmKeyAnmP(char const*, int);
|
||||
/* 80A385C8 */ J3DAnmTexPattern* getTexPtrnAnmP(char const*, int);
|
||||
/* 80A38604 */ J3DAnmTextureSRTKey* getTexSRTKeyAnmP(char const*, int);
|
||||
/* 80A38640 */ BOOL setBckAnm(J3DAnmTransform*, f32, int, int, int, bool);
|
||||
/* 80A38684 */ int setMcaMorfAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
|
||||
/* 80A3877C */ void setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
|
||||
/* 80A387BC */ void setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int);
|
||||
/* 80A387FC */ cPhs__Step loadRes(s8 const*, char const**);
|
||||
/* 80A3877C */ BOOL setBtpAnm(J3DAnmTexPattern*, J3DModelData*, f32, int);
|
||||
/* 80A387BC */ BOOL setBtkAnm(J3DAnmTextureSRTKey*, J3DModelData*, f32, int);
|
||||
/* 80A387FC */ int loadRes(s8 const*, char const**);
|
||||
/* 80A388B0 */ void deleteRes(s8 const*, char const**);
|
||||
/* 80A38930 */ s32 execute();
|
||||
/* 80A38BB8 */ int draw(int, int, f32, _GXColorS10*, f32, int, int, int);
|
||||
/* 80A38930 */ int execute();
|
||||
/* 80A38BB8 */ int draw(int, int, f32, GXColorS10*, f32, int, int, int);
|
||||
/* 80A38FAC */ void setEnvTevColor();
|
||||
/* 80A39008 */ void setRoomNo();
|
||||
/* 80A3904C */ BOOL checkEndAnm(f32);
|
||||
|
|
@ -279,21 +300,28 @@ public:
|
|||
/* 80A3A7C0 */ bool setMotionAnm(int, f32, int);
|
||||
/* 80A3AA58 */ void setPos(cXyz);
|
||||
/* 80A3AAF0 */ void setAngle(s16);
|
||||
/* 80A3AB18 */ int chkActorInSight(fopAc_ac_c*, f32, s16);
|
||||
/* 80A3AC24 */ int chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
|
||||
/* 80A3ACD4 */ void chkPointInArea(cXyz, cXyz, cXyz, s16);
|
||||
/* 80A3AB18 */ BOOL chkActorInSight(fopAc_ac_c*, f32, s16);
|
||||
/* 80A3AC24 */ BOOL chkPointInArea(cXyz, cXyz, f32, f32, f32, s16);
|
||||
/* 80A3ACD4 */ BOOL chkPointInArea(cXyz, cXyz, cXyz, s16);
|
||||
/* 80A3AD50 */ int chkFindPlayer(int, s16);
|
||||
/* 80A3AF64 */ BOOL srchPlayerActor();
|
||||
/* 80A3B000 */ cXyz getAttnPos(fopAc_ac_c*);
|
||||
/* 80A3B074 */ BOOL turn(s16, int, int);
|
||||
/* 80A3B220 */ s32 step(s16, int, int, int, int);
|
||||
/* 80A3B3E8 */ s32 initTalk(int, fopAc_ac_c**);
|
||||
/* 80A3B220 */ int step(s16, int, int, int, int);
|
||||
/* 80A3B3E8 */ int initTalk(int, fopAc_ac_c**);
|
||||
/* 80A3B448 */ BOOL talkProc(int*, int, fopAc_ac_c**, int);
|
||||
/* 80A3B5EC */ void setHitodamaPrtcl();
|
||||
/* 80A3B82C */ daNpc_Kn_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**);
|
||||
/* 80A3B82C */ daNpc_Kn_c(daNpcT_faceMotionAnmData_c const* param_0,
|
||||
daNpcT_motionAnmData_c const* param_1,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_2, int param_3,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_4, int param_5,
|
||||
daNpcT_evtData_c const* param_6, char** param_7)
|
||||
: mpFaceMotionAnmData(param_0), mpMotionAnmData(param_1), mFaceMotionSeqMngr(param_2, param_3),
|
||||
mMotionSeqMngr(param_4, param_5), mpEventData(param_6), mpArcNames(param_7)
|
||||
{
|
||||
OS_REPORT("|%06d:%x|daNpc_Kn_c -> コンストラクト\n", g_Counter.mCounter0, this);
|
||||
initialize();
|
||||
}
|
||||
/* 80A3C998 */ u32 setParamTeach01();
|
||||
/* 80A3CB14 */ void setCollisionTeach01();
|
||||
/* 80A3CBFC */ void teach01_selectAction();
|
||||
|
|
@ -314,32 +342,33 @@ public:
|
|||
/* 80A3F99C */ int ECut_secondSkillExplain(int);
|
||||
/* 80A3FFB4 */ int ECut_reflectExplain(int);
|
||||
/* 80A403B8 */ int ECut_secondSkillGet(int);
|
||||
|
||||
/* 80A3949C */ virtual int ctrlBtk();
|
||||
/* 80A3B7B4 */ virtual s32 getFootLJointNo();
|
||||
/* 80A3B7AC */ virtual s32 getFootRJointNo();
|
||||
/* 80A3BD1C */ virtual u16 getEyeballLMaterialNo();
|
||||
/* 80A3BD24 */ virtual u16 getEyeballRMaterialNo();
|
||||
/* 80A3BD14 */ virtual u16 getEyeballMaterialNo();
|
||||
/* 80A3B7B4 */ virtual int getFootLJointNo() { return -1; }
|
||||
/* 80A3B7AC */ virtual int getFootRJointNo() { return -1; }
|
||||
/* 80A3BD1C */ virtual u16 getEyeballLMaterialNo() { return 0; }
|
||||
/* 80A3BD24 */ virtual u16 getEyeballRMaterialNo() { return 0; }
|
||||
/* 80A3BD14 */ virtual u16 getEyeballMaterialNo() { return 0; }
|
||||
/* 80A3989C */ virtual int ctrlJoint(J3DJoint*, J3DModel*);
|
||||
/* 80A3B720 */ virtual void afterJntAnm(int);
|
||||
/* 80A3B7A4 */ virtual BOOL checkChangeEvt();
|
||||
/* 80A3B720 */ virtual void afterJntAnm(int) {}
|
||||
/* 80A3B7A4 */ virtual BOOL checkChangeEvt() { return FALSE; }
|
||||
/* 80A3B79C */ virtual BOOL evtEndProc() { return TRUE; }
|
||||
/* 80A39BBC */ virtual int evtProc();
|
||||
/* 80A3B79C */ virtual BOOL evtEndProc();
|
||||
/* 80A39DBC */ virtual void setFootPos();
|
||||
/* 80A39F84 */ virtual void setFootPrtcl(cXyz*, f32);
|
||||
/* 80A3A254 */ virtual bool checkCullDraw();
|
||||
/* 80A3A25C */ virtual void twilight();
|
||||
/* 80A3B7BC */ virtual BOOL chkXYItems();
|
||||
/* 80A3B7BC */ virtual BOOL chkXYItems() { return FALSE; }
|
||||
/* 80A3A2A8 */ virtual void evtOrder();
|
||||
/* 80A3B708 */ virtual void decTmr();
|
||||
/* 80A3A504 */ virtual void clrParam();
|
||||
/* 80A3B7C4 */ virtual bool afterSetFaceMotionAnm(int, int, f32, int);
|
||||
/* 80A3B7C4 */ virtual bool afterSetFaceMotionAnm(int, int, f32, int) { return true; }
|
||||
/* 80A3B7CC */ virtual daNpcT_faceMotionAnmData_c getFaceMotionAnm(daNpcT_faceMotionAnmData_c);
|
||||
/* 80A3B7FC */ virtual daNpcT_motionAnmData_c getMotionAnm(daNpcT_motionAnmData_c);
|
||||
/* 80A2AA0C */ virtual ~daNpc_Kn_c();
|
||||
/* 80A2D060 */ virtual bool afterSetMotionAnm(int, int, f32, int);
|
||||
|
||||
static u8 const mCcDObjData[48];
|
||||
static const dCcD_SrcGObjInf mCcDObjData;
|
||||
static dCcD_SrcCyl mCcDCyl;
|
||||
static dCcD_SrcSph mCcDSph;
|
||||
static char* mCutNameList[21];
|
||||
|
|
@ -349,14 +378,14 @@ public:
|
|||
static u8 mFindCount[4];
|
||||
|
||||
private:
|
||||
/* 0x0E44 */ J3DModel* mpModel;
|
||||
/* 0x0E44 */ J3DModel* mpPodModel;
|
||||
/* 0x0E48 */ mDoExt_invisibleModel mInvisModel;
|
||||
/* 0x0E50 */ dKy_tevstr_c mTevStr;
|
||||
/* 0x11D8 */ u8 field_0x11D8[0x11DC - 0x11D8];
|
||||
/* 0x11DC */ dCcD_Cyl mCylCc;
|
||||
/* 0x1318 */ dCcD_Sph mSphCc[2];
|
||||
/* 0x1588 */ mDoExt_bckAnm field_0x1588;
|
||||
/* 0x15A4 */ u32 field_0x15a4;
|
||||
/* 0x1588 */ mDoExt_bckAnm mPodBck;
|
||||
/* 0x15A4 */ u32 mPodAnmFlags;
|
||||
/* 0x15A8 */ u32 field_0x15A8;
|
||||
/* 0x15AC */ u8 mType;
|
||||
/* 0x15AD */ u8 mDivideNo;
|
||||
|
|
@ -371,16 +400,17 @@ private:
|
|||
/* 0x15CD */ u8 field_0x15cd;
|
||||
/* 0x15CE */ u8 field_0x15ce;
|
||||
/* 0x15CF */ u8 field_0x15cf;
|
||||
/* 0x15D0 */ u16 field_0x15d0;
|
||||
/* 0x15D4 */ s32 field_0x15d4[3];
|
||||
/* 0x15D0 */ s16 field_0x15d0;
|
||||
/* 0x15D4 */ int field_0x15d4[3];
|
||||
/* 0x15E0 */ daNpc_Kn_prtclMngr_c mParticleMngr[3];
|
||||
/* 0x16F4 */ cXyz field_0x16f4;
|
||||
/* 0x1700 */ u8 field_0x1700[0x170c - 0x1700];
|
||||
/* 0x1700 */ cXyz field_0x1700;
|
||||
/* 0x170C */ u8 field_0x170c;
|
||||
/* 0x170D */ u8 field_0x170d;
|
||||
/* 0x170E */ u8 field_0x170e;
|
||||
/* 0x170F */ u8 field_0x170f;
|
||||
/* 0x1710 */ u8 field_0x1710[4];
|
||||
/* 0x1710 */ s16 field_0x1710;
|
||||
/* 0x1712 */ s16 field_0x1712;
|
||||
/* 0x1714 */ actionFunc mpTeachAction;
|
||||
/* 0x1720 */ actionFunc mpActionFunc;
|
||||
/* 0x172C */ daNpcT_Path_c mPath;
|
||||
|
|
@ -391,19 +421,19 @@ STATIC_ASSERT(sizeof(daNpc_Kn_c) == 0x1758);
|
|||
|
||||
struct daNpc_Kn_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
/* 0x8C */ s16 field_0x8c;
|
||||
/* 0x8E */ s16 field_0x8e;
|
||||
/* 0x90 */ s16 field_0x90;
|
||||
/* 0x92 */ s16 field_0x92;
|
||||
/* 0x94 */ f32 field_0x94;
|
||||
/* 0x98 */ f32 field_0x98;
|
||||
/* 0x9C */ f32 field_0x9c;
|
||||
/* 0xA0 */ f32 field_0xa0;
|
||||
/* 0xA4 */ f32 field_0xa4;
|
||||
/* 0xA8 */ u32 field_0xa8;
|
||||
/* 0xAC */ s16 field_0xac;
|
||||
/* 0xAE */ s16 field_0xae;
|
||||
/* 0xB0 */ f32 field_0xb0;
|
||||
/* 0x8C */ s16 alpha;
|
||||
/* 0x8E */ s16 attack_wait_time;
|
||||
/* 0x90 */ s16 followup_wait_time; // ?
|
||||
/* 0x94 */ f32 small_slide_distance;
|
||||
/* 0x98 */ f32 big_slide_distance;
|
||||
/* 0x9C */ f32 warp_distance;
|
||||
/* 0xA0 */ f32 attack_disappear_speed_h; // ?
|
||||
/* 0xA4 */ f32 attack_disappear_speed_v; // ?
|
||||
/* 0xA8 */ s16 rotation_num;
|
||||
/* 0xAA */ s16 rotation_speed;
|
||||
/* 0xAC */ s16 attack_start_min_time;
|
||||
/* 0xAE */ s16 attack_start_time_range;
|
||||
/* 0xB0 */ f32 move_speed;
|
||||
};
|
||||
|
||||
class daNpc_Kn_Param_c {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ public:
|
|||
/* 80C477B4 */ void hitPrtclSet();
|
||||
|
||||
u8 getActionMode() { return mActionMode; }
|
||||
void setActionMode(u8 i_action) { mActionMode = i_action; }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x70c - 0x568];
|
||||
|
|
|
|||
|
|
@ -949,6 +949,12 @@ public:
|
|||
void onFishingRodReelEnd() { onEndResetFlg0(ERFLG0_UNK_20000); }
|
||||
void onFishingHit() { onEndResetFlg0(ERFLG0_UNK_10000); }
|
||||
void onFishingKeep() { onEndResetFlg2(ERFLG2_UNK_1); }
|
||||
void onTraningCutHead() { onNoResetFlg3(FLG3_UNK_40); }
|
||||
void onTraningCutFast() { onNoResetFlg3(FLG3_UNK_80); }
|
||||
void onTraningCutLargeJump() { onNoResetFlg3(FLG3_UNK_200); }
|
||||
void onTraningCutLargeTurn() { onNoResetFlg3(FLG3_UNK_100); }
|
||||
void onTraningCutDown() { onNoResetFlg3(FLG3_UNK_10); }
|
||||
void onTraningShieldAttack() { onNoResetFlg3(FLG3_UNK_8); }
|
||||
|
||||
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
|
||||
u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
|
||||
|
|
|
|||
|
|
@ -309,6 +309,7 @@ u8 dMeter2Info_getNewLetterNum();
|
|||
int dMeter2Info_setNewLetterSender();
|
||||
bool dMeter2Info_isItemOpenCheck();
|
||||
bool dMeter2Info_isMapOpenCheck();
|
||||
s16 dMeter2Info_getNowLifeGauge();
|
||||
|
||||
inline void dMeter2Info_Initialize() {
|
||||
g_meter2_info.init();
|
||||
|
|
|
|||
|
|
@ -1288,7 +1288,7 @@ void daNpc_GWolf_c::setExpression(int param_0, f32 param_1) {
|
|||
}
|
||||
|
||||
/* 809F4BBC-809F4DE8 001BFC 022C+00 2/0 0/0 0/0 .text setMotionAnm__13daNpc_GWolf_cFif */
|
||||
bool daNpc_GWolf_c::setMotionAnm(int param_0, f32 param_1) {
|
||||
void daNpc_GWolf_c::setMotionAnm(int param_0, f32 param_1) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,747 @@
|
|||
#include "d/actor/d_a_npc_kn.h"
|
||||
|
||||
/* 80A3C998-80A3CB14 012078 017C+00 1/1 0/0 0/0 .text setParamTeach01__10daNpc_Kn_cFv */
|
||||
u32 daNpc_Kn_c::setParamTeach01() {
|
||||
s16 talk_distance = daNpc_Kn_Param_c::m.common.talk_distance;
|
||||
s16 talk_angle = daNpc_Kn_Param_c::m.common.talk_angle;
|
||||
s16 attention_distance = daNpc_Kn_Param_c::m.common.attention_distance;
|
||||
s16 attention_angle = daNpc_Kn_Param_c::m.common.attention_angle;
|
||||
|
||||
switch (mActionMode) {
|
||||
case 0:
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attention_distance, attention_angle);
|
||||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
return 0;
|
||||
case 1:
|
||||
if (field_0x170c != 0) {
|
||||
return 0;
|
||||
}
|
||||
case 2:
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attention_distance, attention_angle);
|
||||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
mAcchCir.SetWallR(daNpc_Kn_Param_c::m.common.width);
|
||||
mAcchCir.SetWallH(daNpc_Kn_Param_c::m.common.knee_length);
|
||||
return 4;
|
||||
case 3:
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attention_distance, attention_angle);
|
||||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
mAcchCir.SetWallR(135.0f);
|
||||
mAcchCir.SetWallH(daNpc_Kn_Param_c::m.common.knee_length);
|
||||
return 4;
|
||||
}
|
||||
|
||||
return 10;
|
||||
}
|
||||
|
||||
/* 80A3CB14-80A3CBFC 0121F4 00E8+00 1/1 0/0 0/0 .text setCollisionTeach01__10daNpc_Kn_cFv
|
||||
*/
|
||||
void daNpc_Kn_c::setCollisionTeach01() {
|
||||
switch (mActionMode) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
mCylCc.SetTgType(-1);
|
||||
mCylCc.SetTgHitMark(CcG_Tg_UNK_MARK_2);
|
||||
mCylCc.SetTgSPrm(0x13);
|
||||
mCylCc.OnTgNoConHit();
|
||||
|
||||
if (field_0x170c == 0) {
|
||||
mCylCc.OnTgShield();
|
||||
} else {
|
||||
mCylCc.OffTgShield();
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
mCylCc.SetTgType(-1);
|
||||
mCylCc.SetTgHitMark(CcG_Tg_UNK_MARK_1);
|
||||
mCylCc.SetTgSPrm(0x13);
|
||||
mCylCc.OffTgShield();
|
||||
mCylCc.OffTgNoAtHitInfSet();
|
||||
mCylCc.OnTgNoConHit();
|
||||
mCylCc.OnCoSetBit();
|
||||
break;
|
||||
case 3:
|
||||
mCylCc.OffTgSetBit();
|
||||
mCylCc.OffCoSetBit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A3CBFC-80A3CCC0 0122DC 00C4+00 1/1 0/0 0/0 .text teach01_selectAction__10daNpc_Kn_cFv */
|
||||
void daNpc_Kn_c::teach01_selectAction() {
|
||||
switch (mActionMode) {
|
||||
case 0:
|
||||
mpTeachAction = &daNpc_Kn_c::teach01_start;
|
||||
return;
|
||||
case 1:
|
||||
mpTeachAction = &daNpc_Kn_c::teach01_attackWait;
|
||||
return;
|
||||
case 2:
|
||||
mpTeachAction = &daNpc_Kn_c::teach01_swordAttackWait;
|
||||
return;
|
||||
case 3:
|
||||
mpTeachAction = &daNpc_Kn_c::teach01_swordFinishWait;
|
||||
return;
|
||||
}
|
||||
|
||||
mpTeachAction = &daNpc_Kn_c::wait;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80A3CCC0-80A3CDFC 0123A0 013C+00 1/0 0/0 0/0 .text teach01_start__10daNpc_Kn_cFPv */
|
||||
int daNpc_Kn_c::teach01_start(void* param_0) {
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
case 1:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
mMode = 2;
|
||||
case 2:
|
||||
mEvtNo = 5;
|
||||
field_0xe39 = 1;
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
case 3:
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A3CDFC-80A3CF78 0124DC 017C+00 1/0 0/0 0/0 .text teach01_attackWait__10daNpc_Kn_cFPv
|
||||
*/
|
||||
int daNpc_Kn_c::teach01_attackWait(void* param_0) {
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
case 1:
|
||||
mMotionSeqMngr.setNo(9, -1.0f, 1, 0);
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
mMode = 2;
|
||||
case 2:
|
||||
if (!ctrlWarp()) {
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
if (mCylCc.ChkTgHit()) {
|
||||
mEvtNo = 6;
|
||||
field_0x16f4.set(1.0f, 1.0f, 1.0f);
|
||||
field_0x170c = 0;
|
||||
field_0x170d = 0;
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x28);
|
||||
}
|
||||
}
|
||||
case 3:
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A3CF78-80A3D32C 012658 03B4+00 1/0 0/0 0/0 .text teach01_swordAttackWait__10daNpc_Kn_cFPv */
|
||||
int daNpc_Kn_c::teach01_swordAttackWait(void* param_0) {
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
case 1:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(9, -1.0f, 0, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.attack_wait_time;
|
||||
mTargetPos = current.pos;
|
||||
field_0x15bc = 0;
|
||||
field_0x15d0 = cLib_getRndValue(daNpc_Kn_Param_c::m.attack_start_min_time, daNpc_Kn_Param_c::m.attack_start_time_range);
|
||||
speedF = 0.0f;
|
||||
speed.zero();
|
||||
mMode = 2;
|
||||
case 2:
|
||||
calcSlip();
|
||||
mCcStts.Move();
|
||||
|
||||
if (mCylCc.ChkTgHit()) {
|
||||
int cut_type = daPy_getPlayerActorClass()->getCutType();
|
||||
if (cut_type == daPy_py_c::CUT_TYPE_JUMP ||
|
||||
cut_type == daPy_py_c::CUT_TYPE_TURN_RIGHT ||
|
||||
cut_type == daPy_py_c::CUT_TYPE_TURN_LEFT ||
|
||||
daPy_getPlayerActorClass()->getCutCount() >= 4)
|
||||
{
|
||||
mActionMode = 3;
|
||||
setAngle(fopAcM_searchPlayerAngleY(this));
|
||||
speedF = -daNpc_Kn_Param_c::m.attack_disappear_speed_h;
|
||||
speed.y = daNpc_Kn_Param_c::m.attack_disappear_speed_v;
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x1f);
|
||||
} else {
|
||||
fopAc_ac_c* aTgHitActor_p = mCylCc.GetTgHitAc();
|
||||
s16 angle = cLib_targetAngleY(&aTgHitActor_p->current.pos, ¤t.pos);
|
||||
cXyz pos(0.0f, 0.0f, daNpc_Kn_Param_c::m.small_slide_distance);
|
||||
mDoMtx_stack_c::YrotS(angle);
|
||||
mDoMtx_stack_c::multVec(&pos, &mTargetPos);
|
||||
mTargetPos += current.pos;
|
||||
field_0x15bc = 1;
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0x1f, -1.0f, 1, 0);
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x1e);
|
||||
}
|
||||
} else {
|
||||
if (cLib_calcTimer(&field_0xdec) == 0 || checkCollisionSword()) {
|
||||
mTargetPos = current.pos;
|
||||
|
||||
int is_lockon = FALSE;
|
||||
if (dComIfGp_getAttention()->LockonTruth()) {
|
||||
is_lockon = TRUE;
|
||||
}
|
||||
|
||||
checkCollisionSword() ? mEvtNo = 4 : mEvtNo = 1;
|
||||
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 1, 0);
|
||||
|
||||
is_lockon ? mFlowNodeNo = 0x2da : mFlowNodeNo = 0x2db;
|
||||
} else {
|
||||
calcSwordAttackMove(1);
|
||||
}
|
||||
}
|
||||
case 3:
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A3D32C-80A3D6D8 012A0C 03AC+00 1/0 0/0 0/0 .text teach01_swordFinishWait__10daNpc_Kn_cFPv */
|
||||
int daNpc_Kn_c::teach01_swordFinishWait(void* param_0) {
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
case 1:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0x12, -1.0f, 0, 0);
|
||||
mSound.startCreatureVoice(Z2SE_KN_V_DAMAGE_L, -1);
|
||||
mJntAnm.lookNone(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.attack_wait_time;
|
||||
mMode = 2;
|
||||
case 2: {
|
||||
mTargetPos = current.pos;
|
||||
int no = mMotionSeqMngr.getNo();
|
||||
if (no == 0x12) {
|
||||
if (speed.y <= 0.0f && mAcch.ChkGroundHit()) {
|
||||
speedF = 0.0f;
|
||||
speed.zero();
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0x13, -1.0f, 0, 0);
|
||||
setLandingPrtcl();
|
||||
}
|
||||
} else if (no == 0x13) {
|
||||
if (mMotionSeqMngr.getStepNo() == 0) {
|
||||
if (mpModelMorf[0]->getFrame() >= 13.0f && mpModelMorf[0]->getFrame() < 14.0f) {
|
||||
setLandingPrtcl();
|
||||
}
|
||||
} else {
|
||||
if (!checkDownFlg()) {
|
||||
cXyz pos(10.0f, 0.0f, 0.0f);
|
||||
onDownFlg();
|
||||
|
||||
u8 backbone_joint = getBackboneJointNo();
|
||||
J3DModel* model = mpModelMorf[0]->getModel();
|
||||
mDoMtx_stack_c::copy(model->getAnmMtx(backbone_joint));
|
||||
mDoMtx_stack_c::multVec(&pos, &field_0x15c0);
|
||||
setDownPos(&field_0x15c0);
|
||||
} else if (checkCutDownHitFlg()) {
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0x14, -1.0f, 0, 0);
|
||||
|
||||
if (mType == 0) {
|
||||
mEvtNo = 7;
|
||||
} else if (mType == 1) {
|
||||
mEvtNo = 9;
|
||||
}
|
||||
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD_STAB, 0x1e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cLib_calcTimer(&field_0xdec) == 0) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN) {
|
||||
offDownFlg();
|
||||
mTargetPos = current.pos;
|
||||
mEvtNo = 3;
|
||||
mFlowNodeNo = 0x2dc;
|
||||
mActionMode = 2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80A3D6D8-80A3DCEC 012DB8 0614+00 3/3 0/0 0/0 .text ctrlWarp__10daNpc_Kn_cFv */
|
||||
int daNpc_Kn_c::ctrlWarp() {
|
||||
int sp28 = 0;
|
||||
|
||||
switch (field_0x170c) {
|
||||
case 0: {
|
||||
cXyz spEC(daPy_getPlayerActorClass()->current.pos);
|
||||
|
||||
bool sp8 = (daPy_getPlayerActorClass()->current.pos - current.pos).absXZ() > daNpc_Kn_Param_c::m.warp_distance;
|
||||
if (sp8) {
|
||||
sp28 = 1;
|
||||
cXyz spE0(0.0f, 0.0f, 600.0f);
|
||||
mDoMtx_stack_c::YrotS(daPy_getPlayerActorClass()->shape_angle.y);
|
||||
mDoMtx_stack_c::multVec(&spE0, &spE0);
|
||||
spE0 += spEC;
|
||||
spE0.y += 1000.0f;
|
||||
|
||||
for (int i = 0; i < 5; i++) {
|
||||
static Vec l_checkOffset[] = {
|
||||
{0.0f, 0.0f, 0.0f},
|
||||
{50.0f, 0.0f, 0.0f},
|
||||
{-50.0f, 0.0f, 0.0f},
|
||||
{0.0f, 0.0f, 50.0f},
|
||||
{0.0f, 0.0f, -50.0f},
|
||||
};
|
||||
|
||||
cXyz spD4 = spE0 + l_checkOffset[i];
|
||||
if (!fopAcM_gc_c::gndCheck(&spD4) || !(fopAcM_gc_c::getGroundY() >= current.pos.y - 100.0f)) {
|
||||
sp28 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (sp28 == 1) {
|
||||
spE0.y = fopAcM_gc_c::getGroundY();
|
||||
field_0x1700 = spE0;
|
||||
field_0x170c = 1;
|
||||
field_0x170d = 0;
|
||||
field_0x16f4.set(1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
sp28 = 1;
|
||||
field_0x170d++;
|
||||
|
||||
static Vec l_WarpInScaleTable[] = {
|
||||
{1.0f, 1.0f, 1.0f},
|
||||
{1.594f, 0.824f, 1.67f},
|
||||
{1.91f, 0.72f, 1.79f},
|
||||
{1.594f, 0.81699997f, 1.67f},
|
||||
{0.4f, 1.5f, 1.0f},
|
||||
{0.0f, 1.3f, 0.0f},
|
||||
{0.0f, 1.0f, 0.0f},
|
||||
{0.0f, 0.0f, 0.0f},
|
||||
};
|
||||
|
||||
if (field_0x170d < 15) {
|
||||
for (int i = 0; i < 7; i++) {
|
||||
static u8 l_warpInTimeTable[] = {1, 4, 8, 11, 13, 14, 15, 16};
|
||||
|
||||
int sp1C = l_warpInTimeTable[i];
|
||||
int sp18 = l_warpInTimeTable[i + 1];
|
||||
if (sp1C <= field_0x170d && sp18 > field_0x170d) {
|
||||
cXyz spC8(l_WarpInScaleTable[i]);
|
||||
cXyz spBC(l_WarpInScaleTable[i + 1]);
|
||||
|
||||
field_0x16f4 = spC8 + (((spBC - spC8) * (field_0x170d - sp1C)) / (sp18 - sp1C));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
field_0x16f4 = l_WarpInScaleTable[7];
|
||||
field_0x170c = 2;
|
||||
field_0x170d = 0;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
sp28 = 1;
|
||||
field_0x170d++;
|
||||
if (field_0x170d >= 5) {
|
||||
field_0x170d = 0;
|
||||
field_0x170c = 3;
|
||||
setPos(field_0x1700);
|
||||
setAngle(fopAcM_searchPlayerAngleY(this));
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
sp28 = 1;
|
||||
field_0x170d++;
|
||||
|
||||
static Vec l_WarpOutScaleTable[] = {
|
||||
{0.0f, 1.0f, 0.0f},
|
||||
{0.0f, 1.32f, 0.0f},
|
||||
{0.594f, 1.5f, 1.0f},
|
||||
{1.0f, 1.0f, 1.0f},
|
||||
};
|
||||
|
||||
if (field_0x170d < 6) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
static u8 l_warpOutTimeTable[] = {1, 3, 5, 6};
|
||||
|
||||
int sp10 = l_warpOutTimeTable[i];
|
||||
int spC = l_warpOutTimeTable[i + 1];
|
||||
if (sp10 <= field_0x170d && spC > field_0x170d) {
|
||||
cXyz spB0(l_WarpOutScaleTable[i]);
|
||||
cXyz spA4(l_WarpOutScaleTable[i + 1]);
|
||||
|
||||
field_0x16f4 = spB0 + (((spA4 - spB0) * (field_0x170d - sp10)) / (spC - sp10));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
field_0x16f4 = l_WarpOutScaleTable[3];
|
||||
field_0x170c = 0;
|
||||
field_0x170d = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return sp28;
|
||||
}
|
||||
|
||||
/* 80A3DCEC-80A3DEC4 0133CC 01D8+00 1/0 0/0 0/0 .text ECut_firstEncount__10daNpc_Kn_cFi
|
||||
*/
|
||||
int daNpc_Kn_c::ECut_firstEncount(int i_idx) {
|
||||
dEvent_manager_c* event_manager = &dComIfGp_getEventManager();
|
||||
|
||||
int rt = 0;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
||||
if (event_manager->getIsAddvance(i_idx)) {
|
||||
switch (prm) {
|
||||
case 0:
|
||||
mJntAnm.lookPlayer(0);
|
||||
mActionMode = 1;
|
||||
break;
|
||||
case 10:
|
||||
daPy_getPlayerActorClass()->changeDemoMoveAngle(fopAcM_searchPlayerAngleY(this) + 0x8000);
|
||||
field_0xdec = 52;
|
||||
break;
|
||||
case 20:
|
||||
break;
|
||||
case 30:
|
||||
mMotionSeqMngr.setNo(9, -1.0f, 1, 0);
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (prm) {
|
||||
case 0:
|
||||
rt = 1;
|
||||
break;
|
||||
case 10:
|
||||
if (cLib_calcTimer<int>(&field_0xdec) == 0) {
|
||||
fopAc_ac_c* parent_p = (fopAc_ac_c*)fpcM_SearchByID(parentActorID);
|
||||
if (parent_p != NULL) {
|
||||
fopAcM_delete(parent_p);
|
||||
}
|
||||
|
||||
field_0xe2c = 0;
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
rt = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 80A3DEC4-80A3E550 0135A4 068C+00 1/0 0/0 0/0 .text ECut_attackFailed__10daNpc_Kn_cFi
|
||||
*/
|
||||
int daNpc_Kn_c::ECut_attackFailed(int i_idx) {
|
||||
dEvent_manager_c* event_manager = &dComIfGp_getEventManager();
|
||||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
||||
if (event_manager->getIsAddvance(i_idx)) {
|
||||
switch (prm) {
|
||||
case 0:
|
||||
daNpcT_offTmpBit(0xB);
|
||||
daNpcT_offTmpBit(0xC);
|
||||
daNpcT_offTmpBit(0xD);
|
||||
|
||||
mMotionSeqMngr.setNo(0x1A, -1.0f, 1, 0);
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = 12;
|
||||
break;
|
||||
case 10:
|
||||
break;
|
||||
case 20:
|
||||
initTalk(0x2D6, NULL);
|
||||
break;
|
||||
case 25:
|
||||
initTalk(0x2D6, NULL);
|
||||
break;
|
||||
case 30:
|
||||
initTalk(0x2D6, NULL);
|
||||
break;
|
||||
case 40:
|
||||
initTalk(0x2D6, NULL);
|
||||
break;
|
||||
case 50: {
|
||||
Z2GetAudioMgr()->bgmStart(Z2BGM_OUGI_TRAINING, 0, 0);
|
||||
current.pos = home.pos;
|
||||
old.pos = home.pos;
|
||||
setAngle(home.angle.y);
|
||||
|
||||
cXyz sp18(0.0f, 0.0f, 375.0f);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(home.angle.y);
|
||||
mDoMtx_stack_c::multVec(&sp18, &sp18);
|
||||
|
||||
cXyz spC(sp18);
|
||||
spC.y += 500.0f;
|
||||
if (fopAcM_gc_c::gndCheck(&spC)) {
|
||||
sp18.y = fopAcM_gc_c::getGroundY();
|
||||
}
|
||||
|
||||
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&sp18, fopAcM_searchPlayerAngleY(this) + 0x8000, 0);
|
||||
daPy_getPlayerActorClass()->onTraningCutDown();
|
||||
break;
|
||||
}
|
||||
case 60:
|
||||
initTalk(0x2D8, NULL);
|
||||
break;
|
||||
case 70:
|
||||
initTalk(0x2D9, NULL);
|
||||
break;
|
||||
case 80:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(24, -1.0f, 1, 0);
|
||||
mJntAnm.lookNone(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (prm) {
|
||||
case 0:
|
||||
if (cLib_calcTimer<int>(&field_0xdec) == 0 && daPy_getPlayerActorClass()->checkPlayerFly()) {
|
||||
rt = 1;
|
||||
daPy_getPlayerActorClass()->onLargeDamageUpStop();
|
||||
} else if (field_0xdec == 1) {
|
||||
daPy_getPlayerActorClass()->changeDemoMoveAngle(fopAcM_searchPlayerAngleY(this) + 0x8000);
|
||||
daPy_getPlayerActorClass()->setThrowDamage(fopAcM_searchPlayerAngleY(this), 20.0f, 30.0f, 0, 1, 0);
|
||||
}
|
||||
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
break;
|
||||
case 10:
|
||||
if (!daPy_getPlayerActorClass()->checkPlayerFly()) {
|
||||
rt = 1;
|
||||
}
|
||||
|
||||
daPy_getPlayerActorClass()->onLargeDamageUpStop();
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
break;
|
||||
case 20:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
} else {
|
||||
daPy_getPlayerActorClass()->onLargeDamageUpStop();
|
||||
}
|
||||
break;
|
||||
case 40:
|
||||
case 30:
|
||||
case 25:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 50:
|
||||
setAngle(fopAcM_searchPlayerAngleY(this));
|
||||
rt = 1;
|
||||
break;
|
||||
case 70:
|
||||
case 60:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 80:
|
||||
if (mMotionSeqMngr.getNo() == 0x18 && mMotionSeqMngr.getStepNo() > 0) {
|
||||
rt = 1;
|
||||
mActionMode = 2;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
rt = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 80A3E550-80A3EB84 013C30 0634+00 3/0 0/0 0/0 .text ECut_firstSkillGet__10daNpc_Kn_cFi
|
||||
*/
|
||||
int daNpc_Kn_c::ECut_firstSkillGet(int i_idx) {
|
||||
dEvent_manager_c* event_manager = &dComIfGp_getEventManager();
|
||||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
||||
if (event_manager->getIsAddvance(i_idx)) {
|
||||
switch (prm) {
|
||||
case 0:
|
||||
daNpcT_offTmpBit(0xB);
|
||||
daNpcT_offTmpBit(0xC);
|
||||
daNpcT_offTmpBit(0xD);
|
||||
daNpcT_offTmpBit(0xE);
|
||||
daNpcT_offTmpBit(0xF);
|
||||
field_0xdec = 30;
|
||||
break;
|
||||
case 2:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0x15, -1.0f, 0, 0);
|
||||
break;
|
||||
case 4:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0x16, -1.0f, 0, 0);
|
||||
break;
|
||||
case 6:
|
||||
mJntAnm.lookNone(0);
|
||||
break;
|
||||
case 10: {
|
||||
mStepMode = 2;
|
||||
|
||||
cXyz sp1C(0.0f, 0.0f, 500.0f);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(cLib_targetAngleY(¤t.pos, &home.pos));
|
||||
mDoMtx_stack_c::multVec(&sp1C, &sp1C);
|
||||
|
||||
cXyz sp10(sp1C);
|
||||
sp10.y += 500.0f;
|
||||
if (fopAcM_gc_c::gndCheck(&sp10)) {
|
||||
sp1C.y = fopAcM_gc_c::getGroundY();
|
||||
}
|
||||
|
||||
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&sp1C, (s16)cLib_targetAngleY(&home.pos, ¤t.pos), 0);
|
||||
initTalk(0x2DD, NULL);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
setAngle(fopAcM_searchPlayerAngleY(this));
|
||||
break;
|
||||
case 15:
|
||||
Z2GetAudioMgr()->bgmStreamPrepare(0x2000038);
|
||||
Z2GetAudioMgr()->bgmStreamPlay();
|
||||
break;
|
||||
case 20:
|
||||
initTalk(0x2DD, NULL);
|
||||
break;
|
||||
case 30:
|
||||
initTalk(0x2DD, NULL);
|
||||
break;
|
||||
case 40:
|
||||
initTalk(0x2DD, NULL);
|
||||
break;
|
||||
case 50:
|
||||
initTalk(0x2DD, NULL);
|
||||
break;
|
||||
case 60:
|
||||
initTalk(0x2DD, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (prm) {
|
||||
case 0:
|
||||
if (cLib_calcTimer<int>(&field_0xdec) == 0) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (mMotionSeqMngr.getNo() == 0x15 && mMotionSeqMngr.getStepNo() > 0 && mMorfLoops != 0) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (mMotionSeqMngr.getNo() == 0x16 && mMotionSeqMngr.getStepNo() > 0) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (mCurAngle.y != fopAcM_searchPlayerAngleY(this)) {
|
||||
if (step(fopAcM_searchPlayerAngleY(this), 1, 0x20, 20, 0)) {
|
||||
rt = 1;
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
|
||||
}
|
||||
} else {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
if (field_0x170e == 0) {
|
||||
field_0x170e = 1;
|
||||
Z2GetAudioMgr()->bgmStop(0x32, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
break;
|
||||
case 30:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
break;
|
||||
case 40:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 50:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 60:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
rt = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
|
@ -0,0 +1,645 @@
|
|||
#include "d/actor/d_a_npc_kn.h"
|
||||
#include "d/actor/d_a_obj_knBullet.h"
|
||||
|
||||
/* 80A3EB84-80A3EE38 014264 02B4+00 1/1 0/0 0/0 .text setParamTeach02__10daNpc_Kn_cFv */
|
||||
u32 daNpc_Kn_c::setParamTeach02() {
|
||||
s16 talk_distance = daNpc_Kn_Param_c::m.common.talk_distance;
|
||||
s16 talk_angle = daNpc_Kn_Param_c::m.common.talk_angle;
|
||||
s16 attention_distance = daNpc_Kn_Param_c::m.common.attention_distance;
|
||||
s16 attention_angle = daNpc_Kn_Param_c::m.common.attention_angle;
|
||||
f32 radius = daNpc_Kn_Param_c::m.common.attention_offset;
|
||||
f32 height = daNpc_Kn_Param_c::m.common.height;
|
||||
|
||||
switch (mActionMode) {
|
||||
case 7:
|
||||
case 6:
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attention_distance, attention_angle);
|
||||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
return 4;
|
||||
case 5: {
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attention_distance, attention_angle);
|
||||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
cXyz pos;
|
||||
mDoMtx_stack_c::copy(mpModelMorf[0]->getModel()->getAnmMtx(getBackboneJointNo()));
|
||||
mDoMtx_stack_c::multVecZero(&pos);
|
||||
|
||||
f32 absxz = (daPy_getPlayerActorClass()->current.pos - pos).absXZ();
|
||||
|
||||
if (absxz < 255.0f) {
|
||||
return 0x200004;
|
||||
} else {
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
case 4:
|
||||
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(attention_distance, attention_angle);
|
||||
attention_info.distances[fopAc_attn_BATTLE_e] = 0xe4;
|
||||
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(talk_distance, talk_angle);
|
||||
mAcchCir.SetWallR(daNpc_Kn_Param_c::m.common.width);
|
||||
mAcchCir.SetWallH(daNpc_Kn_Param_c::m.common.knee_length);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 10;
|
||||
}
|
||||
|
||||
/* 80A3EE38-80A3EF1C 014518 00E4+00 1/1 0/0 0/0 .text setCollisionTeach02__10daNpc_Kn_cFv
|
||||
*/
|
||||
void daNpc_Kn_c::setCollisionTeach02() {
|
||||
switch (mActionMode) {
|
||||
case 4:
|
||||
break;
|
||||
case 5:
|
||||
mCylCc.SetTgType(-1);
|
||||
mCylCc.SetTgHitMark(CcG_Tg_UNK_MARK_2);
|
||||
mCylCc.SetTgSPrm(0x13);
|
||||
mCylCc.OnTgShield();
|
||||
mCylCc.OffTgNoAtHitInfSet();
|
||||
mCylCc.OnTgNoConHit();
|
||||
break;
|
||||
case 6:
|
||||
mCylCc.SetTgType(-1);
|
||||
mCylCc.SetTgHitMark(CcG_Tg_UNK_MARK_1);
|
||||
mCylCc.SetTgSPrm(0x13);
|
||||
mCylCc.OffTgShield();
|
||||
mCylCc.OffTgNoAtHitInfSet();
|
||||
mCylCc.OnTgNoConHit();
|
||||
break;
|
||||
case 7:
|
||||
mCylCc.SetTgType(-1);
|
||||
mCylCc.SetTgHitMark(CcG_Tg_UNK_MARK_2);
|
||||
mCylCc.SetTgSPrm(0x13);
|
||||
mCylCc.OffTgShield();
|
||||
mCylCc.OnTgNoConHit();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A3EF1C-80A3EFE0 0145FC 00C4+00 1/1 0/0 0/0 .text teach02_selectAction__10daNpc_Kn_cFv */
|
||||
void daNpc_Kn_c::teach02_selectAction() {
|
||||
switch (mActionMode) {
|
||||
case 4:
|
||||
mpTeachAction = &daNpc_Kn_c::teach02_start;
|
||||
return;
|
||||
case 5:
|
||||
mpTeachAction = &daNpc_Kn_c::teach02_shieldBashWait;
|
||||
return;
|
||||
case 6:
|
||||
mpTeachAction = &daNpc_Kn_c::teach02_finishWait;
|
||||
return;
|
||||
case 7:
|
||||
mpTeachAction = &daNpc_Kn_c::teach02_shieldReflectWait;
|
||||
return;
|
||||
}
|
||||
|
||||
mpTeachAction = &daNpc_Kn_c::wait;
|
||||
return;
|
||||
}
|
||||
|
||||
/* 80A3EFE0-80A3F358 0146C0 0378+00 1/0 0/0 0/0 .text teach02_shieldBashWait__10daNpc_Kn_cFPv */
|
||||
int daNpc_Kn_c::teach02_shieldBashWait(void* param_0) {
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
case 1:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(9, -1.0f, 0, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.attack_wait_time;
|
||||
mTargetPos = current.pos;
|
||||
field_0x15bc = 0;
|
||||
field_0x15d0 =
|
||||
cLib_getRndValue(daNpc_Kn_Param_c::m.attack_start_min_time, daNpc_Kn_Param_c::m.attack_start_time_range);
|
||||
speedF = 0.0f;
|
||||
speed.zero();
|
||||
mMode = 2;
|
||||
case 2:
|
||||
mCcStts.Move();
|
||||
|
||||
if (mCylCc.ChkTgShieldHit()) {
|
||||
u8 cut_type = daPy_getPlayerActorClass()->getCutType();
|
||||
|
||||
if (cut_type == daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
|
||||
s16 angle = cLib_targetAngleY(&daPy_getPlayerActorClass()->current.pos,
|
||||
&attention_info.position);
|
||||
cXyz pos(0.0f, 0.0f, daNpc_Kn_Param_c::m.small_slide_distance);
|
||||
|
||||
mDoMtx_stack_c::YrotS(angle);
|
||||
mDoMtx_stack_c::multVec(&pos, &mTargetPos);
|
||||
mTargetPos += current.pos;
|
||||
field_0x15bc = 1;
|
||||
mCylCc.ClrTgHit();
|
||||
mActionMode = 6;
|
||||
mSound.startCollisionSE(Z2SE_HIT_SHIELD_ATTACK, 0x28);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!cLib_calcTimer(&field_0xdec) || checkCollisionSword()) {
|
||||
BOOL is_lockon = FALSE;
|
||||
if (dComIfGp_getAttention()->LockonTruth()) {
|
||||
is_lockon = TRUE;
|
||||
}
|
||||
|
||||
if (checkCollisionSword()) {
|
||||
mEvtNo = 4;
|
||||
} else {
|
||||
mEvtNo = 1;
|
||||
}
|
||||
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 1, 0);
|
||||
|
||||
if (is_lockon) {
|
||||
mFlowNodeNo = 0x2c0;
|
||||
} else {
|
||||
mFlowNodeNo = 0x2bf;
|
||||
}
|
||||
} else {
|
||||
if (mCylCc.ChkTgHit()) {
|
||||
if (!mCylCc.GetTgHitObj()->ChkAtType(0x10)) {
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0x1b, -1.0f, 1, 0);
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x28);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
calcSwordAttackMove(1);
|
||||
}
|
||||
case 3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80A3F358-80A3F5A4 014A38 024C+00 1/0 0/0 0/0 .text teach02_finishWait__10daNpc_Kn_cFPv
|
||||
*/
|
||||
int daNpc_Kn_c::teach02_finishWait(void* param_0) {
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
case 1:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(11, -1.0f, 1, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = daNpc_Kn_Param_c::m.followup_wait_time;
|
||||
mMode = 2;
|
||||
case 2:
|
||||
calcSlip();
|
||||
mCcStts.Move();
|
||||
|
||||
if (mCylCc.ChkTgHit()) {
|
||||
u8 cut_type = daPy_getPlayerActorClass()->getCutType();
|
||||
|
||||
if (cut_type != daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
|
||||
if (mType == 1) {
|
||||
mEvtNo = 10;
|
||||
} else if (mType == 2) {
|
||||
mEvtNo = 12;
|
||||
}
|
||||
|
||||
cXyz pos(0.0f, 0.0f, daNpc_Kn_Param_c::m.big_slide_distance);
|
||||
mDoMtx_stack_c::YrotS(cLib_targetAngleY(&daPy_getPlayerActorClass()->current.pos,
|
||||
&attention_info.position));
|
||||
mDoMtx_stack_c::multVec(&pos, &mTargetPos);
|
||||
mTargetPos += current.pos;
|
||||
field_0x15bc = 1;
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x1e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!cLib_calcTimer(&field_0xdec)) {
|
||||
mEvtNo = 1;
|
||||
mFlowNodeNo = 0x2c1;
|
||||
mActionMode = 5;
|
||||
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 1, 0);
|
||||
}
|
||||
case 3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80A3F5A4-80A3F99C 014C84 03F8+00 1/0 0/0 0/0 .text teach02_shieldReflectWait__10daNpc_Kn_cFPv
|
||||
*/
|
||||
int daNpc_Kn_c::teach02_shieldReflectWait(void* param_0) {
|
||||
|
||||
switch (mMode) {
|
||||
case 0:
|
||||
case 1:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(32, -1.0f, 0, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
mMode = 2;
|
||||
case 2:
|
||||
mCcStts.Move();
|
||||
|
||||
if (field_0x15bd != 0) {
|
||||
if (!daPy_getPlayerActorClass()->checkPlayerFly()) {
|
||||
mEvtNo = 2;
|
||||
if (field_0x15bd == 1) {
|
||||
mFlowNodeNo = 0x2C4;
|
||||
} else if (field_0x15bd == 2) {
|
||||
mFlowNodeNo = 0x2C3;
|
||||
}
|
||||
field_0x15bd = 0;
|
||||
}
|
||||
} else {
|
||||
if (parentActorID == fpcM_ERROR_PROCESS_ID_e || fpcM_SearchByID(parentActorID) == NULL) {
|
||||
if (mMotionSeqMngr.getNo() == 0x19 && mMotionSeqMngr.getStepNo() == 0) {
|
||||
if (mpModelMorf[0]->getFrame() >= 2.0f && mpModelMorf[0]->getFrame() < 3.0f) {
|
||||
cXyz sp20(150.0f, 0.0f, 0.0f);
|
||||
mDoMtx_stack_c::copy(mpModelMorf[0]->getModel()->getAnmMtx(0xD));
|
||||
mDoMtx_stack_c::multVec(&sp20, &sp20);
|
||||
parentActorID = fopAcM_createChild(PROC_KN_BULLET, fopAcM_GetID(this), 0, &sp20, fopAcM_GetRoomNo(this), ¤t.angle, NULL, -1, NULL);
|
||||
}
|
||||
} else {
|
||||
mMotionSeqMngr.setNo(0x19, -1.0f, 1, 0);
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
}
|
||||
} else {
|
||||
fopAc_ac_c* parent_p;
|
||||
if (fopAcM_SearchByID(parentActorID, &parent_p) && parent_p != NULL && fopAcM_GetName(parent_p) == PROC_KN_BULLET && ((daObjKnBullet_c*)parent_p)->getActionMode() == 0) {
|
||||
if (mpModelMorf[0]->getFrame() >= 34.0f && mpModelMorf[0]->getFrame() < 35.0f) {
|
||||
((daObjKnBullet_c*)parent_p)->setActionMode(1);
|
||||
parent_p->current.angle.y = mCurAngle.y;
|
||||
parent_p->shape_angle.y = mCurAngle.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mCylCc.ChkTgHit()) {
|
||||
fopAc_ac_c* aTgHitActor_p = mCylCc.GetTgHitAc();
|
||||
JUT_ASSERT(437, 0 != aTgHitActor_p);
|
||||
|
||||
if (fopAcM_GetName(aTgHitActor_p) == PROC_KN_BULLET) {
|
||||
mEvtNo = 0xB;
|
||||
|
||||
s16 var_r27 = cLib_targetAngleY(&aTgHitActor_p->current.pos, ¤t.pos);
|
||||
cXyz sp14(0.0f, 0.0f, daNpc_Kn_Param_c::m.big_slide_distance);
|
||||
mDoMtx_stack_c::YrotS(var_r27);
|
||||
mDoMtx_stack_c::multVec(&sp14, &mTargetPos);
|
||||
mTargetPos += current.pos;
|
||||
field_0x15bc = 1;
|
||||
mSound.startCollisionSE(Z2SE_HIT_HARD_BODY, 0x1E);
|
||||
}
|
||||
}
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80A3F99C-80A3FFB4 01507C 0618+00 3/0 0/0 0/0 .text ECut_secondSkillExplain__10daNpc_Kn_cFi */
|
||||
int daNpc_Kn_c::ECut_secondSkillExplain(int i_idx) {
|
||||
dEvent_manager_c* event_manager = &dComIfGp_getEventManager();
|
||||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
||||
if (event_manager->getIsAddvance(i_idx)) {
|
||||
switch (prm) {
|
||||
case 0:
|
||||
field_0xdec = 30;
|
||||
break;
|
||||
case 2:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(21, -1.0f, 0, 0);
|
||||
break;
|
||||
case 4:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(22, -1.0f, 0, 0);
|
||||
break;
|
||||
case 6:
|
||||
mJntAnm.lookNone(0);
|
||||
break;
|
||||
case 10:
|
||||
mStepMode = 2;
|
||||
initTalk(0x2D7, NULL);
|
||||
break;
|
||||
case 20: {
|
||||
Z2GetAudioMgr()->bgmStart(Z2BGM_OUGI_TRAINING, 0, 0);
|
||||
|
||||
setPos(home.pos);
|
||||
setAngle(home.angle.y);
|
||||
|
||||
cXyz sp64(0.0f, 0.0f, 375.0f);
|
||||
mDoMtx_stack_c::transS(home.pos);
|
||||
mDoMtx_stack_c::YrotM(home.angle.y);
|
||||
mDoMtx_stack_c::multVec(&sp64, &sp64);
|
||||
|
||||
cXyz sp58(sp64);
|
||||
sp58.y += 500.0f;
|
||||
if (fopAcM_gc_c::gndCheck(&sp58)) {
|
||||
sp64.y = fopAcM_gc_c::getGroundY() + 15.0f;
|
||||
}
|
||||
|
||||
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&sp64, home.angle.y + 0x8000, 0);
|
||||
daPy_getPlayerActorClass()->onTraningShieldAttack();
|
||||
break;
|
||||
}
|
||||
case 30:
|
||||
initTalk(0x2C6, NULL);
|
||||
break;
|
||||
case 40:
|
||||
initTalk(0x2BE, NULL);
|
||||
break;
|
||||
case 50:
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(24, -1.0f, 1, 0);
|
||||
mJntAnm.lookNone(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (prm) {
|
||||
case 0:
|
||||
if (cLib_calcTimer<int>(&field_0xdec) == 0) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (mMotionSeqMngr.getNo() == 0x15 && mMotionSeqMngr.getStepNo() > 0 && mMorfLoops != 0) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (mMotionSeqMngr.getNo() == 0x16 && mMotionSeqMngr.getStepNo() > 0) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (mCurAngle.y != fopAcM_searchPlayerAngleY(this)) {
|
||||
if (step(fopAcM_searchPlayerAngleY(this), 1, 0x20, 20, 0)) {
|
||||
rt = 1;
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
|
||||
}
|
||||
} else {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 20: {
|
||||
cXyz sp28(0.0f, 0.0f, 375.0f);
|
||||
mDoMtx_stack_c::transS(home.pos);
|
||||
mDoMtx_stack_c::YrotM(home.angle.y);
|
||||
mDoMtx_stack_c::multVec(&sp28, &sp28);
|
||||
|
||||
cXyz sp1C(sp28);
|
||||
sp1C.y += 500.0f;
|
||||
if (fopAcM_gc_c::gndCheck(&sp1C)) {
|
||||
sp28.y = fopAcM_gc_c::getGroundY();
|
||||
}
|
||||
|
||||
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&sp28, home.angle.y + 0x8000, 0);
|
||||
rt = 1;
|
||||
break;
|
||||
}
|
||||
case 30:
|
||||
case 40:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 50:
|
||||
if (mMotionSeqMngr.getNo() == 0x18 && mMotionSeqMngr.getStepNo() > 0) {
|
||||
rt = 1;
|
||||
mActionMode = 5;
|
||||
offDownFlg();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
rt = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 80A3FFB4-80A403B8 015694 0404+00 1/0 0/0 0/0 .text ECut_reflectExplain__10daNpc_Kn_cFi
|
||||
*/
|
||||
int daNpc_Kn_c::ECut_reflectExplain(int i_idx) {
|
||||
dEvent_manager_c* event_manager = &dComIfGp_getEventManager();
|
||||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
||||
if (event_manager->getIsAddvance(i_idx)) {
|
||||
switch (prm) {
|
||||
case 0:
|
||||
daNpcT_offTmpBit(0xB);
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(28, -1.0f, 1, 0);
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = 30;
|
||||
break;
|
||||
case 10:
|
||||
mStepMode = 2;
|
||||
initTalk(0x2C2, NULL);
|
||||
break;
|
||||
case 20: {
|
||||
setPos(home.pos);
|
||||
setAngle(home.angle.y);
|
||||
|
||||
cXyz sp24(0.0f, 0.0f, 600.0f);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(home.angle.y);
|
||||
mDoMtx_stack_c::multVec(&sp24, &sp24);
|
||||
|
||||
cXyz sp18(sp24);
|
||||
sp18.y += 500.0f;
|
||||
if (fopAcM_gc_c::gndCheck(&sp18)) {
|
||||
sp24.y = fopAcM_gc_c::getGroundY();
|
||||
}
|
||||
|
||||
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&sp24, home.angle.y + 0x8000, 0);
|
||||
break;
|
||||
}
|
||||
case 30:
|
||||
initTalk(0x2C2, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (prm) {
|
||||
case 0:
|
||||
if (cLib_calcTimer<int>(&field_0xdec) == 0) {
|
||||
mTargetPos = current.pos;
|
||||
field_0x15bc = 0;
|
||||
speedF = 0.0f;
|
||||
speed.zero();
|
||||
|
||||
if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) {
|
||||
rt = 1;
|
||||
} else if (step(fopAcM_searchPlayerAngleY(this), 1, 0x20, 20, 0)) {
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
|
||||
}
|
||||
} else {
|
||||
calcSlip();
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
rt = 1;
|
||||
break;
|
||||
case 30:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
mActionMode = 7;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
rt = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
/* 80A403B8-80A408B4 015A98 04FC+00 2/0 0/0 0/0 .text ECut_secondSkillGet__10daNpc_Kn_cFi
|
||||
*/
|
||||
int daNpc_Kn_c::ECut_secondSkillGet(int i_idx) {
|
||||
dEvent_manager_c* event_manager = &dComIfGp_getEventManager();
|
||||
int sp8 = 0;
|
||||
|
||||
int rt = 0;
|
||||
int prm = -1;
|
||||
|
||||
int* prm_p = dComIfGp_evmng_getMyIntegerP(i_idx, "prm");
|
||||
if (prm_p != NULL) {
|
||||
prm = *prm_p;
|
||||
}
|
||||
|
||||
if (event_manager->getIsAddvance(i_idx)) {
|
||||
switch (prm) {
|
||||
case 0:
|
||||
daNpcT_offTmpBit(0xB);
|
||||
daNpcT_offTmpBit(0xC);
|
||||
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(28, -1.0f, 1, 0);
|
||||
|
||||
mJntAnm.lookPlayer(0);
|
||||
field_0xdec = 30;
|
||||
break;
|
||||
case 10: {
|
||||
mStepMode = 2;
|
||||
|
||||
cXyz sp18(0.0f, 0.0f, 500.0f);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(cLib_targetAngleY(¤t.pos, &home.pos));
|
||||
mDoMtx_stack_c::multVec(&sp18, &sp18);
|
||||
|
||||
cXyz spC(sp18);
|
||||
spC.y += 500.0f;
|
||||
if (fopAcM_gc_c::gndCheck(&spC)) {
|
||||
sp18.y = fopAcM_gc_c::getGroundY();
|
||||
}
|
||||
|
||||
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&sp18, (s16)cLib_targetAngleY(&home.pos, ¤t.pos), 0);
|
||||
initTalk(0x2C5, NULL);
|
||||
break;
|
||||
}
|
||||
case 12:
|
||||
setAngle(fopAcM_searchPlayerAngleY(this));
|
||||
break;
|
||||
case 15:
|
||||
Z2GetAudioMgr()->bgmStreamPrepare(0x2000038);
|
||||
Z2GetAudioMgr()->bgmStreamPlay();
|
||||
break;
|
||||
case 20:
|
||||
initTalk(0x2C5, NULL);
|
||||
break;
|
||||
case 30:
|
||||
initTalk(0x2C5, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (prm) {
|
||||
case 0:
|
||||
if (cLib_calcTimer<int>(&field_0xdec) == 0) {
|
||||
mTargetPos = current.pos;
|
||||
field_0x15bc = 0;
|
||||
speedF = 0.0f;
|
||||
speed.zero();
|
||||
|
||||
if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) {
|
||||
rt = 1;
|
||||
} else if (step(fopAcM_searchPlayerAngleY(this), 1, 0x20, 20, 0)) {
|
||||
mFaceMotionSeqMngr.setNo(1, -1.0f, 0, 0);
|
||||
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
|
||||
}
|
||||
} else {
|
||||
calcSlip();
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
if (field_0x170e == 0) {
|
||||
field_0x170e = 1;
|
||||
Z2GetAudioMgr()->bgmStop(0x32, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
rt = 1;
|
||||
}
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
break;
|
||||
case 30:
|
||||
if (talkProc(NULL, 0, NULL, 0)) {
|
||||
setSceneChange(1);
|
||||
}
|
||||
cLib_addCalcAngleS2(&mCurAngle.y, fopAcM_searchPlayerAngleY(this), 2, 0x800);
|
||||
setAngle(mCurAngle.y);
|
||||
break;
|
||||
default:
|
||||
rt = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
return rt;
|
||||
}
|
||||
Loading…
Reference in New Issue