/** * d_a_npc_ji1.cpp * NPC - Orca */ #include "d/actor/d_a_npc_ji1.h" #include "d/actor/d_a_player.h" #include "d/actor/d_a_tsubo.h" #include "d/res/res_ji.h" #include "d/d_com_inf_game.h" #include "d/d_procname.h" #include "d/d_priority.h" #include "d/d_snap.h" #include "d/d_lib.h" #include "f_op/f_op_msg.h" #include "weak_data_1811.h" // IWYU pragma: keep #include "weak_bss_936_to_1036.h" // IWYU pragma: keep static void daNpc_Ji1_setHairAngle(daNpc_Ji1_c*); static daNpc_Ji1_HIO_c l_HIO; static fpc_ProcID l_msgId; static msg_class* l_msg; static dCcD_SrcCyl l_cyl_src = { // dCcD_SrcGObjInf { /* Flags */ 0, /* SrcObjAt Type */ 0, /* SrcObjAt Atp */ 0, /* SrcObjAt SPrm */ 0, /* SrcObjTg Type */ AT_TYPE_ALL, /* SrcObjTg SPrm */ cCcD_TgSPrm_Set_e | cCcD_TgSPrm_IsEnemy_e, /* SrcObjCo SPrm */ cCcD_CoSPrm_Set_e | cCcD_CoSPrm_IsPlayer_e | cCcD_CoSPrm_VsGrpAll_e, /* SrcGObjAt Se */ 0, /* SrcGObjAt HitMark */ 0, /* SrcGObjAt Spl */ 0, /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, /* SrcGObjTg HitMark */ 0, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e, /* SrcGObjCo SPrm */ 0, }, // cM3dGCylS { /* Center */ 0.0f, 0.0f, 0.0f, /* Radius */ 60.0f, /* Height */ 170.0f, }, }; static dCcD_SrcCyl l_cyl2_src = { // dCcD_SrcGObjInf { /* Flags */ 0, /* SrcObjAt Type */ 0, /* SrcObjAt Atp */ 0, /* SrcObjAt SPrm */ 0, /* SrcObjTg Type */ AT_TYPE_ALL, /* SrcObjTg SPrm */ cCcD_TgSPrm_Set_e | cCcD_TgSPrm_IsEnemy_e, /* SrcObjCo SPrm */ 0, /* SrcGObjAt Se */ 0, /* SrcGObjAt HitMark */ 0, /* SrcGObjAt Spl */ 0, /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, /* SrcGObjTg HitMark */ 0, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e, /* SrcGObjCo SPrm */ 0, }, // cM3dGCylS { /* Center */ 0.0f, 0.0f, 0.0f, /* Radius */ 60.0f, /* Height */ 200.0f, }, }; static dCcD_SrcCyl l_cylAt_src = { // dCcD_SrcGObjInf { /* Flags */ 0, /* SrcObjAt Type */ AT_TYPE_BOMB, /* SrcObjAt Atp */ 0, /* SrcObjAt SPrm */ cCcD_AtSPrm_Set_e | cCcD_AtSPrm_VsEnemy_e | cCcD_AtSPrm_VsOther_e, /* SrcObjTg Type */ 0, /* SrcObjTg SPrm */ 0, /* SrcObjCo SPrm */ 0, /* SrcGObjAt Se */ 0, /* SrcGObjAt HitMark */ 0, /* SrcGObjAt Spl */ 0, /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, /* SrcGObjTg HitMark */ 0, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e, /* SrcGObjCo SPrm */ 0, }, // cM3dGCylS { /* Center */ 0.0f, 0.0f, 0.0f, /* Radius */ 150.0f, /* Height */ 100.0f, }, }; static dCcD_SrcCps l_cpsAt_src = { // dCcD_SrcGObjInf { /* Flags */ 0, /* SrcObjAt Type */ AT_TYPE_UNK800, /* SrcObjAt Atp */ 0, /* SrcObjAt SPrm */ cCcD_AtSPrm_Set_e | cCcD_AtSPrm_VsPlayer_e | cCcD_AtSPrm_VsOther_e, /* SrcObjTg Type */ AT_TYPE_ALL, /* SrcObjTg SPrm */ 0, /* SrcObjCo SPrm */ 0, /* SrcGObjAt Se */ 0, /* SrcGObjAt HitMark */ 0, /* SrcGObjAt Spl */ 0x01, /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, /* SrcGObjTg HitMark */ 0, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ dCcG_TgSPrm_NoHitMark_e, /* SrcGObjCo SPrm */ 0, }, // cM3dGCpsS { /* Start */ 0.0f, 0.0f, 0.0f, /* End */ 0.0f, 0.0f, 0.0f, /* Radius */ 80.0f, }, }; /* 000000EC-00000380 .text __ct__15daNpc_Ji1_HIO_cFv */ daNpc_Ji1_HIO_c::daNpc_Ji1_HIO_c() { field_0x04 = -1; field_0x08 = 100.0f; field_0x0C = 7000; field_0x0E = 4000; field_0x10 = 9000; field_0x12 = 7000; field_0x14 = 5000; field_0x16 = 1; field_0x18 = 2000; field_0x1C = 0.0f; field_0x20 = 20.0f; field_0x24 = 20.0f; field_0x28 = 0; field_0x2C = 200.0f; field_0x30 = 0; field_0x34 = 150.0f; field_0x38 = 20.0f; field_0x3C = 90.0f; field_0x40 = 10.0f; field_0x44 = 2.0f; field_0x48 = 2.0f; field_0x4C = 1.25f; field_0x50 = 1.5f; field_0x54[0] = 9; field_0x54[1] = 9; field_0x54[2] = 9; field_0x54[3] = 2; field_0x54[4] = 2; field_0x54[5] = 2; field_0x60[0] = 100; field_0x60[1] = 300; field_0x60[2] = 500; field_0x60[3] = 1000; field_0x68 = 0; field_0x6C = 0.7; field_0x70 = 1.5; field_0x78 = 1.4; field_0x74 = 1.4; field_0x80 = 1.4; field_0x7C = 1.2; field_0x84 = 0.1; field_0x88 = 0xB; field_0x8A = 0x32; field_0x8C = 0x28; field_0x8E = 0x1e; field_0x90 = 0x14; field_0x92 = 0xf; field_0x94 = 10; field_0x96 = 0xB4; field_0x98 = 0x8C; field_0x9A = 100; field_0x9C = 0x50; field_0x9E = 0x3C; field_0xA0 = 0x32; field_0xA4 = 6.0f; field_0xA8 = 16.0f; field_0xAC = 70.0f; field_0xB0 = 10.0f; field_0xB4 = 1.0f; field_0xB8 = 0; field_0xBC = 0.25f; field_0xC0 = -5.0f; field_0xC4[0].x = 90.0; field_0xC4[0].y = 5.0; field_0xC4[0].z = 30.0; field_0xC4[1].x = 90.0; field_0xC4[1].y = 5.0; field_0xC4[1].z = -30.0; field_0xC4[2].x = -20.0; field_0xC4[2].y = -20.0; field_0xC4[2].z = 0.0; field_0xE8 = 0xC800; field_0xEA = 0x3800; field_0xEC = 0xC600; field_0xEE = 0x3A00; field_0xF0 = 0xC600; field_0xF2 = 0x3A00; field_0xF4 = 0xfB00; field_0xF6 = 0x3800; field_0xF8 = 0xf600; field_0xFA = 0x3A00; field_0xFC = 0xf100; field_0xFE = 0x3A00; } /* 000003C0-000003E4 .text daNpc_Ji1_XyCheckCB__FPvi */ static s16 daNpc_Ji1_XyCheckCB(void*, int i_itemBtn) { return dComIfGp_getSelectItem(i_itemBtn) == BOKO_BELT ? TRUE : FALSE; } /* 000003E4-00000404 .text daJi1_CoHitCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ static void daJi1_CoHitCallback(fopAc_ac_c* i_this, dCcD_GObjInf*, fopAc_ac_c* actor, dCcD_GObjInf*) { if(actor == dComIfGp_getPlayer(0)) { static_cast(i_this)->field_0xC28 = 1; } } /* 00000404-00000424 .text daJi1_TgHitCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ static void daJi1_TgHitCallback(fopAc_ac_c* i_this, dCcD_GObjInf*, fopAc_ac_c* actor, dCcD_GObjInf*) { u32 temp = daPy_getPlayerActorClass()->getCutType(); if(actor) { static_cast(i_this)->field_0xC24 = temp; } } /* 00000424-000004A0 .text daJi1_AtHitCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ static void daJi1_AtHitCallback(fopAc_ac_c* i_this, dCcD_GObjInf* param_2, fopAc_ac_c* actor, dCcD_GObjInf*) { if(fopAc_IsActor(actor)) { if(fpcM_GetName(actor) == PROC_PLAYER) { if(!param_2->ChkAtShieldHit()) { static_cast(i_this)->field_0xC3C++; } else { static_cast(i_this)->battleSubActionNockBackInit(0); } } } } /* 000004A0-000004CC .text isGuardAnim__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::isGuardAnim() { if((field_0xD64 >= 8 && field_0xD64 <= 10) || field_0xD64 == 0xF) { return true; } return false; } /* 000004CC-000004F8 .text isAttackAnim__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::isAttackAnim() { if(field_0xD64 == 0x13 || field_0xD64 == 0x14 || field_0xD64 == 7) { return true; } return false; } /* 000004F8-0000056C .text isAttackFrame__11daNpc_Ji1_cFv */ int daNpc_Ji1_c::isAttackFrame() { f32 frame = field_0x330->getFrame(); f32 temp2 = 0.0f; f32 temp3 = temp2; if(field_0xD64 == 0x13) { temp2 = 28.0f; temp3 = 35.0f; } else if (field_0xD64 == 0x14) { temp2 = 25.0f; temp3 = 35.0f; } else { if(field_0xD64 == 7) { temp2 = 12.0f; temp3 = 28.0f; } } if(temp2 > frame) { return -1; } return temp3 < frame; } /* 0000056C-000005A0 .text isItemWaitAnim__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::isItemWaitAnim() { if(field_0xD64 == 0 || field_0xD64 == 0xC || field_0xD64 == 0xD || field_0xD64 == 0x18) { return true; } return false; } /* 000005A0-00000630 .text isClearRecord__11daNpc_Ji1_cFs */ BOOL daNpc_Ji1_c::isClearRecord(s16 param_1) { if(dComIfGs_isEventBit(0xF20)) { return false; } u8 level = dComIfGs_getEventReg(0xD003); if (param_1 >= l_HIO.field_0x60[level]) { return TRUE; } return FALSE; } /* 00000630-000006F8 .text setClearRecord__11daNpc_Ji1_cFs */ void daNpc_Ji1_c::setClearRecord(s16 hits) { u8 oldLevel = dComIfGs_getEventReg(0xD003); u8 newLevel = 0; while(hits >= l_HIO.field_0x60[newLevel] && newLevel <= 3) { newLevel++; } if(oldLevel < newLevel) { dComIfGs_setEventReg(0xD003, newLevel); if(hits >= l_HIO.field_0x60[3]) { dComIfGs_onEventBit(0xF20); } } } /* 000006F8-00000864 .text daNpc_Ji1_plRoomOutCheck__Fv */ static BOOL daNpc_Ji1_plRoomOutCheck() { cXyz plyrPos = daPy_getPlayerActorClass()->current.pos; static cXyz out_chk_pos(0.0f, 0.0f, 500.0f); cXyz temp = plyrPos - out_chk_pos; if(temp.absXZ() < 100.0f && dComIfGp_getDoStatus() == dActStts_OPEN_e) { return true; } return false; } /* 00000864-00000E98 .text normalSubActionHarpoonGuard__11daNpc_Ji1_cFs */ BOOL daNpc_Ji1_c::normalSubActionHarpoonGuard(s16 param_1) { /* Nonmatching - regalloc */ if(field_0xD6C == 0) { if(field_0x7E0.ChkTgHit()) { field_0xD6C = 1; field_0xD74++; field_0xD68 = 0; setAnm(9, 0.0f, 1); dComIfGp_particle_set(dPa_name::ID_COMMON_PURPLE_HIT, field_0x7E0.GetTgHitPosP()); fopAcM_seStart(this, JA_SE_CV_JI_DEFENCE, 0); fopAcM_seStart(this, JA_SE_OBJ_COL_SWS_NMTLP, 0); } else { if(field_0xD64 == 0xD) { if(field_0x330->checkFrame(field_0x330->getEndFrame() - 2.0f) && ++field_0xD68 > 1) { setAnm(0, 12.0f, 0); } } } } if(field_0xD6C == 1) { cLib_addCalcAngleS2(¤t.angle.y, param_1, 2, 0x2000); if(field_0xD64 == 0xB) { if(field_0x330->checkFrame(field_0x330->getEndFrame() - 14.0f)) { setParticle(3, 3.0f, 0.5f); fopAcM_seStart(this, JA_SE_CV_JI_ATTACK, 0); } else if(field_0x330->checkFrame(field_0x330->getEndFrame() - 2.0f)) { dtParticle(); if(field_0xD68++ > 2) { field_0xD6C = 0; setAnm(0, 16.0f, 0); } else { setAnm(0xB, 4.0f, 1); field_0x330->setPlaySpeed(2.0f); } } } else { if(field_0x330->checkFrame(field_0x330->getEndFrame() - 2.0f)) { field_0xD6C = 0; if(field_0xD74 == 3) { setAnm(5, 4.0f, 0); field_0xC84 = 0xC; field_0x2C8 = field_0x2B0; setAction(&daNpc_Ji1_c::eventAction, 0); } else if(field_0xD74 == 5) { setAnm(5, 4.0f, 0); field_0xC84 = 0xD; field_0x2C8 = field_0x2B0; setAction(&daNpc_Ji1_c::eventAction, 0); } else if(field_0xD74 > 5) { setAnm(5, 4.0f, 0); field_0xC84 = 0xE; field_0x2C8 = field_0x2B0; setAction(&daNpc_Ji1_c::eventAction, 0); field_0xD74 = 0; } else { setAnm(0xD, 8.0f, 0); } } } } } /* 00000E98-00001294 .text normalSubActionGuard__11daNpc_Ji1_cFs */ BOOL daNpc_Ji1_c::normalSubActionGuard(s16 param_1) { /* Nonmatching - regalloc */ if(field_0xD6C == 0) { if(field_0x7E0.ChkTgHit()) { field_0xD6C = 1; field_0xD68 = 0; setAnm(0xF, 0.0f, 1); fopAcM_seStart(this, JA_SE_CV_JI_DEFENCE, 0); } } if(field_0xD6C == 1) { cLib_addCalcAngleS2(¤t.angle.y, param_1, 2, 0x2000); if(field_0x330->checkFrame(field_0x330->getEndFrame() - 2.0f) && field_0xD68++ > 1) { field_0xD6C = 0; if(field_0xD74 == 3) { setAnm(5, 4.0f, 0); field_0xC84 = 0xC; field_0x2C8 = field_0x2B0; setAction(&daNpc_Ji1_c::eventAction, 0); } else if(field_0xD74 == 5) { setAnm(5, 4.0f, 0); field_0xC84 = 0xD; field_0x2C8 = field_0x2B0; setAction(&daNpc_Ji1_c::eventAction, 0); } else if(field_0xD74 > 5) { setAnm(5, 4.0f, 0); field_0xC84 = 0xE; field_0x2C8 = field_0x2B0; setAction(&daNpc_Ji1_c::eventAction, 0); } else { setAnm(0x1, 8.0f, 0); } } } } /* 00001294-000015E4 .text normalAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::normalAction(void*) { daPy_py_c* player = daPy_getPlayerActorClass(); cXyz delta = player->current.pos - current.pos; f32 temp = delta.absXZ(); if(field_0xC78 == 0) { field_0x7E0.OnTgShield(); if(field_0xD84 == 1) { setAnm(0, 8.0f, 0); } else { setAnm(1, 8.0f, 0); } if(dComIfGs_isEventBit(0x520)) { eventInfo.setXyCheckCB(&daNpc_Ji1_XyCheckCB); } field_0xC78 += 1; } else if(field_0xC78 != -1) { cXyz delta2 = player->current.pos - current.pos; s16 temp2 = cM_atan2s(delta2.x, delta2.z); if(eventInfo.checkCommandTalk()) { s16 temp3 = cLib_targetAngleY(¤t.pos, &player->current.pos); temp3 -= m_jnt.getHead_y(); temp3 -= m_jnt.getBackbone_y(); cLib_addCalcAngleS2(¤t.angle.y, temp3, 8, 0x800); if(cLib_distanceAngleS(current.angle.y, temp3) < 0x100) { setAction(&daNpc_Ji1_c::talkAction, 0); } } if(temp < l_HIO.field_0x2C && isGuardAnim() == 0 && field_0xD64 != 0xD) { eventInfo.onCondition(dEvtCnd_CANTALK_e); if(dComIfGs_isEventBit(0x520)) { eventInfo.onCondition(dEvtCnd_CANTALKITEM_e); } } if(field_0xD84 == 1) { normalSubActionHarpoonGuard(temp2); } else { normalSubActionGuard(temp2); } } return true; } /* 000015E4-000019B0 .text kaitenExpAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::kaitenExpAction(void*) { daPy_py_c* player = daPy_getPlayerActorClass(); cXyz delta = player->current.pos - current.pos; f32 temp = delta.absXZ(); if(field_0xD64 == 0x10) { if(field_0x330->checkFrame(19.0f)) { if(field_0xD68 == 1) { dComIfGp_getVibration().StartShock(5, -0x11, cXyz(0.0f, 1.0f, 0.0f)); } fopAcM_seStart(this, JA_SE_CV_JI_ATTACK, 0); fopAcM_seStart(this, JA_SE_CM_JI_SHOTEI, 0); setParticle(3, 3.0f, 0.5f); } if(field_0x330->checkFrame(field_0x330->getEndFrame() - 2.0f)) { if(++field_0xD68 > 1) { field_0xD68 = 0; setAnm(0x11, 4.0f, 0); } dtParticle(); } } if(field_0xC78 == 0) { setAnm(0x10, 4.0f, 0); if(!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderOtherEventId(this, field_0xC54[6]); eventInfo.onCondition(dEvtCmd_INDEMO_e); return false; } field_0xC78++; } else if(field_0xC78 != -1) { int staffIdx = dComIfGp_evmng_getMyStaffId("Ji1"); if(getEventActionNo(staffIdx) == 2) { setAction(&daNpc_Ji1_c::kaitenspeakAction, 0); } else { dComIfGp_evmng_cutEnd(staffIdx); } } return true; } /* 000019B0-00001B9C .text kaitenspeakAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::kaitenspeakAction(void*) { if(field_0xC78 == 0) { setAnm(1, 8.0f, 0); field_0xC78++; } else if(field_0xC78 != -1) { cXyz temp = daPy_getPlayerActorClass()->current.pos - current.pos; s16 temp2 = cM_atan2s(temp.x, temp.z) - current.angle.y; m_jnt.setTrn(); if(abs(temp2) < 0x1000) { setAnm(3, 8.0f, 0); } int staffIdx = dComIfGp_evmng_getMyStaffId("Ji1"); if(getEventActionNo(staffIdx) == 2) { if(temp2 == 0) { m_jnt.clrTrn(); setAction(&daNpc_Ji1_c::talkAction, 0); } } else { dComIfGp_evmng_cutEnd(staffIdx); } } return true; } /* 00001B9C-0000214C .text kaitenwaitAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::kaitenwaitAction(void*) { daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass(); cXyz delta = player->current.pos - current.pos; f32 temp = delta.absXZ(); if(field_0xC78 == 0) { if(!dComIfGs_isEventBit(0x501)) { setAnm(0x12, 16.0f, 0); } else { setAnm(1, 4.0f, 0); } field_0xC78 += 1; } else if(field_0xC78 != -1) { if(!dComIfGs_isEventBit(0x501) && daNpc_Ji1_plRoomOutCheck()) { field_0xC84 = 9; setAction(&daNpc_Ji1_c::eventAction, 0); field_0x2C8 = &daNpc_Ji1_c::kaitenwaitAction; return true; } daPy_py_c* r27 = (daPy_py_c*)daPy_getPlayerActorClass(); cXyz delta2 = player->current.pos - current.pos; s16 temp2 = cM_atan2s(delta2.x, delta2.z); if(!dComIfGs_isEventBit(0x501) && isGuardAnim() == 0) { cXyz delta3 = r27->current.pos - current.pos; s16 temp3 = cM_atan2s(delta3.x, delta3.z); cLib_addCalcAngleS2(¤t.angle.y, temp3, 0x10, 0x800); if(r27->checkFrontRoll()) { setAnm(1, 6.0f, 0); } else { setAnm(0x12, 16.0f, 0); } } if(eventInfo.checkCommandTalk()) { s16 temp3 = cLib_targetAngleY(¤t.pos, &player->current.pos); temp3 -= m_jnt.getHead_y(); temp3 -= m_jnt.getBackbone_y(); cLib_addCalcAngleS2(¤t.angle.y, temp3, 8, 0x800); if(cLib_distanceAngleS(current.angle.y, temp3) < 0x100) { setAction(&daNpc_Ji1_c::talkAction, 0); } } if(temp < l_HIO.field_0x2C && isGuardAnim() == 0 && field_0xD64 != 0xD && r27->speedF < 1.0f) { eventInfo.onCondition(dEvtCnd_CANTALK_e); } if(player->checkFrontRollCrash() && (!dComIfGs_isEventBit(0x501) || l_HIO.field_0x30)) { field_0xD79 = 1; dComIfGp_getDetect().set_quake(0); setAction(&daNpc_Ji1_c::kaitenAction, 0); } if(field_0xD84 == 1) { normalSubActionHarpoonGuard(temp2); } else { normalSubActionGuard(temp2); } } return true; } /* 0000214C-00002738 .text kaitenAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::kaitenAction(void*) { if(field_0xC78 == 0) { if(!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderOtherEventId(this, field_0xC54[5]); eventInfo.onCondition(dEvtCmd_INDEMO_e); return false; } int staffIdx = dComIfGp_evmng_getMyStaffId("Ji1"); l_msgId = -1; field_0x2AC = 0x974; dComIfGp_evmng_cutEnd(staffIdx); current.angle.y = 0; field_0xC78 += 1; } else if(field_0xC78 != -1) { int staffIdx = dComIfGp_evmng_getMyStaffId("Ji1"); int actionNo = getEventActionNo(staffIdx); if(l_msgId == -1) { if(actionNo == 2) { if(field_0x2AC == 0x974) { current.angle.y = -0x8000; } else if(field_0x2AC == 0x975) { dComIfGp_evmng_cutEnd(staffIdx); } l_msgId = fopMsgM_messageSet(field_0x2AC, &eyePos); } else if(actionNo == 1) { m_jnt.onHeadLock(); m_jnt.onBackBoneLock(); setAnm(4, 8.0f, 0); dComIfGp_evmng_cutEnd(staffIdx); } } else if(field_0xC78 == 1) { l_msg = fopMsgM_SearchByID(l_msgId); if(l_msg) { if(actionNo == 2) { dComIfGp_getVibration().StartShock(5, -0x11, cXyz(0.0f, 1.0f, 0.0f)); mDoAud_seStart(JA_SE_CM_AJ_ANGRY_FOOT, NULL); } field_0xC78 += 1; } } else if(l_msg->mStatus == fopMsgStts_MSG_DISPLAYED_e) { l_msg->mStatus = next_msgStatus(&field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_CONTINUES_e) { fopMsgM_messageSet(field_0x2AC); setAnimFromMsgNo(field_0x2AC); } } else if(l_msg->mStatus == fopMsgStts_BOX_CLOSED_e) { if(actionNo == 2) { l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; l_msgId = -1; field_0x2AC = 0x975; field_0xC78 = 1; return true; } if(staffIdx != -1) { dComIfGp_evmng_cutEnd(staffIdx); } if(dComIfGp_evmng_endCheck(field_0xC54[5])) { dComIfGs_onEventBit(0x501); field_0xD28 = home.pos; home.angle.y = 0; l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; if(field_0x2AC == 0x967) { field_0xD70 = -1; fopAcM_seStart(this, JA_SE_VS_JI_OPENING, 0); mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::plmoveAction, 0); } else { setAnm(1, 8.0f, 0); setAction(&daNpc_Ji1_c::normalAction, 0); } dComIfGp_event_reset(); } } else if(dComIfGp_checkMesgSendButton() && actionNo == 3 && field_0x2AC == 0x976) { setAnm(2, 4.0f, 0); m_jnt.offHeadLock(); m_jnt.offBackBoneLock(); dComIfGp_evmng_cutEnd(staffIdx); } if(actionNo == 4) { cXyz delta = daPy_getPlayerActorClass()->current.pos - current.pos; s16 temp = cM_atan2s(delta.x, delta.z); cLib_addCalcAngleS2(¤t.angle.y, temp, 4, 0x1000); } } return true; } /* 00002738-00002870 .text getMsg1stType__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::getMsg1stType() { if(!dComIfGs_isEventBit(1)) { if(!dComIfGs_isEventBit(0x501)) { if(dComIfGs_isEventBit(0x640)) { return 0x964; } dComIfGs_onEventBit(0x640); return 0x961; } if(dComIfGs_isEventBit(0x2F40)) { return 0x95B; } if(field_0xD79) { return 0x977; } if(!field_0xD78) { field_0xD78 = 1; return 0x978; } return 0x97B; } if(dComIfGs_isEventBit(0x2F10)) { return 0x973; } if(!dComIfGs_isEventBit(0x108)) { dComIfGs_onEventBit(0x108); eventInfo.setEventId(-1); return 0x965; } return 0x94D; } /* 00002870-00002A08 .text getMsg2ndType__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::getMsg2ndType() { u32 msgNo; if(dComIfGp_event_chkTalkXY()) { m_jnt.offBackBoneLock(); if(!dComIfGs_isEventBit(0xD80)) { dComIfGs_onEventBit(0xD80); msgNo = 0x9AE; } else if(dComIfGs_getBeastNum(3) < 10) { msgNo = 0x9BB; } else if(dComIfGs_isEventBit(0xB20)) { msgNo = 0x9BC; } else { msgNo = 0x9B0; } } else if(dComIfGs_isEventBit(0x2)) { if(dComIfGs_isEventBit(0xF20)) { if(dComIfGs_getEventReg(0xCF03) >= 3) { msgNo = 0x9AC; } else { msgNo = 0x9AD; } } else if(dComIfGs_getEventReg(0xCF03) >= 3) { msgNo = 0x9AA; } else { msgNo = 0x9AB; } } else { msgNo = 0x986; dComIfGs_onEventBit(0x2); } dComIfGs_setEventReg(0xCF03, 0); return msgNo; } /* 00002A08-00002A60 .text getMsg__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::getMsg() { if(dComIfGs_isEventBit(0x520)) { return getMsg2ndType(); } return getMsg1stType(); } /* 00002A60-00002C64 .text next_msgStatus__11daNpc_Ji1_cFPUl */ u16 daNpc_Ji1_c::next_msgStatus(u32* pMsgNo) { u16 status = fopMsgStts_MSG_CONTINUES_e; switch(field_0x2AC) { case 0x951: case 0x952: case 0x956: case 0x957: case 0x959: case 0x95B: case 0x95F: case 0x961: case 0x962: case 0x965: case 0x975: case 0x978: case 0x979: case 0x986: case 0x987: case 0x988: case 0x989: case 0x98B: case 0x98D: case 0x98F: case 0x991: case 0x993: case 0x99B: case 0x99D: case 0x99F: case 0x9A1: case 0x9A7: case 0x9AA: case 0x9AC: case 0x9AE: case 0x9B0: case 0x9B1: case 0x9B2: case 0x9B3: case 0x9B8: case 0x9B9: field_0x2AC = field_0x2AC + 1; break; case 0x97B: field_0x2AC = 0x9C0; break; case 0x9A2: if(dComIfGs_isEventBit(0xF10)) { field_0x2AC = 0x9A3; } else { field_0x2AC = 0x9A5; } break; case 0x9AF: if(dComIfGs_getBeastNum(3) >= 10) { field_0x2AC = 0x9B0; } else { field_0x2AC = 0x9BB; } break; case 0x997: case 0x999: field_0x2AC = 0x998; break; case 0x99A: if(dComIfGs_getEventReg(0xD003) == 1) { field_0x2AC = 0x99B; } else if(dComIfGs_getEventReg(0xD003) == 2) { field_0x2AC = 0x99D; } else { field_0x2AC = 0x99F; } break; case 0x95C: case 0x973: case 0x976: case 0x977: case 0x97A: case 0x9C0: field_0x2AC = 0x967; break; case 0x94D: case 0x966: field_0x2AC = 0x94E; break; case 0x967: if(l_msg->mSelectNum == 0) { status = fopMsgStts_MSG_ENDS_e; } else if (l_msg->mSelectNum == 1) { field_0x2AC = 0x968; } break; case 0x94E: if(l_msg->mSelectNum == 0) { status = fopMsgStts_MSG_ENDS_e; } else if (l_msg->mSelectNum == 1) { field_0x2AC = 0x94F; } break; case 0x98A: case 0x9AB: case 0x9AD: if(l_msg->mSelectNum == 0) { status = fopMsgStts_MSG_ENDS_e; } else if (l_msg->mSelectNum == 1) { field_0x2AC = 0x995; } break; default: status = fopMsgStts_MSG_ENDS_e; } return status; } /* 00002C64-000033D0 .text talkAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::talkAction(void*) { if(field_0xC78 == 0) { if(dComIfGp_event_chkTalkXY() && !dComIfGp_evmng_ChkPresentEnd()) { if(dComIfGs_isEventBit(0xD80) == 0) { daPy_py_c* player = daPy_getPlayerActorClass(); cXyz delta = player->current.pos - current.pos; f32 dummy = delta.absXZ(); s16 temp = cM_atan2s(delta.x, delta.z); cLib_addCalcAngleS2(¤t.angle.y, temp, 8, 0x1000); field_0xD7E = 1; m_jnt.onBackBoneLock(); } return 0; } field_0xD7E = 0; field_0x2AC = getMsg(); field_0xC78 += 1; l_msgId = -1; l_msg = 0; } else if(field_0xC78 != -1) { if(l_msgId == -1) { l_msgId = fopMsgM_messageSet(field_0x2AC, &eyePos); } else if(l_msg == 0) { l_msg = fopMsgM_SearchByID(l_msgId); } else { setAnimFromMsgNo(field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_DISPLAYED_e) { l_msg->mStatus = next_msgStatus(&field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_CONTINUES_e) { fopMsgM_messageSet(field_0x2AC); setAnimFromMsgNo(field_0x2AC); } } else if(l_msg->mStatus == fopMsgStts_BOX_CLOSED_e) { l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; dComIfGp_event_reset(); if(field_0x2AC == 0x963 || field_0x2AC == 0x98A) { int staffIdx = dComIfGp_evmng_getMyStaffId("Ji1"); dComIfGp_evmng_cutEnd(staffIdx); if(dComIfGp_evmng_endCheck(field_0xC54[6])) { if(field_0x2AC == 0x98A) { field_0xD70 = -1; fopAcM_seStart(this, JA_SE_VS_JI_OPENING, 0); mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::plmoveAction, 0); } else { setAction(&daNpc_Ji1_c::kaitenwaitAction, 0); } } } else if(field_0x2AC == 0x94E || field_0x2AC == 0x967 || field_0x2AC == 0x9AB || field_0x2AC == 0x9AD || field_0x2AC == 0x9B4) { if(field_0x2AC == 0x9B4) { field_0xD7B = 1; } field_0xD70 = -1; fopAcM_seStart(this, JA_SE_VS_JI_OPENING, 0); mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::plmoveAction, 0); } else if(field_0x2AC == 0x995) { setAction(&daNpc_Ji1_c::plmoveAction, 0); } else { setAction(field_0x2BC, 0); } } if(field_0xD64 == 0x16 && field_0x330->getFrame() >= l_HIO.field_0xB4) { BackSlide(l_HIO.field_0xAC, l_HIO.field_0xB0); } } } return TRUE; } /* 000033D0-000039AC .text speakAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::speakAction(void*) { } /* 000039AC-00003F54 .text speakBadAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::speakBadAction(void*) { int staffIdx = dComIfGp_evmng_getMyStaffId("Ji1"); if(field_0xC78 == 0) { if(!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderOtherEventId(this, field_0xC54[3]); eventInfo.onCondition(dEvtCnd_UNK2_e); return false; } if(MoveToPlayer(280.0f, 0)) { return false; } dComIfGp_evmng_cutEnd(staffIdx); switch(field_0xD70) { case 0: field_0x2AC = 0x96F; break; case 1: field_0x2AC = 0x970; break; case 2: field_0x2AC = 0x971; break; case 3: field_0x2AC = 0x980; break; case 4: field_0x2AC = 0x985; break; case 5: field_0x2AC = 0x972; break; default: field_0x2AC = 0x9B6; break; } setAnm(7, 4.0f, 0); field_0xC78 += 1; l_msgId = -1; } else if(field_0xC78 != -1) { if(l_msgId == -1) { if(field_0xD64 == 7) { if(field_0x330->getFrame() > field_0x330->getEndFrame() - 2.0f) { l_msgId = fopMsgM_messageSet(field_0x2AC, &eyePos); field_0xBFC.swing_horizone_init(2, 0x1000, 0x1000, 1); setAnm(5, 0.0f, 0); } else if(field_0x330->checkFrame(field_0x330->getEndFrame() - 10.0f)) { dComIfGp_evmng_cutEnd(staffIdx); fopAcM_seStart(this, JA_SE_CV_JI_ATTACK, 0); dComIfGp_getVibration().StartShock(5, -0x11, cXyz(0.0f, 1.0f, 0.0f)); } else if(field_0x330->checkFrame(field_0x330->getEndFrame() - 14.0f)) { fopAcM_seStart(this, JA_SE_CM_JI_ATTACK, 0); } } } else { if(field_0xC78 == 1) { l_msg = fopMsgM_SearchByID(l_msgId); if(l_msg) { field_0xC78 += 1; } } else { if(l_msg->mStatus == fopMsgStts_MSG_DISPLAYED_e) { setAnimFromMsgNo(field_0x2AC); l_msg->mStatus = next_msgStatus(&field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_CONTINUES_e) { fopMsgM_messageSet(field_0x2AC); } } else if(l_msg->mStatus == fopMsgStts_BOX_CLOSED_e) { if(staffIdx != -1) { dComIfGp_evmng_cutEnd(staffIdx); } if(dComIfGp_evmng_endCheck(field_0xC54[3])) { l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; if(field_0x2AC == 0x969) { field_0xD70 = 0; setAction(&daNpc_Ji1_c::teachAction, 0); } else { setAction(field_0x2BC, 0); } dComIfGp_event_reset(); } } } } } return true; } /* 00003F54-00004050 .text initPosObject__11daNpc_Ji1_cFPvPv */ void* daNpc_Ji1_c::initPosObject(void* pActor, void* pData) { if(fopAc_IsActor(pActor) && fopAcM_GetName(pActor) == PROC_TSUBO) { ((daTsubo::Act_c*)pActor)->pos_init(); } return 0; } /* 00004050-000040FC .text initPos__11daNpc_Ji1_cFi */ void daNpc_Ji1_c::initPos(int param_1) { if(param_1 >= 0) { setAnm(param_1, 0.0f, 0); } fopAcM_Search(&initPosObject, this); old.pos = field_0xD28; current.pos = old.pos; current.angle = csXyz(home.angle.y, 0, 0); } /* 00004138-00004268 .text createItem__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::createItem() { u8 itemNo; if(field_0xD7C) { itemNo = dItem_SWORD_e; } else if(field_0xD7B == 1) { itemNo = dItem_HURRICANE_SPIN_e; } else if(dComIfGs_getEventReg(0xD003) == 1) { itemNo = dItem_PURPLE_RUPEE_e; } else if(dComIfGs_getEventReg(0xD003) == 2) { itemNo = dItem_ORANGE_RUPEE_e; } else if(field_0xD70 >= l_HIO.field_0x60[3] && dComIfGs_isEventBit(0xF10)) { itemNo = dItem_SILVER_RUPEE_e; } else { itemNo = dItem_HEART_PIECE_e; dComIfGs_onEventBit(0xF10); } fpc_ProcID itemPID = fopAcM_createItemForPresentDemo(¤t.pos, itemNo, 0, -1, current.roomNo); if(itemPID != fpcM_ERROR_PROCESS_ID_e) { dComIfGp_event_setItemPartnerId(itemPID); } field_0xD7D = itemNo; } /* 00004268-00004448 .text set_mtx__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::set_mtx() { J3DModel* pModel = field_0x330->getModel(); mDoMtx_stack_c::transS(current.pos); mDoMtx_stack_c::YrotM(current.angle.y); pModel->setBaseTRMtx(mDoMtx_stack_c::get()); field_0x330->calc(); field_0x3F8->setBaseTRMtx(pModel->getAnmMtx(m_jnt.getHeadJntNum())); if(field_0x430) { field_0x430->setGlobalRTMatrix(pModel->getAnmMtx(m_jnt.getHeadJntNum())); } if(field_0xD84 == 1) { mDoMtx_stack_c::copy(pModel->getAnmMtx(handRJointNo)); mDoMtx_stack_c::XYZrotM(field_0xD5C); mDoMtx_stack_c::transM(field_0xD50); mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); } mpMorf->calc(); if(field_0xD84) { cXyz temp(0.0f, 0.0f, 100.0f); cXyz temp2(0.0f, 0.0f, -100.0f); if(field_0xD64 == 0x14) { temp.z = 70.0f; } field_0xB90 = field_0xB78; mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1)); mDoMtx_stack_c::multVec(&temp, &field_0xB78); mDoMtx_stack_c::multVec(&temp2, &field_0xB84); } } /* 00004448-00004488 .text getEventActionNo__11daNpc_Ji1_cFi */ s32 daNpc_Ji1_c::getEventActionNo(int staffIdx) { static char* ActionNames[] = { "00_dummy", "01_dummy", "02_dummy", "03_dummy", "04_dummy", "05_dummy", "06_dummy", }; return dComIfGp_evmng_getMyActIdx(staffIdx, ActionNames, ARRAY_SIZE(ActionNames), FALSE, 0); } /* 00004488-00004714 .text eventAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::eventAction(void*) { if(field_0xC78 == 0) { int staffIdx = dComIfGp_evmng_getMyStaffId(mEventCut.getActorName()); if(!eventInfo.checkCommandDemoAccrpt() && staffIdx == -1) { fopAcM_orderOtherEventId(this, field_0xC54[field_0xC84]); eventInfo.onCondition(dEvtCnd_UNK2_e); return false; } field_0xC78 += 1; } else if(field_0xC78 == -1) { field_0xC84 = 0x12; } else { int staffIdx = dComIfGp_evmng_getMyStaffId(mEventCut.getActorName()); privateCut(); AnimeControlToWait(); if(dComIfGp_evmng_endCheck(field_0xC54[field_0xC84])) { dComIfGp_event_reset(); setAction(field_0x2C8, 0); } else if(staffIdx == -1) { setAction(field_0x2C8, 0); } } return true; } /* 00004714-00004778 .text evn_init_pos_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_init_pos_init(int staffIdx) { int* data = dComIfGp_evmng_getMyIntegerP(staffIdx, "AnmNo"); u32 value = 0; if(data) { value = *data; } initPos(value); return 1; } /* 00004778-00004838 .text evn_setAnm_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_setAnm_init(int staffIdx) { int* iData = dComIfGp_evmng_getMyIntegerP(staffIdx, "AnmNo"); f32* fData = dComIfGp_evmng_getMyFloatP(staffIdx, "hokan"); if(iData) { int iVal = *iData; f32 fVal = 0.0f; if(fData) { fVal = *fData; } if(field_0xD84 != 1 && iVal == 5) { iVal = 1; } setAnm(iVal, fVal, 0); } return 1; } /* 00004838-000049AC .text evn_talk_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_talk_init(int staffIdx) { int* pMsgNo = dComIfGp_evmng_getMyIntegerP(staffIdx, "MsgNo"); int* pEndMsgNo = dComIfGp_evmng_getMyIntegerP(staffIdx, "EndMsgNo"); l_msgId = fpcM_ERROR_PROCESS_ID_e; l_msg = 0; if(pMsgNo) { field_0x2AC = *pMsgNo; if(field_0x2AC == 0x9A4) { if(field_0xC38 == 2) { field_0x2AC = 0x9A9; } else if(field_0xD7D == 7) { field_0x2AC = 0x9A6; } } else if(field_0x2AC == 0x9A1) { if(field_0xC38 == 2) { field_0x2AC = 0x9A7; } } else if(field_0x2AC == 0x9B7) { if(field_0x2C8 == &daNpc_Ji1_c::kaitenwaitAction) { field_0x2AC = 0x95E; } else if(field_0x2C8 == &daNpc_Ji1_c::teachAction) { field_0x2AC = 0x95D; } } } else { field_0x2AC = 0; } if(pEndMsgNo) { field_0xD80 = *pEndMsgNo; } else { field_0xD80 = 0; } return 1; } /* 000049AC-00004B1C .text evn_talk__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::evn_talk() { if(l_msgId == fpcM_ERROR_PROCESS_ID_e) { l_msgId = fopMsgM_messageSet(field_0x2AC, &eyePos); } else if(!l_msg) { l_msg = fopMsgM_SearchByID(l_msgId); fopMsgM_demoMsgFlagOn(); } else { setAnimFromMsgNo(field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_DISPLAYED_e) { l_msg->mStatus = next_msgStatus(&field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_CONTINUES_e) { fopMsgM_messageSet(field_0x2AC); } else if(l_msg->mStatus == fopMsgStts_MSG_ENDS_e) { if(field_0x2AC == 0x9BA) { field_0xD7B = 0; field_0xD6C = 0; } else if(field_0x2AC == 0x95A) { field_0xD7C = 0; field_0xD6C = 0; } } } else { if(l_msg->mStatus == fopMsgStts_BOX_CLOSED_e) { l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; l_msg = 0; l_msgId = fpcM_ERROR_PROCESS_ID_e; return true; } if((l_msg->mStatus == fopMsgStts_BOX_OPENING_e || l_msg->mStatus == fopMsgStts_MSG_TYPING_e) && field_0x2AC == field_0xD80) { field_0xD80 = 0; return true; } } } return false; } /* 00004B1C-00004B84 .text evn_continue_talk_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_continue_talk_init(int staffIdx) { int* data = dComIfGp_evmng_getMyIntegerP(staffIdx, "EndMsgNo"); if(data) { field_0xD80 = *data; } else { field_0xD80 = 0; } return 1; } /* 00004B84-00004CF4 .text evn_continue_talk__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::evn_continue_talk() { if(l_msgId == fpcM_ERROR_PROCESS_ID_e) { l_msgId = fopMsgM_messageSet(field_0x2AC, &eyePos); } else if(!l_msg) { l_msg = fopMsgM_SearchByID(l_msgId); fopMsgM_demoMsgFlagOn(); } else { setAnimFromMsgNo(field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_DISPLAYED_e) { l_msg->mStatus = next_msgStatus(&field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_CONTINUES_e) { fopMsgM_messageSet(field_0x2AC); } else if(l_msg->mStatus == fopMsgStts_MSG_ENDS_e) { if(field_0x2AC == 0x9BA) { field_0xD7B = 0; field_0xD6C = 0; } else if(field_0x2AC == 0x95A) { field_0xD7C = 0; field_0xD6C = 0; } } } else { if(l_msg->mStatus == fopMsgStts_BOX_CLOSED_e) { l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; l_msg = 0; l_msgId = fpcM_ERROR_PROCESS_ID_e; return true; } if((l_msg->mStatus == fopMsgStts_BOX_OPENING_e || l_msg->mStatus == fopMsgStts_MSG_TYPING_e) && field_0x2AC == field_0xD80) { field_0xD80 = 0; return true; } } } return false; } /* 00004CF4-00004D50 .text evn_setAngle_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_setAngle_init(int staffIdx) { int* data = dComIfGp_evmng_getMyIntegerP(staffIdx, "angle"); if(data) { current.angle.y = *data; } return 1; } /* 00004D50-00004E8C .text evn_sound_proc_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_sound_proc_init(int staffIdx) { int* data = dComIfGp_evmng_getMyIntegerP(staffIdx, "prm"); if(data) { switch(*data) { case 0: mDoAud_bgmStop(45); break; case 1: mDoAud_bgmStart(JA_BGM_HOUSE_G); break; case 2: fopAcM_seStart(this, JA_SE_VS_JI_ENDING, 0); break; case 3: dComIfGp_getVibration().StartShock(5, -0x11, cXyz(0.0f, 1.0f, 0.0f)); } } return 1; } /* 00004E8C-00004F60 .text evn_head_swing_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_head_swing_init(int staffIdx) { int* pData = dComIfGp_evmng_getMyIntegerP(staffIdx, "prm"); u32 value; if(!pData) { value = 0; } else { value = *pData; } switch(value) { case 0: field_0xBFC.swing_horizone_init(2, 0x1000, 0x1000, 1); break; case 1: field_0xBFC.swing_vertical_init(2, 0x1000, 0x800, 1); break; case 2: field_0xBFC.swing_vertical_init(1, 0x1400, 0x1000, 1); break; } return true; } /* 00004F60-00005008 .text evn_harpoon_proc_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_harpoon_proc_init(int staffIdx) { int* pData = dComIfGp_evmng_getMyIntegerP(staffIdx, "prm"); u32 value; if(!pData) { value = 0; } else { value = *pData; } switch(value) { case 0: harpoonRelease(0); break; case 1: field_0xD84 = 0; break; case 2: field_0xD84 = 1; break; } return true; } /* 00005008-00005078 .text evn_RollAtControl_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_RollAtControl_init(int staffIdx) { daPy_py_c* player = daPy_getPlayerActorClass(); field_0xD18 = 400.0f; field_0xD16 = cLib_targetAngleY(¤t.pos, &player->current.pos); field_0xD16 += 0x2000; field_0xC30 = 30; field_0xD68 = 0; return 1; } /* 00005078-00005314 .text evn_RollAtControl__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::evn_RollAtControl() { static cXyz hit_scale(1.25f, 1.25f, 1.25f); field_0xD16 += 0x540; cLib_chaseF(&field_0xD18, 0.0f, 1.0f); field_0xD1C = current.pos; field_0xD1C.x += field_0xD18 * cM_ssin(field_0xD16); field_0xD1C.z += field_0xD18 * cM_scos(field_0xD16); dComIfGp_evmng_setGoal(&field_0xD1C); field_0x6B0.SetC(current.pos); dComIfG_Ccsp()->Set(&field_0x6B0); field_0x7E0.SetC(current.pos); dComIfG_Ccsp()->Set(&field_0x7E0); if(field_0xC30 == 0xA) { setAnm(0x19, 0.0f, 0); BackSlideInit(); setHitParticle(&hit_scale, JA_SE_CV_JI_FUTTOBI); } if(field_0xD64 == 0x19) { if(field_0x330->getFrame() < 10.0f) { daPy_py_c* player = daPy_getPlayerActorClass(); cXyz temp = player->current.pos - current.pos; cLib_addCalcAngleS2(¤t.angle.y, cM_atan2s(temp.x, temp.z), 2, 0x2000); } else { if(field_0x330->checkFrame(20.0f) && field_0xD68++ < 2) { setHitParticle(&hit_scale, JA_SE_CV_JI_FUTTOBI); BackSlideInit(); setAnm(0x19, 4.0f, 1); } } BackSlide(120.0f, 10.0f); } if(field_0xC30 > 0) { field_0xC30 -= 1; } else { return true; } return false; } /* 00005314-000053F8 .text evn_game_mode_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_game_mode_init(int staffIdx) { int* data = dComIfGp_evmng_getMyIntegerP(staffIdx, "prm"); u32 value; if(data) { value = *data; } else { value = 0; } switch(value) { case 0: dComIfGp_endMiniGame(6); break; case 1: dComIfGp_startMiniGame(6); game_life_point = 3; case 2: dComIfGp_endMiniGame(2); break; } return 1; } /* 000053F8-0000545C .text evn_turn_to_player__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::evn_turn_to_player() { daPy_py_c* player = daPy_getPlayerActorClass(); s16 target = cLib_targetAngleY(¤t.pos, &player->current.pos); if (cLib_addCalcAngleS(¤t.angle.y, target, 4, 0x1000, 0x100) == 0) { return 1; } else { return 0; } } /* 0000545C-00005508 .text evn_hide_init__11daNpc_Ji1_cFi */ u32 daNpc_Ji1_c::evn_hide_init(int staffIdx) { daPy_py_c* player = daPy_getPlayerActorClass(); int* pData = dComIfGp_evmng_getMyIntegerP(staffIdx, "prm"); u32 value; if(!pData) { value = 0; } else { value = *pData; } if((value & 1) == 0) { field_0xD85 = 0; } else { field_0xD85 = 1; } if(value & 2) { player->onPlayerNoDraw(); } else { player->offPlayerNoDraw(); } return true; } /* 00005508-000055E4 .text AnimeControlToWait__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::AnimeControlToWait() { /* Nonmatching */ if(field_0x330->getPlayMode() == J3DFrameCtrl::EMode_NONE) { if(field_0x330->checkFrame(field_0x330->getEndFrame() - 1.0f)) { if(isAttackAnim() || isGuardAnim()) { setAnm(5, 4.0f, 0); } else if(isItemWaitAnim()) { setAnm(0, 4.0f, 0); } } } } /* 000055E4-000057DC .text privateCut__11daNpc_Ji1_cFv */ u32 daNpc_Ji1_c::privateCut() { int staffIdx = dComIfGp_evmng_getMyStaffId(mEventCut.getActorName()); if(staffIdx == -1) { return false; } static char* cut_name_tbl[] = { "SETANM", "TALKMSG", "INITPOS", "CREATEITEM", "SOUND", "HEADSWING", "HARPOON", "ROLLAT_CNT", "GAME_MODE", "TURN_TO_PLAYER", "HIDE", "CONTINUETALK", "SETANGLE", }; enum { ACT_SETANM, ACT_TALKMSG, ACT_INITPOS, ACT_CREATEITEM, ACT_SOUND, ACT_HEADSWING, ACT_HARPOON, ACT_ROLLAT_CNT, ACT_GAME_MODE, ACT_TURN_TO_PLAYER, ACT_HIDE, ACT_CONTINUETALK, ACT_SETANGLE, }; int actIdx = dComIfGp_evmng_getMyActIdx(staffIdx, cut_name_tbl, ARRAY_SIZE(cut_name_tbl), 1, 0); if(actIdx == -1) { dComIfGp_evmng_cutEnd(staffIdx); } else { if(dComIfGp_evmng_getIsAddvance(staffIdx)) { switch(actIdx) { case ACT_SETANM: evn_setAnm_init(staffIdx); break; case ACT_TALKMSG: evn_talk_init(staffIdx); break; case ACT_INITPOS: evn_init_pos_init(staffIdx); break; case ACT_CREATEITEM: createItem(); break; case ACT_SOUND: evn_sound_proc_init(staffIdx); break; case ACT_HEADSWING: evn_head_swing_init(staffIdx); break; case ACT_HARPOON: evn_harpoon_proc_init(staffIdx); break; case ACT_ROLLAT_CNT: evn_RollAtControl_init(staffIdx); break; case ACT_GAME_MODE: evn_game_mode_init(staffIdx); break; case ACT_HIDE: evn_hide_init(staffIdx); break; case ACT_CONTINUETALK: evn_continue_talk_init(staffIdx); break; case ACT_SETANGLE: evn_setAngle_init(staffIdx); break; } } BOOL end; switch(actIdx) { case ACT_TALKMSG: end = evn_talk(); break; case ACT_ROLLAT_CNT: end = evn_RollAtControl(); break; case ACT_TURN_TO_PLAYER: end = evn_turn_to_player(); break; case ACT_CONTINUETALK: end = evn_continue_talk(); break; default: end = true; } if(end) { dComIfGp_evmng_cutEnd(staffIdx); } } return true; } /* 000057DC-000058B8 .text setParticle__11daNpc_Ji1_cFiff */ u32 daNpc_Ji1_c::setParticle(int max, f32 rate, f32 spread) { dtParticle(); if(field_0x2E0.getEmitter() == 0) { JPABaseEmitter* emitter = dComIfGp_particle_setToon(dPa_name::ID_COMMON_2022, ¤t.pos, 0, 0, 0xB9, &field_0x2E0, fopAcM_GetRoomNo(this)); if(emitter) { emitter->setRate(rate); emitter->setSpread(spread); emitter->setRandomDirectionSpeed(1.5f); emitter->setMaxFrame(max); return true; } } return false; } /* 000058B8-000058F0 .text dtParticle__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::dtParticle() { if(field_0x2E0.getEmitter()) { field_0x2E0.remove(); } } /* 000058F0-000059E8 .text setParticleAT__11daNpc_Ji1_cFiff */ u32 daNpc_Ji1_c::setParticleAT(int max, f32 rate, f32 spread) { if(field_0x300.getEmitter() == 0) { JPABaseEmitter* emitter = dComIfGp_particle_setToon(dPa_name::ID_COMMON_2022, &field_0x320, 0, 0, 0xB9, &field_0x300, fopAcM_GetRoomNo(this)); if(field_0x300.getEmitter()) { JGeometry::TVec3 scaleVec; scaleVec.x = 2.0f; scaleVec.y = 2.0f; scaleVec.z = 2.0f; emitter->setGlobalParticleScale(scaleVec); emitter->setVolumeSweep(0.15f); emitter->setRate(rate); emitter->setSpread(spread); emitter->setRandomDirectionSpeed(1.5f); emitter->setMaxFrame(max); return true; } } return false; } /* 000059E8-00005A20 .text dtParticleAT__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::dtParticleAT() { if(field_0x300.getEmitter()) { field_0x300.remove(); } } /* 00005A20-00005F30 .text startspeakAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::startspeakAction(void*) { /* Nonmatching */ } /* 00005F30-00006238 .text endspeakAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::endspeakAction(void*) { int staffIdx = dComIfGp_evmng_getMyStaffId("Ji1"); int actionNo = getEventActionNo(staffIdx); if(field_0xC78 == 0) { if(!eventInfo.checkCommandDemoAccrpt()) { fopAcM_orderOtherEventId(this, field_0xC54[2]); eventInfo.onCondition(dEvtCnd_UNK2_e); return false; } if(actionNo == 0) { dComIfGp_evmng_cutEnd(staffIdx); } if(dComIfGs_isEventBit(0x520)) { field_0x2AC = 0x996; } else if(dComIfGs_isEventBit(0x1)) { field_0x2AC = 0x96D; } else if(!dComIfGs_isEventBit(0x2F40)) { field_0x2AC = 0x950; } else { field_0x2AC = 0x954; } field_0xC78 += 1; l_msgId = -1; } else if(field_0xC78 != -1) { if(l_msgId == -1) { l_msgId = fopMsgM_messageSet(field_0x2AC, &eyePos); setAnm(5, 4.0f, 0); } else { if(field_0xC78 == 1) { l_msg = fopMsgM_SearchByID(l_msgId); if(l_msg) { field_0xC78 += 1; } } else { if(l_msg->mStatus == fopMsgStts_MSG_DISPLAYED_e) { setAnimFromMsgNo(field_0x2AC); l_msg->mStatus = next_msgStatus(&field_0x2AC); if(l_msg->mStatus == fopMsgStts_MSG_CONTINUES_e) { fopMsgM_messageSet(field_0x2AC); } } else if(l_msg->mStatus == fopMsgStts_BOX_CLOSED_e) { l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::reiAction, 0); } } } } return true; } /* 00006238-00006728 .text reiAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::reiAction(void*) { /* Nonmatching */ } /* 00006728-00006C1C .text plmoveAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::plmoveAction(void*) { /* Nonmatching */ } /* 00006C1C-00007140 .text teachMove__11daNpc_Ji1_cFf */ void daNpc_Ji1_c::teachMove(f32 param_1) { /* Nonmatching */ } /* 00007140-00007424 .text teachSpRollCutMove__11daNpc_Ji1_cFf */ BOOL daNpc_Ji1_c::teachSpRollCutMove(float) { /* Nonmatching */ } /* 00007424-000074B0 .text calcCoCorrectValue__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::calcCoCorrectValue() { /* Nonmatching */ } /* 000074B0-00007548 .text calcBgCorrectValue__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::calcBgCorrectValue() { /* Nonmatching */ } /* 00007548-00007A80 .text MoveToPlayer__11daNpc_Ji1_cFfUc */ BOOL daNpc_Ji1_c::MoveToPlayer(f32, u8) { /* Nonmatching */ } /* 00007A80-00007B14 .text teachSubActionAttackInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::teachSubActionAttackInit() { /* Nonmatching */ setAnm(0x7, 0.0f, 0); field_0x330->setPlaySpeed(0.4f); fopAcM_seStart(this, JA_SE_CV_JI_ATTACK, 0); } /* 00007B14-00007D2C .text teachSubActionAttack__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::teachSubActionAttack() { /* Nonmatching */ } /* 00007D2C-00007D8C .text teachSubActionJumpInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::teachSubActionJumpInit() { setAnm(0xB, 0.0f, 1); field_0xC9C = 0; field_0xD38 = current.pos; } /* 00007D8C-00007F14 .text teachSubActionJump__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::teachSubActionJump() { /* Nonmatching */ } /* 00007F14-00009070 .text teachAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::teachAction(void*) { /* Nonmatching */ } /* 00009070-00009B64 .text teachSPRollCutAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::teachSPRollCutAction(void*) { /* Nonmatching */ daPy_py_c* player = daPy_getPlayerActorClass(); if(field_0xC78 == 0) { dComIfGp_setItemMagicCount(dComIfGs_getMaxMagic()); setAnm(5, 0.0f, 0); cLib_onBit(attention_info.flags, fopAc_Attn_LOCKON_MISC_e); field_0xC90 = 0; field_0xD34 = 0; field_0xC30 = 0; dComIfGs_onTmpBit(0x402); field_0xD70 = 6; field_0xC78++; } else if(field_0xC78 != -1) { dComIfGp_setItemMagicCount(dComIfGs_getMaxMagic()); if(daNpc_Ji1_plRoomOutCheck()) { field_0xC84 = 9; setAction(&daNpc_Ji1_c::eventAction, 0); field_0x2C8 = &daNpc_Ji1_c::teachSPRollCutAction; return true; } else { cXyz temp = player->current.pos - current.pos; cM_atan2s(temp.x, temp.z); f32 what = temp.absXZ(); s32 cutType = player->getCutType(); f32 y_diff = std::fabsf(temp.y); if(cutType == 9 && y_diff < 20.0f) { dComIfGs_onEventBit(0xB20); dComIfGs_offTmpBit(0x402); dComIfGp_setItemBeastNumCount(3, -10); field_0x7E0.OffTgShield(); field_0xC84 = 10; setAction(&daNpc_Ji1_c::eventAction, 0); field_0x2C8 = &daNpc_Ji1_c::teachSPRollCutAction; return TRUE; } if(cutType == 8) { field_0xC84 = 0xB; setAction(&daNpc_Ji1_c::eventAction, 0); field_0x2C8 = &daNpc_Ji1_c::teachSPRollCutAction; return TRUE; } field_0x7E0.OnTgShield(); if(field_0x7E0.ChkTgHit() && field_0xD6C != 1) { switch(field_0xC24) { case 1: case 6: case 8: setAnm(8, 0.0f, 1); break; case 9: break; case 10: setAnm(10, 0.0f, 1); field_0xC9C = 0; field_0xD38 = current.pos; break; default: setAnm(9, 0.0f, 1); } if(field_0xC24 == 9) { setHitParticle(0, 0x4833); field_0xC9C = 0; field_0xD38 = current.pos; setParticle(0x10, 1.0f, 0.1f); } else { setGuardParticle(); } field_0xD6C = 1; field_0xC8C = field_0xC24; } if(field_0xD6C == 1) { if(!player->getCutAtFlg() || field_0x330->getFrame() > field_0x330->getEndFrame() - 2.0f) { if(field_0xC90 == 0) { if(field_0xC8C == 9) { field_0xC84 = 0xA; setAction(&daNpc_Ji1_c::eventAction, 0); field_0x2C8 = &daNpc_Ji1_c::normalAction; return true; } fopAcM_orderOtherEventId(this, field_0xC54[3]); eventInfo.onCondition(dEvtCnd_UNK2_e); field_0xC90 = 2; } } if(field_0xD64 == 10 && field_0xC8C == 9) { cLib_addCalc2(&field_0xC9C, l_HIO.field_0x34 * 2.0f, 0.25f, l_HIO.field_0x38); cXyz temp(field_0xD38); temp.x -= field_0xC9C * cM_ssin(current.angle.y); temp.z -= field_0xC9C * cM_scos(current.angle.y); f32 temp2 = 45.0f; if(mAcch.ChkWallHit()) { temp2 = 10.0f; } cLib_addCalcPos2(¤t.pos, temp, 0.8f, temp2); fopAcM_seStart(this, JA_SE_CM_JI_SLIP, 0); } if(field_0x330->getFrame() > field_0x330->getEndFrame() - 2.0f) { field_0x6B0.OffTgShield(); field_0x7E0.OnTgShield(); if(field_0xC90 == 2) { field_0xD6C = 0; field_0xC9C = 0.0f; field_0xD38 = current.pos; field_0xC4C = 0.0f; field_0xC50 = 0.0f; field_0xC2C = 0.0f; setAction(&daNpc_Ji1_c::speakBadAction, 0); } else { field_0xC90 = 0; field_0xD6C = 0; field_0xC9C = 0.0f; field_0xD38 = current.pos; setAction(&daNpc_Ji1_c::speakAction, 0); } } } else { if(!teachSpRollCutMove(1.0f)) { if(field_0x330->checkFrame(field_0x330->getEndFrame() - 2.0f)) { setAnm(5, 4.0f, 0); } } } if(field_0xD6C != 1) { dtParticle(); } if(field_0xD6C != 1 && isGuardAnim()) { if(field_0x330->getFrame() > field_0x330->getEndFrame() - 2.0f) { setAnm(5, 4.0f, 0); } } } } return true; } /* 00009B64-00009B7C .text playerCutAtCheck__Fv */ static bool playerCutAtCheck() { /* Nonmatching */ return daPy_getPlayerActorClass()->getCutAtFlg(); } /* 00009B7C-00009F1C .text battleGameSetTimer__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleGameSetTimer() { /* Nonmatching */ } /* 00009F1C-0000A400 .text battleMove__11daNpc_Ji1_cFf */ void daNpc_Ji1_c::battleMove(f32) { /* Nonmatching */ } /* 0000A400-0000A430 .text battleSubActionWaitInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionWaitInit() { /* Nonmatching */ field_0xC9C = 0; setSubAction(&daNpc_Ji1_c::battleSubActionWait); } /* 0000A430-0000A564 .text battleSubActionWait__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionWait() { /* Nonmatching */ } /* 0000A564-0000A5FC .text battleSubActionNockBackInit__11daNpc_Ji1_cFi */ void daNpc_Ji1_c::battleSubActionNockBackInit(int param_1) { if(param_1) { setGuardParticle(); } field_0xC9C = 0; field_0xD38 = current.pos; field_0x330->setPlaySpeed(-1.0f); setSubAction(&daNpc_Ji1_c::battleSubActionNockBack); field_0x2A4 = 30.0f; } /* 0000A5FC-0000A744 .text battleSubActionNockBack__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionNockBack() { /* Nonmatching */ } /* 0000A744-0000A808 .text battleSubActionAttackInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionAttackInit() { /* Nonmatching */ setAnm(0x7, 0.0f, 0); field_0x330->setPlaySpeed(l_HIO.field_0x6C); fopAcM_seStart(this, JA_SE_CV_JI_ATTACK, 0); field_0xC34 = 0; setSubAction(&daNpc_Ji1_c::battleSubActionYokoAttack); } /* 0000A808-0000AAA4 .text battleSubActionAttack__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionAttack() { /* Nonmatching */ } /* 0000AAA4-0000AB68 .text battleSubActionTateAttackInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionTateAttackInit() { /* Nonmatching */ setAnm(0x13, 0.0f, 0); field_0x330->setPlaySpeed(l_HIO.field_0x78); fopAcM_seStart(this, JA_SE_CV_JI_ATTACK, 0); field_0xC34 = 0; setSubAction(&daNpc_Ji1_c::battleSubActionYokoAttack); } /* 0000AB68-0000AE2C .text battleSubActionTateAttack__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionTateAttack() { /* Nonmatching */ } /* 0000AE2C-0000AEF0 .text battleSubActionYokoAttackInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionYokoAttackInit() { /* Nonmatching */ setAnm(0x14, 0.0f, 0); field_0x330->setPlaySpeed(l_HIO.field_0x80); fopAcM_seStart(this, JA_SE_CV_JI_ATTACK, 0); field_0xC34 = 0; setSubAction(&daNpc_Ji1_c::battleSubActionYokoAttack); } /* 0000AEF0-0000B254 .text battleSubActionYokoAttack__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionYokoAttack() { /* Nonmatching */ } /* 0000B254-0000B2D4 .text battleSubActionJumpInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionJumpInit() { /* Nonmatching */ setAnm(0xB, 0.0f, 1); field_0xC9C = 0; field_0xD38 = current.pos; setSubAction(&daNpc_Ji1_c::battleSubActionJump); } /* 0000B2D4-0000B5EC .text battleSubActionJump__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionJump() { /* Nonmatching */ } /* 0000B5EC-0000B67C .text battleSubActionDamageInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionDamageInit() { /* Nonmatching */ setAnm(0x19, 0.0f, 1); field_0x330->setPlaySpeed(1.5f); field_0xC9C = 0; field_0xD38 = current.pos; setSubAction(&daNpc_Ji1_c::battleSubActionDamage); } /* 0000B67C-0000B8AC .text battleSubActionDamage__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionDamage() { /* Nonmatching */ } /* 0000B8AC-0000B92C .text battleSubActionJpGuardInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionJpGuardInit() { /* Nonmatching */ setAnm(0xA, 0.0f, 1); field_0xC9C = 0; field_0xD38 = current.pos; setSubAction(&daNpc_Ji1_c::battleSubActionJpGuard); } /* 0000B92C-0000BAEC .text battleSubActionJpGuard__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionJpGuard() { /* Nonmatching */ } /* 0000BAEC-0000BB6C .text battleSubActionGuardInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleSubActionGuardInit() { /* Nonmatching */ field_0xC9C = 0; field_0xD38 = current.pos; setParticle(0x10, 1.0f, 0.1f); setSubAction(&daNpc_Ji1_c::battleSubActionGuard); } /* 0000BB6C-0000BD8C .text battleSubActionGuard__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleSubActionGuard() { /* Nonmatching */ } /* 0000BD8C-0000BFE0 .text battleAtSet__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::battleAtSet() { /* Nonmatching */ } /* 0000BFE0-0000C7E4 .text battleGuardCheck__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::battleGuardCheck() { /* Nonmatching */ if(field_0x7E0.ChkTgHit() && field_0xD6C != 1) { switch(field_0xC24) { case 0xF: case 0x10: battleSubActionJumpInit(); break; case 5: current.angle.y += 0x8000; battleSubActionDamageInit(); break; case 0x1: case 0x6: case 0x8: case 0x9: case 0x1A: { if(!isAttackAnim()) { if(!checkSubAction(&daNpc_Ji1_c::battleSubActionNockBack)) { setAnm(8, 0.0f, 1); battleSubActionGuardInit(); break; } } int attackFrame = isAttackFrame(); if(checkSubAction(&daNpc_Ji1_c::battleSubActionNockBack)) { setAnm(8, 0.0f, 1); battleSubActionGuardInit(); } else { if(attackFrame == 0) { battleSubActionNockBackInit(1); field_0xD6C = 1; return 0; } if(attackFrame == 1) { setAnm(8, 0.0f, 1); battleSubActionGuardInit(); break; } return 0; } break; } case 0xA: battleSubActionJpGuardInit(); break; case 0x0: case 0x2: case 0x3: case 0x4: case 0x7: case 0xB: case 0xC: case 0xD: case 0xE: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1B: case 0x1C: case 0x1D: case 0x1E: case 0x1F: default: { if(!isAttackAnim()) { if(!checkSubAction(&daNpc_Ji1_c::battleSubActionNockBack)) { setAnm(9, 0.0f, 1); battleSubActionGuardInit(); break; } } int attackFrame = isAttackFrame(); if(checkSubAction(&daNpc_Ji1_c::battleSubActionNockBack)) { setAnm(9, 0.0f, 1); battleSubActionGuardInit(); } else { if(attackFrame == 0) { battleSubActionNockBackInit(1); field_0xD6C = 1; return 0; } if(attackFrame == 1) { setAnm(9, 0.0f, 1); battleSubActionGuardInit(); break; } return 0; } break; } } if(field_0xC24 == 0) { setGuardParticle(); } else { if(field_0xC24 == 0xF || field_0xC24 == 0x10 || field_0xC24 == 0x5) { fopAcM_seStart(this, JA_SE_LK_SW_CRT_HIT, 0); static cXyz scale(1.25f, 1.25f, 1.25f); if(field_0xC24 == 5) { setHitParticle(&scale, JA_SE_CV_JI_FUTTOBI); } else { setHitParticle(&scale, JA_SE_CV_JI_DEFENCE); } if(field_0xD70 < l_HIO.field_0x60[3] - 1) { field_0xD70 += 2; dComIfGp_plusMiniGameRupee(2); } else { field_0xD70 += 1; dComIfGp_plusMiniGameRupee(1); } } else { setHitParticle(0, JA_SE_CV_JI_DEFENCE); field_0xD70 += 1; dComIfGp_plusMiniGameRupee(1); } if(field_0xD70 >= l_HIO.field_0x60[3]) { field_0xC84 = 8; if(dComIfGs_isEventBit(0xF20)) { field_0xC38 = 2; } else if(dComIfGs_isEventBit(0xF10)) { field_0xC38 = 0; } else { field_0xC38 = 1; } setAction(&daNpc_Ji1_c::eventAction, 0); dComIfGp_setMessageCountNumber(field_0xD70); field_0x2C8 = &daNpc_Ji1_c::normalAction; if (dComIfG_getTimerPtr()) { dComIfG_TimerDeleteRequest(); setClearRecord(field_0xD70); } return TRUE; } } field_0xD6C = 1; field_0x2A4 = 30.0f; } if(!field_0xA40.ChkAtShieldHit() && field_0xA40.ChkAtHit()) { field_0xA40.ClrAtHit(); } if(field_0xC3C > 2) { if(checkAction(&daNpc_Ji1_c::battleAction)) { dComIfG_TimerDeleteRequest(); if(isClearRecord(field_0xD70)) { setClearRecord(field_0xD70); field_0xC84 = 7; setAction(&daNpc_Ji1_c::eventAction, 0); dComIfGp_setMessageCountNumber(field_0xD70); field_0x2C8 = &daNpc_Ji1_c::normalAction; } else { setAction(&daNpc_Ji1_c::endspeakAction, 0); } } } return TRUE; } /* 0000C7E4-0000CA98 .text battleAction__11daNpc_Ji1_cFPv */ BOOL daNpc_Ji1_c::battleAction(void*) { daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0); if(field_0xC78 == 0) { u8 icon; switch(dComIfGs_getSelectEquip(0)) { case dItem_SWORD_e: icon = 1; break; icon = 2; break; case dItem_MASTER_SWORD_2_e: icon = 2; break; case dItem_MASTER_SWORD_1_e: default: icon = 2; break; } dTimer_createTimer(6, 1000, 2, icon, 221.0f, 439.0f, 32.0f, 419.0f); dComIfGp_setMiniGameRupee(0); field_0xC3C = 0; setAnm(5, 0.0f, 0); cLib_onBit(attention_info.flags, fopAc_Attn_LOCKON_MISC_e); cLib_onBit(attention_info.flags, fopAc_Attn_LOCKON_BATTLE_e); attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 3; field_0xC30 = (s16)cM_rndF(150.0f) + 30; field_0xD70 = 0; field_0xD6C = 0; battleSubActionWaitInit(); field_0xC38 = 0; field_0xC78++; } else if(field_0xC78 == -1) { cLib_offBit(attention_info.flags, fopAc_Attn_LOCKON_BATTLE_e); attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 0xB5; } else { cXyz temp = player->current.pos - current.pos; cM_atan2s(temp.x, temp.z); f32 what = temp.absXZ(); field_0x7E0.OffTgShield(); battleGuardCheck(); (this->*field_0x2D4)(); if(field_0xD6C != 1) { dtParticle(); } if(!isAttackAnim() || checkSubAction(&daNpc_Ji1_c::battleSubActionNockBack)) { dtParticleAT(); } game_life_point = cLib_minLimit(3 - field_0xC3C, 0); } return true; } /* 0000CA98-0000CC28 .text checkCutType__11daNpc_Ji1_cFii */ BOOL daNpc_Ji1_c::checkCutType(int param_1, int param_2) { daPy_py_c* player = daPy_getPlayerActorClass(); BOOL ret = false; switch(param_2) { case 0: switch(param_1) { case 3: case 7: case 0x1A: case 0x1B: case 0x1E: case 0x1F: ret = true; break; case 8: if(player->checkComboCutTurn()) { ret = true; } break; default: break; } break; case 1: switch(param_1) { case 0: case 3: case 6: case 0x1A: case 0x1B: case 0x1E: case 0x1F: ret = true; break; case 8: if(player->checkComboCutTurn()) { ret = true; } break; default: break; } break; case 2: switch(param_1) { case 0: case 3: case 6: case 0x1A: case 0x1B: case 0x1E: case 0x1F: ret = true; break; case 8: if(player->checkComboCutTurn()) { ret = true; } break; default: break; } break; case 3: switch(param_1) { case 8: case 9: ret = true; break; default: break; } break; case 4: switch(param_1) { case 5: case 0xF: case 0x10: ret = true; break; default: break; } break; default: switch(param_1) { case 0xA: ret = true; break; } break; } return ret; } /* 0000CC28-0000CF28 .text setAnimFromMsgNo__11daNpc_Ji1_cFUl */ void daNpc_Ji1_c::setAnimFromMsgNo(u32 msgNo) { /* Nonmatching */ if(l_msg) { msgNo = l_msg->mMsgNo; } // the switch cases for this are annoying to work out switch(msgNo) { case 0x9B1: if(field_0xD84 == 1) { setAnm(0, 4.0f, 0); return; } setAnm(1, 4.0f, 0); return; case 0x961: case 0x986: setAnm(3, 8.0f, 0); return; case 0x962: setAnm(3, 4.0f, 0); return; case 0x9AF: case 0x9B3: case 0x9B4: if(field_0xD84 == 1) { setAnm(0, 4.0f, 0); return; } setAnm(2, 4.0f, 0); return; case 0x963: case 0x964: case 0x965: case 0x966: case 0x967: case 0x968: setAnm(2, 4.0f, 0); return; case 0x975: setAnm(4, 4.0f, 0); return; case 0x9AE: if(field_0xD64 == 0x16 && field_0x330->checkFrame(field_0x330->getEndFrame() - 1)) { setAnm(0x15, l_HIO.field_0xA8, 0); return; } if(field_0xD64 != 0x15) { setAnm(0x16, l_HIO.field_0xA4, 0); } return; case 0x9B9: if(l_msg->mStatus != 0xE) { return; } if(field_0xD64 != 0x17) { return; } if(field_0x430 != 0) { field_0x430->becomeInvalidEmitter(); field_0x430 = 0; field_0x430 = dComIfGp_particle_set(dPa_name::ID_SCENE_81A5, ¤t.pos); } setAnm(0x18, 8.0f, 0); field_0xD84 = 1; return; } } /* 0000CF28-0000DAB0 .text setAnm__11daNpc_Ji1_cFifi */ BOOL daNpc_Ji1_c::setAnm(int param_1, f32 param_2, int param_3) { /* Nonmatching */ if(param_3 == 0 & field_0xD64 - param_1 == 0) { return false; } else { field_0xD64 = param_1; f32 speed = 1.0f; if(param_1 != field_0xD64 && isGuardAnim()) { fopAcM_seStart(this, JA_SE_CM_JI_DEFENSE, 0); } J3DAnmTransform* bckAnm; s32 loopMode; void* pSoundAnimRes; switch(param_1) { case 0: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WAIT01)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_WAIT01); break; case 1: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WAIT02)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_WAIT02); break; case 2: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TALK01)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TALK01); break; case 3: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TALK02)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TALK02); break; case 4: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_AKIRE)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_AKIRE); break; case 5: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_KAMAE)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_KAMAE); break; case 6: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_KROT)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_KROT); speed = l_HIO.field_0x48; break; case 7: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_INASI)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_INASI); speed = l_HIO.field_0x44; break; case 8: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TATEGUARD)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TATEGUARD); break; case 9: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_YKGUARD)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_YKGUARD); break; case 10: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_JPGUARD)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_JPGUARD); break; case 11: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TOKAMAE)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TOKAMAE); break; case 12: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_REI)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_REI); break; case 13: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_WARAI)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_WARAI); speed = l_HIO.field_0x4C; break; case 14: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_JPGUARD)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_JPGUARD); speed = 2.0f; break; case 15: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_GUARD)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_GUARD); speed = 2.0f; break; case 16: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BTKAMASI)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_BTKAMASI); break; case 17: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BTKAMAE)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_BTKAMAE); break; case 18: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_UDEGUMI)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_UDEGUMI); break; case 19: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_TATEATTACK)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_TATEATTACK); break; case 20: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_YOKOATTACK)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_YOKOATTACK); break; case 21: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_ODOROKU)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_ODOROKU); break; case 22: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_BIBIRI)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_BIBIRI); BackSlideInit(); if(field_0xD84 == 1) { harpoonRelease(0); } break; case 23: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_NAKU)); loopMode = J3DFrameCtrl::EMode_LOOP; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_NAKU); if(field_0x430 == 0) { field_0x430 = dComIfGp_particle_set(dPa_name::ID_SCENE_81A4, ¤t.pos); harpoonRelease(0); } break; case 24: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_NUGUI)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_NUGUI); break; case 25: bckAnm = static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JI_DAMAGE)); loopMode = J3DFrameCtrl::EMode_NONE; pSoundAnimRes = dComIfG_getObjectRes("Ji", JI_BAS_JI_DAMAGE); break; default: return 0; } field_0x330->setAnm(bckAnm, loopMode, param_2, speed, 0.0f, -1.0f, pSoundAnimRes); if(field_0xD64 == 0x13) { mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("Ji", JI_BCK_JIYARI_TATEATTACK), J3DFrameCtrl::EMode_LOOP, 0.0f, 1.0f, 0.0f, -1.0f, NULL); } else if(field_0xD64 == 0x14) { mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("Ji", JI_BCK_JIYARI_YOKOATTACK), J3DFrameCtrl::EMode_LOOP, 0.0f, 1.0f, 0.0f, -1.0f, NULL); } return true; } } /* 0000DAB0-0000DC04 .text nodeCallBack1__FP7J3DNodei */ static BOOL nodeCallBack1(J3DNode* node, int calcTiming) { /* Nonmatching */ if (calcTiming == J3DNodeCBCalcTiming_In) { J3DModel* model = j3dSys.getModel(); J3DJoint* joint = (J3DJoint*)node; daNpc_Ji1_c* i_this = (daNpc_Ji1_c*)model->getUserArea(); s32 jntNo = joint->getJntNo(); if(i_this) { mDoMtx_stack_c::copy(model->getAnmMtx(jntNo)); if(jntNo == i_this->m_jnt.getHeadJntNum()) { mDoMtx_stack_c::XrotM(i_this->field_0xBFC.field_0x02 + i_this->m_jnt.getHead_y()); mDoMtx_stack_c::ZrotM(i_this->field_0xBFC.field_0x00 - i_this->m_jnt.getHead_x()); } if(jntNo == i_this->m_jnt.getBackboneJntNum()) { mDoMtx_stack_c::XrotM(i_this->m_jnt.getBackbone_y()); mDoMtx_stack_c::ZrotM(-i_this->m_jnt.getBackbone_x()); for(int i = 0; i < 3; i++) { mDoMtx_stack_c::multVec(&l_HIO.field_0xC4[i], &i_this->field_0xBD8[i]); } } model->setAnmMtx(jntNo, mDoMtx_stack_c::get()); cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); } } return true; } /* 0000DC04-0000DD68 .text nodeCallBack2__FP7J3DNodei */ static BOOL nodeCallBack2(J3DNode* node, int calcTiming) { if (calcTiming == J3DNodeCBCalcTiming_In) { J3DModel* model = j3dSys.getModel(); J3DJoint* joint = (J3DJoint*)node; daNpc_Ji1_c* i_this = (daNpc_Ji1_c*)model->getUserArea(); s32 jntNo = joint->getJntNo(); if(i_this) { cMtx_copy(model->getAnmMtx(jntNo), *calc_mtx); if(jntNo == i_this->hair1JointNo) { mDoMtx_ZrotM(*calc_mtx, i_this->field_0xBAA + i_this->field_0xBD2); mDoMtx_YrotM(*calc_mtx, i_this->field_0xBAC); } else if(jntNo == i_this->hair2JointNo) { mDoMtx_ZrotM(*calc_mtx, i_this->field_0xBAE + i_this->field_0xBD4); mDoMtx_YrotM(*calc_mtx, i_this->field_0xBB0); } else { mDoMtx_ZrotM(*calc_mtx, i_this->field_0xBB2 + i_this->field_0xBD6); mDoMtx_YrotM(*calc_mtx, i_this->field_0xBB4); } model->setAnmMtx(jntNo, *calc_mtx); cMtx_copy(*calc_mtx, J3DSys::mCurrentMtx); } } return true; } /* 0000DD68-0000DE90 .text nodeCallBack3__FP7J3DNodei */ static BOOL nodeCallBack3(J3DNode* node, int calcTiming) { if (calcTiming != J3DNodeCBCalcTiming_In) { return true; } else { J3DModel* model = j3dSys.getModel(); J3DJoint* joint = (J3DJoint*)node; daNpc_Ji1_c* i_this = (daNpc_Ji1_c*)model->getUserArea(); s32 jntNo = joint->getJntNo(); mDoMtx_stack_c::copy(model->getAnmMtx(jntNo)); s16 temp = i_this->field_0xBA2 * cM_ssin(i_this->field_0xBA4); if(jntNo == i_this->armLJointNo) { mDoMtx_stack_c::XrotM(temp); } else if(jntNo == i_this->armRJointNo) { mDoMtx_stack_c::XrotM(temp); } model->setAnmMtx(jntNo, mDoMtx_stack_c::get()); cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx); return true; } } /* 0000DE90-0000DEB0 .text daNpc_Ji1_Draw__FP11daNpc_Ji1_c */ static BOOL daNpc_Ji1_Draw(daNpc_Ji1_c* i_this) { return i_this->_draw(); } /* 0000DEB0-0000DED0 .text CheckCreateHeap__FP10fopAc_ac_c */ static BOOL CheckCreateHeap(fopAc_ac_c* i_this) { return static_cast(i_this)->CreateHeap(); } /* 0000DED0-0000DF78 .text _create__11daNpc_Ji1_cFv */ cPhs_State daNpc_Ji1_c::_create() { fopAcM_SetupActor(this, daNpc_Ji1_c); cPhs_State state = dComIfG_resLoad(&field_0xC7C, "Ji"); if(state == cPhs_COMPLEATE_e) { if(!fopAcM_entrySolidHeap(this, &CheckCreateHeap, 0x16840)) { return cPhs_ERROR_e; } CreateInit(); } return state; } /* 0000E864-0000F324 .text CreateHeap__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::CreateHeap() { /* Nonmatching */ J3DModelData* modelData = static_cast(dComIfG_getObjectRes("Ji", JI_BDL_JI)); field_0x330 = new mDoExt_McaMorf( modelData, NULL, NULL, static_cast(dComIfG_getObjectRes("Ji", JI_BCK_WAIT01)), J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, 1, dComIfG_getObjectRes("Ji", JI_BAS_WAIT01), 0x00000000, 0x11020203 ); if(field_0x330 == NULL || field_0x330->getModel() == NULL) { return false; } mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z); mDoMtx_stack_c::YrotM(current.angle.y); field_0x330->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); m_jnt.setHeadJntNum(modelData->getJointName()->getIndex("head")); JUT_ASSERT(0x15AB, m_jnt.getHeadJntNum() >= 0); m_jnt.setBackboneJntNum(modelData->getJointName()->getIndex("backbone1")); JUT_ASSERT(0x15B0, m_jnt.getBackboneJntNum() >= 0); armLJointNo = modelData->getJointName()->getIndex("armL1"); JUT_ASSERT(0x15B4, armLJointNo >= 0); armRJointNo = modelData->getJointName()->getIndex("armR1"); JUT_ASSERT(0x15B7, armRJointNo >= 0); handRJointNo = modelData->getJointName()->getIndex("handR"); JUT_ASSERT(0x15BA, handRJointNo >= 0); mpMorf = new mDoExt_McaMorf( static_cast(dComIfG_getObjectRes("Ji", JI_BDL_JI_YARI)), NULL, NULL, static_cast(dComIfG_getObjectRes("Ji", JI_BCK_JIYARI_TATEATTACK)), J3DFrameCtrl::EMode_NONE, 0.0f, 0, -1, 1, 0, 0x00000000, 0x11020203 ); if(mpMorf == NULL || mpMorf->getModel() == NULL) { return false; } modelData = static_cast(dComIfG_getObjectRes("Ji", JI_BDL_YJITR00)); field_0x3F8 = mDoExt_J3DModel__create(modelData, 0, 0x11020203); J3DAnmTevRegKey* a_brk = static_cast(dComIfG_getObjectRes("Ji", JI_BRK_YJITR00)); JUT_ASSERT(0x15CD, a_brk != NULL); J3DAnmTextureSRTKey* a_btk = static_cast(dComIfG_getObjectRes("Ji", JI_BTK_YJITR00)); JUT_ASSERT(0x15D0, a_btk != NULL); int temp1 = field_0x3FC.init(modelData, a_brk, false, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false, 0); int temp2 = field_0x418.init(modelData, a_btk, false, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false, 0); if(field_0x3F8 == 0 || temp1 == 0 || temp2 == 0) { return false; } headTexPattern = static_cast(dComIfG_getObjectRes("Ji", JI_BTP_JI)); JUT_ASSERT(0x15D8, headTexPattern != NULL); if(field_0x3D8.init(modelData, headTexPattern, TRUE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false, 0) == 0) { return false; } hair1JointNo = modelData->getJointName()->getIndex("hair1"); JUT_ASSERT(0x15DF, hair1JointNo >= 0); hair2JointNo = modelData->getJointName()->getIndex("hair2"); JUT_ASSERT(0x15E1, hair2JointNo >= 0); hair3JointNo = modelData->getJointName()->getIndex("hair3"); JUT_ASSERT(0x15E3, hair3JointNo >= 0); for(u16 i = 0; i < modelData->getJointNum(); i++) { if(i == hair1JointNo || i == hair2JointNo || i == hair3JointNo) { modelData->getJointNodePointer(i)->setCallBack(nodeCallBack2); } } for(u16 i = 0; i < modelData->getJointNum(); i++) { if(i == m_jnt.getHeadJntNum() || i == m_jnt.getBackboneJntNum()) { modelData->getJointNodePointer(i)->setCallBack(nodeCallBack1); } else if(i == armLJointNo || i == armRJointNo) { modelData->getJointNodePointer(i)->setCallBack(nodeCallBack3); } } field_0x330->getModel()->setUserArea((u32)this); mAcchCir.SetWall(60.0f, 50.0f); mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this)); mAcch.OnLineCheck(); field_0xC54[0] = dComIfGp_evmng_getEventIdx("Ji1_StartSpeak"); field_0xC54[1] = dComIfGp_evmng_getEventIdx("Ji1_Speak"); field_0xC54[2] = dComIfGp_evmng_getEventIdx("Ji1_EndSpeak"); field_0xC54[3] = dComIfGp_evmng_getEventIdx("Ji1_BadSpeak"); field_0xC54[4] = dComIfGp_evmng_getEventIdx("Ji1_linkmove"); field_0xC54[5] = dComIfGp_evmng_getEventIdx("Ji1_kaiten"); field_0xC54[6] = dComIfGp_evmng_getEventIdx("Ji1_kaiten_exp"); field_0xC54[7] = dComIfGp_evmng_getEventIdx("Ji1_ItemGetEnd"); field_0xC54[8] = dComIfGp_evmng_getEventIdx("Ji1_ItemGetTalkEnd"); field_0xC54[9] = dComIfGp_evmng_getEventIdx("Ji1_pl_backroom"); field_0xC54[0xA] = dComIfGp_evmng_getEventIdx("Ji1_TeachSpRollCut"); field_0xC54[0xB] = dComIfGp_evmng_getEventIdx("Ji1_SpRollFail"); field_0xC54[0xC] = dComIfGp_evmng_getEventIdx("Ji1_NormAng"); field_0xC54[0xD] = dComIfGp_evmng_getEventIdx("Ji1_NormAng2"); field_0xC54[0xE] = dComIfGp_evmng_getEventIdx("Ji1_NormAngFin"); field_0xC54[0xF] = dComIfGp_evmng_getEventIdx("Ji1_SwordGetTalkEnd"); field_0xC54[0x10] = dComIfGp_evmng_getEventIdx("Ji1_KmonTalk"); field_0xC54[0x11] = dComIfGp_evmng_getEventIdx("Ji1_EquipTalk"); if(dComIfGs_isEventBit(0x1) && !dComIfGs_isEventBit(0x108)) { eventInfo.setEventId(field_0xC54[0x11]); } return true; } /* 0000F324-0000FB0C .text CreateInit__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::CreateInit() { /* Nonmatching */ cXyz temp(190.0f, 230.0f, -1100.0f); csXyz temp2(0, 0, 0); fopAcM_createChild("Kmon", fopAcM_GetID(this), 0, &temp, fopAcM_GetRoomNo(this), &temp2); fopAcM_SetMtx(this, field_0x330->getModel()->getBaseTRMtx()); fopAcM_setCullSizeBox(this, -70.0f, 0.0f, -70.0f, 70.0f, 200.0f, 70.0f); gravity = -30.0f; attention_info.flags = fopAc_Attn_LOCKON_MISC_e | fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e; field_0x638.Init(0xFF, 0xFF, this); field_0x674.Init(0xFF, 0xFF, this); field_0x6B0.Set(l_cyl_src); field_0x6B0.SetStts(&field_0x638); field_0x7E0.Set(l_cyl2_src); field_0x7E0.SetStts(&field_0x674); field_0x7E0.SetTgHitCallback(daJi1_TgHitCallback); field_0x7E0.SetCoHitCallback(daJi1_CoHitCallback); field_0x6B0.OffTgShield(); field_0x7E0.OnTgShield(); field_0x910.Set(l_cylAt_src); field_0x910.SetStts(&field_0x638); field_0xA40.Set(l_cpsAt_src); field_0xA40.SetStts(&field_0x638); field_0xA40.SetStartEnd(field_0xB84, field_0xB78); field_0xA40.SetR(50.0f); field_0xA40.SetAtHitCallback(daJi1_AtHitCallback); field_0x290 = 240.0f; field_0x294 = 100.0f; field_0xD64 = -1; field_0xD68 = 0; field_0xD6C = 0; field_0xD70 = 0; field_0xD74 = 0; field_0xD78 = 0; field_0xD79 = 0; field_0xC94 = 0; field_0xC90 = 0; field_0xC98 = l_HIO.field_0x54[field_0xD70]; field_0xC28 = 0; field_0xC2C = 0; field_0xC4C = 0; field_0xC50 = 0; field_0xC9C = 0; field_0xD38 = current.pos; if(dComIfGs_isEventBit(0x520)) { if(!dComIfGs_isEventBit(0x2)) { field_0xD84 = 0; field_0xD50.x = -13.0f; field_0xD50.y = -4.0f; field_0xD50.z = 10.0f; field_0xD5C.x = 0x4000; field_0xD5C.y = 0; field_0xD5C.z = 0x7FFF; current.pos.x = 0.0f; current.pos.y = 0.0f; current.pos.z = -850.0f; current.angle.y = -0x8000; setAction(&daNpc_Ji1_c::kaitenExpAction, 0); } else { field_0xD84 = 1; field_0xD50.x = -13.0f; field_0xD50.y = -4.0f; field_0xD50.z = 10.0f; field_0xD5C.x = 0x4000; field_0xD5C.y = 0; field_0xD5C.z = 0x7FFF; setAction(&daNpc_Ji1_c::normalAction, 0); } field_0xD28 = home.pos; } else { if(dComIfGs_isEventBit(0x501) || dComIfGs_isEventBit(0x1)) { field_0xD84 = 1; field_0xD50.x = -13.0f; field_0xD50.y = -4.0f; field_0xD50.z = 10.0f; field_0xD5C.x = 0x4000; field_0xD5C.y = 0; field_0xD5C.z = 0x7FFF; field_0xD28 = home.pos; setAction(&daNpc_Ji1_c::normalAction, 0); } else { field_0xD84 = 0; if(!dComIfGs_isEventBit(0x640) || l_HIO.field_0x30) { field_0xD68 = 0; setAction(&daNpc_Ji1_c::kaitenExpAction, 0); } else { setAction(&daNpc_Ji1_c::kaitenwaitAction, 0); } current.pos.x = 0.0f; current.pos.y = 0.0f; current.pos.z = -850.0f; current.angle.y = -0x8000; field_0xD28 = current.pos; home.angle.y = current.angle.y; } } dComIfGp_att_offAleart(); mEventCut.setActorInfo("Ji1", this); mEventCut.setJntCtrlPtr(&m_jnt); field_0xC84 = 0x12; field_0xD7B = 0; field_0xD7C = 0; field_0xD7E = 0; cLib_onBit(attention_info.flags, fopAc_Attn_LOCKON_MISC_e); attention_info.distances[fopAc_Attn_TYPE_TALK_e] = 0xA9; attention_info.distances[fopAc_Attn_TYPE_SPEAK_e] = 0xA9; attention_info.distances[fopAc_Attn_TYPE_BATTLE_e] = 0xB5; field_0x414 = 0.0f; field_0x42C = 0.0f; field_0x430 = 0; set_mtx(); return true; } /* 0000FB0C-0000FC24 .text _delete__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::_delete() { if(dComIfGp_getMiniGameType() == 2) { dComIfGp_endMiniGame(2); } if(dComIfGp_getMiniGameType() == 6) { dComIfGp_endMiniGame(6); } dComIfG_resDelete(&field_0xC7C, "Ji"); if(heap && field_0x330) { field_0x330->stopZelAnime(); } mDoAud_seDeleteObject(&field_0xB78); mDoAud_seDeleteObject(&field_0xB84); dComIfGp_att_revivalAleart(); field_0x2E0.remove(); field_0x300.remove(); return true; } /* 0000FC24-00010100 .text _execute__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::_execute() { /* Nonmatching */ if(field_0xD84 == 2) { harpoonMove(); } if(cLib_calcTimer(&field_0x3EE) == 0) { field_0x3EC++; if(field_0x3EC >= headTexPattern->getFrameMax()) { field_0x3EC -= headTexPattern->getFrameMax(); field_0x3EE = (s16)cM_rndF(100.0f) + 30; } } s8 roomNo = fopAcM_GetRoomNo(this); u32 sound; if(mAcch.ChkGroundHit()) { sound = dComIfG_Bgsp()->GetMtrlSndId(mAcch.m_gnd); } else { sound = 0; } field_0x330->play(¤t.pos, sound, dComIfGp_getReverb(roomNo)); field_0x330->calc(); if(isItemWaitAnim()) { static cXyz aim_offset(-13.0f, -4.0f, 10.0f); static csXyz aim_angle(0x4000, 0, 0x7FFF); field_0xD5C = aim_angle; cLib_addCalcPos2(&field_0xD50, aim_offset, 0.25f, 5.0f); } else { static cXyz aim_offset(-13.06f, -4.0f, 44.35f); static csXyz aim_angle(0x3E84, 0, 0x7E93); field_0xD5C = aim_angle; cLib_addCalcPos2(&field_0xD50, aim_offset, 0.25f, 5.0f); } if(field_0xD84 == 1 && (field_0xD64 == 0x13 || field_0xD64 == 0x14)) { mpMorf->setFrame(field_0x330->getFrame()); } else { mpMorf->setFrame(0.0f); mpMorf->setPlaySpeed(0.0f); } mpMorf->calc(); field_0xBFC.move(); if(field_0xD64 == 0x17) { field_0x42C += 1.0f; if(field_0x42C >= 60.0f) { field_0x42C = 30.0f; } } else { if(field_0xD64 != 0x18 && field_0x430 != 0) { field_0x430->becomeInvalidEmitter(); field_0x430 = 0; } if(field_0x42C > 0.0f) { field_0x414 += 1.0f; if(field_0x414 >= 30.0f) { field_0x42C = 0; field_0x414 = 0; } } } (this->*field_0x2B0)(0); lookBack(); daNpc_Ji1_setHairAngle(this); attention_info.position.set(current.pos.x, current.pos.y + 190.0f, current.pos.z); shape_angle = current.angle; eyePos.set(current.pos.x, current.pos.y + 150.0f, current.pos.z); fopAcM_posMoveF(this, field_0x638.GetCCMoveP()); cXyz temp(current.pos); mAcch.CrrPos(*dComIfG_Bgsp()); field_0xC40 = current.pos - temp; tevStr.mRoomNo = dComIfG_Bgsp()->GetRoomId(mAcch.m_gnd); tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mAcch.m_gnd); set_mtx(); field_0x6B0.SetC(current.pos); dComIfG_Ccsp()->Set(&field_0x6B0); field_0x7E0.SetC(current.pos); dComIfG_Ccsp()->Set(&field_0x7E0); field_0xC28 = 0; return true; } /* 00010100-0001031C .text _draw__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::_draw() { /* Nonmatching */ if(field_0xD85) { return true; } else { J3DModel* model1 = field_0x330->getModel(); J3DModelData* modelData1 = model1->getModelData(); J3DModel* model2 = mpMorf->getModel(); g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr); g_env_light.setLightTevColorType(model1, &tevStr); g_env_light.setLightTevColorType(model2, &tevStr); field_0x3D8.entry(modelData1, field_0x3EC); field_0x330->entryDL(); if(field_0xD84 == 1) { mpMorf->entryDL(); } else if(field_0xD84 == 2) { mpMorf->updateDL(); } field_0x418.entry(field_0x3F8->getModelData(), (s16)field_0x42C); field_0x3FC.entry(field_0x3F8->getModelData(), (s16)field_0x414); mDoExt_modelUpdateDL(field_0x3F8); cXyz temp(current.pos.x, current.pos.y + 150.0f, current.pos.z); field_0x3F0 = dComIfGd_setShadow( field_0x3F0, 1, field_0x330->getModel(), &temp, 800.0f, 20.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr ); if(field_0x3F0 != 0 && field_0xD84 != 0) { dComIfGd_addRealShadow(field_0x3F0, mpMorf->getModel()); } dSnap_RegistFig(DSNAP_TYPE_JI1, this, current.pos, current.angle.y, 1.0f, 1.0f, 1.0f); return true; } } static cXyz l_head_front(0.0f, 1.0f, 0.0f); static cXyz l_head_top(1.0f, 0.0f, 0.0f); /* 0001031C-00010E3C .text daNpc_Ji1_setHairAngle__FP11daNpc_Ji1_c */ static void daNpc_Ji1_setHairAngle(daNpc_Ji1_c* i_this) { /* Nonmatching */ } /* 00010E3C-00010FC0 .text chkAttention__11daNpc_Ji1_cF4cXyzs */ BOOL daNpc_Ji1_c::chkAttention(cXyz param_1, s16 param_2) { daPy_py_c* player = daPy_getPlayerActorClass(); f32 temp = 800.0f; s32 temp2 = l_HIO.field_0x10 + l_HIO.field_0x12; cXyz temp4; temp4.x = player->current.pos.x - param_1.x; temp4.z = player->current.pos.z - param_1.z; f32 dist = std::sqrtf(temp4.x * temp4.x + temp4.z * temp4.z); s16 angle = cM_atan2s(temp4.x, temp4.z); if(field_0xD7A != 0) { temp += 40.0f; temp2 += 0x71C; } angle -= param_2; field_0xD7A = temp2 > abs(angle) && temp > dist; return temp2 > abs(angle) && temp > dist; } /* 00010FC0-0001132C .text lookBack__11daNpc_Ji1_cFv */ BOOL daNpc_Ji1_c::lookBack() { BOOL ret = false; daPy_py_c* player = daPy_getPlayerActorClass(); cXyz temp = fopAcM_GetPosition(player) - fopAcM_GetPosition(this); f32 dist = temp.absXZ(); bool temp2 = true; chkAttention(current.pos, current.angle.y); cXyz attnPos; if(mEventCut.getAttnFlag()) { attnPos = mEventCut.getAttnPos(); } cXyz* dstPos; if(field_0xD7E) { attnPos = player->getLeftHandPos(); dstPos = &attnPos; } else { if( (field_0xD7A != 0 || isGuardAnim()) || (checkAction(&daNpc_Ji1_c::kaitenwaitAction) && !dComIfGs_isEventBit(0x501)) || (!checkAction(&daNpc_Ji1_c::normalAction) && dist < 600.0f) ) { if(field_0xD64 == 0xD) { dstPos = 0; } else { attnPos = dNpc_playerEyePos(0.0f); dstPos = &attnPos; } } else { dstPos = 0; } } s16 maxHeadRot = l_HIO.field_0x10; s16 maxSpineRot = l_HIO.field_0x12; if(field_0xD64 == 0x10 || field_0xD64 == 0x11) { maxHeadRot = 0x3E80; maxSpineRot = 0x1F40; } m_jnt.setParam(l_HIO.field_0x0E, maxSpineRot, -l_HIO.field_0x0E, -maxHeadRot, l_HIO.field_0x0C, maxHeadRot, -l_HIO.field_0x0C, -maxHeadRot, l_HIO.field_0x14); if(m_jnt.trnChk()) { cLib_addCalcAngleS2(&field_0xC88, l_HIO.field_0x18, l_HIO.field_0x16, 0x800); temp2 = false; ret = true; } else { field_0xC88 = 0; } m_jnt.lookAtTarget(¤t.angle.y, dstPos, eyePos, current.angle.y, field_0xC88, temp2); return ret; } /* 0001132C-000114EC .text setHitParticle__11daNpc_Ji1_cFP4cXyzUl */ void daNpc_Ji1_c::setHitParticle(cXyz* param_1, u32 param_2) { /* Nonmatching */ cXyz* pRVec = field_0x7E0.GetTgRVecP(); cXyz scale(0.75f, 0.75f, 0.75f); csXyz angle; angle.y = cM_atan2s(pRVec->x, pRVec->z); angle.x = cM_atan2s(pRVec->z, pRVec->y); if(param_1) { scale = *param_1; } dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, field_0x7E0.GetTgHitPosP(), &angle, &scale); dComIfGp_particle_set(dPa_name::ID_COMMON_0010, field_0x7E0.GetTgHitPosP(), 0, &scale); fopAcM_seStart(this, JA_SE_CM_JI_DAMAGE, 0); fopAcM_seStart(this, param_2, 0); dKy_SordFlush_set(*field_0x7E0.GetTgHitPosP(), 0); } /* 000114EC-0001161C .text setGuardParticle__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::setGuardParticle() { dComIfGp_particle_set(dPa_name::ID_COMMON_PURPLE_HIT, field_0x7E0.GetTgHitPosP()); fopAcM_seStart(this, JA_SE_OBJ_COL_SWS_NMTLP, 0); fopAcM_seStart(this, JA_SE_CV_JI_DEFENCE, 0); dKy_SordFlush_set(*field_0x7E0.GetTgHitPosP(), 0); } /* 0001161C-00011644 .text BackSlideInit__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::BackSlideInit() { field_0xC9C = 0; field_0xD38 = current.pos; } /* 00011644-0001173C .text BackSlide__11daNpc_Ji1_cFff */ void daNpc_Ji1_c::BackSlide(f32 param_1, f32 param_2) { /* Nonmatching */ cLib_addCalc2(&field_0xC9C, param_1, 0.25f, 50.0f); cXyz temp(field_0xD38); temp.x -= field_0xC9C * cM_ssin(current.angle.y); temp.z -= field_0xC9C * cM_scos(current.angle.y); if(mAcch.ChkWallHit()) { param_2 *= 0.35f; } cLib_addCalcPosXZ(¤t.pos, temp, 0.8f, param_2, 1.0f); } /* 0001173C-000118E0 .text harpoonRelease__11daNpc_Ji1_cFP4cXyz */ void daNpc_Ji1_c::harpoonRelease(cXyz* param_1) { MTXCopy(mpMorf->getModel()->getAnmMtx(1), field_0xCA0); mpMorf->setFrame(0.0f); field_0xCD0.x = field_0xCA0[0][3]; field_0xCD0.y = field_0xCA0[1][3]; field_0xCD0.z = field_0xCA0[2][3]; field_0xCA0[0][3] = 0.0f; field_0xCA0[1][3] = 0.0f; field_0xCA0[2][3] = 0.0f; if(param_1) { field_0xCDC = *param_1; } else { field_0xCDC.set(0.0f, 5.0f, 0.0f); } field_0xD14 = 0x400; field_0xD04 = cM_ssin(field_0xD14) * cM_scos(current.angle.y); field_0xD08 = 0.0f; field_0xD0C = cM_ssin(field_0xD14) * cM_ssin(current.angle.y); field_0xD10 = cM_scos(field_0xD14); field_0xCF4 = ZeroQuat; field_0xD84 = 2; } /* 000118E0-00011F74 .text harpoonMove__11daNpc_Ji1_cFv */ void daNpc_Ji1_c::harpoonMove() { /* Nonmatching */ } /* 00011F74-00011F98 .text daNpc_Ji1_Execute__FP11daNpc_Ji1_c */ static BOOL daNpc_Ji1_Execute(daNpc_Ji1_c* i_this) { i_this->_execute(); return true; } /* 00011F98-00011FA0 .text daNpc_Ji1_IsDelete__FP11daNpc_Ji1_c */ static BOOL daNpc_Ji1_IsDelete(daNpc_Ji1_c*) { return true; } /* 00011FA0-00011FC0 .text daNpc_Ji1_Delete__FP11daNpc_Ji1_c */ static BOOL daNpc_Ji1_Delete(daNpc_Ji1_c* i_this) { return i_this->_delete(); } /* 00011FC0-00011FE0 .text daNpc_Ji1_Create__FP10fopAc_ac_c */ static cPhs_State daNpc_Ji1_Create(fopAc_ac_c* i_this) { return static_cast(i_this)->_create(); } static actor_method_class l_daNpc_Ji1_Method = { (process_method_func)daNpc_Ji1_Create, (process_method_func)daNpc_Ji1_Delete, (process_method_func)daNpc_Ji1_Execute, (process_method_func)daNpc_Ji1_IsDelete, (process_method_func)daNpc_Ji1_Draw, }; actor_process_profile_definition g_profile_NPC_JI1 = { /* LayerID */ fpcLy_CURRENT_e, /* ListID */ 0x0007, /* ListPrio */ fpcPi_CURRENT_e, /* ProcName */ PROC_NPC_JI1, /* Proc SubMtd */ &g_fpcLf_Method.base, /* Size */ sizeof(daNpc_Ji1_c), /* SizeOther */ 0, /* Parameters */ 0, /* Leaf SubMtd */ &g_fopAc_Method.base, /* Priority */ PRIO_NPC_JI1, /* Actor SubMtd */ &l_daNpc_Ji1_Method, /* Status */ fopAcStts_UNK40000_e, /* Group */ fopAc_ENEMY_e, /* CullType */ fopAc_CULLBOX_CUSTOM_e, };