E wb documentation + e_rd cleanup (#3125)

* e_rd cleanup

* first pass

* fix ?

* rename

* more rename

* fix other platform

* fix typo

* more documentation

* more work

* fix build

* fix

* more doc

* camera work

* more work

* cleanup

* more work

* clean up + fix build

* fix build

* more work

* change mSpeedRate name

* change description

* more work

* fire eff work

* fix build

* fix match

* debug fix ?

* update description

* rename field
This commit is contained in:
Luzagar
2026-03-11 11:12:17 +01:00
committed by GitHub
parent 8a333fc7c9
commit 7f91d9547f
10 changed files with 3844 additions and 3812 deletions
+50 -48
View File
@@ -8,14 +8,16 @@
#include "d/d_path.h"
#include "f_op/f_op_actor_mng.h"
#include "m_Do/m_Do_ext.h"
/**
* @ingroup actors-enemies
* @class e_rd_class
* @brief Bulblin
*
* @details
*
* @brief Rider (Bulblin / King Bulblin on Boar)
*
* @details Bulblin enemy that rides a Bullbo (wild boar). Handles mounting,
* riding, combat, and dismounting behavior, as well as on-foot actions when
* not riding. Bulblins appear as regular riders,
* while King Bulblin serves as the boss variant of the boar rider.
*
*/
class e_rd_class {
public:
@@ -28,11 +30,11 @@ public:
/* 0x05B7 */ u8 arg1;
/* 0x05B8 */ u8 arg2;
/* 0x05B9 */ u8 field_0x5b9;
/* 0x05BA */ u8 field_0x5ba;
/* 0x05BA */ u8 scene_no;
/* 0x05BB */ u8 field_0x5bb;
/* 0x05BC */ u8 weapon_type;
/* 0x05BD */ s8 field_0x5bd;
/* 0x05C0 */ cXyz field_0x5c0;
/* 0x05BD */ s8 armament_flag;
/* 0x05C0 */ cXyz find_pos;
/* 0x05CC */ s16 target_ya;
/* 0x05D0 */ mDoExt_McaMorfSO* anm_p;
/* 0x05D4 */ Z2CreatureEnemy sound;
@@ -40,29 +42,29 @@ public:
/* 0x067C */ int anm;
/* 0x0680 */ int field_0x680;
/* 0x0684 */ dJntCol_c mJntCol;
/* 0x0694 */ J3DModel* arrow;
/* 0x0694 */ J3DModel* arrow_model;
/* 0x0698 */ mDoExt_McaMorfSO* bow_anm;
/* 0x069C */ mDoExt_McaMorf* mpMorfHornAnm;
/* 0x06A0 */ s8 field_0x6a0;
/* 0x06A4 */ cXyz field_0x6a4;
/* 0x06B0 */ cXyz field_0x6b0;
/* 0x06BC */ csXyz field_0x6bc;
/* 0x069C */ mDoExt_McaMorf* horn_anm;
/* 0x06A0 */ s8 horn_mode;
/* 0x06A4 */ cXyz horn_pos;
/* 0x06B0 */ cXyz horn_spd;
/* 0x06BC */ csXyz horn_rot;
/* 0x06C2 */ s8 run_flag;
/* 0x06C3 */ u8 field_0x6c3;
/* 0x06C4 */ J3DModel* eye_model[2];
/* 0x06CC */ f32 field_0x6cc;
/* 0x06D0 */ f32 field_0x6d0;
/* 0x06D4 */ J3DModel* armor_boss_part[14];
/* 0x070C */ s8 field_0x70c[14];
/* 0x071C */ cXyz field_0x71c[14];
/* 0x07C4 */ cXyz field_0x7c4[14];
/* 0x086C */ csXyz field_0x86c[14];
/* 0x070C */ s8 part_break[14];
/* 0x071C */ cXyz part_pos[14];
/* 0x07C4 */ cXyz part_spd[14];
/* 0x086C */ csXyz part_angle[14];
/* 0x08C0 */ u32 armor_break_eff[14][3];
/* 0x0968 */ s8 field_0x968;
/* 0x096C */ f32 field_0x96c;
/* 0x0970 */ s16 counter;
/* 0x0972 */ s16 action;
/* 0x0974 */ s16 prev_action;
/* 0x0974 */ s16 old_action;
/* 0x0978 */ f32 dis;
/* 0x097C */ s16 angleY;
/* 0x0980 */ f32 attack_range;
@@ -76,7 +78,7 @@ public:
/* 0x099E */ s16 attack_timer;
/* 0x09A0 */ s8 field_0x9a0;
/* 0x09A1 */ s8 look_timer;
/* 0x09A2 */ s8 field_0x9a2;
/* 0x09A2 */ s8 arrow_draw;
/* 0x09A3 */ s8 arrow_flag;
/* 0x09A4 */ s8 field_0x9a4;
/* 0x09A5 */ u8 field_0x9a5;
@@ -86,19 +88,19 @@ public:
/* 0x09AB */ s8 field_0x9ab;
/* 0x09AC */ s8 field_0x9ac;
/* 0x09AD */ s8 field_0x9ad;
/* 0x09B0 */ cXyz field_0x9b0;
/* 0x09B0 */ cXyz center_body;
/* 0x09BC */ s8 ride_mode;
/* 0x09BD */ s8 field_0x9bd;
/* 0x09BE */ s8 boar_stand;
/* 0x09BF */ u8 field_0x9bf;
/* 0x09C0 */ f32 field_0x9c0;
/* 0x09C4 */ f32 field_0x9c4;
/* 0x09C8 */ s8 field_0x9c8;
/* 0x09C0 */ f32 mount_jump_y;
/* 0x09C4 */ f32 mount_jump_speed;
/* 0x09C8 */ s8 aim_type;
/* 0x09C9 */ u8 field_0x9c9;
/* 0x09CA */ s16 field_0x9ca;
/* 0x09CC */ s16 field_0x9cc;
/* 0x09CE */ s16 field_0x9ce;
/* 0x09D0 */ s16 field_0x9d0;
/* 0x09CA */ s16 aim_angle_y;
/* 0x09CC */ s16 aim_angle_x;
/* 0x09CE */ s16 head_angle_y;
/* 0x09D0 */ s16 head_shake;
/* 0x09D4 */ cXyz eye;
/* 0x09E0 */ cXyz field_0x9e0; // unused, dbg offset 0xa18
/* 0x09EC */ f32 jump_z;
@@ -111,7 +113,7 @@ public:
/* 0x0A0C */ csXyz jump_angle;
/* 0x0A12 */ csXyz field_0xa12;
/* 0x0A18 */ csXyz field_0xa18;
/* 0x0A1E */ s8 field_0xa1e;
/* 0x0A1E */ s8 jump_timer;
/* 0x0A1F */ s8 field_0xa1f;
/* 0x0A20 */ u32 field_0xa20;
/* 0x0A24 */ f32 field_0xa24;
@@ -139,47 +141,47 @@ public:
/* 0x0AF8 */ s16 field_0xaf8;
/* 0x0AFA */ s8 field_0xafa;
/* 0x0AFB */ s8 field_0xafb;
/* 0x0AFC */ dPath* path;
/* 0x0B00 */ s8 field_0xb00;
/* 0x0B01 */ s8 path_dir;
/* 0x0AFC */ dPath* ppd;
/* 0x0B00 */ s8 jyunkai_no; /* 巡回ポイントNo (Patrol point index) */
/* 0x0B01 */ s8 dir;
/* 0x0B04 */ dBgS_AcchCir AcchCir;
/* 0x0B44 */ dBgS_ObjAcch ObjAcch;
/* 0x0D1C */ dCcD_Stts mStts;
/* 0x0B44 */ dBgS_ObjAcch Bgc;
/* 0x0D1C */ dCcD_Stts Stts;
/* 0x0D58 */ dCcD_Sph cc_sph[3];
/* 0x1100 */ dCcD_Sph at_sph;
/* 0x1238 */ dCcU_AtInfo AtInfo;
/* 0x1238 */ dCcU_AtInfo at_info;
/* 0x125C */ u8 hio_set;
/* 0x125D */ s8 field_0x125d;
/* 0x1260 */ u32 field_0x1260;
/* 0x1264 */ u32 field_0x1264;
/* 0x1268 */ u32 enemy_downWtrA[3];
/* 0x1274 */ u32 fire_eff[2];
/* 0x127C */ cXyz field_0x127c;
/* 0x1288 */ cXyz field_0x1288;
/* 0x1268 */ u32 w_eff_id[3];
/* 0x1274 */ u32 fire_eff_id[2];
/* 0x127C */ cXyz fire_pos;
/* 0x1288 */ cXyz fire_eff;
/* 0x1294 */ s8 field_0x1294;
/* 0x1295 */ s8 one_hit_kill;
/* 0x1296 */ s8 field_0x1296;
/* 0x1297 */ s8 field_0x1297;
/* 0x1298 */ s8 field_0x1298;
/* 0x1299 */ u8 field_0x1299;
/* 0x129A */ s8 actor_set; // 1: Eldin Field, 2 Eldin Bridge, 3 Lake Hylia Bridge, 4 ???
/* 0x129A */ s8 actor_set;
/* 0x129B */ u8 field_0x129b;
/* 0x129C */ s8 field_0x129c;
/* 0x129C */ s8 horn_timer;
/* 0x12A0 */ int sw;
/* 0x12A4 */ s16 demo_mode;
/* 0x12A6 */ s16 demo_timer;
/* 0x12A8 */ cXyz demo_cam_eye;
/* 0x12B4 */ cXyz demo_cam_center;
/* 0x12C0 */ cXyz field_0x12c0;
/* 0x12CC */ cXyz field_0x12cc;
/* 0x12D8 */ cXyz field_0x12d8;
/* 0x12E4 */ cXyz field_0x12e4;
/* 0x12B4 */ cXyz demo_cam_ctr;
/* 0x12C0 */ cXyz demo_cam_way;
/* 0x12CC */ cXyz demo_cam_target;
/* 0x12D8 */ cXyz demo_cam_eye_spd;
/* 0x12E4 */ cXyz demo_cam_way_spd;
/* 0x12F0 */ cXyz field_0x12f0;
/* 0x12FC */ u8 field_0x12fc[0x1300 - 0x12fc];
/* 0x1300 */ f32 field_0x1300;
/* 0x1300 */ f32 demo_cam_eye_z;
/* 0x1304 */ u8 blurRate;
/* 0x1308 */ f32 demo_cam_zoom;
/* 0x130C */ f32 field_0x130c;
/* 0x130C */ f32 demo_cam_morf;
/* 0x1310 */ u8 field_0x1310[0x131c - 0x1310];
/* 0x131C */ dMsgFlow_c MsgFlow;
};
+90 -90
View File
@@ -57,7 +57,7 @@ enum daE_WB_ACT {
};
struct himo_s {
/* 0x0 */ cXyz field_0x0[16];
/* 0x0 */ cXyz node[16];
};
@@ -79,61 +79,61 @@ public:
BOOL checkNormalRideMode() const;
void setRunRideMode();
MtxP getRideMtx() { return mpModelMorf->getModel()->getAnmMtx(15); }
f32 nowAnimeFrame() const { return mpModelMorf->getFrame(); }
s16 getWaitRollAngle() const { return mWaitRollAngle; }
BOOL checkGetOff() const { return mEnemy.speedF < 3.0f; }
f32 rideSpeedRate() const { return mEnemy.speedF / mSpeedRate; }
f32 getAnimeFrameRate() { return mpModelMorf->getFrame() / mpModelMorf->getEndFrame(); }
BOOL checkAnmLoopFrame() { return mpModelMorf->checkFrame(0.0f); }
MtxP getRideMtx() { return anm_p->getModel()->getAnmMtx(15); }
f32 nowAnimeFrame() const { return anm_p->getFrame(); }
s16 getWaitRollAngle() const { return wait_roll_angle; }
BOOL checkGetOff() const { return enemy.speedF < 3.0f; }
f32 rideSpeedRate() const { return enemy.speedF / ride_speed_max; }
f32 getAnimeFrameRate() { return anm_p->getFrame() / anm_p->getEndFrame(); }
BOOL checkAnmLoopFrame() { return anm_p->checkFrame(0.0f); }
J3DModel* getModel() {
if (mpModelMorf != NULL) {
return mpModelMorf->getModel();
if (anm_p != NULL) {
return anm_p->getModel();
}
return NULL;
}
public:
/* 0x0000 */ fopEn_enemy_c mEnemy; ///< @brief Base enemy class instance.
/* 0x05AC */ request_of_phase_process_class mPhase; ///< @brief Phase process request handler.
/* 0x05B4 */ s16 mActionMode; ///< @brief Current sub-action mode within the run action.
/* 0x05B8 */ char* mResName; ///< @brief Resource name for loading models/animations.
/* 0x05BC */ u8 mParam; ///< @brief Creation parameter 1.
/* 0x05BD */ u8 mParam2; ///< @brief Creation parameter 2.
/* 0x0000 */ fopEn_enemy_c enemy; ///< @brief Base enemy class instance.
/* 0x05AC */ request_of_phase_process_class phase; ///< @brief Phase process request handler.
/* 0x05B4 */ s16 ride_mode; ///< @brief Current sub-action mode within the run action.
/* 0x05B8 */ char* resName; ///< @brief Resource name for loading models/animations.
/* 0x05BC */ u8 arg0; ///< @brief Creation parameter 1.
/* 0x05BD */ u8 arg1; ///< @brief Creation parameter 2.
/* 0x05BE */ u8 field_0x5be;
/* 0x05BF */ bool field_0x5bf;
/* 0x05BF */ bool no_draw;
/* 0x05C0 */ u8 field_0x5c0;
/* 0x05C4 */ cXyz field_0x5c4;
/* 0x05C4 */ cXyz eye;
/* 0x05D0 */ cXyz field_0x5d0;
/* 0x05DC */ s16 mTargetFacingAngle; ///< @brief Target facing angle for turning towards path point.
/* 0x05DC */ s16 target_ya; ///< @brief Target facing angle for turning towards path point.
/* 0x05DE */ s16 field_0x5de;
/* 0x05E0 */ mDoExt_McaMorfSO* mpModelMorf; ///< @brief Pointer to model morph animator.
/* 0x05E4 */ f32 mPlaySpeed; ///< @brief Animation playback speed.
/* 0x05E8 */ int mAnmID; ///< @brief Current animation ID.
/* 0x05EC */ Z2CreatureRide mZ2Ride; ///< @brief Z2 sound creature for ride effects.
/* 0x05E0 */ mDoExt_McaMorfSO* anm_p; ///< @brief Pointer to model morph animator.
/* 0x05E4 */ f32 anm_spd; ///< @brief Animation playback speed.
/* 0x05E8 */ int anmID; ///< @brief Current animation ID.
/* 0x05EC */ Z2CreatureRide sound; ///< @brief Z2 sound creature for ride effects.
/* 0x0688 */ int field_0x688;
/* 0x068C */ s8 mPathInitialized; ///< @brief Flag indicating if path has been initialized.
/* 0x068E */ s16 field_0x68e;
/* 0x0690 */ s16 mActionID; ///< @brief High-level action ID.
/* 0x0692 */ s16 field_0x692;
/* 0x0694 */ int mShadowKey; ///< @brief Shadow drawing key.
/* 0x0698 */ s16 field_0x698[4];
/* 0x06A0 */ s16 field_0x6a0;
/* 0x068C */ s8 path_set; ///< @brief Flag indicating if path has been initialized.
/* 0x068E */ s16 counter;
/* 0x0690 */ s16 action; ///< @brief High-level action ID.
/* 0x0692 */ s16 old_action;
/* 0x0694 */ int shadow_key; ///< @brief Shadow drawing key.
/* 0x0698 */ s16 timer[4];
/* 0x06A0 */ s16 wait_timer;
/* 0x06A2 */ u8 field_0x6a2[0x6ae - 0x6a2];
/* 0x06AE */ csXyz field_0x6ae;
/* 0x06B4 */ csXyz field_0x6b4;
/* 0x06BA */ s16 field_0x6ba;
/* 0x06AE */ csXyz rotation;
/* 0x06B4 */ csXyz rotation_spd;
/* 0x06BA */ s16 damage_timer;
/* 0x06BC */ u8 field_0x6bc;
/* 0x06BD */ s8 mPursuitFlag; ///< @brief Flag indicating pursuit mode.
/* 0x06BE */ u16 mStatusFlags; ///< @brief Bitfield for various status flags.
/* 0x06BD */ s8 pursuit_flg; ///< @brief Flag indicating pursuit mode.
/* 0x06BE */ u16 status_flag; ///< @brief Bitfield for various status flags.
/* 0x06C0 */ s8 field_0x6c0;
/* 0x06C4 */ f32 field_0x6c4;
/* 0x06C8 */ int mCurrentPathIndex; ///< @brief Current index in the path points array.
/* 0x06CC */ int mPathDirection; ///< @brief Direction to iterate path points (+1 or -1).
/* 0x06D0 */ s16 field_0x6d0;
/* 0x06D2 */ s16 mTurnStep; ///< @brief Step value for turning angle adjustment.
/* 0x06C4 */ f32 x_check;
/* 0x06C8 */ int path_ten; ///< @brief Current index in the path points array.
/* 0x06CC */ int dir; ///< @brief Direction to iterate path points (+1 or -1).
/* 0x06D0 */ s16 range;
/* 0x06D2 */ s16 turn_step; ///< @brief Step value for turning angle adjustment.
/* 0x06D4 */ s16 field_0x6d4;
/* 0x06D6 */ s16 field_0x6d6;
/* 0x06D8 */ s16 field_0x6d8;
@@ -142,24 +142,24 @@ public:
/* 0x06DE */ csXyz field_0x6de;
/* 0x06E4 */ s8 field_0x6e4;
/* 0x06E5 */ u8 field_0x6e5[0x6ec - 0x6e5];
/* 0x06EC */ csXyz field_0x6ec[0x1d];
/* 0x079A */ s16 mBodyTiltAngle; ///< @brief Body tilt angle based on turning.
/* 0x079C */ u8 field_0x79c;
/* 0x079D */ s8 field_0x79d;
/* 0x079E */ s8 mLapCount; ///< @brief Lap or progress count affecting path generation.
/* 0x079F */ s8 mPathAdjustCounter; ///< @brief Counter for periodic path adjustment.
/* 0x07A0 */ s16 field_0x7a0;
/* 0x07A2 */ s8 field_0x7a2;
/* 0x06EC */ csXyz field_0x6ec[29];
/* 0x079A */ s16 body_angle; ///< @brief Body tilt angle based on turning.
/* 0x079C */ u8 start_timer;
/* 0x079D */ s8 leader;
/* 0x079E */ s8 lap_num; ///< @brief Lap or progress count affecting path generation.
/* 0x079F */ s8 path_adjust_count; ///< @brief Counter for periodic path adjustment.
/* 0x07A0 */ s16 dodge_angle;
/* 0x07A2 */ s8 kiba;
/* 0x07A4 */ s16 field_0x7a4;
/* 0x07A6 */ s8 field_0x7a6;
/* 0x07A7 */ s8 field_0x7a7;
/* 0x07A8 */ f32 field_0x7a8;
/* 0x07AC */ dBgS_AcchCir field_0x7ac;
/* 0x07EC */ dBgS_ObjAcch mAcch;
/* 0x09C4 */ dCcD_Stts mStts;
/* 0x0A00 */ dCcD_Sph field_0xa00[7];
/* 0x1288 */ dCcD_Sph field_0x1288;
/* 0x13C0 */ dCcU_AtInfo field_0x13c0;
/* 0x07A8 */ f32 pass;
/* 0x07AC */ dBgS_AcchCir AcchCir;
/* 0x07EC */ dBgS_ObjAcch Bgc;
/* 0x09C4 */ dCcD_Stts Stts;
/* 0x0A00 */ dCcD_Sph cc_sph[7];
/* 0x1288 */ dCcD_Sph at_sph;
/* 0x13C0 */ dCcU_AtInfo at_info;
/* 0x13E4 */ u8 field_0x13e4;
/* 0x13E8 */ u32 field_0x13e8[2];
/* 0x13F0 */ u32 field_0x13f0;
@@ -173,53 +173,53 @@ public:
/* 0x1414 */ u32 field_0x1414;
/* 0x1418 */ u32 field_0x1418;
/* 0x141C */ u32 field_0x141c;
/* 0x1420 */ u32 field_0x1420[3];
/* 0x142C */ u8 mMovementType; ///< @brief Type of movement (1 for normal, 2 for faster).
/* 0x142D */ u8 mCollisionFlags; ///< @brief Flags for collision states.
/* 0x142E */ u8 mLandingFlag; ///< @brief Flag for landing after jump.
/* 0x142F */ s8 mSpeedCapTimer; ///< @brief Timer to cap speed at 30.
/* 0x1430 */ s8 field_0x1430;
/* 0x1432 */ s16 field_0x1432;
/* 0x1434 */ fpc_ProcID field_0x1434; // Rider actor ID? ///< @brief Process ID of rider actor.
/* 0x1438 */ cXyz field_0x1438[2];
/* 0x1450 */ himo_s field_0x1450[2];
/* 0x15D0 */ mDoExt_3DlineMat1_c field_0x15d0[2];
/* 0x1648 */ mDoExt_3DlineMat1_c field_0x1648;
/* 0x1684 */ f32 mAnimDuration; ///< @brief Duration or timer for animation.
/* 0x1420 */ u32 w_eff_id[3];
/* 0x142C */ u8 movement_type; ///< @brief Type of movement (1 for normal, 2 for faster).
/* 0x142D */ u8 collision_flg; ///< @brief Flags for collision states.
/* 0x142E */ u8 landing_flag; ///< @brief Flag for landing after jump.
/* 0x142F */ s8 gake_flg;
/* 0x1430 */ s8 demo_stop;
/* 0x1432 */ s16 dash_timer;
/* 0x1434 */ fpc_ProcID rd_id; // Rider actor ID? ///< @brief Process ID of rider actor.
/* 0x1438 */ cXyz rein_hand_pos[2];
/* 0x1450 */ himo_s himo[2];
/* 0x15D0 */ mDoExt_3DlineMat1_c himo_mat[2];
/* 0x1648 */ mDoExt_3DlineMat1_c himo_tex;
/* 0x1684 */ f32 anm_time; ///< @brief Duration or timer for animation.
/* 0x1688 */ s16 field_0x1688;
/* 0x168A */ s16 field_0x168a;
/* 0x168C */ f32 field_0x168c;
/* 0x1690 */ f32 field_0x1690;
/* 0x168C */ f32 rein_spd;
/* 0x1690 */ f32 acceleration;
/* 0x1694 */ u8 field_0x1694[0x169e - 0x1694];
/* 0x169E */ s16 field_0x169e;
/* 0x16A0 */ s16 field_0x16a0;
/* 0x16A4 */ cXyz field_0x16a4;
/* 0x16B0 */ cXyz field_0x16b0;
/* 0x16BC */ cXyz field_0x16bc;
/* 0x16C8 */ cXyz field_0x16c8;
/* 0x16D4 */ cXyz field_0x16d4;
/* 0x16E0 */ cXyz field_0x16e0;
/* 0x16EC */ cXyz field_0x16ec;
/* 0x16F8 */ cXyz field_0x16f8;
/* 0x1704 */ s16 field_0x1704;
/* 0x1708 */ f32 field_0x1708;
/* 0x170C */ f32 field_0x170c;
/* 0x1710 */ f32 field_0x1710;
/* 0x1714 */ f32 field_0x1714;
/* 0x169E */ s16 demo_mode;
/* 0x16A0 */ s16 demo_timer;
/* 0x16A4 */ cXyz demo_cam_eye;
/* 0x16B0 */ cXyz demo_cam_eye_mae;
/* 0x16BC */ cXyz demo_cam_ctr;
/* 0x16C8 */ cXyz demo_cam_ctr_mae;
/* 0x16D4 */ cXyz demo_cam_target;
/* 0x16E0 */ cXyz demo_cam_way;
/* 0x16EC */ cXyz demo_cam_eye_spd;
/* 0x16F8 */ cXyz demo_cam_way_spd;
/* 0x1704 */ s16 demo_cam_ya;
/* 0x1708 */ f32 demo_cam_eye_z;
/* 0x170C */ f32 demo_cam_eye_x;
/* 0x1710 */ f32 demo_cam_morf;
/* 0x1714 */ f32 demo_cam_zoom;
/* 0x1718 */ f32 field_0x1718;
/* 0x171C */ f32 field_0x171c;
/* 0x1720 */ s8 field_0x1720;
/* 0x1721 */ s8 field_0x1721;
/* 0x1722 */ s8 field_0x1722;
/* 0x1722 */ s8 saku_burn;
/* 0x1723 */ u8 field_0x1723[0x17c4 - 0x1723];
/* 0x17C4 */ u32 field_0x17c4;
/* 0x17C4 */ u32 anm_se_eff;
/* 0x17C8 */ u8 field_0x17c8[0x17D0 - 0x17C8];
/* 0x17D0 */ u32 field_0x17d0[4];
/* 0x17D0 */ u32 w_eff_id2[4];
/* 0x17E0 */ u8 field_0x17e0;
/* 0x17E1 */ u8 field_0x17e1;
/* 0x17E2 */ s16 mWaitRollAngle; ///< @brief Roll angle during wait state.
/* 0x17E2 */ s16 wait_roll_angle; ///< @brief Roll angle during wait state.
/* 0x17E4 */ u8 field_0x17e4[0x17e8 - 0x17e4];
/* 0x17E8 */ f32 mSpeedRate; ///< @brief Speed rate for riding calculations.
/* 0x17E8 */ f32 ride_speed_max; ///< @brief Speed rate for riding calculations.
};
STATIC_ASSERT(sizeof(e_wb_class) == 0x17EC);
+1 -1
View File
@@ -480,7 +480,7 @@ int daAlink_c::setSyncBoarPos() {
int daAlink_c::setSyncBoarRunPos() {
e_wb_class* boar = (e_wb_class*)mRideAcKeep.getActor();
fopAc_ac_c* boar_actor = &boar->mEnemy;
fopAc_ac_c* boar_actor = &boar->enemy;
if (boar == NULL || boar->checkDownDamage()) {
boarForceGetOff();
+748 -725
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -531,7 +531,7 @@ static void e_rdb_end(e_rdb_class* i_this) {
anm_init(i_this, e_rdb_class::BCK_RB_ED_DEMO_DOWN, 2.0f, 0, 1.0f);
i_this->mMode = 1;
if (actor != NULL) {
actor->field_0x169e = 60;
actor->demo_mode = 60;
}
break;
@@ -580,12 +580,12 @@ static void e_rdb_end(e_rdb_class* i_this) {
break;
case 10:
if ((((actor->mActionID == 102 && actor->mEnemy.speedF > 40.0f) &&
if ((((actor->action == 102 && actor->enemy.speedF > 40.0f) &&
player->current.pos.x > 1470.0f && player->current.pos.x < 2130.0f)) &&
((player->current.pos.z < 200.0f) &&
(player->shape_angle.y > 0x7000 || player->shape_angle.y < -0x7000)))
{
actor->field_0x169e = 80;
actor->demo_mode = 80;
i_this->mMode = 11;
}
// [[fallthrough]]
+2928 -2921
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -918,7 +918,7 @@ BOOL daNpcTheB_c::doEvent() {
rv = TRUE;
} else {
wb_p = (e_wb_class*)fopAcM_SearchByName(fpcNm_E_WB_e);
if (wb_p->field_0x169e == 0x60 && wb_p->field_0x16a0 == 1) {
if (wb_p->demo_mode == 0x60 && wb_p->demo_timer == 1) {
mPersonalCombatAfterFlag = 1;
EvCut_PersonalCombatAfter();
rv = TRUE;
+2 -2
View File
@@ -172,10 +172,10 @@ static void* s_obj_sub(void* i_actor, void* i_data) {
void daObjCRVFENCE_c::NormalAction() {
if (!field_0x5f4) {
e_wb_class* wb_p = (e_wb_class*)fpcM_Search(s_obj_sub, this);
if (wb_p != NULL && wb_p->mActionID == ACT_PL_RIDE2) {
if (wb_p != NULL && wb_p->action == ACT_PL_RIDE2) {
fopAcM_OffStatus(this, fopAcStts_CULL_e);
fopAcM_seStartCurrent(this, Z2SE_OBJ_SAKU_BREAK, 0);
cXyz sp5c(fopAcM_GetPosition(&wb_p->mEnemy));
cXyz sp5c(fopAcM_GetPosition(&wb_p->enemy));
Mtx mtx;
mDoMtx_inverse(field_0x65c->getBaseTRMtx(), mtx);
mDoMtx_stack_c::copy(mtx);
+1 -1
View File
@@ -97,7 +97,7 @@ void daObjCRVLH_DW_c::Obj_Hit() {
if (mCyl.ChkCoHit() != 0) {
fopAc_ac_c* actor = mCyl.GetCoHitObj()->GetAc();
if (fopAcM_GetName(dCc_GetAc(actor)) == fpcNm_E_WB_e &&
((e_wb_class*)actor)->mActionID == ACT_PL_RIDE2)
((e_wb_class*)actor)->action == ACT_PL_RIDE2)
{
Break();
}
+20 -20
View File
@@ -5,48 +5,48 @@
#include "d/actor/d_a_tag_hstop.h"
BOOL e_wb_class::checkWait() {
return mActionMode == 0x2A;
return ride_mode == 0x2A;
}
void e_wb_class::setPlayerRideNow() {
mActionID = ACT_PL_RIDE_NOW;
mActionMode = 0;
mStatusFlags |= u16(3);
action = ACT_PL_RIDE_NOW;
ride_mode = 0;
status_flag |= u16(3);
}
void e_wb_class::setPlayerRide() {
mActionID = ACT_PL_RIDE;
mActionMode = 0;
mStatusFlags |= u16(3);
action = ACT_PL_RIDE;
ride_mode = 0;
status_flag |= u16(3);
mZ2Ride.setLinkRiding(true);
sound.setLinkRiding(true);
}
void e_wb_class::getOff() {
if (!checkDownDamage() || mActionID == ACT_PL_RIDE_NOW) {
mActionID = 0;
if (!checkDownDamage() || action == ACT_PL_RIDE_NOW) {
action = 0;
} else {
field_0x692 = 0;
old_action = 0;
}
mActionMode = 0;
mStatusFlags &= u16(~3);
mZ2Ride.setLinkRiding(false);
ride_mode = 0;
status_flag &= u16(~3);
sound.setLinkRiding(false);
}
BOOL e_wb_class::checkDownDamage() {
return mActionID != ACT_PL_RIDE && mActionID != 0x66 && mActionID != ACT_S_DAMAGE;
return action != ACT_PL_RIDE && action != ACT_PL_RIDE2 && action != ACT_S_DAMAGE;
}
BOOL e_wb_class::checkNormalRideMode() const {
return mActionID != 0x66 || mActionMode < 1;
return action != ACT_PL_RIDE2 || ride_mode < 1;
}
void e_wb_class::setRunRideMode() {
if (mActionID == ACT_PL_RIDE) {
mActionMode = 0;
mActionID = ACT_S_DAMAGE;
field_0x692 = 0x65;
if (action == ACT_PL_RIDE) {
ride_mode = 0;
action = ACT_S_DAMAGE;
old_action = ACT_PL_RIDE;
}
}