diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index 0a7985369..e322223c9 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -2352,7 +2352,7 @@ public: /* 0x34BA */ u8 m34BA; /* 0x34BB */ u8 mCurrItemHeapIdx; /* 0x34BC */ u8 m34BC; - /* 0x34BD */ u8 mLastUsedEquipItem; + /* 0x34BD */ u8 mLastUsedItemButtonIdx; /* 0x34BE */ u8 m34BE; /* 0x34BF */ s8 mReverb; /* 0x34C0 */ u8 mLeftHandIdx; @@ -2532,9 +2532,9 @@ public: /* 0x4284 */ dCcD_Cyl mAtCyl; /* 0x43B4 */ dCcD_Cyl mLightCyl; /* 0x44E4 */ dCcD_Cps mAtCps[3]; - /* 0x488C */ dCcD_Cps mFanWindCps1; + /* 0x488C */ dCcD_Cps mFanWindCps; /* 0x49C4 */ dCcD_Sph mFanWindSph; - /* 0x4AF0 */ dCcD_Cps mFanWindCps2; + /* 0x4AF0 */ dCcD_Cps mFanLightCps; struct ProcInitTableEntry { /* 0x00 */ ProcFunc mProcFunc; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index a08ae0b82..9d1d5b234 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -958,6 +958,10 @@ inline void dComIfGs_setReserveItemEmpty() { g_dComIfG_gameInfo.save.getPlayer().getBagItem().setReserveItemEmpty(); } +inline void dComIfGs_setReserveBaitEmpty(u8 i_btnIdx) { + g_dComIfG_gameInfo.save.getPlayer().getBagItem().setBaitItemEmpty(i_btnIdx); +} + inline void dComIfGs_setEventReg(u16 i_reg, u8 i_no) { g_dComIfG_gameInfo.save.getEvent().setEventReg(i_reg, i_no); } diff --git a/src/d/actor/d_a_player_food.inc b/src/d/actor/d_a_player_food.inc index 15b734fec..c633943a2 100644 --- a/src/d/actor/d_a_player_food.inc +++ b/src/d/actor/d_a_player_food.inc @@ -112,7 +112,37 @@ BOOL daPy_lk_c::procFoodThrow_init() { /* 801546F4-80154880 .text procFoodThrow__9daPy_lk_cFv */ BOOL daPy_lk_c::procFoodThrow() { - /* Nonmatching */ + J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[0]; + setShipRidePosUseItem(); + if (frameCtrl.getRate() < 0.01f) { + if (mDemo.getDemoType() != 5) { + dComIfGp_evmng_cutEnd(mStaffIdx); + } else { + dComIfGp_event_reset(); + u32 playerPID = fopAcM_GetID(this); + dCam_getBody()->EndEventCamera(playerPID); + endDemoMode(); + } + } else if (frameCtrl.checkPass(9.0f)) { + seStartOnlyReverb(JA_SE_LK_ESA_THROW); + void* esa = fopAcM_fastCreate(PROC_ESA, 0xFFFF0014, &field_0x2d4, fopAcM_GetRoomNo(this), &shape_angle); + if (esa) { + m3630 = fopAcM_GetID(esa); + if (mDemo.getDemoType() != 5) { + u8 btnIdx = dComIfGp_event_getTalkXYBtn(); + if (btnIdx == 1) { + dComIfGs_setReserveBaitEmpty(0); + } else if (btnIdx == 2) { + dComIfGs_setReserveBaitEmpty(1); + } else { + dComIfGs_setReserveBaitEmpty(2); + } + } else { + dComIfGs_setReserveBaitEmpty(mLastUsedItemButtonIdx); + } + } + } + return TRUE; } /* 80154880-80154A48 .text procFoodSet_init__9daPy_lk_cFv */ diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 5a8809d06..ba19f140b 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -2405,9 +2405,9 @@ void daPy_lk_c::voiceStart(u32 param_1) { /* 801031A4-801031DC .text itemButton__9daPy_lk_cCFv */ BOOL daPy_lk_c::itemButton() const { - if (mLastUsedEquipItem == 0) { + if (mLastUsedItemButtonIdx == 0) { return m34C9 & 0x04; - } else if (mLastUsedEquipItem == 1) { + } else if (mLastUsedItemButtonIdx == 1) { return m34C9 & 0x08; } else { return m34C9 & 0x10; @@ -2416,9 +2416,9 @@ BOOL daPy_lk_c::itemButton() const { /* 801031DC-80103214 .text itemTrigger__9daPy_lk_cCFv */ BOOL daPy_lk_c::itemTrigger() const { - if (mLastUsedEquipItem == 0) { + if (mLastUsedItemButtonIdx == 0) { return mPressedButtonsBitfield & 0x04; - } else if (mLastUsedEquipItem == 1) { + } else if (mLastUsedItemButtonIdx == 1) { return mPressedButtonsBitfield & 0x08; } else { return mPressedButtonsBitfield & 0x10; @@ -2449,17 +2449,17 @@ BOOL daPy_lk_c::checkGroupItem(int param_1, int itemNo) { /* 801032E4-801033E4 .text checkSetItemTrigger__9daPy_lk_cFii */ BOOL daPy_lk_c::checkSetItemTrigger(int param_1, int param_2) { - if (param_2 == 0 || daPy_dmEcallBack_c::m_type != 1) { + if (param_2 == 0 || !daPy_dmEcallBack_c::checkCurse()) { if (mPressedButtonsBitfield & 0x04 && checkGroupItem(param_1, dComIfGp_getSelectItem(0))) { - mLastUsedEquipItem = 0; + mLastUsedItemButtonIdx = 0; return TRUE; } if (mPressedButtonsBitfield & 0x08 && checkGroupItem(param_1, dComIfGp_getSelectItem(1))) { - mLastUsedEquipItem = 1; + mLastUsedItemButtonIdx = 1; return TRUE; } if (mPressedButtonsBitfield & 0x10 && checkGroupItem(param_1, dComIfGp_getSelectItem(2))) { - mLastUsedEquipItem = 2; + mLastUsedItemButtonIdx = 2; return TRUE; } } @@ -4320,7 +4320,7 @@ BOOL daPy_lk_c::playerDelete() { mDoAud_seDeleteObject(&mSwordTopPos); mDoAud_seDeleteObject(&mRopePos); mDoAud_seDeleteObject(&m338C.field_0x08); - mDoAud_seDeleteObject(&mFanWindCps1.GetEndP()); + mDoAud_seDeleteObject(&mFanWindCps.GetEndP()); for (i = 0; i < (int)ARRAY_SIZE(m_anm_heap_under); i++) { mDoExt_destroySolidHeap(m_anm_heap_under[i].mpAnimeHeap); @@ -4636,15 +4636,15 @@ void daPy_lk_c::playerInit() { mAtCps[2].SetStts(&mStts); mAtCyl.Set(l_at_cyl_src); mAtCyl.SetStts(&mStts); - mFanWindCps1.Set(l_fan_wind_cps_src); - mFanWindCps1.SetR(70.0f); - mFanWindCps1.SetStts(&mStts); + mFanWindCps.Set(l_fan_wind_cps_src); + mFanWindCps.SetR(70.0f); + mFanWindCps.SetStts(&mStts); mFanWindSph.Set(l_fan_wind_sph_src); mFanWindSph.SetStts(&mStts); - mFanWindCps2.Set(l_fan_wind_cps_src); - mFanWindCps2.SetStts(&mStts); - mFanWindCps2.SetAtType(AT_TYPE_LIGHT); - mFanWindCps2.SetR(20.0f); + mFanLightCps.Set(l_fan_wind_cps_src); + mFanLightCps.SetStts(&mStts); + mFanLightCps.SetAtType(AT_TYPE_LIGHT); + mFanLightCps.SetR(20.0f); for (int i = 0; i < (int)ARRAY_SIZE(m_anm_heap_under); i++) { createAnimeHeap(&m_anm_heap_under[i].mpAnimeHeap, HEAP_TYPE_UNDER_UPPER_e);