diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/SSystem/SComponent/c_cc_d.h | 3 | ||||
| -rw-r--r-- | include/Z2AudioLib/Z2SeMgr.h | 16 | ||||
| -rw-r--r-- | include/d/a/d_a_player.h | 11 | ||||
| -rw-r--r-- | include/d/cc/d_cc_d.h | 17 | ||||
| -rw-r--r-- | include/d/cc/d_cc_uty.h | 2 | ||||
| -rw-r--r-- | include/d/s/d_s_play.h | 2 | ||||
| -rw-r--r-- | include/f_op/f_op_actor.h | 2 | ||||
| -rw-r--r-- | include/f_op/f_op_actor_mng.h | 4 | ||||
| -rw-r--r-- | include/m_Do/m_Do_ext.h | 1 | ||||
| -rw-r--r-- | include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h | 90 |
10 files changed, 135 insertions, 13 deletions
diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index 844d8449c6..f37db70369 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -48,6 +48,7 @@ enum cCcD_ObjAtType { /* 0x10000000 */ AT_TYPE_10000000 = (1 << 28), /* 0x40000000 */ AT_TYPE_WOLF_CUT_TURN = (1 << 30), /* 0x80000000 */ AT_TYPE_WOLF_ATTACK = (1 << 31), + /* 0xD8000000 */ AT_TYPE_UNK = 0xD8000000 }; class cCcD_ShapeAttr { @@ -454,6 +455,8 @@ public: void OnTgSetBit() { mObjTg.OnSPrmBit(1); } void OffTgSetBit() { mObjTg.ClrSet(); } void OnCoSetBit() { mObjCo.OnSPrmBit(1); } + void OffAtVsPlayerBit() { mObjAt.OffSPrmBit(0xC); } + void OnAtVsPlayerBit() { mObjAt.OnSPrmBit(0xC); } }; // Size = 0x40 diff --git a/include/Z2AudioLib/Z2SeMgr.h b/include/Z2AudioLib/Z2SeMgr.h index d3a63a3562..3f70146733 100644 --- a/include/Z2AudioLib/Z2SeMgr.h +++ b/include/Z2AudioLib/Z2SeMgr.h @@ -2400,14 +2400,14 @@ enum Z2SoundID { Z2SE_EN_BA_V_FURA = 0x701C5, Z2SE_EN_BA_FIRE = 0x701C6, Z2SE_EN_YK_WING = 0x701C7, - Z2SE_EN_YK_V_NAKU = 0x701C8, - Z2SE_EN_YK_V_ATTACK = 0x701C9, - Z2SE_EN_YK_V_DEATH = 0x701CA, - Z2SE_EN_YK_V_BITE = 0x701CB, - Z2SE_EN_YK_V_DEATH2 = 0x701CC, - Z2SE_EN_YK_V_FURA = 0x701CD, + Z2SE_EN_YK_V_NAKU = 0x701C8, // shadow keese - cry/screech + Z2SE_EN_YK_V_ATTACK = 0x701C9, // shadow keese - attack + Z2SE_EN_YK_V_DEATH = 0x701CA, // shadow keese - death + Z2SE_EN_YK_V_BITE = 0x701CB, // shadow keese - bite + Z2SE_EN_YK_V_DEATH2 = 0x701CC, // shadow keese - death2 + Z2SE_EN_YK_V_FURA = 0x701CD, // shadow keese - unsteady Z2SE_EN_BA_V_SPIN = 0x701CE, - Z2SE_EN_YK_V_SPIN = 0x701CF, + Z2SE_EN_YK_V_SPIN = 0x701CF, // shadow keese - spinning in gale boomerang wind Z2SE_EN_YG_V_NAKU = 0x701D0, Z2SE_EN_YG_V_FIND = 0x701D1, Z2SE_EN_YG_V_DEATH = 0x701D2, @@ -2463,7 +2463,7 @@ enum Z2SoundID { Z2SE_EN_GOB_HELMET_MELT = 0x70204, Z2SE_EN_GOB_KNUCKLES_FRICTION = 0x70205, Z2SE_EN_BA_V_FAINT = 0x70206, - Z2SE_EN_YK_V_FAINT = 0x70207, + Z2SE_EN_YK_V_FAINT = 0x70207, // shadow keese - bouncing on ground during chance Z2SE_EN_HZ_V_WALK = 0x70208, Z2SE_EN_HZ_WALK = 0x70209, Z2SE_EN_HZ_V_WIND_NAKU = 0x7020A, diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 34e238107a..6ebfbd8526 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -274,6 +274,7 @@ public: FLG2_UNK_200 = 0x200, FLG2_UNK_80 = 0x80, FLG2_UNK_40 = 0x40, + FLG2_WOLF_ENEMY_LEFT_THROW = 0x20, FLG2_UNK_10 = 0x10, FLG2_UNK_8 = 8, FLG2_UNK_2 = 2, @@ -762,14 +763,18 @@ public: inline BOOL i_checkSwordGet(); inline bool i_checkShieldGet() const; inline static BOOL checkNowWolf(); - inline static BOOL i_checkNowWolf() { - return dComIfGp_getLinkPlayer()->i_checkWolf(); - } + inline static BOOL i_checkNowWolf() { return dComIfGp_getLinkPlayer()->i_checkWolf(); } inline bool checkZoraWearFlg() const; inline bool checkMagicArmorWearFlg() const; static daMidna_c* getMidnaActor() { return m_midnaActor; } + // not sure how to define this properly + // static void onWolfEnemyCatch(fopAc_ac_c* i_actorP) { onWolfEnemyBiteAll(i_actorP,8);} + + bool checkWolfEnemyCatchOwn(fopAc_ac_c* i_actorP) { return checkWolfEnemyBiteAllOwn(i_actorP); } + bool checkWolfEnemyLeftThrow() const { return i_checkNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW); } + static daMidna_c* m_midnaActor; }; diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h index 1105b7c0e8..5c8ed40c72 100644 --- a/include/d/cc/d_cc_d.h +++ b/include/d/cc/d_cc_d.h @@ -1,6 +1,11 @@ #ifndef D_CC_D_CC_D_H #define D_CC_D_CC_D_H +/** + * d_cc_d.h + * Actor Collision + */ + #include "SSystem/SComponent/c_cc_d.h" #include "dolphin/types.h" @@ -134,6 +139,8 @@ public: class dCcD_GObjInf; typedef void (*dCcD_HitCallback)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); + +// Attack/Defense/Correction Collider Common Base class dCcD_GAtTgCoCommonBase { public: /* 0x00 */ u32 mGFlag; @@ -171,6 +178,8 @@ public: dCcD_HitCallback GetHitCallback() { return mHitCallback; } }; // Size = 0x1C + +// Attack (At) Collider class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase { public: /* 80083944 */ void Set(dCcD_SrcGObjAt const&); @@ -199,6 +208,7 @@ public: /* 0x38 */ cXyz mRVec; }; // Size = 0x44 +// Defense (Tg) Collider class dCcD_GObjTg : public dCcD_GAtTgCoCommonBase { public: /* 800839A0 */ void Set(dCcD_SrcGObjTg const&); @@ -229,11 +239,13 @@ private: /* 0x48 */ s16 mShieldRange; }; // Size = 0x4A ? +// Correction (Co) Collider class dCcD_GObjCo : public dCcD_GAtTgCoCommonBase { public: /* 80083B8C */ virtual ~dCcD_GObjCo() {} }; // Size = 0x1C ? +// Object Info class dCcD_GObjInf : public cCcD_GObjInf { public: /* 80083A28 */ dCcD_GObjInf(); @@ -343,6 +355,7 @@ protected: /* 0x0E8 */ dCcD_GObjCo mGObjCo; }; // Size = 0x104 +// Cylinder class dCcD_Cyl : public dCcD_GObjInf, public cCcD_CylAttr { public: /* 800848B4 */ void Set(dCcD_SrcCyl const&); @@ -354,6 +367,7 @@ public: dCcD_Cyl() {} }; // Size = 0x13C +// Sphere class dCcD_Sph : public dCcD_GObjInf, public cCcD_SphAttr { public: dCcD_Sph() {} @@ -364,6 +378,8 @@ public: /* 80084BF4 */ virtual ~dCcD_Sph() {} }; // Size = 0x138 + +// Capsule class dCcD_Cps : public dCcD_GObjInf, public cCcD_CpsAttr { public: /* 800847D0 */ void Set(dCcD_SrcCps const&); @@ -374,6 +390,7 @@ public: dCcD_Cps() {} }; // Size = 0x144 +// Triangle class dCcD_Tri : public dCcD_GObjInf, public cCcD_TriAttr { public: /* 80084884 */ void Set(dCcD_SrcTri const&); diff --git a/include/d/cc/d_cc_uty.h b/include/d/cc/d_cc_uty.h index 81719f4bf9..3e5cf8256a 100644 --- a/include/d/cc/d_cc_uty.h +++ b/include/d/cc/d_cc_uty.h @@ -29,4 +29,6 @@ struct dCcU_AtInfo { /* 0x20 */ u8 mHitType; }; +fopAc_ac_c* cc_at_check(fopAc_ac_c*,dCcU_AtInfo*); + #endif /* D_CC_D_CC_UTY_H */ diff --git a/include/d/s/d_s_play.h b/include/d/s/d_s_play.h index 3e13f3304f..e497c9c62e 100644 --- a/include/d/s/d_s_play.h +++ b/include/d/s/d_s_play.h @@ -67,7 +67,7 @@ public: /* 80259BFC */ void offReset(); static bool isPause() { return pauseTimer == 0; } - static void setPauseTimer(s8 time) { nextPauseTimer = time; } + static void setPauseTimer(s8 time) { pauseTimer = time; } static s8 pauseTimer; static s8 nextPauseTimer; diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index b76d3d9fe2..dbe347e096 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -137,7 +137,7 @@ public: /* 0x538 */ cXyz mEyePos; /* 0x544 */ actor_attention_types mAttentionInfo; /* 0x560 */ s16 field_0x560; - /* 0x562 */ s16 field_0x562; + /* 0x562 */ s16 mHealth; /* 0x564 */ u8 field_0x564[0x4]; fopAc_ac_c(); diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 2651274405..e71a40de48 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -306,6 +306,10 @@ inline bool i_fopAcM_isSwitch(const fopAc_ac_c* item, int sw) { return dComIfGs_isSwitch(sw, fopAcM_GetHomeRoomNo(item)); } +inline fopAc_ac_c* i_fopAcM_SearchByName(s16 proc_id) { + return (fopAc_ac_c*)fopAcIt_Judge(fpcSch_JudgeForPName, &proc_id); +} + inline void dComIfGs_onItem(int bitNo, int roomNo); inline void fopAcM_onItem(const fopAc_ac_c* item, int bitNo) { dComIfGs_onItem(bitNo, fopAcM_GetHomeRoomNo(item)); diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 40d5d75aee..b68840f1d5 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -261,6 +261,7 @@ public: u8 getPlayMode() { return mFrameCtrl.getAttribute(); } bool isLoop() { return mFrameCtrl.checkState(2); } f32 getEndFrame() { return mFrameCtrl.getEnd(); } + BOOL checkFrame(f32 frame) { return mFrameCtrl.checkPass(frame); } bool isStop() { bool stopped = true; diff --git a/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h b/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h index 9331067bdf..be52d7f2cd 100644 --- a/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h +++ b/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h @@ -2,5 +2,95 @@ #define D_A_E_YK_H #include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" +#include "d/com/d_com_inf_game.h" +#include "d/cc/d_cc_uty.h" +#include "d/d_path.h" + +enum daE_YK_Action { + ACT_ROOF, // keese is on roof + ACT_FIGHT_FLY, // keese is transitioning from flying to aggro + ACT_FIGHT, // keese is aggroed + ACT_ATTACK, // keese is attacking + ACT_RETURN, // keese is returning to roof + ACT_FLY, // keese is flying around + ACT_PATH_FLY, // Unconfirmed: keese is flying along its path? + ACT_CHANCE = 10, // keese is stunned/fell down + ACT_WOLFBITE = 13, // keese is being bitten by wolf + ACT_WIND // keese is in the gale boomerang +}; + +// tmp struct to get HIO to match +struct daE_YK_HIO_c_tmp { + void* vtable; + /* 0x04 */ s8 field_0x04; + /* 0x08 */ f32 field_0x08; + /* 0x0C */ f32 field_0x0c; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; +}; + +class daE_YK_HIO_c { +public: + /* 8080482C */ daE_YK_HIO_c(); + /* 808077E0 */ virtual ~daE_YK_HIO_c(); + + /* 0x00 */ // vtable + /* 0x04 */ s8 field_0x04; // padding after this + /* 0x08 */ f32 field_0x08; + /* 0x0C */ f32 field_0x0c; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; +}; + +class e_yk_class : public fopEn_enemy_c { +public: + /* 0x5AC */ request_of_phase_process_class mPhase; + /* 0x5B4 */ u8 mParam1; // paramter - used to determine default action? + /* 0x5B5 */ u8 mPlayerTriggerBase; // parameter - base value used to determine mPlayerTrigger below + /* 0x5B6 */ u8 field_0x5b6; + /* 0x5B7 */ u8 mPathIdx; // parameter - used to lookup/set mpPath based on the room + /* 0x5B8 */ u8 field_0x5b8; + /* 0x5B9 */ s8 mPathPntIdx; // tracks the index of the points along the keese's path + /* 0x5BA */ s8 field_0x5ba; + /* 0x5BB */ u8 field_0x5bb; + /* 0x5BC */ dPath* mpPath; // flight path for keese to follow? + /* 0x5C0 */ mDoExt_McaMorfSO* mpMorfSO; // last res loaded + /* 0x5C4 */ Z2CreatureEnemy mCreature; // used for playing keese noises + /* 0x668 */ int mResIdx; // index number of last res loaded + /* 0x66C */ s16 field_0x66c; + /* 0x66E */ s16 mAction; // current action (see daE_YK_Action above) + /* 0x670 */ s16 mActionPhase; // current phase of current action + /* 0x674 */ cXyz mPathPntPos; // tracks the position of the point the keese is along a path + /* 0x680 */ s16 mAngleFromPlayer; // current keese angle from player + /* 0x684 */ f32 mDistanceXZFromPlayer; // current keese distance from player + /* 0x688 */ f32 mPlayerTrigger; // how close to the keese the player has to be before aggro + /* 0x68C */ f32 field_0x68c; + /* 0x690 */ f32 field_0x690; + /* 0x694 */ f32 field_0x694; + /* 0x698 */ s16 field_0x698; + /* 0x69A */ csXyz field_0x69a; + /* 0x6A0 */ s8 field_0x6a0; + /* 0x6A1 */ u8 field_0x6a1; + /* 0x6A2 */ s16 field_0x6a2[4]; + /* 0x6AA */ s16 field_0x6aa; + /* 0x6AC */ s16 field_0x6ac[6]; + /* 0x6B8 */ cXyz mBoomrangPosOffset; // offset position when keese caught in rang + /* 0x6C4 */ s16 mBoomrangXRotOffset; // offset x rotation when keese caught in rang + /* 0x6C8 */ dBgS_AcchCir field_0x6c8; + /* 0x708 */ dBgS_ObjAcch field_0x708; + /* 0x8E0 */ dCcD_Stts mCollisionStatus; // collision status + /* 0x91C */ dCcD_Sph mCollisionSphere; // collision sphere + /* 0xA54 */ dCcU_AtInfo mAtColliderInfo; // attack collider info (used when keese gets hit) + /* 0xA78 */ u32 field_0xa78; + /* 0xA7C */ u32 field_0xa7c; + /* 0xA80 */ u32 field_0xa80; + /* 0xA84 */ u32 mParticleEmitterIds[2]; + /* 0xA8C */ u8 field_0xa8c; +}; + +// size: 0xA90 #endif /* D_A_E_YK_H */ |
