Files
tww/include/d/actor/d_a_rd.h
T
2025-03-28 20:44:06 -04:00

232 lines
6.3 KiB
C++

#ifndef D_A_RD_H
#define D_A_RD_H
#include "d/d_npc.h"
#include "d/d_jnt_hit.h"
#include "m_Do/m_Do_hostIO.h"
#include "SSystem/SComponent/c_phase.h"
#include "c/c_damagereaction.h"
class daRd_HIO_c : public mDoHIO_entry_c {
public:
daRd_HIO_c();
virtual ~daRd_HIO_c() {}
void genMessage(JORMContext* ctx);
public:
/* 0x04 */ dNpc_HIO_c mNpc;
/* 0x2C */ u8 m2C;
/* 0x2D */ u8 m2D[0x30 - 0x2D];
/* 0x30 */ f32 m30;
/* 0x34 */ f32 m34;
/* 0x38 */ f32 mCryRadius;
/* 0x3C */ f32 mAttackRadius;
/* 0x40 */ s16 m40;
/* 0x42 */ s16 mCrySpreadAngle;
/* 0x44 */ s16 mAttackSpreadAngle;
/* 0x46 */ s16 m46;
/* 0x48 */ s16 m48;
/* 0x4A */ s16 m4A;
/* 0x4C */ s16 m4C;
/* 0x4E */ s16 m4E;
/* 0x50 */ s16 m50;
/* 0x52 */ s16 m52;
/* 0x54 */ s16 m54;
/* 0x56 */ u8 m56[0x58 - 0x56];
/* 0x58 */ f32 m58;
/* 0x5C */ f32 m5C;
/* 0x60 */ f32 m60;
/* 0x64 */ f32 m64;
/* 0x68 */ f32 m68;
/* 0x6C */ f32 mReturnWalkSpeed;
/* 0x70 */ f32 m70;
/* 0x74 */ f32 m74;
/* 0x78 */ s16 m78;
/* 0x7A */ s16 mParalysisDuration;
/* 0x7C */ JntHit_HIO_c m7C;
};
class daRd_c : public fopEn_enemy_c {
public:
enum Proc_e {
PROC_INIT = 0,
PROC_EXEC = 1,
};
enum Mode {
MODE_WAIT = 0x0,
MODE_DAMAGE = 0x1,
MODE_PARALYSIS = 0x2,
MODE_DEATH = 0x3,
MODE_MOVE = 0x4,
MODE_CRY = 0x5,
MODE_CRY_WAIT = 0x6,
MODE_ATTACK = 0x7,
MODE_RETURN = 0x8,
MODE_SILENT_PRAY = 0x9,
MODE_SW_WAIT = 0xA,
MODE_KANOKE = 0xB,
MODE_NULL,
};
enum BckIdx {
BckIdx_TACHIP = 0x0,
BckIdx_SUWARIP = 0x1,
BckIdx_WALK2ATACK = 0x2,
BckIdx_ATACK = 0x3,
BckIdx_ATACK2WALK = 0x4,
BckIdx_WALK = 0x5,
BckIdx_DAMAGE = 0x6,
BckIdx_DEAD = 0x7,
BckIdx_TATSU = 0x8,
BckIdx_SUWARU = 0x9,
BckIdx_KANOKEP = 0xA,
BckIdx_BEAM_HIT = 0xB,
BckIdx_BEAM = 0xC,
BckIdx_BEAM_END = 0xD,
};
enum AnmPrm {
AnmPrm_TACHIP0 = 0x0,
AnmPrm_TACHIP1 = 0x1,
AnmPrm_SUWARIP = 0x2,
AnmPrm_WALK2ATACK = 0x3,
AnmPrm_ATACK = 0x4,
AnmPrm_ATACK2WALK = 0x5,
AnmPrm_WALK = 0x6,
AnmPrm_DAMAGE = 0x7,
AnmPrm_DEAD = 0x8,
AnmPrm_TATSU = 0x9,
AnmPrm_SUWARU = 0xA,
AnmPrm_KANOKEP = 0xB,
AnmPrm_BEAM_HIT = 0xC,
AnmPrm_BEAM = 0xD,
AnmPrm_BEAM_END = 0xE,
AnmPrm_NULL,
};
typedef void (daRd_c::*ModeFunc)();
static const u32 m_heapsize;
static const char m_arc_name[];
static const dCcD_SrcCyl m_cyl_src;
daRd_c() {}
bool isAnm(s8 idx) { return mAnmPrmIdx == idx; }
void onIkari() { mbIkari = true; }
void offIkari() { mbIkari = false; }
bool isIkari() { return mbIkari; }
void modeProcInit(int newMode) { modeProc(PROC_INIT, newMode); }
fopAc_ac_c* _searchNearDeadRd(fopAc_ac_c*);
void _nodeControl(J3DNode*, J3DModel*);
void _nodeHeadControl(J3DNode*, J3DModel*);
BOOL _createHeap();
bool createArrowHeap();
bool checkPlayerInAttack();
bool checkPlayerInCry();
void lookBack();
bool checkTgHit();
void setCollision();
void setIceCollision();
void setAttention();
void setMtx();
void modeWaitInit();
void modeWait();
void modeDeathInit();
void modeDeath();
void modeDamageInit();
void modeDamage();
void modeParalysisInit();
void modeParalysis();
void modeMoveInit();
void modeMove();
void modeCryInit();
void modeCry();
void modeCryWaitInit();
void modeCryWait();
void modeAttackInit();
void modeAttack();
void modeReturnInit();
void modeReturn();
void modeSilentPrayInit();
void modeSilentPray();
void modeSwWaitInit();
void modeSwWait();
void modeKanokeInit();
void modeKanoke();
void modeProc(Proc_e, int);
void setBrkAnm(s8);
void setBtkAnm(s8);
void setAnm(s8, bool);
bool _execute();
void debugDraw();
bool _draw();
bool isLinkControl();
void createInit();
void getArg();
cPhs_State _create();
bool _delete();
/* 0x2AC */ int mMode;
/* 0x2B0 */ u8 m2B0[0x2B4 - 0x2B0];
/* 0x2B4 */ int mWhichIdleAnm;
/* 0x2B8 */ int mAreaRadius;
/* 0x2BC */ int mChecksSwitch;
/* 0x2C0 */ int mSwNo;
/* 0x2C4 */ u8 m2C4;
/* 0x2C5 */ u8 mHitType; // TODO enum
/* 0x2C6 */ u8 m2C6[0x2C8 - 0x2C6];
/* 0x2C8 */ request_of_phase_process_class mPhs;
/* 0x2D0 */ mDoExt_McaMorf* mpMorf;
/* 0x2D4 */ mDoExt_btkAnm mBtkAnm;
/* 0x2E8 */ mDoExt_brkAnm mBrkAnm;
/* 0x300 */ cXyz mSpawnPos;
/* 0x30C */ s16 mSpawnAngle;
/* 0x30E */ u8 m30E[0x310 - 0x30E];
/* 0x310 */ int mTimer1;
/* 0x314 */ int mTimer2;
/* 0x318 */ int mBreakFreeCounter;
/* 0x31C */ dBgS_ObjAcch mAcch;
/* 0x4E0 */ dBgS_AcchCir mAcchCir;
/* 0x520 */ dCcD_Stts mStts;
/* 0x55C */ dCcD_Cyl mCyl;
/* 0x68C */ u8 m68C[0x690 - 0x68C];
/* 0x690 */ u32 mShadowId;
/* 0x694 */ mDoExt_invisibleModel mInvisModel;
/* 0x69C */ dNpc_JntCtrl_c mJntCtrl;
/* 0x6D0 */ fpc_ProcID mCorpseID;
/* 0x6D4 */ int m6D4;
/* 0x6D8 */ s8 mBckIdx;
/* 0x6D9 */ s8 mAnmPrmIdx;
/* 0x6DA */ s8 mOldAnmPrmIdx;
/* 0x6DB */ s8 m6DB;
/* 0x6DC */ s8 m6DC;
/* 0x6DD */ u8 m6DD[0x6E0 - 0x6DD];
/* 0x6E0 */ enemyice mEnemyIce;
/* 0xA98 */ enemyfire mEnemyFire;
/* 0xCC0 */ JntHit_c* mpJntHit;
/* 0xCC4 */ cXyz mTargetPos;
/* 0xCD0 */ cXyz mRdEyePos;
/* 0xCDC */ s16 mMaxHeadTurnVel;
/* 0xCDE */ u8 mCDE[0xCE0 - 0xCDE];
/* 0xCE0 */ int mCE0;
/* 0xCE4 */ int mCE4;
/* 0xCE8 */ Mtx mCE8;
/* 0xD18 */ s16 mHeadAngle;
/* 0xD1A */ s16 mD1A;
/* 0xD1C */ s16 mD1C;
/* 0xD1E */ s16 mD1E;
/* 0xD20 */ u8 mD20[0xD2E - 0xD20];
/* 0xD2E */ s16 mD2E;
/* 0xD30 */ u8 mD30[0xD34 - 0xD30];
/* 0xD34 */ bool mbIkari;
/* 0xD35 */ u8 mD35[0xD38 - 0xD35];
/* 0xD38 */ f32 mD38;
/* 0xD3C */ int mD3C;
/* 0xD40 */ int mD40;
};
#endif /* D_A_RD_H */