diff --git a/src/d/actor/d_a_player_weapon.inc b/src/d/actor/d_a_player_weapon.inc index b6b0ce3ae..dafb1087e 100644 --- a/src/d/actor/d_a_player_weapon.inc +++ b/src/d/actor/d_a_player_weapon.inc @@ -11,6 +11,7 @@ */ #include "d/actor/d_a_player_main.h" +#include "d/actor/d_a_player_HIO.h" #include "d/actor/d_a_boko.h" /* 80153554-801535D8 .text setEnemyWeaponAtParam__9daPy_lk_cFi */ @@ -40,60 +41,322 @@ void daPy_lk_c::setEnemyWeaponAtParam(BOOL r4) { /* 801535D8-8015372C .text procWeaponNormalSwing_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponNormalSwing_init() { - /* Nonmatching */ + if (mActorKeepEquip.getActor() == NULL) { + return false; + } else { + commonProcInit(daPyProc_WEAPON_NORMAL_SWING_e); + setSingleMoveAnime(ANM_CUTBOKO, daPy_HIO_cutBoko_c0::m.field_0x10, + daPy_HIO_cutBoko_c0::m.field_0x18, + daPy_HIO_cutBoko_c0::m.field_0x6, + daPy_HIO_cutBoko_c0::m.field_0x34); + current.angle.y = shape_angle.y; + m3700 = cXyz::Zero; + m34C2 = 1; + voiceStart(1); + if ((mpAttention->Lockon()) || (mStickDistance <= 0.05f)) { + m34D4 = shape_angle.y; + } else { + m34D4 = m34E8; + } + dComIfGp_setPlayerStatus0(0, daPyStts0_SWORD_SWING_e); + m351E = m34DC; + setBlurPosResource(LKANM__CUTBOKO_POS); + setEnemyWeaponAtParam(0); + m34D0 = daPy_HIO_cutBoko_c0::m.field_0x4; + } + return true; } /* 8015372C-801539C8 .text procWeaponNormalSwing__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponNormalSwing() { - /* Nonmatching */ + J3DFrameCtrl &frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; + + if ((swordButton()) && (mActorKeepEquip.getActor() != NULL)) { + onNoResetFlg0(daPyFlg0_UNK4); + } else { + offNoResetFlg0(daPyFlg0_UNK4); + } + if ((frameCtrl.getRate() < 0.0099999998f) || + (mActorKeepEquip.getActor() == NULL)) { + if (mActorKeepEquip.getActor() == NULL) { + m34D0 = 0; + offNoResetFlg0(daPyFlg0_UNK4); + } + if ((int)m34D0 > 0) { + m34D0--; + } else { + mVelocity = 0.0f; + m34B8 = 3; + checkNextMode(0); + return true; + } + } else if (frameCtrl.getFrame() > daPy_HIO_cutBoko_c0::m.field_0x1C) { + f32 dVar4 = mVelocity; + u8 uVar1 = m34B8; + mVelocity = 0.0f; + m34B8 = 3; + if (checkNextMode(1)) { + return true; + } + mVelocity = dVar4; + m34B8 = uVar1; + } + if (changeCutReverseProc(ANM_CUTRER)) { + return true; + } else { + m34C2 = 1; + if (mpAttnActorLockOn != NULL) { + setShapeAngleToAtnActor(); + m34D4 = shape_angle.y; + } else { + cLib_addCalcAngleS(&shape_angle.y, m34D4, daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, + daPy_HIO_turn_c0::m.field_0x2); + } + current.angle.y = shape_angle.y; + if (frameCtrl.checkPass(daPy_HIO_cutBoko_c0::m.field_0x38)) { + mVelocity = std::fabsf(speedF) * daPy_HIO_cutBoko_c0::m.field_0x20 + + daPy_HIO_cutBoko_c0::m.field_0x24; + } + if (frameCtrl.checkPass(daPy_HIO_cutBoko_c0::m.field_0x3C)) { + frameCtrl.setRate(daPy_HIO_cutBoko_c0::m.field_0x14); + } + if ((frameCtrl.getFrame() >= daPy_HIO_cutBoko_c0::m.field_0x40) && + (frameCtrl.getFrame() < daPy_HIO_cutBoko_c0::m.field_0x44)) { + if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) { + onResetFlg0(daPyRFlg0_UNK1); + seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S); + } + onResetFlg0(daPyRFlg0_UNK2); + } + cLib_addCalc(&mVelocity, 0.0f, daPy_HIO_cutBoko_c0::m.field_0x30, + daPy_HIO_cutBoko_c0::m.field_0x28, + daPy_HIO_cutBoko_c0::m.field_0x2C); + } + return true; } /* 801539C8-80153A68 .text procWeaponSideSwing_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponSideSwing_init() { - /* Nonmatching */ + commonProcInit(daPyProc_WEAPON_SIDE_SWING_e); + setSingleMoveAnime(ANM_HAMSWINGA, daPy_HIO_cutBoko_c0::m.field_0x48, + daPy_HIO_cutBoko_c0::m.field_0x4C, + daPy_HIO_cutBoko_c0::m.field_0x8, + daPy_HIO_cutBoko_c0::m.field_0x54); + current.angle.y = shape_angle.y; + mVelocity = 0.0f; + voiceStart(1); + m34D4 = shape_angle.y; + setBlurPosResource(LKANM__HAMMERSIDE_POS); + setEnemyWeaponAtParam(0); + return true; } /* 80153A68-80153C30 .text procWeaponSideSwing__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponSideSwing() { - /* Nonmatching */ + if ((swordButton()) && (mActorKeepEquip.getActor() != NULL)) { + onNoResetFlg0(daPyFlg0_UNK4); + } else { + offNoResetFlg0(daPyFlg0_UNK4); + } + if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0099999998f) || + (mActorKeepEquip.getActor() == NULL)) { + mVelocity = 0.0f; + m34B8 = 3; + checkNextMode(0); + return true; + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > + daPy_HIO_cutBoko_c0::m.field_0x50) { + f32 dVar4 = mVelocity; + u8 uVar1 = m34B8; + mVelocity = 0.0f; + m34B8 = 3; + if (checkNextMode(1)) { + return true; + } + mVelocity = dVar4; + m34B8 = uVar1; + } + if (changeCutReverseProc(ANM_CUTREL)) { + return true; + } else { + if (mpAttnActorLockOn != NULL) { + setShapeAngleToAtnActor(); + m34D4 = shape_angle.y; + } else { + cLib_addCalcAngleS(&shape_angle.y, m34D4, daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, + daPy_HIO_turn_c0::m.field_0x2); + } + current.angle.y = shape_angle.y; + if ((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= + daPy_HIO_cutBoko_c0::m.field_0x58) && + (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() < + daPy_HIO_cutBoko_c0::m.field_0x5C)) { + if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) { + onResetFlg0(daPyRFlg0_UNK1); + seStartSwordCut(JA_SE_LK_SW_KAZEKIRI_S); + } + onResetFlg0(daPyRFlg0_UNK2); + } + } + return true; } /* 80153C30-80153D1C .text procWeaponFrontSwingReady_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponFrontSwingReady_init() { - /* Nonmatching */ + commonProcInit(daPyProc_WEAPON_FRONT_SWING_READY_e); + setSingleMoveAnime(ANM_HAMSWINGBPRE, daPy_HIO_cutBoko_c0::m.field_0x60, + daPy_HIO_cutBoko_c0::m.field_0x64, + daPy_HIO_cutBoko_c0::m.field_0xA, + daPy_HIO_cutBoko_c0::m.field_0x68); + current.angle.y = shape_angle.y; + mVelocity = 0.0f; + if ((mpAttention->Lockon()) || (mStickDistance <= 0.05f)) { + m34D4 = shape_angle.y; + } else { + m34D4 = m34E8; + } + setEnemyWeaponAtParam(0); + voiceStart(7); + return true; } /* 80153D1C-80153DBC .text procWeaponFrontSwingReady__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponFrontSwingReady() { - /* Nonmatching */ + if (mActorKeepEquip.getActor() == NULL) { + return checkNextMode(0); + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0099999998f) { + return procWeaponFrontSwing_init(); + } else { + if (mpAttnActorLockOn != NULL) { + setShapeAngleToAtnActor(); + m34D4 = shape_angle.y; + } else { + cLib_addCalcAngleS(&shape_angle.y, m34D4, daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, + daPy_HIO_turn_c0::m.field_0x2); + } + current.angle.y = shape_angle.y; + return true; + } } /* 80153DBC-80153ED8 .text procWeaponFrontSwing_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponFrontSwing_init() { - /* Nonmatching */ + commonProcInit(daPyProc_WEAPON_FRONT_SWING_e); + setSingleMoveAnime(ANM_HAMSWINGBHIT, 4.0f * daPy_HIO_cutBoko_c0::m.field_0x6C, + daPy_HIO_cutBoko_c0::m.field_0x70, + daPy_HIO_cutBoko_c0::m.field_0xC, 0.0f); + current.angle.y = shape_angle.y; + mVelocity = 0.0f; + voiceStart(1); + if (mpAttention->Lockon() || (mStickDistance <= 0.05f)) { + m34D4 = shape_angle.y; + } else { + m34D4 = m34E8; + } + m34D4 = shape_angle.y; + setBlurPosResource(LKANM__HAMMERFRONT_POS); + setEnemyWeaponAtParam(0); + onResetFlg0(daPy_RFLG0(daPyRFlg0_UNK1 | daPyRFlg0_UNK2)); + m34D0 = 0; + return true; } /* 80153ED8-80153FA0 .text procWeaponFrontSwing__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponFrontSwing() { - /* Nonmatching */ + if (mActorKeepEquip.getActor() == NULL) { + return checkNextMode(0); + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0099999998f) { + return procWeaponFrontSwingEnd_init(); + } else { + if (changeCutReverseProc(ANM_CUTREL)) { + return true; + } else { + if (mpAttnActorLockOn != NULL) { + setShapeAngleToAtnActor(); + m34D4 = shape_angle.y; + } else { + cLib_addCalcAngleS(&shape_angle.y, m34D4, daPy_HIO_turn_c0::m.field_0x4, + daPy_HIO_turn_c0::m.field_0x0, + daPy_HIO_turn_c0::m.field_0x2); + } + current.angle.y = shape_angle.y; + onResetFlg0(daPyRFlg0_UNK2); + return true; + } + } } /* 80153FA0-80154014 .text procWeaponFrontSwingEnd_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponFrontSwingEnd_init() { - /* Nonmatching */ + commonProcInit(daPyProc_WEAPON_FRONT_SWING_END_e); + setSingleMoveAnime(ANM_HAMSWINGBEND, daPy_HIO_cutBoko_c0::m.field_0x74, + daPy_HIO_cutBoko_c0::m.field_0x78, + daPy_HIO_cutBoko_c0::m.field_0xE, + daPy_HIO_cutBoko_c0::m.field_0x80); + current.angle.y = shape_angle.y; + mVelocity = 0.0f; + setEnemyWeaponAtParam(0); + return true; } /* 80154014-801540B4 .text procWeaponFrontSwingEnd__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponFrontSwingEnd() { - /* Nonmatching */ + if ((swordButton()) && (mActorKeepEquip.getActor() != NULL)) { + onNoResetFlg0(daPyFlg0_UNK4); + } else { + offNoResetFlg0(daPyFlg0_UNK4); + } + if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.0099999998f) || + (mActorKeepEquip.getActor() == NULL)) { + return checkNextMode(0); + } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > + daPy_HIO_cutBoko_c0::m.field_0x7C) { + return checkNextMode(1); + } else { + return true; + } } /* 801540B4-8015411C .text procWeaponThrow_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponThrow_init() { - /* Nonmatching */ + commonProcInit(daPyProc_WEAPON_THROW_e); + setSingleMoveAnime(ANM_CUTA, 1.0f, 0.0f, -1, 5.0f); + current.angle.y = shape_angle.y; + mVelocity = 0.0f; + m34C2 = 1; + return true; } /* 8015411C-80154334 .text procWeaponThrow__9daPy_lk_cFv */ BOOL daPy_lk_c::procWeaponThrow() { - /* Nonmatching */ + /* Nonmatching - floats */ + J3DFrameCtrl &frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; + + if ((frameCtrl.getRate() < 0.0099999998f) || + (mActorKeepEquip.getActor() == NULL)) { + checkNextMode(0); + } else if (frameCtrl.getFrame() > 100.0f) { + checkNextMode(1); + } else { + if (frameCtrl.checkPass(10.0f)) { + daBoko_c *boko = static_cast(mActorKeepEquip.getActor()); + s16 uVar2 = 0xf400; + if (mpAttnActorLockOn != NULL) { + cXyz local_34 = (mpAttnActorLockOn->eyePos - boko->current.pos); + f32 dVar5 = local_34.abs(); + if (dVar5 >= 1.0f) { + dVar5 = local_34.absXZ(); + uVar2 = cM_atan2s(-local_34.y, dVar5); + } + } + boko->m2BA = 1; + boko->m2CA = uVar2; + voiceStart(0); + deleteEquipItem(0); + } + return true; + } }