mirror of
https://github.com/zeldaret/tp
synced 2026-07-08 14:36:36 -04:00
d_a_e_yk 23/26 matched (#301)
* setup TU * daE_YK_HIO_c::daE_YK_HIO_c * anm_init * daE_YK_Draw * pl_check * damage_check * action * daE_YK_Delete * fly_move * e_yk_roof * useHeapInit * e_yk_wind * e_yk_chance * e_yk_return * e_yk_fly * e_yk_wolfbite * e_yk_fight * e_yk_attack * e_yk_path_fly * daE_YK_Execute and daE_YK_Create and float literal prep * pr cleanup * rm padding
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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&);
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user