From cdab0e87a8066bda705a4515164725412bce56f8 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Sat, 12 Jul 2025 12:40:29 -0700 Subject: [PATCH] e_ws mostly done (#2529) --- include/d/actor/d_a_e_ws.h | 80 +- src/d/actor/d_a_e_ws.cpp | 1834 +++++++++++++++++++----------------- 2 files changed, 1024 insertions(+), 890 deletions(-) diff --git a/include/d/actor/d_a_e_ws.h b/include/d/actor/d_a_e_ws.h index 27bccdb6b7..1fc5dd814b 100644 --- a/include/d/actor/d_a_e_ws.h +++ b/include/d/actor/d_a_e_ws.h @@ -2,6 +2,9 @@ #define D_A_E_WS_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" /** * @ingroup actors-enemies @@ -12,15 +15,23 @@ * */ class daE_WS_c : public fopEn_enemy_c { - /* 807E3A6C */ void draw(); +public: + enum daE_WS_Action_e { + ACTION_WAIT_e, + ACTION_ATTACK_e, + ACTION_DOWN_e, + ACTION_WIND_DOWN_e, + }; + + /* 807E3A6C */ int draw(); /* 807E3C20 */ void setBck(int, u8, f32, f32); /* 807E3CC4 */ void setFootSound(); /* 807E3F90 */ void setActionMode(int); - /* 807E3FAC */ void calcTargetDist(cXyz, cXyz); - /* 807E40C8 */ void calcTargetAngle(cXyz, cXyz); - /* 807E416C */ void checkInSearchRange(cXyz, cXyz); - /* 807E4224 */ void checkPlayerPos(); - /* 807E4568 */ void checkAttackEnd(); + /* 807E3FAC */ f32 calcTargetDist(cXyz, cXyz); + /* 807E40C8 */ s16 calcTargetAngle(cXyz, cXyz); + /* 807E416C */ bool checkInSearchRange(cXyz, cXyz); + /* 807E4224 */ int checkPlayerPos(); + /* 807E4568 */ bool checkAttackEnd(); /* 807E470C */ void executeWait(); /* 807E4AB8 */ void executeAttack(); /* 807E4E68 */ void executeDown(); @@ -29,22 +40,59 @@ class daE_WS_c : public fopEn_enemy_c { /* 807E58AC */ void action(); /* 807E5A3C */ void mtx_set(); /* 807E5AAC */ void cc_set(); - /* 807E5C0C */ void execute(); + /* 807E5C0C */ int execute(); /* 807E5CD8 */ void checkInitialWall(); - /* 807E5FB8 */ void checkBeforeBg(s16); - /* 807E63F8 */ void checkWall(); - /* 807E66B4 */ void _delete(); - /* 807E6748 */ void CreateHeap(); - /* 807E6860 */ void create(); -private: - /* 0x5ac */ u8 field_0x5ac[0xb80 - 0x5ac]; + /* 807E5FB8 */ bool checkBeforeBg(s16); + /* 807E63F8 */ bool checkWall(); + /* 807E66B4 */ int _delete(); + /* 807E6748 */ int CreateHeap(); + /* 807E6860 */ int create(); + + /* 0x5AC */ request_of_phase_process_class mPhase; + /* 0x5B4 */ mDoExt_McaMorfSO* mpModelMorf; + /* 0x5B8 */ Z2CreatureEnemy mSound; + /* 0x65C */ cXyz field_0x65c; + /* 0x668 */ csXyz field_0x668; + /* 0x66E */ csXyz field_0x66e; + /* 0x674 */ f32 mDownColor; + /* 0x678 */ f32 mBodyScale; + /* 0x67C */ int mAction; + /* 0x680 */ int mMode; + /* 0x684 */ u32 mShadowId; + /* 0x688 */ s16 mTargetAngle; + /* 0x68A */ s16 mTargetStep; + /* 0x68C */ u8 field_0x68c; + /* 0x68E */ s16 mInvulnerabilityTimer; + /* 0x690 */ u8 field_0x690; + /* 0x691 */ u8 field_0x691; + /* 0x692 */ u8 mSwbit; + /* 0x694 */ dBgS_AcchCir mAcchCir; + /* 0x6D4 */ dBgS_ObjAcch mAcch; + /* 0x8AC */ dCcD_Stts mCcStts; + /* 0x8E8 */ dCcD_Sph mCcSph; + /* 0xA20 */ dCcD_Sph mCcBokkuriSph; + /* 0xB58 */ dCcU_AtInfo mAtInfo; + /* 0xB7C */ u8 mHIOInit; }; STATIC_ASSERT(sizeof(daE_WS_c) == 0xb80); -class daE_WS_HIO_c { +class daE_WS_HIO_c : public JORReflexible { +public: /* 807E3A0C */ daE_WS_HIO_c(); - /* 807E6E44 */ ~daE_WS_HIO_c(); + /* 807E6E44 */ virtual ~daE_WS_HIO_c() {} + + void genMessage(JORMContext*); + + /* 0x04 */ s8 id; + /* 0x08 */ f32 base_size; + /* 0x0C */ f32 move_range; + /* 0x10 */ f32 search_range; + /* 0x14 */ f32 search_y_range; + /* 0x18 */ f32 dist_to_ground; + /* 0x1C */ f32 search_angle; + /* 0x20 */ f32 attack_speed; + /* 0x24 */ u8 debug_ON; }; diff --git a/src/d/actor/d_a_e_ws.cpp b/src/d/actor/d_a_e_ws.cpp index 998166bf5a..bb9c38717d 100644 --- a/src/d/actor/d_a_e_ws.cpp +++ b/src/d/actor/d_a_e_ws.cpp @@ -4,258 +4,979 @@ */ #include "d/actor/d_a_e_ws.h" -#include "dol2asm.h" +#include "d/actor/d_a_obj_carry.h" +#include + UNK_REL_DATA; #include "f_op/f_op_actor_enemy.h" - -// -// Forward References: -// - -extern "C" void __ct__12daE_WS_HIO_cFv(); -extern "C" void draw__8daE_WS_cFv(); -extern "C" static void daE_WS_Draw__FP8daE_WS_c(); -extern "C" void setBck__8daE_WS_cFiUcff(); -extern "C" void setFootSound__8daE_WS_cFv(); -extern "C" void setActionMode__8daE_WS_cFi(); -extern "C" void calcTargetDist__8daE_WS_cF4cXyz4cXyz(); -extern "C" void calcTargetAngle__8daE_WS_cF4cXyz4cXyz(); -extern "C" void checkInSearchRange__8daE_WS_cF4cXyz4cXyz(); -extern "C" void checkPlayerPos__8daE_WS_cFv(); -extern "C" void checkAttackEnd__8daE_WS_cFv(); -extern "C" void executeWait__8daE_WS_cFv(); -extern "C" void executeAttack__8daE_WS_cFv(); -extern "C" void executeDown__8daE_WS_cFv(); -extern "C" void executeWindDown__8daE_WS_cFv(); -extern "C" void damage_check__8daE_WS_cFv(); -extern "C" void action__8daE_WS_cFv(); -extern "C" void mtx_set__8daE_WS_cFv(); -extern "C" void cc_set__8daE_WS_cFv(); -extern "C" void execute__8daE_WS_cFv(); -extern "C" static void daE_WS_Execute__FP8daE_WS_c(); -extern "C" void checkInitialWall__8daE_WS_cFv(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" void checkBeforeBg__8daE_WS_cFs(); -extern "C" void checkWall__8daE_WS_cFv(); -extern "C" static bool daE_WS_IsDelete__FP8daE_WS_c(); -extern "C" void _delete__8daE_WS_cFv(); -extern "C" static void daE_WS_Delete__FP8daE_WS_c(); -extern "C" void CreateHeap__8daE_WS_cFv(); -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void create__8daE_WS_cFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" static void daE_WS_Create__FP8daE_WS_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void __dt__12daE_WS_HIO_cFv(); -extern "C" void __sinit_d_a_e_ws_cpp(); -extern "C" static void func_807E6EC8(); -extern "C" static void func_807E6ED0(); -extern "C" extern char const* const d_a_e_ws__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_XrotS__FPA4_fs(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void mDoMtx_YrotM__FPA4_fs(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void LineCross__4cBgSFP11cBgS_LinChk(); -extern "C" void GroundCross__4cBgSFP11cBgS_GndChk(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void GetWallCode__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void SetGroundUpY__9dBgS_AcchFf(); -extern "C" void __ct__11dBgS_GndChkFv(); -extern "C" void __dt__11dBgS_GndChkFv(); -extern "C" void __ct__11dBgS_LinChkFv(); -extern "C" void __dt__11dBgS_LinChkFv(); -extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void GetAtHitObj__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_darkworld_check__Fv(); -extern "C" void GetAc__8cCcD_ObjFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __pl__4cXyzCFRC3Vec(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void cM_rndFX__Ff(); -extern "C" void SetPos__11cBgS_GndChkFPC4cXyz(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void SetR__8cM3dGSphFf(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_chaseAngleS__FPsss(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void cLib_distanceAngleS__Fss(); -extern "C" void __ct__15Z2CreatureEnemyFv(); -extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc(); -extern "C" void setLinkSearch__15Z2CreatureEnemyFb(); -extern "C" void setEnemyName__15Z2CreatureEnemyFPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" u8 m_midnaActor__9daPy_py_c[4]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 807E732C-807E7330 00002C 0004+00 0/2 0/0 0/0 .rodata @3823 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3823 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x807E732C, &lit_3823); -#pragma pop - -/* 807E7330-807E7334 000030 0004+00 0/3 0/0 0/0 .rodata @3824 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3824 = 50.0f; -COMPILER_STRIP_GATE(0x807E7330, &lit_3824); -#pragma pop - -/* 807E7334-807E7338 000034 0004+00 0/1 0/0 0/0 .rodata @3825 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3825 = 300.0f; -COMPILER_STRIP_GATE(0x807E7334, &lit_3825); -#pragma pop - -/* 807E7338-807E733C 000038 0004+00 1/4 0/0 0/0 .rodata @3826 */ -SECTION_RODATA static f32 const lit_3826 = 200.0f; -COMPILER_STRIP_GATE(0x807E7338, &lit_3826); - -/* 807E733C-807E7340 00003C 0004+00 0/1 0/0 0/0 .rodata @3827 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3827 = 270.0f; -COMPILER_STRIP_GATE(0x807E733C, &lit_3827); -#pragma pop - -/* 807E7340-807E7344 000040 0004+00 0/1 0/0 0/0 .rodata @3828 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3828 = 18200.0f; -COMPILER_STRIP_GATE(0x807E7340, &lit_3828); -#pragma pop - -/* 807E7344-807E7348 000044 0004+00 0/1 0/0 0/0 .rodata @3829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3829 = 10.0f; -COMPILER_STRIP_GATE(0x807E7344, &lit_3829); -#pragma pop - +namespace { /* 807E7448-807E7488 000038 0040+00 1/1 0/0 0/0 .data cc_ws_src__22@unnamed@d_a_e_ws_cpp@ */ -SECTION_DATA static u8 data_807E7448[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, - 0xD8, 0xF9, 0xFD, 0xF5, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x75, 0x09, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, +static dCcD_SrcSph cc_ws_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0xD}, {0xD8F9FDF5, 0x3}, 0x75}}, // mObj + {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr }; /* 807E7488-807E74C8 000078 0040+00 1/1 0/0 0/0 .data cc_bokkuri_src__22@unnamed@d_a_e_ws_cpp@ */ -SECTION_DATA static u8 data_807E7488[64] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, +static dCcD_SrcSph cc_bokkuri_src = { + { + {0x0, {{AT_TYPE_CSTATUE_SWING, 0x1, 0x0}, {0x20008, 0x3}, 0x0}}, // mObj + {dCcD_SE_METAL, 0x0, 0x0, 0x0, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x2}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf + { + {{0.0f, 0.0f, 0.0f}, 40.0f} // mSph + } // mSphAttr }; +} -/* 807E74C8-807E74E4 -00001 001C+00 1/1 0/0 0/0 .data @4268 */ -SECTION_DATA static void* lit_4268[7] = { - (void*)(((char*)executeWait__8daE_WS_cFv) + 0x88), - (void*)(((char*)executeWait__8daE_WS_cFv) + 0xC8), - (void*)(((char*)executeWait__8daE_WS_cFv) + 0xE0), - (void*)(((char*)executeWait__8daE_WS_cFv) + 0x22C), - (void*)(((char*)executeWait__8daE_WS_cFv) + 0x278), - (void*)(((char*)executeWait__8daE_WS_cFv) + 0x290), - (void*)(((char*)executeWait__8daE_WS_cFv) + 0x2D8), -}; +/* 807E3A0C-807E3A6C 0000EC 0060+00 1/1 0/0 0/0 .text __ct__12daE_WS_HIO_cFv */ +daE_WS_HIO_c::daE_WS_HIO_c() { + id = -1; + base_size = 0.8f; + move_range = 50.0f; + search_range = 300.0f; + search_y_range = 200.0f; + dist_to_ground = 270.0f; + debug_ON = false; + search_angle = 18200; + attack_speed = 10.0f; +} + +/* 807E3A6C-807E3C00 00014C 0194+00 1/1 0/0 0/0 .text draw__8daE_WS_cFv */ +int daE_WS_c::draw() { + J3DModel* model_p = mpModelMorf->getModel(); + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model_p, &tevStr); + + if (mDownColor) { + J3DModelData* modelData_p = model_p->getModelData(); + for (u16 i = 0; i < modelData_p->getMaterialNum(); i++) { + J3DMaterial* material_p = modelData_p->getMaterialNodePointer(i); + material_p->getTevColor(0)->r = mDownColor; + material_p->getTevColor(0)->g = mDownColor; + material_p->getTevColor(0)->b = mDownColor; + } + } + + mpModelMorf->entryDL(); + + cXyz sp8; + sp8.set(current.pos.x, 100.0f + current.pos.y, current.pos.z); + mShadowId = dComIfGd_setShadow(mShadowId, 1, model_p, &sp8, 400.0f, 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + return 1; +} + +/* 807E3C00-807E3C20 0002E0 0020+00 1/0 0/0 0/0 .text daE_WS_Draw__FP8daE_WS_c */ +static int daE_WS_Draw(daE_WS_c* a_this) { + return a_this->draw(); +} + +/* 807E3C20-807E3CC4 000300 00A4+00 4/4 0/0 0/0 .text setBck__8daE_WS_cFiUcff */ +void daE_WS_c::setBck(int i_anm, u8 i_mode, f32 i_morf, f32 i_speed) { + mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_WS", i_anm), i_mode, i_morf, i_speed, 0.0f, -1.0f); +} + +/* 807E3CC4-807E3F90 0003A4 02CC+00 2/2 0/0 0/0 .text setFootSound__8daE_WS_cFv */ +void daE_WS_c::setFootSound() { + if (mpModelMorf->getAnm() == dComIfG_getObjectRes("E_WS", 7)) { + if (mpModelMorf->checkFrame(0.0f) || + mpModelMorf->checkFrame(4.5f) || + mpModelMorf->checkFrame(7.5f) || + mpModelMorf->checkFrame(9.0f) || + mpModelMorf->checkFrame(13.5f) || + mpModelMorf->checkFrame(16.0f) || + mpModelMorf->checkFrame(19.0f) || + mpModelMorf->checkFrame(23.5f) || + mpModelMorf->checkFrame(25.0f) || + mpModelMorf->checkFrame(28.0f) || + mpModelMorf->checkFrame(32.5f) || + mpModelMorf->checkFrame(36.0f) || + mpModelMorf->checkFrame(39.5f)) + { + mSound.startCreatureSound(Z2SE_EN_WS_FOOTNOTE, 0, -1); + } + } else if (mpModelMorf->getAnm() == dComIfG_getObjectRes("E_WS", 8)) { + if (mpModelMorf->checkFrame(0.5f) || + mpModelMorf->checkFrame(6.0f) || + mpModelMorf->checkFrame(11.0f) || + mpModelMorf->checkFrame(16.0f) || + mpModelMorf->checkFrame(21.0f) || + mpModelMorf->checkFrame(26.5f) || + mpModelMorf->checkFrame(31.0f)) + { + mSound.startCreatureSound(Z2SE_EN_WS_FOOTNOTE, 0, -1); + } + } +} + +/* 807E3F90-807E3FAC 000670 001C+00 5/5 0/0 0/0 .text setActionMode__8daE_WS_cFi */ +void daE_WS_c::setActionMode(int i_action) { + if (mAction != i_action) { + mAction = i_action; + mMode = 0; + } +} + +/* 807E3FAC-807E40C8 00068C 011C+00 4/4 0/0 0/0 .text calcTargetDist__8daE_WS_cF4cXyz4cXyz */ +f32 daE_WS_c::calcTargetDist(cXyz i_basePos, cXyz i_targetPos) { + return i_basePos.abs(i_targetPos); +} + +/* 807E40C8-807E416C 0007A8 00A4+00 3/3 0/0 0/0 .text calcTargetAngle__8daE_WS_cF4cXyz4cXyz */ +s16 daE_WS_c::calcTargetAngle(cXyz i_basePos, cXyz i_targetPos) { + cXyz sp1C; + cXyz sp10 = i_targetPos - i_basePos; + + mDoMtx_stack_c::XrotS(-field_0x668.x); + mDoMtx_stack_c::YrotM(-field_0x668.y); + mDoMtx_stack_c::multVec(&sp10, &sp1C); + return cM_atan2s(sp1C.x, sp1C.z); +} + +/* 807E75B8-807E75BC 000008 0004+00 2/2 0/0 0/0 .bss None */ +static u8 l_HIOInit; + +/* 807E75C8-807E75F0 000018 0028+00 7/7 0/0 0/0 .bss l_HIO */ +static daE_WS_HIO_c l_HIO; + +/* 807E416C-807E4224 00084C 00B8+00 3/3 0/0 0/0 .text checkInSearchRange__8daE_WS_cF4cXyz4cXyz */ +bool daE_WS_c::checkInSearchRange(cXyz i_basePos, cXyz i_targetPos) { + if (calcTargetDist(i_basePos, i_targetPos) < l_HIO.search_range && std::abs(i_basePos.y - i_targetPos.y) < l_HIO.search_y_range) { + return true; + } + + return false; +} + +/* 807E4224-807E4568 000904 0344+00 1/1 0/0 0/0 .text checkPlayerPos__8daE_WS_cFv */ +int daE_WS_c::checkPlayerPos() { + cXyz player_pos; + mDoMtx_stack_c::copy(daPy_getLinkPlayerActorClass()->getModelJointMtx(0)); + mDoMtx_stack_c::multVecZero(&player_pos); + + if ((daPy_getPlayerActorClass()->checkClimbMove() || + dComIfGp_checkPlayerStatus1(0, 0x2000000) || + dComIfGp_checkPlayerStatus1(0, 0x10000) || + calcTargetDist(current.pos, player_pos) < 150.0f) && + checkInSearchRange(player_pos, field_0x65c) && checkInSearchRange(current.pos, field_0x65c)) + { + dBgS_GndChk gndchk; + cXyz gndpos; + + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x66e); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f); + mDoMtx_stack_c::multVecZero(&gndpos); + + gndchk.SetPos(&gndpos); + gndpos.y = dComIfG_Bgsp().GroundCross(&gndchk); + if (current.pos.y - gndpos.y > l_HIO.dist_to_ground) { + if (cLib_distanceAngleS(shape_angle.y, calcTargetAngle(current.pos, player_pos)) < l_HIO.search_angle) { + return 1; + } + + if (calcTargetDist(current.pos, player_pos) < 150.0f) { + return 2; + } + } + } + + return 0; +} + +/* 807E4568-807E470C 000C48 01A4+00 1/1 0/0 0/0 .text checkAttackEnd__8daE_WS_cFv */ +// NONMATCHING +bool daE_WS_c::checkAttackEnd() { + cXyz player_pos; + mDoMtx_stack_c::copy(daPy_getLinkPlayerActorClass()->getModelJointMtx(0)); + mDoMtx_stack_c::multVecZero(&player_pos); + + if (!(daPy_getPlayerActorClass()->checkClimbMove() || + dComIfGp_checkPlayerStatus1(0, 0x02000000) || + dComIfGp_checkPlayerStatus1(0, 0x10000) || + calcTargetDist(current.pos, player_pos) < 200.0f) || + (!checkInSearchRange(current.pos, field_0x65c) || checkBeforeBg(shape_angle.y))) + { + setActionMode(ACTION_WAIT_e); + speedF = 0.0f; + return true; + } + + return false; +} + +/* 807E470C-807E4AB8 000DEC 03AC+00 2/1 0/0 0/0 .text executeWait__8daE_WS_cFv */ +void daE_WS_c::executeWait() { + int temp_r3 = checkPlayerPos(); + if (temp_r3 == 1) { + setActionMode(ACTION_ATTACK_e); + return; + } + + if (temp_r3 == 2 && mMode != 3 && mMode != 4) { + mMode = 2; + } + + switch (mMode) { + case 0: + field_0x68c = 50.0f + cM_rndF(50.0f); + setBck(9, 2, 3.0f, 1.0f); + mMode = 1; + /* fallthrough */ + case 1: + if (field_0x68c == 0) { + mMode = 2; + } + break; + case 2: + speedF = 0.0f; + field_0x690 = 0; + mTargetAngle = shape_angle.y + cM_rndFX(32768.0f); + + if (temp_r3 == 2) { + mTargetStep = 0x200; + setBck(8, 2, 3.0f, 2.4f); + } else { + if (calcTargetDist(current.pos, field_0x65c) >= l_HIO.move_range) { + mTargetAngle = calcTargetAngle(current.pos, field_0x65c); + field_0x690 = 1; + } + mTargetStep = 0x100; + setBck(8, 2, 3.0f, 1.2f); + } + + mMode = 3; + /* fallthrough */ + case 3: + setFootSound(); + + if (cLib_chaseAngleS(&shape_angle.y, mTargetAngle, mTargetStep)) { + mMode = 4; + field_0x68c = 10; + setBck(9, 2, 3.0f, 1.0f); + } + break; + case 4: + if (field_0x68c == 0) { + mMode = 5; + } + break; + case 5: + mMode = 6; + speedF = 3.0f; + field_0x68c = 20.0f + cM_rndF(10.0f); + setBck(7, 2, 3.0f, 1.0f); + /* fallthrough */ + case 6: + setFootSound(); + + if (field_0x690 == 0) { + if (calcTargetDist(current.pos, field_0x65c) >= l_HIO.move_range) { + field_0x68c = 0; + } + } + + if (checkBeforeBg(shape_angle.y)) { + field_0x68c = 0; + } + + if (field_0x68c == 0) { + speedF = 0.0f; + mMode = 0; + } + break; + } + + current.angle.y = shape_angle.y; +} + +/* 807E4AB8-807E4E68 001198 03B0+00 1/1 0/0 0/0 .text executeAttack__8daE_WS_cFv */ +// NONMATCHING +void daE_WS_c::executeAttack() { + cXyz player_pos; + mDoMtx_stack_c::copy(daPy_getLinkPlayerActorClass()->getModelJointMtx(0)); + mDoMtx_stack_c::multVecZero(&player_pos); + + switch (mMode) { + case 0: + setBck(8, 2, 3.0f, 3.5f); + mMode = 1; + speedF = 0.0f; + /* fallthrough */ + case 1: + setFootSound(); + + if (!checkAttackEnd()) { + if (cLib_chaseAngleS(&shape_angle.y, calcTargetAngle(current.pos, player_pos), 0x300)) { + mMode = 2; + setBck(10, 2, 3.0f, 1.0f); + mSound.startCreatureVoice(Z2SE_EN_WS_V_YOKOKU, -1); + field_0x68c = 10; + } + } + break; + case 2: + if (field_0x68c == 0) { + speedF = l_HIO.attack_speed * mBodyScale; + setBck(7, 2, 3.0f, 3.0f); + mMode = 3; + } + + if (checkAttackEnd()) { + return; + } + + break; + case 3: + setFootSound(); + cLib_chaseAngleS(&shape_angle.y, calcTargetAngle(current.pos, player_pos), 0x400); + + if (checkBeforeBg(shape_angle.y) || (mCcSph.ChkAtHit() && fopAcM_GetName(dCc_GetAc(mCcSph.GetAtHitObj()->GetAc())) == PROC_ALINK) || !checkInSearchRange(current.pos, field_0x65c)) { + mMode = 4; + speedF = 0.0f; + setBck(4, 0, 3.0f, 1.0f); + break; + } + + if (checkAttackEnd()) { + return; + } + break; + case 4: + if (mpModelMorf->checkFrame(7.5f)) { + mSound.startCreatureVoice(Z2SE_EN_WS_V_ATTACK, -1); + } + + if (mpModelMorf->isStop()) { + setActionMode(ACTION_WAIT_e); + } + break; + } + + current.angle.y = shape_angle.y; +} + +/* 807E4E68-807E5294 001548 042C+00 1/1 0/0 0/0 .text executeDown__8daE_WS_cFv */ +void daE_WS_c::executeDown() { + mInvulnerabilityTimer = 10; + + switch (mMode) { + case 0: + mCcSph.OffAtSetBit(); + mCcSph.OffTgSetBit(); + mCcBokkuriSph.OffTgSetBit(); + + mMode = 1; + speed.y = 0.0f; + speedF = 0.0f; + setBck(5, 0, 0.0f, 1.0f); + + mSound.startCreatureVoice(Z2SE_EN_WS_V_DAMAGE, -1); + /* fallthrough */ + case 1: + if (mpModelMorf->isStop()) { + mAcchCir.SetWall(0.0f, 4.0f); + current.angle.y = field_0x668.y; + setBck(6, 0, 3.0f, 0.0f); + mSound.startCreatureVoice(Z2SE_EN_WS_V_DEATH, -1); + speedF = 5.0f; + gravity = -3.0f; + mAcch.SetGroundUpY(25.0f * mBodyScale); + mMode = 2; + attention_info.flags = 0; + } + return; + case 2: + if (abs(shape_angle.y) < 0x4000) { + cLib_chaseAngleS(&shape_angle.y, 0, 0x200); + cLib_chaseAngleS(&shape_angle.x, 0x4000, 0x400); + } else { + cLib_chaseAngleS(&shape_angle.y, -0x8000, 0x200); + cLib_chaseAngleS(&shape_angle.x, -0x4000, 0x400); + } + + if (mAcch.ChkGroundHit()) { + speedF = 3.0f + cM_rndF(2.0f); + speed.y = 12.0f; + mMode = 3; + field_0x68c = 30; + setBck(6, 0, 5.0f, 1.0f); + mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1); + } + break; + case 3: + if (abs(shape_angle.y) < 0x4000) { + cLib_chaseAngleS(&shape_angle.y, 0, 0x200); + cLib_chaseAngleS(&shape_angle.x, 0x4000, 0x400); + } else { + cLib_chaseAngleS(&shape_angle.y, -0x8000, 0x200); + cLib_chaseAngleS(&shape_angle.x, -0x4000, 0x400); + } + + if (mAcch.ChkGroundHit()) { + mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1); + + if (abs(shape_angle.y) < 0x4000) { + shape_angle.y = 0; + shape_angle.x = 0x4000; + } else { + shape_angle.y = -0x8000; + shape_angle.x = -0x4000; + } + + speedF = 0.0f; + speed.y = 0.0f; + mMode = 4; + return; + } + break; + case 4: + cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f); + + if (mpModelMorf->isStop()) { + field_0x68c = 15; + mMode = 5; + return; + } + break; + case 5: + cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f); + + if (field_0x68c == 0) { + fopAcM_delete(this); + fopAcM_createDisappear(this, ¤t.pos, 7, 0, 7); + + if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this)); + } + } + break; + } +} + +/* 807E5294-807E56D0 001974 043C+00 1/1 0/0 0/0 .text executeWindDown__8daE_WS_cFv */ +void daE_WS_c::executeWindDown() { + mInvulnerabilityTimer = 10; + + switch (mMode) { + case 0: + mCcSph.OffAtSetBit(); + mCcSph.OffTgSetBit(); + mCcBokkuriSph.OffTgSetBit(); + + mAcchCir.SetWall(0.0f, 4.0f); + mMode = 1; + setBck(7, 2, 3.0f, 1.0f); + + mSound.startCreatureVoice(Z2SE_EN_WS_V_DAMAGE, -1); + field_0x68c = 5; + mAcch.SetGroundUpY(20.0f); + attention_info.flags = 0; + speed.y = 0.0f; + speedF = 5.0f; + current.angle.y = field_0x668.y; + mTargetStep = -0x800; + break; + case 1: + shape_angle.y += mTargetStep; + cLib_chaseAngleS(&field_0x66e.y, 0, 0x400); + cLib_chaseAngleS(&field_0x66e.x, 0, 0x400); + shape_angle.x += 0x800; + shape_angle.z += 0x800; + speed.y = 30.0f; + + if (field_0x68c == 0) { + mMode = 2; + gravity = -3.0f; + } + break; + case 2: + shape_angle.y += mTargetStep; + cLib_chaseAngleS(&field_0x66e.y, 0, 0x400); + cLib_chaseAngleS(&field_0x66e.x, 0, 0x400); + cLib_chaseAngleS(&shape_angle.x, -0x8000, 0x400); + cLib_chaseAngleS(&shape_angle.z, 0, 0x400); + + if (mAcch.ChkGroundHit()) { + speedF = 3.0f + cM_rndF(2.0f); + speed.y = 12.0f; + mMode = 3; + field_0x68c = 30; + setBck(6, 0, 5.0f, 1.0f); + mSound.startCreatureVoice(Z2SE_EN_WS_V_DEATH, -1); + mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1); + } + break; + case 3: + shape_angle.y += mTargetStep; + cLib_chaseAngleS(&mTargetStep, 0, 0x80); + cLib_chaseAngleS(&shape_angle.x, -0x8000, 0x400); + cLib_chaseAngleS(&shape_angle.z, 0, 0x400); + + if (mAcch.ChkGroundHit()) { + mSound.startCreatureSound(Z2SE_CM_BODYFALL_S, 0, -1); + shape_angle.x = -0x8000; + speedF = 0.0f; + speed.y = 0.0f; + mMode = 4; + } + break; + case 4: + cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f); + shape_angle.y += mTargetStep; + cLib_chaseAngleS(&mTargetStep, 0, 0x80); + shape_angle.y += mTargetStep; + + if (mpModelMorf->isStop()) { + field_0x68c = 15; + mMode = 5; + } + break; + case 5: + cLib_addCalc2(&mDownColor, -20.0f, 1.0f, 0.4f); + if (field_0x68c == 0) { + fopAcM_delete(this); + fopAcM_createDisappear(this, ¤t.pos, 7, 0, 7); + + if (mSwbit != 0xFF && !dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) { + dComIfGs_onSwitch(mSwbit, fopAcM_GetRoomNo(this)); + } + } + break; + } +} + +/* 807E56D0-807E58AC 001DB0 01DC+00 1/1 0/0 0/0 .text damage_check__8daE_WS_cFv */ +void daE_WS_c::damage_check() { + if (mInvulnerabilityTimer == 0) { + if (mAction == ACTION_DOWN_e || mAction == ACTION_WIND_DOWN_e) { + return; + } + + mCcStts.Move(); + + if (mCcBokkuriSph.ChkTgHit()) { + mAtInfo.mpCollider = mCcBokkuriSph.GetTgHitObj(); + + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_20000)) { + dComIfGp_setHitMark(1, this, &eyePos, NULL, NULL, 0); + dScnPly_c::setPauseTimer(4); + mSound.startCreatureSound(Z2SE_EN_ST_SHELL_BREAK, 0, -1); + } else if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_THROW_OBJ)) { + fopAc_ac_c* throwobj_p = dCc_GetAc(mAtInfo.mpCollider->GetAc()); + if (fopAcM_GetName(throwobj_p) == PROC_Obj_Carry && ((daObjCarry_c*)throwobj_p)->getType() == daObjCarry_c::TYPE_BOKKURI) { + mSound.startCreatureSound(Z2SE_EN_ST_SHELL_BREAK, 0, -1); + } + } + + cc_at_check(this, &mAtInfo); + setActionMode(ACTION_DOWN_e); + return; + } + + if (mCcSph.ChkTgHit()) { + mAtInfo.mpCollider = mCcSph.GetTgHitObj(); + cc_at_check(this, &mAtInfo); + + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK | AT_TYPE_WOLF_CUT_TURN | AT_TYPE_10000000 | AT_TYPE_MIDNA_LOCK)) { + mInvulnerabilityTimer = 20; + } else { + mInvulnerabilityTimer = 10; + } + + if (mAtInfo.mAttackPower <= 1) { + mInvulnerabilityTimer = KREG_S(8) + 10; + } + + if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_BOOMERANG)) { + setActionMode(ACTION_WIND_DOWN_e); + } else { + setActionMode(ACTION_DOWN_e); + } + } + } +} + +/* 807E58AC-807E5A3C 001F8C 0190+00 1/1 0/0 0/0 .text action__8daE_WS_cFv */ +void daE_WS_c::action() { + attention_info.distances[fopAc_attn_BATTLE_e] = 46; + damage_check(); + field_0x566 = 0; + + switch (mAction) { + case ACTION_WAIT_e: + executeWait(); + break; + case ACTION_ATTACK_e: + field_0x566 = 1; + executeAttack(); + break; + case ACTION_DOWN_e: + executeDown(); + break; + case ACTION_WIND_DOWN_e: + executeWindDown(); + break; + } + + mSound.setLinkSearch(field_0x566); + + if (mAction != ACTION_DOWN_e && mAction != ACTION_WIND_DOWN_e) { + cXyz sp14; + mDoMtx_stack_c::YrotS(field_0x668.y); + mDoMtx_stack_c::XrotM(field_0x668.x); + mDoMtx_stack_c::YrotM(current.angle.y); + + cXyz sp8(0.0f, 0.0f, speedF); + mDoMtx_stack_c::multVec(&sp8, &sp14); + speed = sp14; + current.pos += speed; + } else { + fopAcM_posMoveF(this, NULL); + } + + mAcch.CrrPos(dComIfG_Bgsp()); + mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); +} + +/* 807E5A3C-807E5AAC 00211C 0070+00 2/2 0/0 0/0 .text mtx_set__8daE_WS_cFv */ +void daE_WS_c::mtx_set() { + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x66e); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(mBodyScale, mBodyScale, mBodyScale); + + J3DModel* model_p = mpModelMorf->getModel(); + model_p->setBaseTRMtx(mDoMtx_stack_c::get()); + mpModelMorf->modelCalc(); +} + +/* 807E5AAC-807E5C0C 00218C 0160+00 1/1 0/0 0/0 .text cc_set__8daE_WS_cFv */ +void daE_WS_c::cc_set() { + cXyz mae; + cXyz ato; + J3DModel* model_p = mpModelMorf->getModel(); + + mDoMtx_stack_c::YrotS(field_0x668.y); + mDoMtx_stack_c::XrotM(field_0x668.x); + mae.set(0.0f, 15.0f + nREG_F(10), 0.0f); + mDoMtx_stack_c::multVec(&mae, &ato); + attention_info.position = current.pos + ato; + attention_info.position.y += 90.0f * mBodyScale; + + MTXCopy(model_p->getAnmMtx(1), mDoMtx_stack_c::get()); + mae.set(-15.0f + nREG_F(5), -10.0f + nREG_F(6), nREG_F(7)); + mDoMtx_stack_c::multVec(&mae, &eyePos); + + mCcSph.SetC(eyePos); + mCcSph.SetR(35.0f); + dComIfG_Ccsp()->Set(&mCcSph); + + mCcBokkuriSph.SetC(eyePos); + mCcBokkuriSph.SetR(60.0f); + dComIfG_Ccsp()->Set(&mCcBokkuriSph); +} + +/* 807E5C0C-807E5CB8 0022EC 00AC+00 1/1 0/0 0/0 .text execute__8daE_WS_cFv */ +int daE_WS_c::execute() { + if (field_0x68c != 0) { + field_0x68c--; + } + + if (mInvulnerabilityTimer != 0) { + mInvulnerabilityTimer--; + } + + action(); + mtx_set(); + cc_set(); + + cXyz effpos(current.pos); + cXyz effsize(0.5f, 0.5f, 0.5f); + setMidnaBindEffect(this, &mSound, &effpos, &effsize); + return 1; +} + +/* 807E5CB8-807E5CD8 002398 0020+00 1/0 0/0 0/0 .text daE_WS_Execute__FP8daE_WS_c */ +static int daE_WS_Execute(daE_WS_c* a_this) { + return a_this->execute(); +} + +/* 807E5CD8-807E5F70 0023B8 0298+00 1/1 0/0 0/0 .text checkInitialWall__8daE_WS_cFv */ +void daE_WS_c::checkInitialWall() { + cXyz endpos; + cXyz offset(0.0f, 0.0f, 200.0f); + dBgS_LinChk linchk; + + for (int i = 0; i < 4; i++) { + cLib_offsetPos(&endpos, ¤t.pos, (shape_angle.y + (i << 14)), &offset); + linchk.Set(¤t.pos, &endpos, NULL); + + if (dComIfG_Bgsp().LineCross(&linchk)) { + if (field_0x691 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) { + return; + } + + current.pos = linchk.GetCross(); + + cM3dGPla tri; + dComIfG_Bgsp().GetTriPla(linchk, &tri); + + cXyz* tri_np = tri.GetNP(); + field_0x668.y = cM_atan2s(tri_np->x, tri_np->z); + field_0x668.x = cM_atan2s(tri_np->absXZ(), tri_np->y); + field_0x66e = field_0x668; + return; + } + } +} + +/* 807E5FB8-807E63F8 002698 0440+00 3/3 0/0 0/0 .text checkBeforeBg__8daE_WS_cFs */ +bool daE_WS_c::checkBeforeBg(s16 i_angle) { + dBgS_LinChk linchk; + cXyz sp68; + cXyz sp5C; + cXyz endpos; + cXyz startpos; + + if (!speedF) { + return false; + } + + mDoMtx_stack_c::YrotS(field_0x668.y); + mDoMtx_stack_c::XrotM(field_0x668.x); + mDoMtx_stack_c::YrotM(i_angle); + sp68.set(0.0f, 50.0f * mBodyScale, 0.0f); + mDoMtx_stack_c::multVec(&sp68, &startpos); + startpos += current.pos; + + mDoMtx_stack_c::YrotS(field_0x668.y); + mDoMtx_stack_c::XrotM(field_0x668.x); + mDoMtx_stack_c::YrotM(i_angle); + sp68.set(0.0f, 0.0f, 50.0f * mBodyScale); + mDoMtx_stack_c::multVec(&sp68, &sp5C); + + sp68.set(sp5C.x, 0.0f, sp5C.z); + endpos = startpos + sp68; + + linchk.Set(&startpos, &endpos, NULL); + if (dComIfG_Bgsp().LineCross(&linchk)) { + return 1; + } + + if (sp5C.y > 0.0f) { + sp68.set(0.0f, 50.0f * mBodyScale, 0.0f); + } else { + sp68.set(0.0f, -l_HIO.dist_to_ground, 0.0f); + } + + endpos = startpos + sp68; + linchk.Set(&startpos, &endpos, NULL); + if (dComIfG_Bgsp().LineCross(&linchk)) { + return true; + } + + mDoMtx_stack_c::YrotS(field_0x668.y); + mDoMtx_stack_c::XrotM(field_0x668.x); + mDoMtx_stack_c::YrotM(i_angle); + sp68.set(0.0f, 50.0f * mBodyScale, 100.0f * mBodyScale); + mDoMtx_stack_c::multVec(&sp68, &sp5C); + startpos = current.pos + sp5C; + + cXyz sp38(0.0f, -40.0f * mBodyScale, 100.0f * mBodyScale); + mDoMtx_stack_c::multVec(&sp38, &sp5C); + endpos = current.pos + sp5C; + + linchk.Set(&startpos, &endpos, NULL); + if (!dComIfG_Bgsp().LineCross(&linchk)) { + return true; + } + + if (field_0x691 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) { + return true; + } + + cM3dGPla tri; + dComIfG_Bgsp().GetTriPla(linchk, &tri); + + cXyz* tri_np = tri.GetNP(); + cLib_chaseAngleS(&field_0x66e.y, cM_atan2s(tri_np->x, tri_np->z), 0x100); + checkWall(); + return false; +} + +/* 807E63F8-807E66AC 002AD8 02B4+00 1/1 0/0 0/0 .text checkWall__8daE_WS_cFv */ +bool daE_WS_c::checkWall() { + cXyz startpos; + cXyz endpos; + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(field_0x66e); + mDoMtx_stack_c::ZXYrotM(shape_angle); + + mDoMtx_stack_c::transM(0.0f, 100.0f, 0.0f); + mDoMtx_stack_c::multVecZero(&startpos); + + mDoMtx_stack_c::transM(0.0f, -150.0f, 0.0f); + mDoMtx_stack_c::multVecZero(&endpos); + + dBgS_LinChk linchk; + linchk.Set(&startpos, &endpos, NULL); + if (dComIfG_Bgsp().LineCross(&linchk)) { + if (field_0x691 == 0 && dComIfG_Bgsp().GetWallCode(linchk) != 1 && dComIfG_Bgsp().GetWallCode(linchk) != 4) { + return false; + } + + current.pos = linchk.GetCross(); + + cM3dGPla tri; + dComIfG_Bgsp().GetTriPla(linchk, &tri); + + cXyz* tri_np = tri.GetNP(); + field_0x668.y = cM_atan2s(tri_np->x, tri_np->z); + field_0x668.x = cM_atan2s(tri_np->absXZ(), tri_np->y); + return true; + } + + return false; +} + +/* 807E66AC-807E66B4 002D8C 0008+00 1/0 0/0 0/0 .text daE_WS_IsDelete__FP8daE_WS_c */ +static int daE_WS_IsDelete(daE_WS_c* a_this) { + return 1; +} + +/* 807E66B4-807E6728 002D94 0074+00 1/1 0/0 0/0 .text _delete__8daE_WS_cFv */ +int daE_WS_c::_delete() { + dComIfG_resDelete(&mPhase, "E_WS"); + + if (mHIOInit) { + l_HIOInit = false; + mDoHIO_DELETE_CHILD(l_HIO.id); + } + + if (heap != NULL) { + mSound.deleteObject(); + } + + return 1; +} + +/* 807E6728-807E6748 002E08 0020+00 1/0 0/0 0/0 .text daE_WS_Delete__FP8daE_WS_c */ +static int daE_WS_Delete(daE_WS_c* a_this) { + return a_this->_delete(); +} + +/* 807E6748-807E6840 002E28 00F8+00 1/1 0/0 0/0 .text CreateHeap__8daE_WS_cFv */ +int daE_WS_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_WS", 0xD); + JUT_ASSERT(1401, modelData != 0); + + mpModelMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_WS", 7), 0, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084); + if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) { + return 0; + } + + return 1; +} + +/* 807E6840-807E6860 002F20 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* i_this) { + return ((daE_WS_c*)i_this)->CreateHeap(); +} + +/* 807E6860-807E6C10 002F40 03B0+00 1/1 0/0 0/0 .text create__8daE_WS_cFv */ +int daE_WS_c::create() { + fopAcM_SetupActor(this, daE_WS_c); + + int phase_state = dComIfG_resLoad(&mPhase, "E_WS"); + if (phase_state == cPhs_COMPLEATE_e) { + OS_REPORT("E_WS PARAM %x\n", fopAcM_GetParam(this)); + + mSwbit = (fopAcM_GetParam(this) & 0xFF00) >> 8; + if (mSwbit != 0xFF && dComIfGs_isSwitch(mSwbit, fopAcM_GetRoomNo(this))) { + OS_REPORT("E_WS やられ後なので再セットしません\n"); + return cPhs_ERROR_e; + } + + if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x1B60)) { + return cPhs_ERROR_e; + } + + if (!l_HIOInit) { + l_HIOInit = true; + mHIOInit = true; + l_HIO.id = mDoHIO_CREATE_CHILD("スタルウォール", &l_HIO); + } + + field_0x691 = fopAcM_GetParam(this); + if (field_0x691 == 0xFF) { + field_0x691 = 0; + } + + if (((fopAcM_GetParam(this) & 0xFF0000) >> 0x10) == 1) { + mBodyScale = 0.5f; + } else { + mBodyScale = 0.8f; + } + + attention_info.flags = 4; + fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx()); + fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f); + fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f); + + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL); + mAcchCir.SetWall(0.0f, 0.0f); + + health = 10; + field_0x560 = 10; + + mCcStts.Init(100, 0, this); + mCcSph.Set(cc_ws_src); + mCcSph.SetStts(&mCcStts); + mCcBokkuriSph.Set(cc_bokkuri_src); + mCcBokkuriSph.SetStts(&mCcStts); + + mSound.init(¤t.pos, &eyePos, 3, 1); + mSound.setEnemyName("E_ws"); + + mAtInfo.mpSound = &mSound; + mAtInfo.mPowerType = 1; + + setActionMode(ACTION_WAIT_e); + checkInitialWall(); + + field_0x65c = current.pos; + speed.y = 0.0f; + gravity = 0.0f; + mtx_set(); + } + + return phase_state; +} + +/* 807E6DDC-807E6DFC 0034BC 0020+00 1/0 0/0 0/0 .text daE_WS_Create__FP8daE_WS_c */ +static int daE_WS_Create(daE_WS_c* a_this) { + return a_this->create(); +} /* 807E74E4-807E7504 -00001 0020+00 1/0 0/0 0/0 .data l_daE_WS_Method */ static actor_method_class l_daE_WS_Method = { - (process_method_func)daE_WS_Create__FP8daE_WS_c, - (process_method_func)daE_WS_Delete__FP8daE_WS_c, - (process_method_func)daE_WS_Execute__FP8daE_WS_c, - (process_method_func)daE_WS_IsDelete__FP8daE_WS_c, - (process_method_func)daE_WS_Draw__FP8daE_WS_c, + (process_method_func)daE_WS_Create, + (process_method_func)daE_WS_Delete, + (process_method_func)daE_WS_Execute, + (process_method_func)daE_WS_IsDelete, + (process_method_func)daE_WS_Draw, }; /* 807E7504-807E7534 -00001 0030+00 0/0 0/0 1/0 .data g_profile_E_WS */ @@ -275,638 +996,3 @@ extern actor_process_profile_definition g_profile_E_WS = { fopAc_ENEMY_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType }; - -/* 807E7534-807E7540 000124 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 807E7540-807E754C 000130 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 807E754C-807E7558 00013C 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 807E7558-807E7564 000148 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 807E7564-807E7570 000154 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 807E7570-807E7594 000160 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_807E6ED0, - (void*)NULL, - (void*)NULL, - (void*)func_807E6EC8, -}; - -/* 807E7594-807E75A0 000184 000C+00 4/4 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; - -/* 807E75A0-807E75AC 000190 000C+00 2/2 0/0 0/0 .data __vt__12daE_WS_HIO_c */ -SECTION_DATA extern void* __vt__12daE_WS_HIO_c[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12daE_WS_HIO_cFv, -}; - -/* 807E3A0C-807E3A6C 0000EC 0060+00 1/1 0/0 0/0 .text __ct__12daE_WS_HIO_cFv */ -daE_WS_HIO_c::daE_WS_HIO_c() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E7348-807E734C 000048 0004+00 0/1 0/0 0/0 .rodata @3871 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3871 = 400.0f; -COMPILER_STRIP_GATE(0x807E7348, &lit_3871); -#pragma pop - -/* 807E3A6C-807E3C00 00014C 0194+00 1/1 0/0 0/0 .text draw__8daE_WS_cFv */ -void daE_WS_c::draw() { - // NONMATCHING -} - -/* 807E3C00-807E3C20 0002E0 0020+00 1/0 0/0 0/0 .text daE_WS_Draw__FP8daE_WS_c */ -static void daE_WS_Draw(daE_WS_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E734C-807E7350 00004C 0004+00 1/1 0/0 0/0 .rodata @3885 */ -SECTION_RODATA static f32 const lit_3885 = -1.0f; -COMPILER_STRIP_GATE(0x807E734C, &lit_3885); - -/* 807E7404-807E7404 000104 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_807E7404 = "E_WS"; -#pragma pop - -/* 807E3C20-807E3CC4 000300 00A4+00 4/4 0/0 0/0 .text setBck__8daE_WS_cFiUcff */ -void daE_WS_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E7350-807E7354 000050 0004+00 0/1 0/0 0/0 .rodata @3952 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3952 = 4.5f; -COMPILER_STRIP_GATE(0x807E7350, &lit_3952); -#pragma pop - -/* 807E7354-807E7358 000054 0004+00 0/2 0/0 0/0 .rodata @3953 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3953 = 7.5f; -COMPILER_STRIP_GATE(0x807E7354, &lit_3953); -#pragma pop - -/* 807E7358-807E735C 000058 0004+00 0/1 0/0 0/0 .rodata @3954 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3954 = 9.0f; -COMPILER_STRIP_GATE(0x807E7358, &lit_3954); -#pragma pop - -/* 807E735C-807E7360 00005C 0004+00 0/1 0/0 0/0 .rodata @3955 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3955 = 13.5f; -COMPILER_STRIP_GATE(0x807E735C, &lit_3955); -#pragma pop - -/* 807E7360-807E7364 000060 0004+00 0/1 0/0 0/0 .rodata @3956 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3956 = 16.0f; -COMPILER_STRIP_GATE(0x807E7360, &lit_3956); -#pragma pop - -/* 807E7364-807E7368 000064 0004+00 0/1 0/0 0/0 .rodata @3957 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3957 = 19.0f; -COMPILER_STRIP_GATE(0x807E7364, &lit_3957); -#pragma pop - -/* 807E7368-807E736C 000068 0004+00 0/1 0/0 0/0 .rodata @3958 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3958 = 23.5f; -COMPILER_STRIP_GATE(0x807E7368, &lit_3958); -#pragma pop - -/* 807E736C-807E7370 00006C 0004+00 0/2 0/0 0/0 .rodata @3959 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3959 = 25.0f; -COMPILER_STRIP_GATE(0x807E736C, &lit_3959); -#pragma pop - -/* 807E7370-807E7374 000070 0004+00 0/1 0/0 0/0 .rodata @3960 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3960 = 28.0f; -COMPILER_STRIP_GATE(0x807E7370, &lit_3960); -#pragma pop - -/* 807E7374-807E7378 000074 0004+00 0/1 0/0 0/0 .rodata @3961 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3961 = 32.5f; -COMPILER_STRIP_GATE(0x807E7374, &lit_3961); -#pragma pop - -/* 807E7378-807E737C 000078 0004+00 0/1 0/0 0/0 .rodata @3962 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3962 = 36.0f; -COMPILER_STRIP_GATE(0x807E7378, &lit_3962); -#pragma pop - -/* 807E737C-807E7380 00007C 0004+00 0/1 0/0 0/0 .rodata @3963 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3963 = 39.5f; -COMPILER_STRIP_GATE(0x807E737C, &lit_3963); -#pragma pop - -/* 807E7380-807E7384 000080 0004+00 1/3 0/0 0/0 .rodata @3964 */ -SECTION_RODATA static f32 const lit_3964 = 0.5f; -COMPILER_STRIP_GATE(0x807E7380, &lit_3964); - -/* 807E7384-807E7388 000084 0004+00 0/1 0/0 0/0 .rodata @3965 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3965 = 6.0f; -COMPILER_STRIP_GATE(0x807E7384, &lit_3965); -#pragma pop - -/* 807E7388-807E738C 000088 0004+00 0/1 0/0 0/0 .rodata @3966 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3966 = 11.0f; -COMPILER_STRIP_GATE(0x807E7388, &lit_3966); -#pragma pop - -/* 807E738C-807E7390 00008C 0004+00 0/1 0/0 0/0 .rodata @3967 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3967 = 21.0f; -COMPILER_STRIP_GATE(0x807E738C, &lit_3967); -#pragma pop - -/* 807E7390-807E7394 000090 0004+00 0/1 0/0 0/0 .rodata @3968 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3968 = 26.5f; -COMPILER_STRIP_GATE(0x807E7390, &lit_3968); -#pragma pop - -/* 807E7394-807E7398 000094 0004+00 0/1 0/0 0/0 .rodata @3969 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3969 = 31.0f; -COMPILER_STRIP_GATE(0x807E7394, &lit_3969); -#pragma pop - -/* 807E3CC4-807E3F90 0003A4 02CC+00 2/2 0/0 0/0 .text setFootSound__8daE_WS_cFv */ -void daE_WS_c::setFootSound() { - // NONMATCHING -} - -/* 807E3F90-807E3FAC 000670 001C+00 5/5 0/0 0/0 .text setActionMode__8daE_WS_cFi */ -void daE_WS_c::setActionMode(int param_0) { - // NONMATCHING -} - -/* 807E3FAC-807E40C8 00068C 011C+00 4/4 0/0 0/0 .text calcTargetDist__8daE_WS_cF4cXyz4cXyz */ -void daE_WS_c::calcTargetDist(cXyz param_0, cXyz param_1) { - // NONMATCHING -} - -/* 807E40C8-807E416C 0007A8 00A4+00 3/3 0/0 0/0 .text calcTargetAngle__8daE_WS_cF4cXyz4cXyz */ -void daE_WS_c::calcTargetAngle(cXyz param_0, cXyz param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E75B8-807E75BC 000008 0004+00 2/2 0/0 0/0 .bss None */ -static u8 data_807E75B8[4]; - -/* 807E75BC-807E75C8 00000C 000C+00 1/1 0/0 0/0 .bss @3818 */ -static u8 lit_3818[12]; - -/* 807E75C8-807E75F0 000018 0028+00 7/7 0/0 0/0 .bss l_HIO */ -static u8 l_HIO[40]; - -/* 807E416C-807E4224 00084C 00B8+00 3/3 0/0 0/0 .text checkInSearchRange__8daE_WS_cF4cXyz4cXyz */ -void daE_WS_c::checkInSearchRange(cXyz param_0, cXyz param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E7398-807E73A0 000098 0004+04 0/1 0/0 0/0 .rodata @4145 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4145[1 + 1 /* padding */] = { - 150.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x807E7398, &lit_4145); -#pragma pop - -/* 807E73A0-807E73A8 0000A0 0008+00 0/1 0/0 0/0 .rodata @4147 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4147[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x807E73A0, &lit_4147); -#pragma pop - -/* 807E4224-807E4568 000904 0344+00 1/1 0/0 0/0 .text checkPlayerPos__8daE_WS_cFv */ -void daE_WS_c::checkPlayerPos() { - // NONMATCHING -} - -/* 807E4568-807E470C 000C48 01A4+00 1/1 0/0 0/0 .text checkAttackEnd__8daE_WS_cFv */ -void daE_WS_c::checkAttackEnd() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E73A8-807E73AC 0000A8 0004+00 0/4 0/0 0/0 .rodata @4263 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4263 = 3.0f; -COMPILER_STRIP_GATE(0x807E73A8, &lit_4263); -#pragma pop - -/* 807E470C-807E4AB8 000DEC 03AC+00 2/1 0/0 0/0 .text executeWait__8daE_WS_cFv */ -void daE_WS_c::executeWait() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E73AC-807E73B0 0000AC 0004+00 0/0 0/0 0/0 .rodata @4264 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4264 = 32768.0f; -COMPILER_STRIP_GATE(0x807E73AC, &lit_4264); -#pragma pop - -/* 807E73B0-807E73B4 0000B0 0004+00 0/0 0/0 0/0 .rodata @4265 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4265 = 12.0f / 5.0f; -COMPILER_STRIP_GATE(0x807E73B0, &lit_4265); -#pragma pop - -/* 807E73B4-807E73B8 0000B4 0004+00 0/0 0/0 0/0 .rodata @4266 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4266 = 6.0f / 5.0f; -COMPILER_STRIP_GATE(0x807E73B4, &lit_4266); -#pragma pop - -/* 807E73B8-807E73BC 0000B8 0004+00 0/1 0/0 0/0 .rodata @4267 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4267 = 20.0f; -COMPILER_STRIP_GATE(0x807E73B8, &lit_4267); -#pragma pop - -/* 807E73BC-807E73C0 0000BC 0004+00 0/1 0/0 0/0 .rodata @4366 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4366 = 3.5f; -COMPILER_STRIP_GATE(0x807E73BC, &lit_4366); -#pragma pop - -/* 807E4AB8-807E4E68 001198 03B0+00 1/1 0/0 0/0 .text executeAttack__8daE_WS_cFv */ -void daE_WS_c::executeAttack() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E73C0-807E73C4 0000C0 0004+00 0/2 0/0 0/0 .rodata @4442 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4442 = 4.0f; -COMPILER_STRIP_GATE(0x807E73C0, &lit_4442); -#pragma pop - -/* 807E73C4-807E73C8 0000C4 0004+00 0/2 0/0 0/0 .rodata @4443 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4443 = 5.0f; -COMPILER_STRIP_GATE(0x807E73C4, &lit_4443); -#pragma pop - -/* 807E73C8-807E73CC 0000C8 0004+00 0/2 0/0 0/0 .rodata @4444 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4444 = -3.0f; -COMPILER_STRIP_GATE(0x807E73C8, &lit_4444); -#pragma pop - -/* 807E73CC-807E73D0 0000CC 0004+00 0/2 0/0 0/0 .rodata @4445 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4445 = 2.0f; -COMPILER_STRIP_GATE(0x807E73CC, &lit_4445); -#pragma pop - -/* 807E73D0-807E73D4 0000D0 0004+00 0/2 0/0 0/0 .rodata @4446 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4446 = 12.0f; -COMPILER_STRIP_GATE(0x807E73D0, &lit_4446); -#pragma pop - -/* 807E73D4-807E73D8 0000D4 0004+00 0/2 0/0 0/0 .rodata @4447 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4447 = -20.0f; -COMPILER_STRIP_GATE(0x807E73D4, &lit_4447); -#pragma pop - -/* 807E73D8-807E73DC 0000D8 0004+00 0/2 0/0 0/0 .rodata @4448 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4448 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x807E73D8, &lit_4448); -#pragma pop - -/* 807E4E68-807E5294 001548 042C+00 1/1 0/0 0/0 .text executeDown__8daE_WS_cFv */ -void daE_WS_c::executeDown() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E73DC-807E73E0 0000DC 0004+00 0/1 0/0 0/0 .rodata @4507 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4507 = 30.0f; -COMPILER_STRIP_GATE(0x807E73DC, &lit_4507); -#pragma pop - -/* 807E5294-807E56D0 001974 043C+00 1/1 0/0 0/0 .text executeWindDown__8daE_WS_cFv */ -void daE_WS_c::executeWindDown() { - // NONMATCHING -} - -/* 807E56D0-807E58AC 001DB0 01DC+00 1/1 0/0 0/0 .text damage_check__8daE_WS_cFv */ -void daE_WS_c::damage_check() { - // NONMATCHING -} - -/* 807E58AC-807E5A3C 001F8C 0190+00 1/1 0/0 0/0 .text action__8daE_WS_cFv */ -void daE_WS_c::action() { - // NONMATCHING -} - -/* 807E5A3C-807E5AAC 00211C 0070+00 2/2 0/0 0/0 .text mtx_set__8daE_WS_cFv */ -void daE_WS_c::mtx_set() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E73E0-807E73E4 0000E0 0004+00 0/1 0/0 0/0 .rodata @4632 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4632 = 15.0f; -COMPILER_STRIP_GATE(0x807E73E0, &lit_4632); -#pragma pop - -/* 807E73E4-807E73E8 0000E4 0004+00 0/1 0/0 0/0 .rodata @4633 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4633 = 90.0f; -COMPILER_STRIP_GATE(0x807E73E4, &lit_4633); -#pragma pop - -/* 807E73E8-807E73EC 0000E8 0004+00 0/1 0/0 0/0 .rodata @4634 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4634 = -15.0f; -COMPILER_STRIP_GATE(0x807E73E8, &lit_4634); -#pragma pop - -/* 807E73EC-807E73F0 0000EC 0004+00 0/1 0/0 0/0 .rodata @4635 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4635 = -10.0f; -COMPILER_STRIP_GATE(0x807E73EC, &lit_4635); -#pragma pop - -/* 807E73F0-807E73F4 0000F0 0004+00 0/1 0/0 0/0 .rodata @4636 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4636 = 35.0f; -COMPILER_STRIP_GATE(0x807E73F0, &lit_4636); -#pragma pop - -/* 807E73F4-807E73F8 0000F4 0004+00 0/1 0/0 0/0 .rodata @4637 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4637 = 60.0f; -COMPILER_STRIP_GATE(0x807E73F4, &lit_4637); -#pragma pop - -/* 807E5AAC-807E5C0C 00218C 0160+00 1/1 0/0 0/0 .text cc_set__8daE_WS_cFv */ -void daE_WS_c::cc_set() { - // NONMATCHING -} - -/* 807E5C0C-807E5CB8 0022EC 00AC+00 1/1 0/0 0/0 .text execute__8daE_WS_cFv */ -void daE_WS_c::execute() { - // NONMATCHING -} - -/* 807E5CB8-807E5CD8 002398 0020+00 1/0 0/0 0/0 .text daE_WS_Execute__FP8daE_WS_c */ -static void daE_WS_Execute(daE_WS_c* param_0) { - // NONMATCHING -} - -/* 807E5CD8-807E5F70 0023B8 0298+00 1/1 0/0 0/0 .text checkInitialWall__8daE_WS_cFv */ -void daE_WS_c::checkInitialWall() { - // NONMATCHING -} - -/* 807E5F70-807E5FB8 002650 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -// cM3dGPla::~cM3dGPla() { -extern "C" void __dt__8cM3dGPlaFv() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E73F8-807E73FC 0000F8 0004+00 0/1 0/0 0/0 .rodata @4908 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4908 = -40.0f; -COMPILER_STRIP_GATE(0x807E73F8, &lit_4908); -#pragma pop - -/* 807E5FB8-807E63F8 002698 0440+00 3/3 0/0 0/0 .text checkBeforeBg__8daE_WS_cFs */ -void daE_WS_c::checkBeforeBg(s16 param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E73FC-807E7400 0000FC 0004+00 0/1 0/0 0/0 .rodata @4989 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4989 = -150.0f; -COMPILER_STRIP_GATE(0x807E73FC, &lit_4989); -#pragma pop - -/* 807E63F8-807E66AC 002AD8 02B4+00 1/1 0/0 0/0 .text checkWall__8daE_WS_cFv */ -void daE_WS_c::checkWall() { - // NONMATCHING -} - -/* 807E66AC-807E66B4 002D8C 0008+00 1/0 0/0 0/0 .text daE_WS_IsDelete__FP8daE_WS_c */ -static bool daE_WS_IsDelete(daE_WS_c* param_0) { - return true; -} - -/* 807E66B4-807E6728 002D94 0074+00 1/1 0/0 0/0 .text _delete__8daE_WS_cFv */ -void daE_WS_c::_delete() { - // NONMATCHING -} - -/* 807E6728-807E6748 002E08 0020+00 1/0 0/0 0/0 .text daE_WS_Delete__FP8daE_WS_c */ -static void daE_WS_Delete(daE_WS_c* param_0) { - // NONMATCHING -} - -/* 807E6748-807E6840 002E28 00F8+00 1/1 0/0 0/0 .text CreateHeap__8daE_WS_cFv */ -void daE_WS_c::CreateHeap() { - // NONMATCHING -} - -/* 807E6840-807E6860 002F20 0020+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 807E7400-807E7404 000100 0004+00 0/1 0/0 0/0 .rodata @5154 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5154 = -200.0f; -COMPILER_STRIP_GATE(0x807E7400, &lit_5154); -#pragma pop - -/* 807E7404-807E7404 000104 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_807E7409 = "E_ws"; -#pragma pop - -/* 807E6860-807E6C10 002F40 03B0+00 1/1 0/0 0/0 .text create__8daE_WS_cFv */ -void daE_WS_c::create() { - // NONMATCHING -} - -/* 807E6C10-807E6C58 0032F0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -// cM3dGSph::~cM3dGSph() { -extern "C" void __dt__8cM3dGSphFv() { - // NONMATCHING -} - -/* 807E6C58-807E6CA0 003338 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -// cM3dGAab::~cM3dGAab() { -extern "C" void __dt__8cM3dGAabFv() { - // NONMATCHING -} - -/* 807E6CA0-807E6CFC 003380 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 807E6CFC-807E6D6C 0033DC 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING -} - -/* 807E6D6C-807E6DDC 00344C 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -// dBgS_AcchCir::~dBgS_AcchCir() { -extern "C" void __dt__12dBgS_AcchCirFv() { - // NONMATCHING -} - -/* 807E6DDC-807E6DFC 0034BC 0020+00 1/0 0/0 0/0 .text daE_WS_Create__FP8daE_WS_c */ -static void daE_WS_Create(daE_WS_c* param_0) { - // NONMATCHING -} - -/* 807E6DFC-807E6E44 0034DC 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} - -/* 807E6E44-807E6E8C 003524 0048+00 2/1 0/0 0/0 .text __dt__12daE_WS_HIO_cFv */ -daE_WS_HIO_c::~daE_WS_HIO_c() { - // NONMATCHING -} - -/* 807E6E8C-807E6EC8 00356C 003C+00 0/0 1/0 0/0 .text __sinit_d_a_e_ws_cpp */ -void __sinit_d_a_e_ws_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x807E6E8C, __sinit_d_a_e_ws_cpp); -#pragma pop - -/* 807E6EC8-807E6ED0 0035A8 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_807E6EC8() { - // NONMATCHING -} - -/* 807E6ED0-807E6ED8 0035B0 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_807E6ED0() { - // NONMATCHING -} - -/* 807E7404-807E7404 000104 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */