e_rdy mostly done (#2324)

* e_rdy work

* e_rdy work

* e_rdy work

* e_rdy mostly done

* e_rdy fix hit direction
This commit is contained in:
Caroline Madsen 2025-03-12 19:02:03 -04:00 committed by GitHub
parent 3ad60c1b17
commit 15a807bb7b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 5147 additions and 2719 deletions

View File

@ -1,7 +1,14 @@
#ifndef D_A_E_RDY_H
#define D_A_E_RDY_H
#include "f_op/f_op_actor_mng.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "d/d_jnt_col.h"
#include "d/d_msg_flow.h"
#include "d/d_path.h"
#include "f_op/f_op_actor.h"
/**
* @ingroup actors-enemies
@ -15,20 +22,183 @@ class e_rdy_class : public fopEn_enemy_c {
public:
/* 80779340 */ e_rdy_class();
/* 0x05AC */ u8 field_0x5ac[0xa8f - 0x5ac];
/* 0x0A8F */ u8 field_0xa8f;
/* 0x0A90 */ u8 field_0xa90[0x1370 - 0xa90];
/* 0x1370 */ s16 field_0x1370;
/* 0x1372 */ s16 field_0x1372;
/* 0x1374 */ u8 field_0x1374[0x142c - 0x1374];
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ s16 mMode;
/* 0x05B6 */ u8 field_0x5b6;
/* 0x05B7 */ u8 field_0x5b7;
/* 0x05B8 */ u8 field_0x5b8;
/* 0x05B9 */ u8 mSwBit;
/* 0x05BA */ u8 mWeaponType;
/* 0x05BB */ s8 field_0x5bb;
/* 0x05BC */ cXyz field_0x5bc;
/* 0x05C8 */ s16 mTargetAngleY;
/* 0x05CC */ mDoExt_McaMorfSO* mpMorf;
/* 0x05D0 */ Z2CreatureEnemy mSound;
/* 0x0674 */ char* mpArcName;
/* 0x0678 */ int mAnm;
/* 0x067C */ u8 field_0x67c[0x680 - 0x67c];
/* 0x0680 */ dJntCol_c mJntCol;
/* 0x0690 */ J3DModel* mpWeaponModel;
/* 0x0694 */ mDoExt_McaMorfSO* mpBowMorf;
/* 0x0698 */ J3DModel* mpHawkGrassModel;
/* 0x069C */ s8 mIsHoldingGrass;
/* 0x06A0 */ dKy_tevstr_c mHawkGrassTevStr;
/* 0x0A28 */ J3DModel* mpEyeModel[2];
/* 0x0A30 */ f32 mEyeScale;
/* 0x0A34 */ f32 mTargetEyeScale;
/* 0x0A38 */ s8 mIsDying;
/* 0x0A3C */ f32 mDyingTevColor;
/* 0x0A40 */ s16 mCounter;
/* 0x0A42 */ s16 mAction;
/* 0x0A44 */ s16 mPrevAction;
/* 0x0A48 */ f32 mPlayerDist;
/* 0x0A4C */ s16 mPlayerAngle;
/* 0x0A50 */ f32 mPlayerCheckDist;
/* 0x0A54 */ f32 mWaterHeight;
/* 0x0A58 */ u32 mShadowKey;
/* 0x0A5C */ fpc_ProcID mKargarokID;
/* 0x0A60 */ s16 mTimer[4];
/* 0x0A68 */ s16 mIFrameTimer;
/* 0x0A6A */ u8 field_0xa6a[0xa6c - 0xa6a];
/* 0x0A6C */ s16 field_0xa6c;
/* 0x0A6E */ s16 field_0xa6e;
/* 0x0A70 */ u8 field_0xa70;
/* 0x0A71 */ s8 field_0xa71;
/* 0x0A72 */ s8 mHasArrow;
/* 0x0A73 */ s8 mArrowFired;
/* 0x0A74 */ s8 field_0xa74;
/* 0x0A76 */ s16 mBowRotationTimer;
/* 0x0A78 */ s16 mBowRotation;
/* 0x0A7A */ u8 field_0xa7a[0xa7b - 0xa7a];
/* 0x0A7B */ s8 field_0xa7b;
/* 0x0A7C */ s8 field_0xa7c;
/* 0x0A7D */ s8 mCollisionEnabled;
/* 0x0A7E */ u8 mFadeTimer;
/* 0x0A80 */ cXyz mKargarokPos;
/* 0x0A8C */ s8 mRideState;
/* 0x0A8D */ u8 field_0xa8d[0xa8e - 0xa8d];
/* 0x0A8E */ s8 field_0xa8e;
/* 0x0A8F */ s8 field_0xa8f;
/* 0x0A90 */ f32 mJumpHeight;
/* 0x0A94 */ f32 mJumpSpeed;
/* 0x0A98 */ s8 field_0xa98;
/* 0x0A9A */ s16 field_0xa9a;
/* 0x0A9C */ s16 field_0xa9c;
/* 0x0A9E */ s16 field_0xa9e;
/* 0x0AA0 */ s16 field_0xaa0;
/* 0x0AA4 */ cXyz mArrowTarget;
/* 0x0AB0 */ u8 field_0xab0[0xabc - 0xab0];
/* 0x0ABC */ f32 field_0xabc;
/* 0x0AC0 */ f32 mKnockback;
/* 0x0AC4 */ s16 mHitDirection;
/* 0x0AC6 */ s16 field_0xac6;
/* 0x0AC8 */ s8 field_0xac8;
/* 0x0AC9 */ u8 field_0xac9[0xadc - 0xac9];
/* 0x0ADC */ csXyz field_0xadc;
/* 0x0AE2 */ csXyz field_0xae2;
/* 0x0AE8 */ csXyz field_0xae8;
/* 0x0AEE */ s8 field_0xaee;
/* 0x0AEF */ s8 mIsUpsideDown;
/* 0x0AF0 */ u32 field_0xaf0;
/* 0x0AF4 */ f32 field_0xaf4;
/* 0x0AF8 */ s16 field_0xaf8;
/* 0x0AFC */ f32 field_0xafc;
/* 0x0B00 */ s16 field_0xb00;
/* 0x0B02 */ csXyz field_0xb02[11];
/* 0x0B44 */ csXyz field_0xb44[11];
/* 0x0B88 */ f32 field_0xb88;
/* 0x0B8C */ s16 field_0xb8c[11];
/* 0x0BA2 */ s16 field_0xba2[4];
/* 0x0BAA */ s16 field_0xbaa;
/* 0x0BAC */ s16 field_0xbac;
/* 0x0BAE */ s16 field_0xbae;
/* 0x0BB0 */ s16 field_0xbb0;
/* 0x0BB2 */ u8 field_0xbb2[0xbb4 - 0xbb2];
/* 0x0BB4 */ s16 field_0xbb4;
/* 0x0BB6 */ s16 field_0xbb6;
/* 0x0BB8 */ u8 field_0xbb8[0xbbc - 0xbb8];
/* 0x0BBC */ f32 field_0xbbc;
/* 0x0BC0 */ s16 field_0xbc0;
/* 0x0BC2 */ u8 field_0xbc2[0xbc8 - 0xbc2];
/* 0x0BC8 */ s16 field_0xbc8;
/* 0x0BCA */ s8 field_0xbca;
/* 0x0BCB */ s8 mKargarokDeleteTimer;
/* 0x0BCC */ dPath* mpPath;
/* 0x0BD0 */ s8 mPathIndex;
/* 0x0BD1 */ s8 mPathDirection;
/* 0x0BD4 */ dBgS_AcchCir mAcchCir;
/* 0x0C14 */ dBgS_ObjAcch mAcch;
/* 0x0DEC */ dCcD_Stts mCcStts;
/* 0x0E28 */ dCcD_Sph mCcSph[3];
/* 0x11D0 */ dCcD_Sph mAtSph;
/* 0x1308 */ dCcU_AtInfo mAtInfo;
/* 0x132C */ bool mHIOInit;
/* 0x132D */ s8 mGroundHit;
/* 0x1330 */ u32 mSmokeKey1;
/* 0x1334 */ u32 mSmokeKey2;
/* 0x1338 */ u32 mWaterParticleKey[3];
/* 0x1344 */ u32 mFireParticleKey[2];
/* 0x134C */ cXyz field_0x134c;
/* 0x1358 */ cXyz field_0x1358;
/* 0x1364 */ s8 mInWater;
/* 0x1365 */ s8 field_0x1365;
/* 0x1366 */ s8 field_0x1366;
/* 0x1367 */ s8 mDrawEyeModel;
/* 0x1368 */ u8 field_0x1368;
/* 0x1369 */ s8 field_0x1369;
/* 0x136A */ u8 field_0x136a[0x136b - 0x136a];
/* 0x136B */ s8 mParticleTimer;
/* 0x136C */ int mSwBit2;
/* 0x1370 */ s16 mDemoMode;
/* 0x1372 */ s16 mDemoTimer;
/* 0x1374 */ s16 mCamBankPhase;
/* 0x1378 */ cXyz mCamEye;
/* 0x1384 */ cXyz mCamCenter;
/* 0x1390 */ cXyz mCamEyeTarget;
/* 0x139C */ cXyz mCamCenterTarget;
/* 0x13A8 */ cXyz mCamEyeSpeed;
/* 0x13B4 */ cXyz mCamCenterSpeed;
/* 0x13C0 */ f32 mCamDist;
/* 0x13C4 */ u8 field_0x13c4[0x13c8 - 0x13c4];
/* 0x13C8 */ f32 mCamFovy;
/* 0x13CC */ f32 mCamBank;
/* 0x13D0 */ f32 mCamSpeed;
/* 0x13D4 */ s16 field_0x13d4;
/* 0x13D6 */ u8 field_0x13d6[0x13e0 - 0x13d6];
/* 0x13E0 */ dMsgFlow_c mMsgFlow;
};
STATIC_ASSERT(sizeof(e_rdy_class) == 0x142C);
class daE_RDY_HIO_c {
public:
/* 8076BDCC */ daE_RDY_HIO_c();
/* 80779880 */ ~daE_RDY_HIO_c();
/* 80779880 */ virtual ~daE_RDY_HIO_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 field_0xc;
/* 0x10 */ f32 mWalkSpeed;
/* 0x14 */ f32 mRunSpeed;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ f32 mAttackAnmSpeed;
/* 0x24 */ s16 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ u8 field_0x38;
/* 0x39 */ u8 field_0x39;
/* 0x3A */ u8 mDrawEyeModel;
/* 0x3B */ u8 field_0x3b;
/* 0x3C */ f32 field_0x3c;
/* 0x40 */ f32 field_0x40;
/* 0x44 */ f32 field_0x44;
/* 0x48 */ f32 field_0x48;
/* 0x4C */ f32 field_0x4c;
};
STATIC_ASSERT(sizeof(daE_RDY_HIO_c) == 0x50);
#endif /* D_A_E_RDY_H */

View File

@ -43,7 +43,8 @@ public:
/* 0x6A2 */ s16 mTimer[4];
/* 0x6AA */ s16 mCcDisableTimer;
/* 0x6AC */ u32 mRiderID;
/* 0x6B0 */ u8 field_0x6b0[2];
/* 0x6B0 */ u8 field_0x6b0;
/* 0x6B1 */ u8 field_0x6b1;
/* 0x6B2 */ s8 mNoDrawFlag;
/* 0x6B3 */ s8 mWolfBiteDamageCount;
/* 0x6B4 */ dBgS_AcchCir mAcchCir;

View File

@ -93,6 +93,12 @@ public:
field_0x744 = 0;
}
void setEvent2() {
mIsFlying = 0;
field_0x740 = 6;
field_0x744 = 0;
}
void setKagoPath(u8 i_pathNo) {
if (i_pathNo != 0xFF) {
field_0x76c = dPath_GetRoomPath(i_pathNo, fopAcM_GetRoomNo(this));

View File

@ -469,7 +469,7 @@ public:
ERFLG0_UNK_8000000 = 0x8000000,
ERFLG0_UNK_4000000 = 0x4000000,
ERFLG0_BOSS_ROOM_WAIT = 0x2000000,
ERFLG0_UNK_1000000 = 0x1000000,
ERFLG0_ENEMY_DEAD = 0x1000000,
ERFLG0_UNK_800000 = 0x800000,
ERFLG0_BEE_FOLLOW = 0x400000,
ERFLG0_UNK_200000 = 0x200000,
@ -1037,6 +1037,7 @@ public:
void onNeckSearchWide() { onEndResetFlg0(ERFLG0_UNK_400); }
void offPressedDamage() { offNoResetFlg2(FLG2_PRESSED_DAMAGE); }
void onForceSubjectCancel() { onEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL); }
void onEnemyDead() { onEndResetFlg0(ERFLG0_ENEMY_DEAD); }
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }

View File

@ -261,6 +261,7 @@ public:
bool checkWolfNoLock() const { return mFlags & 0x200; }
bool checkHeadLockFlg() const { return mFlags & 0x80; }
bool checkWolfBiteDamage() const { return mFlags & 0x40; }
bool checkWolfDownPullFlg() const { return mFlags & 0x10; }
bool checkDownFlg() const { return mFlags & 0x1; }
bool checkCutDownHitFlg() const { return mFlags & 0x2; }
bool checkDeadFlg() const { return mFlags & 0x8; }

View File

@ -45,7 +45,9 @@ public:
/* 80007F90 */ static void beginRender();
/* 800080D0 */ static void fadeOut(f32);
/* 80007FD8 */ static void fadeOut(f32, _GXColor&);
/* 807DFAB4 */ static void fadeIn(f32, _GXColor&);
/* 807DFAB4 */ static void fadeIn(f32 fadeSpeed, _GXColor& fadeColor) {
fadeOut(-fadeSpeed, fadeColor);
}
/* 80008028 */ static void fadeOut_f(f32, _GXColor&);
/* 800080A0 */ static void onBlure(const Mtx);
/* 80008078 */ static void onBlure();

View File

@ -2709,7 +2709,7 @@ int daAlink_c::execute() {
}
}
if (checkEndResetFlg0(ERFLG0_UNK_1000000) && mEquipItem == 0x103) {
if (checkEndResetFlg0(ERFLG0_ENEMY_DEAD) && mEquipItem == 0x103) {
mSwordFlourishTimer = daAlinkHIO_cut_c0::m.mFlourishTime;
}

File diff suppressed because it is too large Load Diff

View File

@ -2490,12 +2490,6 @@ static void demo_camera(e_wb_class* param_0) {
// NONMATCHING
}
/* 807DFAB4-807DFAD8 00D714 0024+00 1/1 0/0 0/0 .text fadeIn__13mDoGph_gInf_cFfR8_GXColor
*/
void mDoGph_gInf_c::fadeIn(f32 param_0, _GXColor& param_1) {
// NONMATCHING
}
/* 807DFAD8-807DFAEC 00D738 0014+00 1/1 0/0 0/0 .text checkSkipEdge__14dEvt_control_cFv
*/
extern "C" void checkSkipEdge__14dEvt_control_cFv() {

View File

@ -140,7 +140,7 @@ static void e_yc_fly(e_yc_class* i_this) {
case 3:
target_speed = 25.0f;
if (rider->field_0x1372 > 200) {
if (rider->mDemoTimer > 200) {
target_speed = 35.0f;
accel = 0.25f;
}
@ -150,10 +150,10 @@ static void e_yc_fly(e_yc_class* i_this) {
case 4:
accel = 0.3f;
if (rider->field_0x1372 == 30) {
if (rider->mDemoTimer == 30) {
anm_init(i_this, e_yc_class::ANM_FLY_BRAKE, 10.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f);
}
if (rider->field_0x1372 == 60) {
if (rider->mDemoTimer == 60) {
anm_init(i_this, e_yc_class::ANM_HOVERING, 10.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f);
}
i_this->mMaxAngleSpeed = 300.0f;
@ -361,8 +361,8 @@ static void e_yc_attack(e_yc_class* i_this) {
break;
case 4:
if (frame == 11 && rider->field_0x1370 == 0 & i_this->mDistToPlayer < 200.0f) {
rider->field_0x1370 = 1;
if (frame == 11 && rider->mDemoMode == 0 & i_this->mDistToPlayer < 200.0f) {
rider->mDemoMode = 1;
i_this->mCreatureSound.startCreatureSound(Z2SE_EN_YC_HIT_SIDE, 0, -1);
}
@ -371,7 +371,7 @@ static void e_yc_attack(e_yc_class* i_this) {
cLib_addCalc2(&i_this->current.pos.z, i_this->mTargetPos.z, 1.0f, 30.0f);
if (i_this->mpMorf->isStop()) {
if (rider->field_0x1370 == 0) {
if (rider->mDemoMode == 0) {
i_this->mAction = e_yc_class::ACT_HOVERING;
i_this->mMode = 0;
} else {
@ -394,7 +394,7 @@ static void e_yc_attack(e_yc_class* i_this) {
case 6:
if (frame == 30) {
rider->field_0x1370 = 3;
rider->mDemoMode = 3;
}
if (i_this->mpMorf->isStop()) {
@ -474,7 +474,7 @@ static void e_yc_wolfbite(e_yc_class* i_this) {
anm_init(i_this, e_yc_class::ANM_HANGED_BRUSH2, 3.0f,
J3DFrameCtrl::LOOP_ONCE_e, 1.0f);
i_this->mMode = 3;
rider->field_0x1370 = 5;
rider->mDemoMode = 5;
dScnPly_c::setPauseTimer(7);
i_this->mCreatureSound.startCollisionSE(Z2SE_HIT_WOLFBITE, 0x20);
dComIfGp_setHitMark(3, i_this, &player->eyePos, &player->shape_angle, NULL, 0);