d_a_e_tk Matching (#2393)

* d_a_e_tk first pass

* d_a_e_tk second pass

* d_a_e_tk matching

* d_a_e_tk cleanup

* d_a_e_tk comments
This commit is contained in:
Niklas Bauer 2025-04-15 13:05:22 +09:00 committed by GitHub
parent f891887626
commit c1845e9e09
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 830 additions and 624 deletions

View File

@ -1674,7 +1674,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_sw"),
ActorRel(Equivalent, "d_a_e_th"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_th_ball"),
ActorRel(NonMatching, "d_a_e_tk"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_tk"),
ActorRel(NonMatching, "d_a_e_tk2"),
ActorRel(NonMatching, "d_a_e_tk_ball"),
ActorRel(NonMatching, "d_a_e_tt"),

View File

@ -1,26 +1,78 @@
#ifndef D_A_E_TK_H
#define D_A_E_TK_H
#include "f_op/f_op_actor_mng.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "d/d_path.h"
#include "f_op/f_op_actor.h"
/**
* @ingroup actors-enemies
* @class e_tk_class
* @brief Water Toadpoli
*
* @details
*
*
* @details Water Toadpoli in a Water Grotto. (And Goron Mines?)
* Frog-like creatures that emerge from the water and shoot a stone ball
* towards Link. If Link gets too close to the toadpoli, it will dive
* underwater, where it is invulnerable. It likes to swim around.
*/
class e_tk_class : public fopEn_enemy_c {
private:
/* 0x5ac */ u8 field_0x5ac[0xa64 - 0x5ac];
public:
/* 0x5AC */ request_of_phase_process_class mPhaseReq;
/* 0x5B4 */ u8 mArg0;
/* 0x5B5 */ u8 mArg1;
/* 0x5B6 */ u8 mArg2;
/* 0x5B7 */ u8 mParamPathIdx;
/* 0x5B8 */ s8 mPathLoaded;
/* 0x5BC */ dPath* mpPath;
/* 0x5C0 */ s8 mPathID;
/* 0x5C1 */ s8 mPathDirection;
/* 0x5C4 */ mDoExt_McaMorfSO* mpMorf;
/* 0x5C8 */ int mAnim;
/* 0x5CC */ Z2CreatureEnemy mSound;
/* 0x670 */ f32 mAnimSpeed;
/* 0x674 */ s16 mLifetime;
/* 0x676 */ s16 mAction;
/* 0x678 */ s16 mMode;
/* 0x67C */ cXyz mPos;
/* 0x688 */ s16 mSomeAngle;
/* 0x68A */ u8 field_0x68a[2];
/* 0x68C */ s16 mPlayerAngleY;
/* 0x690 */ f32 mPlayerDistanceLimit;
/* 0x694 */ u8 field_0x694[2];
/* 0x696 */ s16 mActionTimer[3];
/* 0x69C */ s16 mExecuteState;
/* 0x69E */ s16 mInvincibilityTimer;
/* 0x6A0 */ s8 mAttentionOFF;
/* 0x6A1 */ s8 mTKBallSpawned;
/* 0x6A4 */ u32 mHamonSet;
/* 0x6A8 */ u8 field_0x6a8[4];
/* 0x6AC */ fpc_ProcID mpBallID;
/* 0x6B0 */ dBgS_AcchCir mAcchCir;
/* 0x6F0 */ dBgS_ObjAcch mAcch;
/* 0x8C8 */ dCcD_Stts mStts;
/* 0x904 */ dCcD_Sph mSph;
/* 0xA3C */ dCcU_AtInfo mAtInfo;
/* 0xA60 */ bool mInitHIO;
};
STATIC_ASSERT(sizeof(e_tk_class) == 0xa64);
STATIC_ASSERT(sizeof(e_tk_class) == 0xA64);
class daE_TK_HIO_c {
public:
/* 807B81EC */ daE_TK_HIO_c();
/* 807BA1C4 */ ~daE_TK_HIO_c();
/* 807BA1C4 */ virtual ~daE_TK_HIO_c() {}
/* 0x04 */ s8 field_0x04;
/* 0x08 */ f32 mRadiusScale;
/* 0x0C */ f32 mPlayerRange1;
/* 0x10 */ f32 mPlayerRange2;
/* 0x14 */ f32 mSpeedModifier1;
/* 0x18 */ f32 mSpeedModifier2;
};
STATIC_ASSERT(sizeof(daE_TK_HIO_c) == 0x1C);
#endif /* D_A_E_TK_H */

View File

@ -11,7 +11,7 @@
*
*/
class e_tk_ball_class : public fopEn_enemy_c {
private:
public:
/* 0x5ac */ u8 field_0x5ac[0x8cc - 0x5ac];
};

File diff suppressed because it is too large Load Diff