// // Generated by dtk // Translation Unit: d_a_auction.cpp // #include "d/actor/d_a_auction.h" #include "d/actor/d_a_npc_auction.h" #include "d/actor/d_a_player.h" #include "d/actor/d_a_player_main.h" #include "d/d_camera.h" #include "d/d_procname.h" #include "m_Do/m_Do_controller_pad.h" #include "weak_bss_936_to_1036.h" // IWYU pragma: keep #include "weak_data_1811.h" // IWYU pragma: keep struct NpcDatStruct { /* 0x00 */ f32 field_0x00; /* 0x04 */ f32 field_0x04; /* 0x08 */ s16 mBidIncMin; // Minimum bid increment /* 0x0A */ s16 mBidIncMax; // Maximum bid increment /* 0x0C */ s16 mSpendingLimit; }; struct NpcMsgDatStruct { /* 0x00 */ s16 field_0x00; /* 0x02 */ s16 field_0x02; /* 0x04 */ s16 field_0x04; /* 0x06 */ s16 field_0x06; /* 0x08 */ s16 field_0x08; }; struct NpcCameraDatStruct { /* 0x00 */ f32 field_0x00; /* 0x04 */ f32 field_0x04; /* 0x08 */ s16 field_0x08; /* 0x0A */ s16 field_0x0A; }; static cXyz l_camera_pos[][2] = { {cXyz(-265.0f, 48.0f, -631.0f), cXyz(332.0f, 232.0f, 286.0f)}, {cXyz(-50.0f, 202.0f, 137.0f), cXyz(-87.0f, 239.0f, 330.0f)}, {cXyz(-216.0f, 205.0f, 5.0f), cXyz(-379.0f, 238.0f, 115.0f)}, }; #ifdef DEBUG static daAuction_HIO_c l_HIO; #endif static daAuction_c::ItemData l_item_dat[] = { {dItem_JOY_PENDANT_e, 0x1D10, 40, 0x0F01}, {dItem_COLLECT_MAP_27_e, 0x1D11, 5, 0x1080}, {dItem_COLLECT_MAP_18_e, 0x1D12, 60, 0x1040}, {dItem_HEART_PIECE_e, 0x1D13, 80, 0x1020}, }; static daAuction_c::ItemData l_item_dat2[] = { {POSTMAN_STATUE, 0x1D14, 30, 0x1008}, {PRESIDENT_STATUE, 0x1D15, 40, 0x1004}, }; static s16 l_item_dat22[] = {0x002A, 0x00F9}; static NpcDatStruct l_npc_dat[7] = { {2.0f, 2.1f, 0x0, 0x0, 1000}, {0.3f, 0.5f, 0x4, 0x6, 450 }, {0.3f, 0.6f, 0x3, 0x7, 500 }, {0.4f, 0.7f, 0x2, 0x4, 250 }, {0.5f, 1.0f, 0x2, 0x3, VERSION_SELECT(998, 990, 990) }, {0.4f, 0.5f, 0x3, 0x4, VERSION_SELECT(998, 990, 990) }, {0.7f, 1.2f, 0x2, 0x2, 150 }, }; static NpcMsgDatStruct l_npc_msg_dat[12] = { {0x33AC, 0x1D3A, 0x1D3B, 0x1D3C, 0x33B6}, {0x33AD, 0x1D3D, 0x1D3E, 0x1D3F, 0x33B7}, {0x33AE, 0x1D40, 0x1D41, 0x1D42, 0x33B8}, {0x33AF, 0x1D43, 0x1D44, 0x1D45, 0x33B9}, {0x33B0, 0x1D46, 0x1D47, 0x1D48, 0x33BA}, {0x33B1, 0x1D49, 0x1D4A, 0x1D4B, 0x33BB}, {0x33B2, 0x339D, 0x339E, 0x339F, 0x33BC}, {0x33B3, 0x33A0, 0x33A1, 0x33A2, 0x33BD}, {0x33B4, 0x33A3, 0x33A4, 0x33A5, 0x33BE}, {0x33B5, 0x33A6, 0x33A7, 0x33A8, 0x33BF}, {0x1CE9, 0x0000, 0x0000, 0x0000, 0x0000}, {0x1CE9, 0x0000, 0x0000, 0x0000, 0x0000}, }; static NpcCameraDatStruct l_npc_camera_dat[7] = { { 150.0f, 70.0f, -500 }, { 200.0f, 100.0f, 0 }, { 200.0f, 100.0f, 0 }, { 200.0f, 100.0f, 0 }, { 200.0f, 100.0f, 0 }, { 200.0f, 100.0f, 0 }, { 200.0f, 150.0f, 0 }, }; static f32 l_npc_emitter_ofsy[8] = { 120.0f, 180.0f, 180.0f, 180.0f, 180.0f, 180.0f, 210.0f, 180.0f, }; static f32 l_npc_camera_ofsy[8] = { 150.0f, 210.0f, 210.0f, 210.0f, 210.0f, 210.0f, 240.0f, 210.0f, }; static s16 l_rest_msg_time1[4] = { 30000, 10000, 5000, -1000, }; static s16 l_rest_msg_time2[4] = { 15000, 10000, 5000, -1000, }; static u32 l_rest_msg_no[3] = { 0x1D01, 0x1D02, 0x1D03, }; static u32 l_rest_se_no[3] = { JA_SE_AUC_LAST_SPURT, JA_SE_AUC_FEW_TIME, JA_SE_AUC_5_SEC, }; static f32 l_after_bet_rate[4] = {2.0f, 1.5f, 1.2f, 1.1f}; static s16 l_after_bet_chk[4] = { 0x0014, 0x0014, 0x0028, 0x0028, }; static u32 l_after_bet_msg_no[4] = { 0x1D23, 0x1D22, 0x1D21, 0x1D20, }; static s16 l_after_bet_wait[4][2] = { {8, 10}, {7, 10}, {6, 9}, {5, 8}, }; static daPy_py_c::daPy_FACE l_link_face[8] = { daPy_py_c::daPyFace_TMABAA, daPy_py_c::daPyFace_TMABAC, daPy_py_c::daPyFace_TMABACB, daPy_py_c::daPyFace_TMABAE, daPy_py_c::daPyFace_TMABAF, daPy_py_c::daPyFace_TMABAG, daPy_py_c::daPyFace_TMABAH, daPy_py_c::daPyFace_TMABAJ_TEYORIME, }; static daAuction_c::ProcFunc_t moveProc[] = { &daAuction_c::executeWait, &daAuction_c::executeNormal, &daAuction_c::executeStart, }; extern void dAuction_screen_delete(); extern void dAuction_screen_slotShow(); extern void dAuction_screen_slotHide(); extern void dAuction_screen_gaugeHide(); extern void dAuction_screen_gaugeShow(); extern void dAuction_screen_gaugeUp(); extern void dAuction_screen_gaugeDown(); extern void dAuction_screen_talkStart(); extern void dAuction_screen_talkEnd(); extern fpc_ProcID dAuction_screen_create(); /* 000000EC-000002FC .text __ct__11daAuction_cFv */ daAuction_c::daAuction_c() { for (int i = 0; i < 8; i++) { m738[i] = fpcM_ERROR_PROCESS_ID_e; m80C[i] = i; mAucMdlNo[i] = 0xFF; } for (int i = 0; i < 100; i++) { int rnd1 = getRand(6); int rnd2 = getRand(6); u8 tmp = m80C[rnd1 + 1]; m80C[rnd1 + 1] = m80C[rnd2 + 1]; m80C[rnd2 + 1] = tmp; } mMoveState = 0; m820 = 1; m821 = 0; m7EC = 0; m7F0 = 0; m81C = 0xFF; m81D = 0xFF; mpEmitter = NULL; m836 = 0; eyePos = current.pos; m832 = 0; } /* 00000644-00000664 .text CheckCreateHeap__FP10fopAc_ac_c */ static BOOL CheckCreateHeap(fopAc_ac_c* i_this) { return static_cast(i_this)->createHeap(); } /* 00000664-000006F4 .text _create__11daAuction_cFv */ cPhs_State daAuction_c::_create() { fopAcM_SetupActor(this, daAuction_c); cPhs_State phase_state = dComIfG_resLoad(&mPhs, "Pspl"); if (phase_state == cPhs_COMPLEATE_e) { if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, 0x2400)) { return cPhs_ERROR_e; } return createInit(); } return phase_state; } /* 000006F4-00000770 .text createHeap__11daAuction_cFv */ BOOL daAuction_c::createHeap() { J3DModelData* modelData = static_cast(dComIfG_getObjectIDRes("Pspl", 0)); if (modelData == NULL) { return FALSE; } mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203); if (mpModel == NULL) { return FALSE; } return TRUE; } /* 00000770-000008C4 .text createInit__11daAuction_cFv */ cPhs_State daAuction_c::createInit() { mEvtStartIdx = dComIfGp_evmng_getEventIdx("AUCTION_START"); mEvtGetItemIdx = dComIfGp_evmng_getEventIdx("AUCTION_GET_ITEM"); mEvtNoItemIdx = dComIfGp_evmng_getEventIdx("AUCTION_NO_ITEM"); mEvtStart2Idx = dComIfGp_evmng_getEventIdx("AUCTION_START2"); mEvtEnd2Idx = dComIfGp_evmng_getEventIdx("AUCTION_END2"); mNpcEvtInfo.setActorInfo("Auction", this); m824 = 0; m826 = 0xFF; dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m824)].field_0x00); mCurrAuctionItemIndex = 0; s16 nameMsgID = l_item_dat[mCurrAuctionItemIndex].mNameMsgID; mCurrBid = l_item_dat[mCurrAuctionItemIndex].mStartingBid; dComIfGp_setItemNameMessageID(nameMsgID); dComIfGp_setMessageCountNumber(mCurrBid); setMtx(); return cPhs_COMPLEATE_e; } /* 000008C4-0000092C .text _delete__11daAuction_cFv */ BOOL daAuction_c::_delete() { dComIfG_resDelete(&mPhs, "Pspl"); if (heap != NULL && mpEmitter != NULL) { mpEmitter->becomeInvalidEmitter(); } return TRUE; } /* 0000092C-00000998 .text _draw__11daAuction_cFv */ BOOL daAuction_c::_draw() { g_env_light.settingTevStruct(TEV_TYPE_BG2, ¤t.pos, &tevStr); g_env_light.setLightTevColorType(mpModel, &tevStr); if (mFlags & 4) { mDoExt_modelUpdateDL(mpModel); } return TRUE; } /* 00000998-00000B10 .text _execute__11daAuction_cFv */ BOOL daAuction_c::_execute() { checkOrder(); if (!dComIfGp_event_runCheck() || eventInfo.checkCommandTalk()) { (this->*moveProc[mMoveState])(); } else { eventMove(); } eventOrder(); if (mpEmitter != NULL) { if (m836 & 1) { // Increase alpha if (m80A != 0) { m80A -= 1; } else { mAlpha += 4.0f; if (mAlpha > 255.0f) { mAlpha = 255.0f; m836 &= ~1; } mpEmitter->setGlobalAlpha(mAlpha); } } else if (m836 & 2) { // Decrease alpha mAlpha -= 4.0f; if (mAlpha < 0.0f) { mpEmitter->becomeInvalidEmitter(); mpEmitter = NULL; } else { mpEmitter->setGlobalAlpha(mAlpha); } } } setMtx(); return TRUE; } /* 00000B10-00000B44 .text executeWait__11daAuction_cFv */ void daAuction_c::executeWait() { for (int i = 0; i < 8; i++) { if (m738[i] == fpcM_ERROR_PROCESS_ID_e) { return; } } mMoveState = 1; } /* 00000B44-00000B48 .text executeNormal__11daAuction_cFv */ void daAuction_c::executeNormal() {} /* 00000B48-00000B4C .text executeStart__11daAuction_cFv */ void daAuction_c::executeStart() {} /* 00000B4C-00000C68 .text checkOrder__11daAuction_cFv */ void daAuction_c::checkOrder() { if (eventInfo.checkCommandDemoAccrpt()) { if (dComIfGp_evmng_startCheck(mEvtStartIdx) && m838 == 3) { m838 = 0; } else if (dComIfGp_evmng_startCheck(mEvtGetItemIdx) && m838 == 4) { m838 = 0; } else if (dComIfGp_evmng_startCheck(mEvtNoItemIdx) && m838 == 5) { m838 = 0; } if (dComIfGp_evmng_startCheck(mEvtStart2Idx) && m838 == 6) { m838 = 0; } else if (dComIfGp_evmng_startCheck(mEvtEnd2Idx) && m838 == 7) { m838 = 0; } } } /* 00000C68-00000EF8 .text eventOrder__11daAuction_cFv */ void daAuction_c::eventOrder() { if (m821 == 1) { mMoveState = 2; m838 = 3; m822 = m821; m821 = 0; } else if (m821 == 2) { mMoveState = 2; m838 = 6; m822 = m821; m821 = 0; } if (m838 == 1 || m838 == 2) { eventInfo.onCondition(dEvtCnd_CANTALK_e); if (m838 == 1) { fopAcM_orderSpeakEvent(this); } } else if (m838 == 3) { if (dComIfGs_isEventBit(0x4008)) { mCurrAuctionItemIndex = dComIfGs_getEventReg(0xCD03); mCurrBid += 10; } else { mCurrAuctionItemIndex = getItemNo(); } dComIfGp_setItemNameMessageID(l_item_dat[mCurrAuctionItemIndex].mNameMsgID); mCurrBid = l_item_dat[mCurrAuctionItemIndex].mStartingBid; dComIfGp_setMessageCountNumber(mCurrBid); fopAcM_orderChangeEventId(dComIfGp_getPlayer(0), this, mEvtStartIdx, 0, 0xFF7F); dComIfGp_startMiniGame(5); } else if (m838 == 4) { fopAcM_orderOtherEventId(this, mEvtGetItemIdx, 0xFF, 0xFF7F); } else if (m838 == 5) { fopAcM_orderOtherEventId(this, mEvtNoItemIdx, 0xFF, 0xFF7F); } else if (m838 == 6) { mCurrAuctionItemIndex &= 1; s16 nameMsgID = l_item_dat2[mCurrAuctionItemIndex].mNameMsgID; mCurrBid = l_item_dat2[mCurrAuctionItemIndex].mStartingBid; dComIfGp_setItemNameMessageID(nameMsgID); dComIfGp_setMessageCountNumber(mCurrBid); fopAcM_orderChangeEventId(dComIfGp_getPlayer(0), this, mEvtStart2Idx, 0, 0xFF7F); dComIfGp_startMiniGame(5); } else if (m838 == 7) { fopAcM_orderOtherEventId(this, mEvtEnd2Idx, 0xFF, 0xFF7F); } } /* 00000EF8-0000104C .text eventMove__11daAuction_cFv */ void daAuction_c::eventMove() { if (dComIfGp_evmng_endCheck(mEvtStartIdx)) { dComIfGp_event_reset(); if (m824 != 0) { m838 = 5; } else { m838 = 4; } } else if (dComIfGp_evmng_endCheck(mEvtGetItemIdx) || dComIfGp_evmng_endCheck(mEvtNoItemIdx) || dComIfGp_evmng_endCheck(mEvtEnd2Idx)) { dComIfGp_event_reset(); dComIfGp_endMiniGame(5); fopAcM_delete((fopAc_ac_c*)mpTimer); dAuction_screen_delete(); } else if (dComIfGp_evmng_endCheck(mEvtStart2Idx)) { dComIfGp_event_reset(); m838 = 7; } else { bool attn = mNpcEvtInfo.getAttnFlag(); if (mNpcEvtInfo.cutProc()) { if (!mNpcEvtInfo.getAttnFlag()) { mNpcEvtInfo.setAttnFlag(attn); } } else { privateCut(); } } } /* 0000104C-00001300 .text privateCut__11daAuction_cFv */ void daAuction_c::privateCut() { static char* cut_name_tbl[] = { "MES_SET", "MES_END", "START", "MAIN", "GET_ITEM", "CAMERA_OFF", "GET_ITEM_NPC", "GET_ITEM_MES", "CAMERA_OFF_NPC", "END", "CAMERA_TEST", }; enum { ACT_MES_SET, ACT_MES_END, ACT_START, ACT_MAIN, ACT_GET_ITEM, ACT_CAMERA_OFF, ACT_GET_ITEM_NPC, ACT_GET_ITEM_MES, ACT_CAMERA_OFF_NPC, ACT_END, ACT_CAMERA_TEST, }; int staffIdx = dComIfGp_evmng_getMyStaffId("Auction"); if (staffIdx == -1) { return; } mAction = dComIfGp_evmng_getMyActIdx(staffIdx, cut_name_tbl, ARRAY_SIZE(cut_name_tbl), TRUE, 0); if (mAction == -1) { dComIfGp_evmng_cutEnd(staffIdx); return; } if (dComIfGp_evmng_getIsAddvance(staffIdx)) { switch (mAction) { case ACT_MES_SET: eventTalkInit(staffIdx); break; case ACT_START: eventStartInit(); break; case ACT_MAIN: eventMainInit(); break; case ACT_GET_ITEM: eventGetItemInit(); break; case ACT_CAMERA_OFF: eventCameraOffInit(); break; case ACT_GET_ITEM_NPC: eventGetItemNpcInit(staffIdx); break; case ACT_GET_ITEM_MES: eventGetItemMesInit(); break; case ACT_END: eventEndInit(); break; case ACT_CAMERA_TEST: eventCameraTestInit(); break; } } bool evtRes; switch (mAction) { case ACT_MES_SET: evtRes = eventMesSet(); break; case ACT_MES_END: evtRes = eventMesEnd(); break; case ACT_START: evtRes = eventStart(); break; case ACT_MAIN: evtRes = eventMain(); break; case ACT_GET_ITEM: evtRes = eventGetItem(); break; case ACT_GET_ITEM_MES: #if BUGFIX evtRes = eventMesSet(); #elif __MWERKS__ // @bug They probably meant to call this function evtRes = eventMesSet; #else evtRes = &daAuction_c::eventMesSet; #endif break; case ACT_CAMERA_OFF_NPC: evtRes = eventCameraOffNpc(); break; case ACT_END: evtRes = eventEnd(); break; case ACT_CAMERA_TEST: evtRes = eventCameraTest(); break; default: evtRes = true; } if (evtRes) { dComIfGp_evmng_cutEnd(staffIdx); } dCamera_c* pCam = dCam_getBody(); // This could probably be simplified if (m835 & 1) { pCam->Stop(); m835 &= ~1; m835 |= 4; } if (m835 & 2) { pCam->Start(); m835 &= ~0xE; } if (m835 & 4 && m835 & 8) { pCam->Set(m78C, m798); } } /* 00001300-000013C0 .text eventTalkInit__11daAuction_cFi */ void daAuction_c::eventTalkInit(int staffIdx) { int* pMsg = dComIfGp_evmng_getMyIntegerP(staffIdx, "MsgNo"); if (pMsg != NULL) { switch (*pMsg) { case 0x1CF4: mDoAud_seStart(JA_SE_AUC_ITEM_SHOW); default: setMessage(*pMsg); } } else { setMessage(0); } } /* 000013C0-00001400 .text eventMesSet__11daAuction_cFv */ bool daAuction_c::eventMesSet() { talk(0); return mCurrMsgBsPcId != fpcM_ERROR_PROCESS_ID_e; } /* 00001400-00001434 .text eventMesEnd__11daAuction_cFv */ bool daAuction_c::eventMesEnd() { return talk(0) == fopMsgStts_BOX_CLOSED_e; } /* 00001434-00001634 .text eventStartInit__11daAuction_cFv */ void daAuction_c::eventStartInit() { m820 = ~1; if (m822 == 2) { mTimerID = dTimer_createTimer(4, 30, 1, 0, 221.0f, 439.0f, 32.0f, 419.0f); } else { mTimerID = dTimer_createTimer(4, 60, 1, 0, 221.0f, 439.0f, 32.0f, 419.0f); } JUT_ASSERT(0x861, mTimerID != fpcM_ERROR_PROCESS_ID_e); mGaugeID = dAuction_screen_create(); JUT_ASSERT(0x863, mGaugeID != fpcM_ERROR_PROCESS_ID_e); mpTimer = NULL; m830 = 1; dComIfGp_setMiniGameRupee(0); dComIfGp_setAuctionRupee(0); dAuction_screen_slotHide(); dAuction_screen_gaugeHide(); dAuction_screen_talkEnd(); mCurrAuctionItemPID = fopAcM_create(PROC_ShopItem, l_item_dat[mCurrAuctionItemIndex].mItemID, ¤t.pos); dKy_custom_colset(0, 4, 1.0f); mLight.mPos.x = 0.0f; mLight.mPos.y = 50.0f; mLight.mPos.z = -200.0f; mLight.mColor.r = 0x96; mLight.mColor.g = 0x64; mLight.mColor.b = 0x3C; mLight.mPower = 450.0f; mLight.mFluctuation = 0.0f; dKy_efplight_set(&mLight); mFlags |= 4; dAuction_screen_talkEnd(); } /* 00001634-000016AC .text eventStart__11daAuction_cFv */ bool daAuction_c::eventStart() { if (mpTimer == NULL) { mpTimer = (dTimer_c*)fopMsgM_SearchByID(mTimerID); if (mpTimer != NULL) { mpTimer->mpScrnDraw->setShowType(0); } } dComIfGp_setDoStatusForce(dActStts_HIDDEN_e); dComIfGp_setAStatusForce(dActStts_HIDDEN_e); return mpTimer != NULL; } /* 000016AC-0000188C .text eventMainInit__11daAuction_cFv */ void daAuction_c::eventMainInit() { m804 = 3600; for (int i = 0; i < 7; i++) { m7C4[i] = 0.0f; } if (m822 == 2) { m81F = 1; } else { m81F = 0; } m7E0 = 0.0f; m7E4 = 1.0f; m82A = 0; for (int i = 0; i < 3; i++) { s16 restMsgTime; if (m822 == 2) { restMsgTime = l_rest_msg_time2[i]; } else { restMsgTime = l_rest_msg_time1[i]; } if (60000 > restMsgTime) break; // Bug: restMsgTime is an s16, so this condition is always true. m82A += 1; } m82B = 0; m835 = 0; m834 = 0; m82E = 0; dComIfG_TimerStart(0, 4); if (m822 == 1) { dAuction_screen_gaugeShow(); } m836 |= 1; daPy_py_c* pLink = (daPy_py_c*)dComIfGp_getLinkPlayer(); pLink->changeOriginalDemo(); mCurLinkAnm = daPy_demo_c::DEMO_UNK01_e; dComIfGp_event_setTalkPartner(this); m82F = 0; m78C = l_camera_pos[m82F][0]; m798 = l_camera_pos[m82F][1]; dAuction_screen_talkEnd(); } static daAuction_c::ProcFunc_t eventProc[] = { &daAuction_c::eventMainKai, &daAuction_c::eventMainUri, &daAuction_c::eventMainMsgSet, &daAuction_c::eventMainMsgEnd, &daAuction_c::eventMainMsgBikonC, &daAuction_c::eventMainMsgBikonW, }; /* 0000188C-00001A98 .text eventMain__11daAuction_cFv */ bool daAuction_c::eventMain() { daPy_lk_c* pLink = (daPy_lk_c*)dComIfGp_getLinkPlayer(); if ( pLink->getBaseAnimeFrameRate() == 0.0f && mCurLinkAnm != daPy_demo_c::DEMO_UNK01_e && mCurLinkAnm != daPy_demo_c::DEMO_UNK1D_e && mCurLinkAnm != daPy_demo_c::DEMO_UNK25_e ) { setLinkAnm(daPy_demo_c::DEMO_UNK01_e); } mFlags &= 4; if (dComIfG_getTimerMode() == 4) { dComIfG_TimerStop(2); } (this->*eventProc[m81F])(); if (m832 != 0) { pLink->setFace((daPy_py_c::daPy_FACE)mFace); } if (m822 == 1) { dComIfGp_setAuctionGauge((s16)m7C4[0]); } if (m81F <= 1 && m82B != 0) { dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m824)].field_0x00); if (dComIfG_getTimerMode() == 4) { dComIfG_TimerStop(2); } dAuction_screen_slotHide(); dAuction_screen_gaugeHide(); m82B = 1; m834 = 0; m836 |= 2; // Might be incorrect pLink->cancelOriginalDemo(); if (m835 & 4) { m835 |= 2; m835 &= ~1; } mDoAud_seStart(JA_SE_AUC_END); return true; } return false; } /* 00001A98-000022A8 .text eventMainKai__11daAuction_cFv */ void daAuction_c::eventMainKai() { if (dComIfG_getTimerMode() == 4) { dComIfG_TimerReStart(2); } if (dComIfG_getTimerRestTimeMs() <= 0) { m82B = 1; } else { if (CPad_CHECK_TRIG_B(0)) { setMessage2(0x1CFC); mDoAud_seStart(JA_SE_AUC_QUIT); } else { // I think this uses std::abs in kiosk build? m7E0 = m7E0 + m7E4; if (m7E0 >= 1.0f) { m7E0 = 1.0f; m7E4 = -1.0f; } else if (m7E0 <= -1.0f) { m7E0 = -1.0f; m7E4 = 1.0f; } if (m7C4[0] < 100.0f) { m7C4[0] += 0.02f; } if (CPad_CHECK_TRIG_A(0)) { m7C4[0] += l_npc_dat[0].field_0x00 + cM_rndF(l_npc_dat[0].field_0x04 - l_npc_dat[0].field_0x00); mDoAud_seStart(JA_SE_AUC_BID_GAUGE, NULL, m7C4[0]); } if (m7C4[0] > 100.0f) { m7C4[0] = 100.0f; } if (m806 != 0) { m806 -= 1; if (m806 == 0) { if (m834 & 2) { m82F = getRand(3); m78C = l_camera_pos[m82F][0]; m798 = l_camera_pos[m82F][1]; } m834 &= ~6; } } else { for (int i = 1; i < 7; i++) { m7C4[i] += cM_rndF(l_npc_dat[i].field_0x04 - l_npc_dat[i].field_0x00) + l_npc_dat[i].field_0x00; } } int idx; int end = 7; if ((m834 & 2)) { end = 1; } for (idx = 0; idx < end; idx++) { if (m7C4[idx] >= 100.0f && mCurrBid < l_npc_dat[idx].mSpendingLimit) { break; } } if (idx < end) { m828 = idx; s16 prevItemNameMsgNo = mCurrBid; if (idx != 0) { f32 f = 1.0f; if (dComIfG_getTimerRestTimeMs() < 30000) { f = 2.0f; } else if (dComIfG_getTimerRestTimeMs() < 60000) { f = 1.5f; } mCurrBid += (s16)(f * (s16)(l_npc_dat[idx].mBidIncMin + cM_rndF(l_npc_dat[idx].mBidIncMax - l_npc_dat[idx].mBidIncMin))); m800 = mCurrBid; end = 0x1CF9; m82C = 4; m7C4[idx] = 0.0f; nextBet(); } else { m800 = mCurrBid + 1; dComIfGp_setMessageSetNumber(mCurrBid + 1); end = 0x1CFA; setLinkAnm(daPy_demo_c::DEMO_UNK48_e); mpTimer->mpScrnDraw->setShowType(1); dAuction_screen_gaugeUp(); dComIfGp_getVibration().StartShock(5, 1, cXyz(0.0f, 1.0f, 0.0f)); dComIfGp_getVibration().StartShock(4, 0x3E, cXyz(0.0f, 1.0f, 0.0f)); } m806 = (cM_rndF(0.0f) + 1.0f) * 60.0f; m7F0 = end; m81F = 4; if (m830 != 0) { m830 = 0; } else if (m826 != 0xFF && idx != 0 && dComIfG_getTimerRestTimeMs() > l_rest_msg_time1[0] && getRand(3) == 0) { u32 msgParam; if (mCurrBid <= 100) { msgParam = 0x1CFD; } else if (mCurrBid <= 150) { msgParam = 0x1CFE; } else if (mCurrBid <= 200) { msgParam = 0x1CFF; } else { msgParam = 0x1D00; } // onCameraOld might be used somewhere here? dComIfGp_setMessageCountNumber(prevItemNameMsgNo); dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m824)].field_0x00); setMessage2(msgParam); setCameraNpc(m824, 0); if (m824 == 0 && mCurLinkAnm != daPy_demo_c::DEMO_UNK1D_e) { setLinkAnm(daPy_demo_c::DEMO_UNK14_e); } m834 |= 0x20; m829 = m827; m830 = 1; } if (m81F == 4) { u8 tmp = m828; m829 = tmp; m827 = tmp; dComIfGp_setMessageCountNumber(m800); dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m827)].field_0x00); } m835 |= 9; m835 &= ~2; } else if (dComIfG_getTimerRestTimeMs() < l_rest_msg_time1[m82A]) { setMessage2(l_rest_msg_no[m82A]); mDoAud_seStart(l_rest_se_no[m82A]); m82A += 1; } } if (m834 & 2) { m834 |= 4; m798.set(0.0f, 50.0f, -210.0f); m78C.set(getNpcActorP(0)->current.pos); m78C.x += cM_ssin(m808) * 256.0f; m78C.y += 100.0f; m808 += 200; mDoAud_seStart(JA_SE_CM_AUC_PARALYZED); } } dComIfGp_setDoStatusForce(dActStts_BID_e); dComIfGp_setAStatusForce(dActStts_CANCEL_e); } /* 000022A8-00002760 .text eventMainUri__11daAuction_cFv */ void daAuction_c::eventMainUri() { if (dComIfG_getTimerMode() == 4) { dComIfG_TimerReStart(2); } if (dComIfG_getTimerRestTimeMs() <= 0) { m82B = 1; } else if (m82E != 0 && CPad_CHECK_TRIG_A(0)) { setMessage2(0x1D1A); } else { if (m806 != 0) { m806 -= 1; } else { for (int i = 1; i < 7; i++) { m7C4[i] += 2.0f * (l_npc_dat[i].field_0x00 + cM_rndF(l_npc_dat[i].field_0x04 - l_npc_dat[i].field_0x00)); } } int idx; for (idx = 1; idx < 7; idx++) { if (m7C4[idx] >= 100.0f) { m7C4[idx] = 0.0f; if (mCurrBid < l_npc_dat[idx].mSpendingLimit) { break; } } } if (idx < 7) { m828 = idx; if (idx != 0) { float multiplier = 1.0f; if (dComIfG_getTimerRestTimeMs() < 30000) { multiplier = 2.0f; } else if (dComIfG_getTimerRestTimeMs() < 60000) { multiplier = 1.5f; } mCurrBid += (s16)(multiplier * (2 * (s16)(l_npc_dat[idx].mBidIncMin + cM_rndF(l_npc_dat[idx].mBidIncMax - l_npc_dat[idx].mBidIncMin)))); m800 = mCurrBid; m7F0 = 0x1CF9; m82C = 4; m82E = 1; m806 = cM_rndF(1.0) * 60.0f; m81F = 4; // onCameraOld might be used here if (m830 != 0) { m830 = 0; } else if (dComIfG_getTimerRestTimeMs() > l_rest_msg_time1[0] && getRand(3) == 0) { u32 msgParam; if (mCurrBid <= 100) { msgParam = 0x1CFD; } else if (mCurrBid <= 150) { msgParam = 0x1CFE; } else if (mCurrBid <= 200) { msgParam = 0x1CFF; } else { msgParam = 0x1D00; } dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m824)].field_0x00); setMessage2(msgParam); setCameraNpc(m824, 0); if (m824 == 0) { setLinkAnm(daPy_demo_c::DEMO_UNK14_e); } m834 |= 0x20; m829 = m827; m830 = 1; } if (m81F == 4) { u8 m828_val = m828; m829 = m828_val; m827 = m828_val; dComIfGp_setMessageCountNumber(m800); dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m827)].field_0x00); } m835 |= 9; m835 &= ~2; } } else if (dComIfG_getTimerRestTimeMs() < l_rest_msg_time2[m82A]) { setMessage2(l_rest_msg_no[m82A]); mDoAud_seStart(l_rest_se_no[m82A]); m82A += 1; } } if (m82E != 0) { dComIfGp_setDoStatusForce(dActStts_BID_e); } } /* 00002760-0000279C .text eventMainMsgSet__11daAuction_cFv */ void daAuction_c::eventMainMsgSet() { if (eventMesSet()) { m81F = 3; } } /* 0000279C-0000294C .text eventMainMsgEnd__11daAuction_cFv */ void daAuction_c::eventMainMsgEnd() { if (eventMesEnd()) { if (mCurLinkAnm != daPy_demo_c::DEMO_UNK01_e && mCurLinkAnm != daPy_demo_c::DEMO_UNK1D_e) { setLinkAnm(daPy_demo_c::DEMO_UNK01_e); } if (m834 & 0x20) { m81F = 4; } else { if (m822 == 2) { m81F = 1; } else { m81F = 0; } eyePos = current.pos; m832 = 0; } m7E0 = 0.0f; if ((m834 & 2) == 0) { m82F = getRand(3); m78C = l_camera_pos[m82F][0]; m798 = l_camera_pos[m82F][1]; } mpTimer->mpScrnDraw->setShowType(0); dAuction_screen_gaugeDown(); m834 &= ~0x29; dAuction_screen_talkEnd(); dAuction_screen_gaugeShow(); return; } if (dComIfGp_checkMesgSendButton() && ((m7EC >= 0x1D3AU && m7EC <= 0x1D4BU) || (m7EC >= 0x339DU && m7EC <= 0x33A8U))) { setCameraNpc(m825, 0); m834 |= 8; m829 = m825; } } /* 0000294C-00002B90 .text eventMainMsgBikonC__11daAuction_cFv */ void daAuction_c::eventMainMsgBikonC() { u8 tmp = m828; m829 = tmp; m827 = tmp; dComIfGp_setMessageCountNumber(m800); dComIfGp_setNpcNameMessageID(l_npc_msg_dat[getAucMdlNo(m827)].field_0x00); cXyz npcPos = getNpcActorP(m827)->current.pos; npcPos.y += getPiconDispOfs(m827) + 30.0f; if (cLib_addCalcPos(&m78C, npcPos, 0.4f, 700.0f, 0.1f) == 0.0f) { m81F = 5; m7A8 = getNpcActorP(m827)->current.pos; m7A8.y += getPiconDispOfs(m827); dComIfGp_particle_set(dPa_name::ID_SCENE_8153, &m7A8, NULL, NULL, 0xFF, NULL, fopAcM_GetRoomNo(this)); mTimer = 30; if (m827 == 0) { mDoAud_seStart(JA_SE_AUC_BID_GAUGE_MAX); } else { mDoAud_seStart(JA_SE_CM_AUC_CALL_BID); m832 = 1; mFace = l_link_face[getRand(8)]; } eyePos = getNpcActorP(m827)->eyePos; } dComIfGp_setDoStatusForce(dActStts_BLANK_e); dComIfGp_setAStatusForce(dActStts_HIDDEN_e); } /* 00002B90-00002C1C .text eventMainMsgBikonW__11daAuction_cFv */ void daAuction_c::eventMainMsgBikonW() { if (mTimer != 0) { mTimer -= 1; } else { setMessage2(m7F0); setCameraNpc(m827, 0); dAuction_screen_talkStart(); if (m827 != 0) { m834 |= 1; } } dComIfGp_setDoStatusForce(dActStts_BLANK_e); dComIfGp_setAStatusForce(dActStts_HIDDEN_e); } /* 00002C1C-00002D4C .text eventGetItemInit__11daAuction_cFv */ void daAuction_c::eventGetItemInit() { if (m822 == 2) { fpc_ProcID itemID = fopAcM_createItemForPresentDemo(¤t.pos, l_item_dat22[mCurrAuctionItemIndex] & 0xFF); if (itemID != fpcM_ERROR_PROCESS_ID_e) { dComIfGp_event_setItemPartnerId(itemID); } dComIfGs_onEventBit(l_item_dat2[mCurrAuctionItemIndex].mObtainedEventBit); } else { fpc_ProcID itemID = fopAcM_createItemForPresentDemo(¤t.pos, l_item_dat[mCurrAuctionItemIndex].mItemID & 0xFF); if (itemID != fpcM_ERROR_PROCESS_ID_e) { dComIfGp_event_setItemPartnerId(itemID); } dComIfGs_onEventBit(l_item_dat[mCurrAuctionItemIndex].mObtainedEventBit); } setCameraNpc(0, 0); } /* 00002D4C-00002D54 .text eventGetItem__11daAuction_cFv */ bool daAuction_c::eventGetItem() { return true; } /* 00002D54-00002D70 .text eventCameraOffInit__11daAuction_cFv */ void daAuction_c::eventCameraOffInit() { offCamera(); } /* 00002D70-00002E00 .text eventGetItemNpcInit__11daAuction_cFi */ void daAuction_c::eventGetItemNpcInit(int staffIdx) { setCameraNpc(m824, 0); int* pTimerData = dComIfGp_evmng_getMyIntegerP(staffIdx, "Timer"); if (pTimerData != NULL) { mTimer = *pTimerData; } else { mTimer = 0; } m834 = 0x10; m829 = m824; } /* 00002E00-00002E40 .text eventGetItemMesInit__11daAuction_cFv */ void daAuction_c::eventGetItemMesInit() { setMessage(l_npc_msg_dat[getAucMdlNo(m824)].field_0x08); } /* 00002E40-00002EA0 .text eventCameraOffNpc__11daAuction_cFv */ bool daAuction_c::eventCameraOffNpc() { if (eventMesEnd()) { m834 = 0; offCamera(); return true; } return false; } /* 00002EA0-00002EDC .text eventEndInit__11daAuction_cFv */ void daAuction_c::eventEndInit() { mBlend = 0.0f; mFlags &= ~4; dKy_efplight_cut(&mLight); } /* 00002EDC-00002F60 .text eventEnd__11daAuction_cFv */ bool daAuction_c::eventEnd() { mBlend += 0.05f; if (mBlend > 1.0f) { mBlend = 1.0f; } dKy_custom_colset(4, 0, mBlend); // "return mBlend == 1.0f" doesn't match for some reason return mBlend == 1.0f ? true : false; } /* 00002F60-00002F64 .text eventCameraTestInit__11daAuction_cFv */ void daAuction_c::eventCameraTestInit() {} /* 00002F64-00002F6C .text eventCameraTest__11daAuction_cFv */ bool daAuction_c::eventCameraTest() { return true; } /* 00002F6C-0000369C .text next_msgStatus__11daAuction_cFPUl */ u16 daAuction_c::next_msgStatus(u32* pMsgNo) { u16 ret = 0xF; switch (*pMsgNo) { case 0x1CF2: *pMsgNo = 0x1CF3; break; case 0x1CF4: if (m822 == 2) { *pMsgNo = 0x1D1B; break; } if (dComIfGs_isEventBit(0x4008)) { dComIfGp_setNpcNameMessageID(l_npc_msg_dat[dComIfGs_getEventReg(0x790F)].field_0x00); *pMsgNo = 0x1CF6; } else { *pMsgNo = 0x1CF5; } break; case 0x1CF7: dComIfGp_setMiniGameRupee(mCurrBid); dComIfGp_setAuctionRupee(mCurrBid); dAuction_screen_slotShow(); *pMsgNo = 0x1CF8; break; case 0x1CF9: { dComIfGp_setMiniGameRupee(mCurrBid); dComIfGp_setAuctionRupee(mCurrBid); if (m82C < 4) { *pMsgNo = l_after_bet_msg_no[m82C]; } else if (m827 == 0 && l_npc_msg_dat[getAucMdlNo(m824)].field_0x02 != 0) { if (dComIfG_getTimerRestTimeMs() < 60000) { *pMsgNo = l_npc_msg_dat[getAucMdlNo(m824)].field_0x04; } else { *pMsgNo = l_npc_msg_dat[getAucMdlNo(m824)].field_0x02; } } else { ret = 0x10; } m825 = m824; u8 tmp = m827; m826 = tmp; m824 = tmp; if (m826 != 0) { setLinkAnm(daPy_demo_c::DEMO_UNK01_e); } break; } case 0x1CFA: { s16 msgSetNo = dComIfGp_getMessageSetNumber(); if (dComIfGs_getRupee() < msgSetNo) { mDoAud_seStart(JA_SE_AUC_BID_NG); setLinkAnm(daPy_demo_c::DEMO_UNK4A_e); *pMsgNo = 0x1CFB; m7C4[0] = 50.0f; } else if (msgSetNo <= mCurrBid) { mDoAud_seStart(JA_SE_AUC_BID_NG); setLinkAnm(daPy_demo_c::DEMO_UNK4A_e); *pMsgNo = 0x1D1E; m7C4[0] = 50.0f; } else { mDoAud_seStart(JA_SE_AUC_BID_OK); m7C4[0] = 0.0f; if (msgSetNo == 999) { *pMsgNo = 0x1D24; m825 = m824; u8 tmp = m827; m826 = tmp; m824 = tmp; } else { *pMsgNo = 0x1CF9; m82C = 4; // ? for (m82C = 0; m82C < 4; m82C++) { if (msgSetNo >= (s16)(mCurrBid * l_after_bet_rate[m82C]) && mCurrBid >= l_after_bet_chk[m82C]) { m806 = (s16)(60.0f * (l_after_bet_wait[m82C][0] + cM_rndF(l_after_bet_wait[m82C][1] - l_after_bet_wait[m82C][0]))); break; } } } mCurrBid = msgSetNo; dComIfGp_setMessageCountNumber(mCurrBid); } break; } case 0x1CFC: if (mpCurrMsg->mSelectNum == 0) { *pMsgNo = 0x1D1F; } else { ret = 0x10; } break; case 0x1D1A: if (mpCurrMsg->mSelectNum == 0) { m82B = 1; } ret = 0x10; break; case 0x1D1F: dComIfGp_setNextStage("sea", 3, 11); case 0x1D24: m82B = 1; ret = 0x10; break; case 0x1D20: case 0x1D21: case 0x1D22: case 0x1D23: { setLinkAnm(daPy_demo_c::DEMO_UNK14_e); int rnd = getRand(6) + 1; *pMsgNo = l_npc_msg_dat[getAucMdlNo(rnd)].field_0x06; m825 = rnd; break; } case 0x1D48: case 0x33A2: case 0x33A8: case 0x33A5: case 0x339F: case 0x1D4B: case 0x1D3F: case 0x1D45: case 0x1D42: case 0x1D3C: this->m834 |= 2; this->m808 = 0; ret = 0x10; break; case 0x1D05: if (m822 == 2) { *pMsgNo = 0x1D1C; } else { if (m824 != 0) { dComIfGs_onEventBit(0x4008); dComIfGs_setEventReg(0x790F, getAucMdlNo(m824)); dComIfGs_setEventReg(0xCD03, mCurrAuctionItemIndex); } else { dComIfGs_offEventBit(0x4008); } fopAcM_delete(mCurrAuctionItemPID); ret = 0x10; } break; case 0x1D1C: dComIfGp_setItemRupeeCount(mCurrBid); ret = 0x10; break; case 0x1D07: dComIfGp_setItemRupeeCount(-mCurrBid); *pMsgNo = 0x1D08; break; case 0x1D1D: case 0x1D08: *pMsgNo = 0x1D09; break; default: ret = 0x10; break; } if (ret == 0xF) { m7EC = *pMsgNo; } else { m7EC = 0; } return ret; } /* 0000369C-000036AC .text setMessage__11daAuction_cFUl */ void daAuction_c::setMessage(u32 msg) { mCurrMsgBsPcId = fpcM_ERROR_PROCESS_ID_e; mCurrMsgNo = msg; } /* 000036AC-000036E4 .text setMessage2__11daAuction_cFUl */ void daAuction_c::setMessage2(u32 msg) { setMessage(msg); m81F = 2; dAuction_screen_gaugeHide(); } /* 000036E4-00003754 .text setMtx__11daAuction_cFv */ void daAuction_c::setMtx() { mpModel->setBaseScale(scale); mDoMtx_stack_c::transS(current.pos); mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); } /* 00003754-00003828 .text getItemNo__11daAuction_cFv */ u8 daAuction_c::getItemNo() { int i; int rand_max = 0; for (i = 0; i < 4; i++) { if (!dComIfGs_isEventBit(l_item_dat[i].mObtainedEventBit)) { rand_max += 1; } } int rand = getRand(rand_max); for (i = 0; i < 3; i++) { if (!dComIfGs_isEventBit(l_item_dat[i].mObtainedEventBit)) { if (rand == 0) break; rand -= 1; } } return i; } /* 00003828-0000387C .text getNpcActorP__11daAuction_cFi */ fopAc_ac_c* daAuction_c::getNpcActorP(int idx) { if (idx != 0) { return fopAcM_SearchByID(m738[idx]); } return dComIfGp_getPlayer(0); } /* 0000387C-000039FC .text setCameraNpc__11daAuction_cFis */ void daAuction_c::setCameraNpc(int idx, s16 param_2) { fopAc_ac_c* pActor = getNpcActorP(idx); m78C = pActor->current.pos; m78C.y += l_npc_camera_dat[idx].field_0x04; m798.x = l_npc_camera_dat[idx].field_0x00 * cM_ssin(pActor->current.angle.y); m798.y = 0.0f; m798.z = l_npc_camera_dat[idx].field_0x00 * cM_scos(pActor->current.angle.y); s16 yRot = l_npc_camera_dat[idx].field_0x0A; if (param_2 != 0) { yRot += param_2; } else { s16 rnd = (s16)cM_rndFX(8000.0f); yRot += rnd; } mDoMtx_stack_c::YrotS(yRot); mDoMtx_stack_c::XrotM(l_npc_camera_dat[idx].field_0x08); cMtx_multVec(mDoMtx_stack_c::get(), &m798, &m798); m798 += m78C; // onCamera inline m835 |= 9; m835 &= ~2; } /* 000039FC-00003A3C .text setLinkAnm__11daAuction_cFUc */ void daAuction_c::setLinkAnm(u8 linkAnm) { if (linkAnm == daPy_demo_c::DEMO_UNK01_e && m826 == 0) { linkAnm = daPy_demo_c::DEMO_UNK1D_e; } daPy_lk_c* pLink = (daPy_lk_c*)dComIfGp_getLinkPlayer(); pLink->changeDemoMode(linkAnm); pLink->changeDemoParam0(3); mCurLinkAnm = linkAnm; } /* 00003A3C-00003A74 .text getPiconDispOfs__11daAuction_cFUc */ f32 daAuction_c::getPiconDispOfs(u8 param) { if (param == 0) { return l_npc_emitter_ofsy[0]; } daNpcAuction_c* pNpcActor = (daNpcAuction_c*)getNpcActorP(param); return pNpcActor->getPiconOfsY(); } /* 00003A74-00003BA4 .text nextBet__11daAuction_cFv */ void daAuction_c::nextBet() { if (m831 != 0) { m831 -= 1; return; } for (int i = 1; i < 7; i++) { f32 rnd = getRand(60 - (dComIfG_getTimerRestTimeMs() / 1000)); if (rnd > 50.0f) { rnd = 50.0f; } m7C4[i] += rnd; if (m7C4[i] >= 100.0f) { m831 += 1; } } m831 += 2; } /* 00003BA4-00003C08 .text getRand__11daAuction_cFi */ int daAuction_c::getRand(int max) { int rnd = (int)cM_rndF(max); if (rnd == max) { rnd = 0; } return rnd; } /* 00003C08-00003C28 .text daAuctionCreate__FPv */ static s32 daAuctionCreate(void* i_this) { return static_cast(i_this)->_create(); } /* 00003C28-00003C48 .text daAuctionDelete__FPv */ static BOOL daAuctionDelete(void* i_this) { return static_cast(i_this)->_delete(); } /* 00003C48-00003C68 .text daAuctionExecute__FPv */ static BOOL daAuctionExecute(void* i_this) { return static_cast(i_this)->_execute(); } /* 00003C68-00003C88 .text daAuctionDraw__FPv */ static BOOL daAuctionDraw(void* i_this) { return static_cast(i_this)->_draw(); } /* 00003C88-00003C90 .text daAuctionIsDelete__FPv */ static BOOL daAuctionIsDelete(void*) { return TRUE; } static actor_method_class daAuctionMethodTable = { (process_method_func)daAuctionCreate, (process_method_func)daAuctionDelete, (process_method_func)daAuctionExecute, (process_method_func)daAuctionIsDelete, (process_method_func)daAuctionDraw, }; actor_process_profile_definition g_profile_AUCTION = { /* LayerID */ fpcLy_CURRENT_e, /* ListID */ 0x0007, /* ListPrio */ fpcPi_CURRENT_e, /* ProcName */ PROC_AUCTION, /* Proc SubMtd */ &g_fpcLf_Method.base, /* Size */ sizeof(daAuction_c), /* SizeOther */ 0, /* Parameters */ 0, /* Leaf SubMtd */ &g_fopAc_Method.base, /* Priority */ 0x01E0, /* Actor SubMtd */ &daAuctionMethodTable, /* Status */ fopAcStts_UNK4000_e | fopAcStts_UNK40000_e, /* Group */ fopAc_ACTOR_e, /* CullType */ fopAc_CULLBOX_CUSTOM_e, };