/** * d_a_player_bottle.inc * * Code relating to various bottled items and bottle interactions. * * This file is not a standalone translation unit and is instead directly * included into d_a_player_main.cpp. * * The original name of this file is not known, but a best guess was taken * based on the original names of the functions it contains. */ #include "d/dolzel.h" // IWYU pragma: keep #include "d/actor/d_a_player_main.h" #include "d/actor/d_a_player_HIO.h" #include "d/d_camera.h" #include "JSystem/J3DGraphLoader/J3DAnmLoader.h" #include "f_op/f_op_kankyo_mng.h" /* 80151E40-80151E60 .text changeBottleDrinkFace__9daPy_lk_cFi */ int daPy_lk_c::changeBottleDrinkFace(int param_0) { if (param_0 == dItemNo_SOUP_BOTTLE_e || param_0 == dItemNo_HALF_SOUP_BOTTLE_e) { return true; } return false; } /* 80151E60-80152128 .text setBottleModel__9daPy_lk_cFUs */ void daPy_lk_c::setBottleModel(u16 param_0) { mEquipItem = param_0; JKRHeap* oldHeap = setItemHeap(); J3DModelData* tmp_modelData = initModel(&mpEquipItemModel, dRes_INDEX_LINK_BDL_BOTTLEEMP_e, 0x37221222); u8* buffer = new (0x20) u8[0x400]; JKRReadIdxResource(buffer, 0x400, dRes_INDEX_LKANM_BTK_TBOTTLE_e, dComIfGp_getAnmArchive()); mpEquipItemBtk = static_cast(J3DAnmLoaderDataBase::load(buffer)); mpEquipItemBtk->setFrame(0.0f); mpEquipItemBtk->searchUpdateMaterialID(tmp_modelData); tmp_modelData->entryTexMtxAnimator(mpEquipItemBtk); if (param_0 == dItemNo_RED_POTION_e || param_0 == dItemNo_GREEN_POTION_e || param_0 == dItemNo_BLUE_POTION_e || param_0 == dItemNo_HALF_SOUP_BOTTLE_e || param_0 == dItemNo_SOUP_BOTTLE_e || param_0 == dItemNo_WATER_BOTTLE_e || param_0 == dItemNo_FOREST_WATER_e) { u16 bdl; if (param_0 == dItemNo_HALF_SOUP_BOTTLE_e) { bdl = dRes_INDEX_LINK_BDL_BINLIQUIDH_e; } else { bdl = dRes_INDEX_LINK_BDL_BINLIQUID_e; } tmp_modelData = initModel(&mpBottleContentsModel, bdl, 0x13000022); buffer = new (0x20) u8[0x400]; JKRReadIdxResource(buffer, 0x400, dRes_INDEX_LKANM_BRK_TBINLIQUID_e, dComIfGp_getAnmArchive()); mpEquipItemBrk = static_cast(J3DAnmLoaderDataBase::load(buffer)); if (param_0 == dItemNo_RED_POTION_e) { mpEquipItemBrk->setFrame(0.0f); } else if (param_0 == dItemNo_GREEN_POTION_e) { mpEquipItemBrk->setFrame(1.0f); } else if (param_0 == dItemNo_BLUE_POTION_e) { mpEquipItemBrk->setFrame(2.0f); } else if (param_0 == dItemNo_SOUP_BOTTLE_e || param_0 == dItemNo_HALF_SOUP_BOTTLE_e) { mpEquipItemBrk->setFrame(4.0f); } else { mpEquipItemBrk->setFrame(3.0f); } mpEquipItemBrk->searchUpdateMaterialID(tmp_modelData); tmp_modelData->entryTevRegAnimator(mpEquipItemBrk); } else if (param_0 == dItemNo_FAIRY_BOTTLE_e) { tmp_modelData = initModel(&mpBottleContentsModel, dRes_INDEX_LINK_BDL_BINFAIRY_e, 0x13000022); } else if (param_0 == dItemNo_FIREFLY_BOTTLE_e) { tmp_modelData = initModel(&mpBottleContentsModel, dRes_INDEX_LINK_BDL_BINHO_e, 0x13000022); buffer = new (0x20) u8[0x400]; JKRReadIdxResource(buffer, 0x400, dRes_INDEX_LKANM_BRK_TBINHO_e, dComIfGp_getAnmArchive()); mpEquipItemBrk = static_cast(J3DAnmLoaderDataBase::load(buffer)); mpEquipItemBrk->searchUpdateMaterialID(tmp_modelData); tmp_modelData->entryTevRegAnimator(mpEquipItemBrk); m3600 = 0.0f; } if (param_0 != dItemNo_EMPTY_BOTTLE_e && mCurProc != daPyProc_BOTTLE_DRINK_e) { tmp_modelData = initModel(&mpBottleCapModel, dRes_INDEX_LINK_BDL_BOTTLECAP_e, 0x13000022); m355E = 1; } mDoExt_setCurrentHeap(oldHeap); if (param_0 == dItemNo_FOREST_WATER_e) { m32F0.makeEmitter(dPa_name::ID_AK_JN_FORESTWATER00, mpEquipItemModel->getBaseTRMtx(), ¤t.pos, NULL); } } /* 80152128-801521A0 .text makeFairy__9daPy_lk_cFP4cXyzUl */ fopAc_ac_c* daPy_lk_c::makeFairy(cXyz* param_0, u32 param_1) { onResetFlg0(daPyRFlg0_FAIRY_USE); resetCurse(); return (fopAc_ac_c*)fopAcM_fastCreate(fpcNm_NPC_FA1_e, param_1, param_0, fopAcM_GetRoomNo(this), &shape_angle); } /* 801521A0-80152300 .text procBottleDrink_init__9daPy_lk_cFUs */ BOOL daPy_lk_c::procBottleDrink_init(u16 param_0) { if (!dComIfGp_event_compulsory(this)) { return false; } mDemo.setSpecialDemoType(); int iVar1 = checkShipRideUseItem(1); commonProcInit(daPyProc_BOTTLE_DRINK_e); current.angle.y = shape_angle.y; mNormalSpeed = 0.0f; setSingleMoveAnime( ANM_BINDRINKPRE, 1.0f, m_HIO->mItem.mBottle.m.field_0x5C, m_HIO->mItem.mBottle.m.field_0xC, m_HIO->mItem.mBottle.m.field_0x60 ); if (changeBottleDrinkFace(param_0)) { setTextureAnime(0x85, 0); } keepItemData(); setBottleModel(param_0); dComIfGp_setPlayerStatus1(0, daPyStts1_UNK2000_e); mProcVar6.m3570 = 1; dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar6.m3570, 0); initShipRideUseItem(iVar1, 2); return true; } /* 80152300-80152624 .text procBottleDrink__9daPy_lk_cFv */ BOOL daPy_lk_c::procBottleDrink() { static const GXColor red = {0xC8, 0x00, 0x00, 0xFF}; static const GXColor green = {0x00, 0xFA, 0x00, 0xFF}; static const GXColor blue = {0x00, 0x32, 0x96, 0xFF}; setShipRidePosUseItem(); J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; u16 uVar1 = m_anm_heap_under[UNDER_MOVE0_e].mIdx; if (uVar1 == dRes_INDEX_LKANM_BCK_BINDRINKPRE_e) { if (frameCtrl.getRate() < 0.01f) { setSingleMoveAnime(ANM_BINDRINKING, m_HIO->mItem.mBottle.m.field_0x64, 0.0f, -1, 0.0f); if (changeBottleDrinkFace(mEquipItem)) { setTextureAnime(0x86, 0); } if (mEquipItem != dItemNo_GREEN_POTION_e) { dComIfGp_setItemLifeCount(dComIfGs_getMaxLife()); } if (mEquipItem != dItemNo_RED_POTION_e) { dComIfGp_setItemMagicCount(dComIfGs_getMaxMagic()); } if (mEquipItem == dItemNo_SOUP_BOTTLE_e || mEquipItem == dItemNo_HALF_SOUP_BOTTLE_e) { onNoResetFlg1(daPyFlg1_SOUP_POWER_UP); } resetCurse(); } else { if (frameCtrl.checkPass(65.0f)) { voiceStart(39); } } } else if (uVar1 == dRes_INDEX_LKANM_BCK_BINDRINKING_e) { if (dComIfGp_getItemNowLife() == dComIfGs_getLife() && dComIfGp_getItemNowMagic() == dComIfGs_getMagic()) { setSingleMoveAnime( ANM_BINDRINKAFTER, 1.0f, m_HIO->mItem.mBottle.m.field_0x68, m_HIO->mItem.mBottle.m.field_0xE, m_HIO->mItem.mBottle.m.field_0x6C ); if (changeBottleDrinkFace(mEquipItem)) { setTextureAnime(0x87, 0); } if (mEquipItem == dItemNo_SOUP_BOTTLE_e) { setBottleModel(dItemNo_HALF_SOUP_BOTTLE_e); dComIfGs_setEquipBottleItemIn(mReadyItemBtn, dItemNo_HALF_SOUP_BOTTLE_e); } else { mpBottleContentsModel = NULL; dComIfGs_setEquipBottleItemEmpty(mReadyItemBtn); } const GXColor* p_Var3; if (mEquipItem != dItemNo_SOUP_BOTTLE_e && mEquipItem != dItemNo_HALF_SOUP_BOTTLE_e) { if (mEquipItem == dItemNo_RED_POTION_e) { p_Var3 = &red; } else if (mEquipItem == dItemNo_GREEN_POTION_e) { p_Var3 = &green; } else { p_Var3 = &blue; } m33A8.makeEmitterColor( dPa_name::ID_IT_JN_LK_GEPPU00, mpCLModel->getAnmMtx(CL_JNT_CHIN_JNT_e), ¤t.pos, &shape_angle, p_Var3, NULL ); } } else { if (frameCtrl.checkPass(10.0f)) { voiceStart(39); } } } else if (frameCtrl.getRate() < 0.01f) { dComIfGp_event_reset(); dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); endDemoMode(); } else { if (frameCtrl.checkPass(8.0f)) { voiceStart(40); } } return true; } /* 80152624-801527CC .text procBottleOpen_init__9daPy_lk_cFUs */ BOOL daPy_lk_c::procBottleOpen_init(u16 param_0) { if (mCurProc == daPyProc_BOTTLE_OPEN_e) { return true; } if (mDemo.getDemoMode() != daPy_demo_c::DEMO_BO_OPEN_e) { if (!dComIfGp_event_compulsory(this)) { return false; } mDemo.setSpecialDemoType(); } else { param_0 = dComIfGp_event_getPreItemNo(); } int iVar1 = checkShipRideUseItem(1); commonProcInit(daPyProc_BOTTLE_OPEN_e); current.angle.y = shape_angle.y; mNormalSpeed = 0.0f; setSingleMoveAnime( ANM_BINOPENPRE, 1.0f, m_HIO->mItem.mBottle.m.field_0x3C, m_HIO->mItem.mBottle.m.field_0x6, m_HIO->mItem.mBottle.m.field_0x40 ); keepItemData(); setBottleModel(param_0); dComIfGp_setPlayerStatus1(0, daPyStts1_UNK4000_e); if (mEquipItem == dItemNo_FAIRY_BOTTLE_e) { mProcVar6.m3570 = 3; } else { mProcVar6.m3570 = 2; } if (mDemo.getDemoMode() != daPy_demo_c::DEMO_BO_OPEN_e) { dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar6.m3570, 0); } initShipRideUseItem(iVar1, 2); mProcVar2.m34D4 = 0; mProcVar3.m34D6 = 0; mProcVar0.m34D0 = -1; mProcVar4.m34D8 = 0; return true; } /* 801527CC-80152ED0 .text procBottleOpen__9daPy_lk_cFv */ BOOL daPy_lk_c::procBottleOpen() { J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; setShipRidePosUseItem(); if (m_anm_heap_under[UNDER_MOVE0_e].mIdx == dRes_INDEX_LKANM_BCK_BINOPENPRE_e) { if (frameCtrl.getRate() < 0.01f) { if (mEquipItem == dItemNo_FAIRY_BOTTLE_e) { setSingleMoveAnime( ANM_BINOPENB, 1.0f, m_HIO->mItem.mBottle.m.field_0x50, m_HIO->mItem.mBottle.m.field_0xA, m_HIO->mItem.mBottle.m.field_0x54 ); } else { setSingleMoveAnime( ANM_BINOPENA, 1.0f, m_HIO->mItem.mBottle.m.field_0x44, m_HIO->mItem.mBottle.m.field_0x8, m_HIO->mItem.mBottle.m.field_0x48 ); } } else if (frameCtrl.checkPass(32.0f)) { m355E = 0; mRightHandIdx = HANDS_JNT_CL_RHANDC_e; } } else { if (m32E4.getEmitter() && mProcVar2.m34D4 == 0 && m32E4.getEmitter()->getParticleList() && m32E4.getEmitter()->getParticleList()->getLast()) { JGeometry::TVec3 temp; m32E4.getEmitter()->getParticleList()->getLast()->getObject()->getGlobalPosition(temp); cXyz sp64(temp.x, temp.y + 100.0f, temp.z); BOOL r27 = FALSE; mGndChk.SetPos(&sp64); f32 f31 = dComIfG_Bgsp()->GroundCross(&mGndChk); mLavaGndChk.SetPos(&sp64); f32 f29 = dComIfG_Bgsp()->GroundCross(&mGndChk); // Bug? They might have meant to use mLavaGndChk here f32 f1; f32 water_y; if (fopAcM_getWaterY(&sp64, &water_y)) { if (water_y > f31) { if (water_y > f29) { f1 = water_y; r27 = TRUE; } else { f1 = f29; } } else { if (f31 > f29) { f1 = f31; } else { f1 = f29; } } } else { if (f31 > f29) { f1 = f31; } else { f1 = f29; } } cXyz sp58; cXyz sp4C; cXyz sp40; cXyz sp34; if (f1 > temp.y + 15.0f) { mProcVar2.m34D4 = 1; sp64.y = f1; mProcVar2.m34D4 = 1; static const Vec splash_scale = {0.3f, 0.3f, 0.3f}; JPABaseEmitter* emitter = dComIfGp_particle_setP1( dPa_name::ID_IT_JN_WP_SHIBUKI, &sp64, NULL, (cXyz*)&splash_scale, 0xFF, NULL, -1, &tevStr.mColorK0, &tevStr.mColorK0 ); if (emitter) { emitter->setRate(8.0f); emitter->setMaxFrame(20); } static const Vec ripple_scale = {0.5f, 0.5f, 0.5f}; if (r27) { dComIfGp_particle_setSingleRipple(dPa_name::ID_IT_JN_WP_HAMON03, &sp64, NULL, (cXyz*)&ripple_scale); } else { m370C = sp64; mProcVar0.m34D0 = 1; } sp58.set(sp64.x, sp64.y, sp64.z); sp4C.set(sp64.x, sp64.y + 5.0f, sp64.z); mAtCps[1].SetStartEnd(sp58, sp64); sp34.set(0.0f, 0.0f, 0.0f); mAtCps[1].SetAtVec(sp34); mAtCps[1].SetR(50.0f); } else { sp64.y = temp.y; } mDoMtx_multVecZero(mpCLModel->getAnmMtx(CL_JNT_CL_LHANDA_e), &sp58); sp40 = sp64 - sp58; mAtCps[0].SetStartEnd(sp58, sp64); mAtCps[0].SetAtVec(sp40); mProcVar3.m34D6 = 1; } if (frameCtrl.getRate() < 0.01f) { mActorKeepRope.clearData(); if (checkSpecialDemoMode()) { dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); dComIfGp_event_reset(); endDemoMode(); } else { dComIfGp_evmng_cutEnd(mStaffIdx); } } else if (mProcVar4.m34D8 == 0) { if ( (mEquipItem == dItemNo_WATER_BOTTLE_e || mEquipItem == dItemNo_FOREST_WATER_e) && (frameCtrl.checkPass(9.0f)) ) { seStartOnlyReverb(JA_SE_LK_SPRINKLE_WATER); m32E4.makeEmitterColor(dPa_name::ID_AK_JN_SPILLWATER00, mpCLModel->getAnmMtx(CL_JNT_CL_LHANDA_e), ¤t.pos, &tevStr.mColorK0, &tevStr.mColorK0); dCcG_At_Spl spl; if (mEquipItem == dItemNo_WATER_BOTTLE_e) { spl = dCcG_At_Spl_UNK0; } else { // dItemNo_FOREST_WATER_e spl = dCcG_At_Spl_UNK4; onNoResetFlg1(daPyFlg1_FOREST_WATER_USE); m3554 = 3; } setAtParam(AT_TYPE_WATER, 0, spl, 0, dCcG_AtHitMark_None_e, CUT_TYPE_NONE, 5.0f); } else if ( (mEquipItem == dItemNo_FAIRY_BOTTLE_e && frameCtrl.getFrame() >= m_HIO->mItem.mBottle.m.field_0x58) || (mEquipItem != dItemNo_FAIRY_BOTTLE_e && mEquipItem != dItemNo_FOREST_WATER_e && frameCtrl.getFrame() >= m_HIO->mItem.mBottle.m.field_0x4C) ) { mpBottleContentsModel = NULL; mProcVar4.m34D8 = 1; if (checkSpecialDemoMode()) { dComIfGs_setEquipBottleItemEmpty(mReadyItemBtn); } else if (dComIfGp_event_getTalkXYBtn() == dTalkBtn_X_e) { dComIfGs_setEquipBottleItemEmpty(dItemBtn_X_e); } else if (dComIfGp_event_getTalkXYBtn() == dTalkBtn_Y_e) { dComIfGs_setEquipBottleItemEmpty(dItemBtn_Y_e); } else { // dTalkBtn_Z_e dComIfGs_setEquipBottleItemEmpty(dItemBtn_Z_e); } if (mEquipItem == dItemNo_FAIRY_BOTTLE_e) { onModeFlg(ModeFlg_08000000); mActorKeepRope.setData(makeFairy(&mLeftHandPos, 2)); } else if (mEquipItem == dItemNo_FIREFLY_BOTTLE_e) { fopAcM_create(fpcNm_NH_e, 1, &mLeftHandPos, fopAcM_GetRoomNo(this), &shape_angle); } } } else if (frameCtrl.getFrame() > 40.0f) { m32E4.end(); } } if (mProcVar0.m34D0 > 0) { mProcVar0.m34D0--; if (mProcVar0.m34D0 == 0) { cXyz sp28( m370C.x + cM_rndFX(45.0f), m370C.y, m370C.z + cM_rndFX(45.0f) ); fopKyM_create(fpcNm_WATER_MARK_e, 1, &sp28); mProcVar0.m34D0 = 3; } } return TRUE; } /* 80152ED0-80153064 .text procBottleSwing_init__9daPy_lk_cFi */ BOOL daPy_lk_c::procBottleSwing_init(int param_0) { int iVar2 = checkShipRideUseItem(1); commonProcInit(daPyProc_BOTTLE_SWING_e); if (param_0 != 0) { deleteEquipItem(FALSE); setBottleModel(dItemNo_EMPTY_BOTTLE_e); } current.angle.y = shape_angle.y; mNormalSpeed = 0.0f; fopAc_ac_c* catch_target = dComIfGp_att_getCatghTarget(); BOOL bVar1; if (catch_target != 0) { if (catch_target->current.pos.y > mpCLModel->getAnmMtx(CL_JNT_LINK_ROOT_e)[1][3]) { bVar1 = false; } else { bVar1 = true; } } else if (mWaterY > 10.0f + current.pos.y) { bVar1 = true; } else { bVar1 = false; } if (bVar1) { setSingleMoveAnime( ANM_BINSWINGU, m_HIO->mItem.mBottle.m.field_0x20, m_HIO->mItem.mBottle.m.field_0x24, m_HIO->mItem.mBottle.m.field_0x2, m_HIO->mItem.mBottle.m.field_0x2C ); m35A0 = m_HIO->mItem.mBottle.m.field_0x28; } else { setSingleMoveAnime( ANM_BINSWINGS, m_HIO->mItem.mBottle.m.field_0x10, m_HIO->mItem.mBottle.m.field_0x14, m_HIO->mItem.mBottle.m.field_0x0, m_HIO->mItem.mBottle.m.field_0x1C ); m35A0 = m_HIO->mItem.mBottle.m.field_0x18; } mProcVar6.m3570 = 0; mProcVar7.m3574 = 0; mProcVar2.m34D4 = 0; voiceStart(7); initShipRideUseItem(iVar2, 2); return true; } /* 80153064-80153338 .text procBottleSwing__9daPy_lk_cFv */ BOOL daPy_lk_c::procBottleSwing() { setShipRidePosUseItem(); if (mProcVar6.m3570 == 0) { if (eventInfo.checkCommandCatch()) { mProcVar6.m3570 = 1; u8 bVar5 = dComIfGp_event_getPreItemNo(); if (bVar5 == dItemNo_WATER_BOTTLE_e) { seStartOnlyReverb(JA_SE_LK_SCOOP_WATER); if (!strcmp(dComIfGp_getStartStageName(), "Omori")) { bVar5 = dItemNo_FOREST_WATER_e; if (dComIfGs_checkBottle(dItemNo_FOREST_WATER_e)) { m3628 = fpcM_ERROR_PROCESS_ID_e; mProcVar7.m3574 = 1; } else { dComIfGs_getpItemRecord()->resetTimer(36000); } } } if (mProcVar7.m3574 == 0) { setBottleModel(bVar5); dComIfGs_setEquipBottleItemIn(mReadyItemBtn, mEquipItem); m355E = 0; } mDemo.setSpecialDemoType(); } else { if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= 1.0f && mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() <= 4.0f && getReadyItem() == dItemNo_EMPTY_BOTTLE_e && (dComIfGp_att_getCatghTarget() != NULL || mWaterY > current.pos.y + 10.0f)) { fopAcM_orderCatchEvent(this, dComIfGp_att_getCatghTarget()); } } } if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || mProcVar2.m34D4 != 0) { if (mProcVar7.m3574 != 0) { if (mProcVar2.m34D4 == 0) { offModeFlg(ModeFlg_00000400); onModeFlg(ModeFlg_00000100); setBlendMoveAnime(m_HIO->mBasic.m.field_0xC); mProcVar2.m34D4 = 1; } if (checkEndMessage(0x14a2)) { dComIfGp_event_reset(); endDemoMode(); } } else { if (mProcVar6.m3570 != 0) { procBottleGet_init(); } else { if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { procShipPaddle_init(); } else { checkNextMode(0); } } } } else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > m35A0) { if (mProcVar6.m3570 == 0 && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { checkNextMode(1); } } return true; } /* 80153338-80153438 .text procBottleGet_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procBottleGet_init() { int iVar1 = checkShipRideUseItem(0); commonProcInit(daPyProc_BOTTLE_GET_e); setSingleMoveAnime( ANM_BINGET, m_HIO->mItem.mBottle.m.field_0x30, m_HIO->mItem.mBottle.m.field_0x34, m_HIO->mItem.mBottle.m.field_0x4, m_HIO->mItem.mBottle.m.field_0x38 ); dComIfGp_setPlayerStatus1(0, daPyStts1_UNK1000_e); m3628 = fpcM_ERROR_PROCESS_ID_e; mProcVar6.m3570 = 0; dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", &mProcVar6.m3570, 0); if (mEquipItem == dItemNo_FOREST_WATER_e) { m32F0.makeEmitter(dPa_name::ID_AK_JN_FORESTWATER00, mpEquipItemModel->getBaseTRMtx(), ¤t.pos, NULL); } initShipRideUseItem(iVar1, 2); return true; } /* 80153438-80153554 .text procBottleGet__9daPy_lk_cFv */ BOOL daPy_lk_c::procBottleGet() { J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; setShipRidePosUseItem(); if (frameCtrl.getRate() < 0.01f && (checkEndMessage(MSG_NO_FOR_ITEM(mEquipItem)))) { dComIfGp_event_reset(); dCam_getBody()->EndEventCamera(fopAcM_GetID(this)); deleteEquipItem(FALSE); endDemoMode(); } else if (frameCtrl.getFrame() >= 9.0f) { m355E = 1; } if (frameCtrl.checkPass(39.0f)) { seStartSystem(JA_SE_ME_ITEM_GET_S); dComIfGp_setMesgBgmOn2(); } return true; }