mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-11 05:08:07 -04:00
2833 lines
72 KiB
C++
2833 lines
72 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: d_a_npc_kk1.cpp
|
|
//
|
|
|
|
#include "d/actor/d_a_npc_kk1.h"
|
|
#include "SSystem/SComponent/c_counter.h"
|
|
#include "d/actor/d_a_obj_roten.h"
|
|
#include "d/actor/d_a_player.h"
|
|
#include "d/actor/d_a_swc00.h"
|
|
#include "d/actor/d_a_tama.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "d/d_procname.h"
|
|
#include "d/d_priority.h"
|
|
#include "d/d_s_play.h"
|
|
|
|
|
|
|
|
|
|
|
|
static daNpc_Kk1_HIO_c l_HIO;
|
|
|
|
#define L_CHECK_SZ 20
|
|
fopAc_ac_c* l_check_inf[L_CHECK_SZ];
|
|
s32 l_check_wrk;
|
|
|
|
|
|
inline int daNpc_Kk1_c::getSWbit() {
|
|
return this->field_0x7B5;
|
|
}
|
|
|
|
|
|
|
|
/* 000000EC-00000150 .text __ct__15daNpc_Kk1_HIO_cFv */
|
|
daNpc_Kk1_HIO_c::daNpc_Kk1_HIO_c() {
|
|
|
|
static daNpc_Kk1_c::prm_tbl a_prm_tbl[] = {0x2000251C, 0xE002DAE4, 0x00002AF8, 0x0000D508, 0x064004B0, 150.0, 0x000000D2, 0x0028005A,
|
|
0x001E0014, 0x00041000, 40.0, 3.0, 0x3E4CCCCD, 0.5, 13.0, 1.0,
|
|
0x3DCCCCCD, 10.0, 1.0, 0x3E4CCCCD, 1000.0};
|
|
memcpy(&field_0xC,a_prm_tbl,0x54);
|
|
mNo = -1;
|
|
field_0xA = -1;
|
|
return;
|
|
}
|
|
|
|
char* l_evn_tbl[] = {
|
|
"run_start", "run_start_2", "catch", "get_empty_btl",
|
|
"bye", "otoboke", "runaway", "bye_2",
|
|
};
|
|
|
|
|
|
/* 00000198-000001E4 .text nodeCB_Head__FP7J3DNodei */
|
|
static BOOL nodeCB_Head(J3DNode* arg0, int arg1) {
|
|
daNpc_Kk1_c* temp_r3;
|
|
|
|
if (arg1 == 0) {
|
|
temp_r3 = (daNpc_Kk1_c*)j3dSys.mModel->getUserArea();
|
|
if (temp_r3 != NULL) {
|
|
temp_r3->_nodeCB_Head(arg0, j3dSys.mModel);
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 000001E4-00000304 .text _nodeCB_Head__11daNpc_Kk1_cFP7J3DNodeP8J3DModel */
|
|
void daNpc_Kk1_c::_nodeCB_Head(J3DNode* node, J3DModel* model) {
|
|
/* Nonmatching */ //.bss Misallocated?
|
|
|
|
static cXyz a_eye_pos_off(14.0f,18.0f,0.0f);
|
|
u16 joint_number = ((J3DJoint*)(node))->getJntNo();
|
|
mDoMtx_stack_c::copy(model->getAnmMtx(joint_number));
|
|
mDoMtx_stack_c::multVecZero(&field_0x750);
|
|
mDoMtx_stack_c::multVec(&a_eye_pos_off,&field_0x72C);
|
|
mDoMtx_stack_c::XrotM(m_jnt.getHead_y());
|
|
mDoMtx_stack_c::ZrotM(-m_jnt.getHead_x());
|
|
cMtx_copy(mDoMtx_stack_c::get(),j3dSys.mCurrentMtx);
|
|
model->setAnmMtx(joint_number, mDoMtx_stack_c::now);
|
|
|
|
}
|
|
|
|
|
|
/* 00000340-0000038C .text nodeCB_BackBone__FP7J3DNodei */
|
|
static BOOL nodeCB_BackBone(J3DNode *param_1, int param_2) {
|
|
|
|
if (param_2 == 0) {
|
|
J3DModel* model = (J3DModel*)j3dSys.mModel;
|
|
if ((J3DModel *)(j3dSys.mModel)->getUserArea() != (J3DModel *)0x0) {
|
|
((daNpc_Kk1_c*)(model->getUserArea()))->_nodeCB_BackBone(param_1,model);
|
|
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 0000038C-0000042C .text _nodeCB_BackBone__11daNpc_Kk1_cFP7J3DNodeP8J3DModel */
|
|
void daNpc_Kk1_c::_nodeCB_BackBone(J3DNode* node, J3DModel* model) {
|
|
u16 joint_number = static_cast<J3DJoint*>(node)->getJntNo();
|
|
MTXCopy(model->getAnmMtx(joint_number), mDoMtx_stack_c::now);
|
|
mDoMtx_stack_c::XrotM(this->m_jnt.getBackbone_y());
|
|
mDoMtx_stack_c::ZrotM(-this->m_jnt.getBackbone_x());
|
|
|
|
MTXCopy(mDoMtx_stack_c::now, j3dSys.mCurrentMtx);
|
|
model->setAnmMtx(joint_number, mDoMtx_stack_c::now);
|
|
}
|
|
|
|
/* 0000042C-0000044C .text CheckCreateHeap__FP10fopAc_ac_c */
|
|
static void CheckCreateHeap(fopAc_ac_c* param_1) {
|
|
|
|
((daNpc_Kk1_c*)param_1)->CreateHeap();
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 0000044C-000004EC .text searchActor_SWC00__FPvPv */
|
|
void* searchActor_SWC00(void* i_swc, void* i_kk1) {
|
|
swc00_class* SwcAct = static_cast<swc00_class*>(i_swc);
|
|
daNpc_Kk1_c* Kk1Act = static_cast<daNpc_Kk1_c*>(i_kk1);
|
|
if (
|
|
l_check_wrk < L_CHECK_SZ && fopAc_IsActor(SwcAct) &&
|
|
fopAcM_GetName(SwcAct) == PROC_SWC00 && daSwc00_getType(SwcAct) == 0 &&
|
|
daSwc00_getSw1No(SwcAct) == Kk1Act->getSWbit()
|
|
){
|
|
l_check_inf[l_check_wrk] = SwcAct;
|
|
l_check_wrk++;
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
|
|
/* 000004EC-00000598 .text init_KK1_0__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::init_KK1_0() {
|
|
|
|
bool uVar2;
|
|
|
|
|
|
|
|
if ((dComIfGs_isEventBit(0x2d01) != 0) && ((dKy_daynight_check() == 0) || (dComIfGs_isEventBit(0xe08) == 0))) {
|
|
|
|
set_action(&daNpc_Kk1_c::wait_action1,NULL);
|
|
uVar2 = 1;
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
extern dCcD_SrcCyl dNpc_cyl_src;
|
|
|
|
/* 00000598-000007B0 .text createInit__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::createInit() {
|
|
|
|
for (int i = 0; i < 8; ++i) {
|
|
mEvtIDTbl[i] = dComIfGp_evmng_getEventIdx(l_evn_tbl[i], 0xFF);
|
|
}
|
|
mEventCut.setActorInfo2("Kk1", this);
|
|
field_0x7B5 = base.mParameters >> 8;
|
|
|
|
u8 params = base.mParameters >> 0x10;
|
|
if (params != 0xff) {
|
|
mRunPath.setInf(params, current.roomNo, true);
|
|
if (mRunPath.mPath != NULL) {
|
|
fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e);
|
|
set_pthPoint(0);
|
|
}
|
|
else {
|
|
return FALSE;
|
|
}
|
|
}
|
|
if (mRunPath.mPath == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e;
|
|
|
|
switch(field_0x820){
|
|
case 0:
|
|
break;
|
|
}
|
|
|
|
attention_info.distances[1] = 0xA9;
|
|
attention_info.distances[3] = 0xA9;
|
|
|
|
gravity = -4.5f;
|
|
field_0x81A = 0xC;
|
|
|
|
|
|
bool control=0;
|
|
switch(field_0x820){
|
|
case 0:
|
|
control = init_KK1_0();
|
|
break;
|
|
default:
|
|
control = 0;
|
|
break;
|
|
}
|
|
if(control == 0){
|
|
return false;
|
|
}
|
|
|
|
|
|
field_0x71E = current.angle;
|
|
shape_angle = field_0x71E;
|
|
mStts.Init(0xFF, 0xff, this);
|
|
mCyl.SetStts(&mStts);
|
|
mCyl.Set(dNpc_cyl_src);
|
|
mObjAcch.CrrPos(*dComIfG_Bgsp());
|
|
play_animation();
|
|
tevStr.mRoomNo = dComIfG_Bgsp()->GetRoomId(mObjAcch.m_gnd);
|
|
tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mObjAcch.m_gnd);
|
|
mpMorf->setMorf(0.0f);
|
|
setMtx(true);
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
/* 000007B0-00000918 .text play_animation__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::play_animation() {
|
|
|
|
cXyz floatload;
|
|
u32 uVar5 = 0;
|
|
play_btp_anm();
|
|
|
|
|
|
if (mObjAcch.ChkGroundHit() != 0) {
|
|
uVar5 = dComIfG_Bgsp()->GetMtrlSndId(mObjAcch.m_gnd);
|
|
}
|
|
|
|
field_0x7B2 = mpMorf->play(&eyePos,uVar5,dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
|
if(mpMorf->getFrame() < field_0x768){
|
|
field_0x7B2 = 1;
|
|
}
|
|
|
|
field_0x768 = mpMorf->getFrame();
|
|
|
|
switch(field_0x81A){
|
|
case 8:
|
|
if (mpMorf->checkFrame(4.0) != 0) {
|
|
|
|
floatload.set(0.0,-50.0,-15.0);
|
|
setBikon(floatload);
|
|
}
|
|
break;
|
|
case 9:
|
|
if (mpMorf->checkFrame(4.0) != 0) {
|
|
|
|
floatload.set(0.0,-50.0,0.0);
|
|
setBikon(floatload);
|
|
}
|
|
break;
|
|
}
|
|
play_eff_anm();
|
|
return;
|
|
}
|
|
|
|
/* 00000918-00000A98 .text setMtx__11daNpc_Kk1_cFb */
|
|
void daNpc_Kk1_c::setMtx(bool param_1) {
|
|
|
|
mpMorf->mpModel->setBaseScale(scale);
|
|
PSMTXTrans(mDoMtx_stack_c::get(),current.pos.x,current.pos.y,current.pos.z);
|
|
mDoMtx_stack_c::ZXYrotM(field_0x71E);
|
|
mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
mpMorf->calc();
|
|
cXyz someFloat1(0.0,120.0,30.0);
|
|
field_0x7F0.entry(field_0x808->getModelData(),field_0x804);
|
|
PSMTXTrans(mDoMtx_stack_c::get(),current.pos.x,current.pos.y,current.pos.z);
|
|
mDoMtx_stack_c::YrotM(current.angle.y);
|
|
mDoMtx_stack_c::transM(someFloat1.x,someFloat1.y,someFloat1.z);
|
|
|
|
field_0x808->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
|
|
(field_0x808->calc)();
|
|
mDoExt_bckAnmRemove(field_0x808->getModelData());
|
|
flwAse();
|
|
setAttention(param_1);
|
|
return;
|
|
}
|
|
|
|
/* 00000A98-00000AAC .text bckResID__11daNpc_Kk1_cFi */
|
|
int daNpc_Kk1_c::bckResID(int param_1) {
|
|
static const u32 a_resID_tbl[] = {9,10,11,12,4,5,6,7,1,2,3,8};
|
|
return a_resID_tbl[param_1];
|
|
|
|
}
|
|
|
|
/* 00000AAC-00000AC0 .text btpResID__11daNpc_Kk1_cFi */
|
|
int daNpc_Kk1_c::btpResID(int param_1) {
|
|
|
|
static const u32 a_resID_tbl_2[] = {0x00000011};
|
|
return a_resID_tbl_2[param_1];
|
|
}
|
|
|
|
/* 00000AC0-00000BC4 .text setBtp__11daNpc_Kk1_cFScb */
|
|
bool daNpc_Kk1_c::setBtp(signed char param_1, bool param_2) {
|
|
|
|
J3DAnmTexPattern *pJVar1;
|
|
J3DModel* pJVar5 = mpMorf->getModel();
|
|
if (param_1 < 0) {
|
|
return false;
|
|
}
|
|
else {
|
|
|
|
pJVar1 = (J3DAnmTexPattern*)dComIfG_getObjectIDRes(&mArcName,btpResID(param_1));
|
|
if (pJVar1 == 0) {
|
|
u32 uVar2 = JUTAssertion::getSDevice();
|
|
JUTAssertion::showAssert(uVar2,"d_a_npc_kk1.cpp",0x234,"a_btp != 0");
|
|
OSPanic("d_a_npc_kk1.cpp",0x234,"Halt");
|
|
}
|
|
field_0x819 = param_1;
|
|
field_0x6EC = 0;
|
|
field_0x6EE = 0;
|
|
return mBtpAnm.init(pJVar5->getModelData(),pJVar1,1,0,1.0,0,-1,param_2,0) != 0;
|
|
}
|
|
|
|
}
|
|
|
|
/* 00000BC4-00000BE4 .text init_texPttrnAnm__11daNpc_Kk1_cFScb */
|
|
void daNpc_Kk1_c::init_texPttrnAnm(signed char param_1, bool param_2) {
|
|
setBtp(param_1, param_2);
|
|
return;
|
|
}
|
|
|
|
/* 00000BE4-00000C80 .text play_btp_anm__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::play_btp_anm() {
|
|
|
|
u8 uVar1;
|
|
uVar1 = mBtpAnm.getBtpAnm()->getFrameMax();// getAnmTable()->mMaxFrame;
|
|
if ((field_0x819 != 0) ||
|
|
(cLib_calcTimer(&field_0x6EE) == 0)) {
|
|
field_0x6EC = field_0x6EC + 1;
|
|
if (field_0x6EC >= uVar1) {
|
|
if (field_0x819 != 0) {
|
|
field_0x6EC = (char)uVar1;
|
|
return;
|
|
|
|
}
|
|
else {
|
|
field_0x6EE = cLib_getRndValue(0x3c,0x5a);
|
|
field_0x6EC = 0;
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 00000C80-00000CFC .text play_eff_anm__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::play_eff_anm() {
|
|
|
|
s16 temp_r5;
|
|
field_0x800 += 1;
|
|
if(field_0x800 >= 0x1E){
|
|
field_0x800 = 0x1D;
|
|
}
|
|
temp_r5 = (short)field_0x7DC.getBtkAnm()->getFrameMax(); //TODO: It seems like the short cast is required here.
|
|
field_0x802 += 1;
|
|
|
|
|
|
if(field_0x802 >= temp_r5){
|
|
field_0x802 = temp_r5 - 1;
|
|
}
|
|
temp_r5 = (short)field_0x7F0.getBckAnm()->getFrameMax();
|
|
field_0x804 += 1;
|
|
if(field_0x804 >= temp_r5){
|
|
field_0x804 = 0x3B;
|
|
}
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
/* 00000CFC-00000DDC .text setAnm_anm__11daNpc_Kk1_cFPQ211daNpc_Kk1_c9anm_prm_c */
|
|
void daNpc_Kk1_c::setAnm_anm(daNpc_Kk1_c::anm_prm_c* param_1) {
|
|
|
|
if (param_1->field0 < 0 || field_0x81A == param_1->field0) {
|
|
return;
|
|
}
|
|
|
|
dNpc_setAnmIDRes(mpMorf,param_1->fieldC,param_1->field4,param_1->field8,bckResID(param_1->field0),0xFFFFFFFF,&mArcName);
|
|
field_0x81A = param_1->field0;
|
|
delBikon();
|
|
delAse();
|
|
field_0x7BE = 1;
|
|
switch(field_0x81A){
|
|
case 1:
|
|
setAse();
|
|
field_0x804 = 0;
|
|
field_0x802 = 0;
|
|
field_0x800 = 0;
|
|
field_0x7BE = 0;
|
|
break;
|
|
}
|
|
this->field_0x7B2 = 0;
|
|
this->field_0x7B3 = 0;
|
|
this->field_0x768 = 0.0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
static daNpc_Kk1_c::anm_prm_c a_anm_prm_tblNUM[14] = {
|
|
{0,0,0,8.0,1.0,2},
|
|
{1,0,0,8.0,1.0,2},
|
|
{2,0,0,8.0,1.0,2},
|
|
{3,0,0,8.0,1.0,2},
|
|
{4,0,0,8.0,1.0,2},
|
|
{5,0,0,8.0,1.0,2},
|
|
{6,0,0,8.0,1.0,2},
|
|
{7,0,0,8.0,1.0,2},
|
|
{8,0,0,8.0,1.0,0},
|
|
{9,0,0,8.0,1.0,0},
|
|
{10,0,0,8.0,1.0,0},
|
|
{11,0,0,8.0,1.0,0},
|
|
{0,0,0,0.0,0.0,0},
|
|
{0,0,0,0.0,0.0,0},
|
|
|
|
};
|
|
static daNpc_Kk1_c::anm_prm_c a_anm_prm_tbl2[8] = {
|
|
0xFF,0xFF,0000, 0.0, 0.0, 0xFFFFFFFF,
|
|
0x00,00,0000, 8.0, 1.0, 0x00000002,
|
|
0xFF,0xFF,0000, 0.0, 0.0, 0xFFFFFFFF,
|
|
0x03,00,0000, 8.0, 1.0, 0x00000002,
|
|
0x00,00,0000, 8.0, 1.0, 0x00000002,
|
|
0xFF,0xFF,0000, 0.0, 0.0, 0xFFFFFFFF,
|
|
0x00,00,0000, 8.0, 1.0, 0x00000002,
|
|
0x00,00,0000, 8.0, 1.0, 0x00000002,
|
|
|
|
};
|
|
static daNpc_Kk1_c::anm_prm_c a_anm_prm_tbl3[13] = {
|
|
{0,0,0,8.0,1.0,2},
|
|
{1,0,0,8.0,1.0,2},
|
|
{2,0,0,8.0,1.0,2},
|
|
{3,0,0,8.0,1.0,2},
|
|
{4,0,0,8.0,1.0,2},
|
|
{5,0,0,8.0,1.0,2},
|
|
{6,0,0,8.0,1.0,2},
|
|
{7,0,0,8.0,1.0,2},
|
|
8,00,0000, 8.0, 1.0, 0,
|
|
9,00,0000, 8.0, 1.0, 0,
|
|
10,00,0000, 8.0, 1.0, 0,
|
|
10,00,0000, 8.0, 1.0, 0,
|
|
11,00,0000, 8.0, 1.0, 0,
|
|
|
|
|
|
};
|
|
|
|
|
|
/* 00000DDC-00000E4C .text setAnm_NUM__11daNpc_Kk1_cFii */
|
|
void daNpc_Kk1_c::setAnm_NUM(int param_1, int param_2) {
|
|
|
|
if (param_2 != 0) {
|
|
init_texPttrnAnm(a_anm_prm_tblNUM[param_1].field1,true);
|
|
}
|
|
setAnm_anm(&a_anm_prm_tblNUM[param_1]);
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
/* 00000E4C-00000EB8 .text setAnm__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::setAnm() {
|
|
|
|
init_texPttrnAnm(a_anm_prm_tbl2[field_0x81C].field1,true);
|
|
setAnm_anm(&a_anm_prm_tbl2[field_0x81C]);
|
|
return;
|
|
|
|
}
|
|
|
|
/* 00000EB8-00000EBC .text chngAnmTag__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::chngAnmTag() {
|
|
return;
|
|
}
|
|
|
|
/* 00000EBC-00000EC0 .text ctrlAnmTag__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::ctrlAnmTag() {
|
|
return;
|
|
}
|
|
|
|
/* 00000EC0-00000FA0 .text chngAnmAtr__11daNpc_Kk1_cFUc */
|
|
void daNpc_Kk1_c::chngAnmAtr(unsigned char param_1) {
|
|
fopAc_ac_c* iVar1;
|
|
int local_18[4];
|
|
switch(mCurrMsgNo){
|
|
case 0x1CAC:
|
|
iVar1 = searchByID(mPartnerProcID,local_18);
|
|
if(iVar1 != 0 && local_18[0] == 0){
|
|
field_0x738 = iVar1->current.pos;
|
|
field_0x738.y += l_HIO.field_0x20 + 200.0f;
|
|
field_0x81E = 2;
|
|
field_0x7C4 = 1;
|
|
field_0x7A2 = l_HIO.field_0x2E;
|
|
}
|
|
break;
|
|
}
|
|
if((param_1 == mAnimationNum) || (param_1 > 0xD)){
|
|
return;
|
|
}
|
|
|
|
mAnimationNum = param_1;
|
|
setAnm_ATR();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
/* 00000FA0-00001080 .text ctrlAnmAtr__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::ctrlAnmAtr() {
|
|
|
|
switch(mAnimationNum){
|
|
case 8:
|
|
if ((field_0x7B2 != '\0')) {
|
|
current.angle.y += 0x8000;
|
|
setAnm_NUM(0,1);
|
|
mpMorf->setMorf(0.0);
|
|
mAnimationNum = 0;
|
|
}
|
|
case 9:
|
|
case 12:
|
|
return;
|
|
case 11:
|
|
if (this->field_0x7B2 != '\0') {
|
|
setAnm_NUM(6,1);
|
|
this->mAnimationNum = 6;
|
|
return;
|
|
}
|
|
break;
|
|
case 10:
|
|
if(field_0x7B2 != 0){
|
|
setAnm_NUM(0,1);
|
|
mAnimationNum = 0;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* 00001080-000010E4 .text setAnm_ATR__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::setAnm_ATR() {
|
|
|
|
init_texPttrnAnm(a_anm_prm_tbl3[mAnimationNum].field1,true);
|
|
setAnm_anm(((daNpc_Kk1_c::anm_prm_c *)(&a_anm_prm_tbl3[mAnimationNum])));
|
|
return;
|
|
}
|
|
|
|
/* 000010E4-000011A0 .text anmAtr__11daNpc_Kk1_cFUs */
|
|
void daNpc_Kk1_c::anmAtr(unsigned short param_1) {
|
|
|
|
u8 uVar1;
|
|
switch(param_1){
|
|
case 6:
|
|
|
|
if (field_0x822 == 0) {
|
|
chngAnmAtr(dComIfGp_getMesgAnimeAttrInfo());
|
|
field_0x822 += 1;
|
|
}
|
|
uVar1 = dComIfGp_getMesgAnimeTagInfo();
|
|
if (( uVar1 != 0xFF) &&
|
|
(uVar1 != field_0x818)) {
|
|
dComIfGp_clearMesgAnimeTagInfo();
|
|
field_0x818 = uVar1;
|
|
chngAnmTag();
|
|
}
|
|
break;
|
|
case 14:
|
|
field_0x822 = 0;
|
|
break;
|
|
}
|
|
ctrlAnmAtr();
|
|
ctrlAnmTag();
|
|
|
|
}
|
|
|
|
/* 000011A0-0000149C .text next_msgStatus__11daNpc_Kk1_cFPUl */
|
|
u16 daNpc_Kk1_c::next_msgStatus(unsigned long* param_1) {
|
|
|
|
u8 temp_r3;
|
|
|
|
u16 var_r0 = 0xF;
|
|
switch (*param_1) { //TODO: Make Enum.
|
|
case 0x1C85:
|
|
*param_1 = 0x1C86;
|
|
break;
|
|
case 0x1C86:
|
|
*param_1 = 0x1CA7;
|
|
break;
|
|
case 0x1CA7:
|
|
*param_1 = 0x1CA8;
|
|
break;
|
|
case 0x1C88:
|
|
*param_1 = 0x1C89;
|
|
break;
|
|
case 0x1C89:
|
|
*param_1 = 0x1C8A;
|
|
break;
|
|
case 0x1C8A:
|
|
*param_1 = 0x1CA9;
|
|
break;
|
|
case 0x1C8B:
|
|
*param_1 = 0x1CAC;
|
|
field_0x7B8 = 1;
|
|
break;
|
|
case 0x1C8D:
|
|
*param_1 = 0x1C8E;
|
|
break;
|
|
case 0x1C8E:
|
|
*param_1 = 0x1C8F;
|
|
break;
|
|
case 0x1C8F:
|
|
switch (mpCurrMsg->mSelectNum) {
|
|
case 0:
|
|
*param_1 = 0x1C90;
|
|
break;
|
|
case 1:
|
|
*param_1 = 0x1CA5;
|
|
field_0x7AE += 1;
|
|
break;
|
|
}
|
|
break;
|
|
case 0x1CA5:
|
|
*param_1 = 0x1C8F;
|
|
break;
|
|
case 0x1C90:
|
|
*param_1 = 0x1C91;
|
|
break;
|
|
case 0x1C91:
|
|
switch (mpCurrMsg->mSelectNum) {
|
|
case 0:
|
|
*param_1 = 0x1C93;
|
|
break;
|
|
case 1:
|
|
*param_1 = 0x1C92;
|
|
field_0x7AE += 1;
|
|
break;
|
|
}
|
|
break;
|
|
case 0x1C92:
|
|
*param_1 = 0x1C91;
|
|
break;
|
|
case 0x1C93:
|
|
*param_1 = 0x1C94;
|
|
break;
|
|
case 0x1C94:
|
|
switch ((s32) mpCurrMsg->mSelectNum) {
|
|
case 0:
|
|
*param_1 = 0x1C96;
|
|
break;
|
|
case 1:
|
|
*param_1 = 0x1C95;
|
|
field_0x7AE += 1;
|
|
break;
|
|
}
|
|
break;
|
|
case 0x1C95:
|
|
*param_1 = 0x1C96;
|
|
break;
|
|
case 0x1C96:
|
|
*param_1 = 0x1C97;
|
|
break;
|
|
case 0x1C97:
|
|
|
|
switch (mpCurrMsg->mSelectNum) {
|
|
case 0:
|
|
*param_1 = 0x1C98;
|
|
break;
|
|
case 1:
|
|
*param_1 = ((field_0x7AE > 1) ? 1 : 2)+0x1C99;
|
|
}
|
|
break;
|
|
case 0x1C98:
|
|
temp_r3 = mpCurrMsg->mSelectNum;
|
|
switch ((s32) temp_r3) {
|
|
case 0:
|
|
*param_1 = 0x1C99;
|
|
break;
|
|
case 1:
|
|
var_r0 = 0x10;
|
|
break;
|
|
}
|
|
break;
|
|
case 0x1C99:
|
|
switch (mpCurrMsg->mSelectNum) {
|
|
case 0:
|
|
*param_1 = ((field_0x7AE > 1) ? 1 : 2)+0x1C9B;
|
|
break;
|
|
case 1:
|
|
*param_1 = 0x1C9A;
|
|
}
|
|
break;
|
|
case 0x1C9B:
|
|
*param_1 = 0x1C9D;
|
|
break;
|
|
case 0x1C9D:
|
|
*param_1 = 0x1C9E;
|
|
break;
|
|
case 0x1C9E:
|
|
*param_1 = 0x1CAA;
|
|
break;
|
|
case 0x1CAA:
|
|
*param_1 = 0x1C9F;
|
|
break;
|
|
case 0x1C9F:
|
|
var_r0 = 0x10;
|
|
break;
|
|
case 0x1CA1:
|
|
*param_1 = 0x1CA2;
|
|
break;
|
|
case 0x1CA2:
|
|
*param_1 = 0x1CA3;
|
|
break;
|
|
case 0x1CA3:
|
|
*param_1 = 0x1CA4;
|
|
break;
|
|
case 0x1CA4:
|
|
*param_1 = 0x1CAB;
|
|
break;
|
|
default:
|
|
var_r0 = 0x10;
|
|
break;
|
|
}
|
|
return var_r0;
|
|
}
|
|
|
|
/* 0000149C-00001534 .text getMsg_KK1_0__11daNpc_Kk1_cFv */
|
|
u32 daNpc_Kk1_c::getMsg_KK1_0() {
|
|
|
|
if (dKy_daynight_check() == 1) { //If Night
|
|
if (field_0x7BA != 0) {
|
|
|
|
field_0x7BA = 0;
|
|
return 0x1ca1;
|
|
}
|
|
else {
|
|
return 0x1c8b;
|
|
}
|
|
}
|
|
else { //If Day
|
|
if (dComIfGs_isEventBit(0xe08) == 0) {
|
|
if(dComIfGs_isEventBit(0xe10)){
|
|
return 0x1C87;
|
|
}else{
|
|
return 0x1C88;
|
|
}
|
|
}
|
|
else {
|
|
return 0x1c85;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 00001534-00001570 .text getMsg__11daNpc_Kk1_cFv */
|
|
u32 daNpc_Kk1_c::getMsg() {
|
|
u32 result = 0;
|
|
switch((int)field_0x820){
|
|
case 0:
|
|
result = getMsg_KK1_0();
|
|
break;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/* 00001570-000015FC .text eventOrder__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::eventOrder() {
|
|
char cVar1 = field_0x81B;
|
|
if ((cVar1 == '\x01') || (cVar1 == '\x02')) {
|
|
eventInfo.onCondition(dEvtCnd_CANTALK_e);
|
|
if(field_0x81B == '\x01'){ //1 = Speaking?
|
|
fopAcM_orderSpeakEvent(this);
|
|
}
|
|
}else if (cVar1 >= 0x03){
|
|
mEvtIDIdx = (cVar1 - 3);
|
|
fopAcM_orderOtherEventId(this,mEvtIDTbl[mEvtIDIdx],0x00ff,0xffff,0,1);
|
|
|
|
}
|
|
}
|
|
/* 000015FC-000016DC .text checkOrder__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::checkOrder() {
|
|
|
|
if(eventInfo.checkCommandDemoAccrpt()){
|
|
if(dComIfGp_evmng_startCheck(mEvtIDTbl[mEvtIDIdx]) && (s8)field_0x81B >= 0x03){
|
|
switch(mEvtIDIdx){
|
|
case 4:
|
|
setAnm_NUM(0,1);
|
|
break;
|
|
case 5:
|
|
case 3:
|
|
default:
|
|
break;
|
|
}
|
|
|
|
field_0x81B = 0;
|
|
mAnimationNum = 0xFF;
|
|
field_0x818 = 0xFF;
|
|
};
|
|
|
|
}
|
|
else{
|
|
if((this->checkCommandTalk() != 0)&&((field_0x81B == 1) ||(field_0x81B == 2))){
|
|
this->field_0x81B = 0;
|
|
this->field_0x7C3 = 1;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/* 000016DC-00001774 .text chk_talk__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::chk_talk() {
|
|
bool retval;
|
|
if(dComIfGp_event_chkTalkXY()){
|
|
retval = true;
|
|
if(dComIfGp_evmng_ChkPresentEnd() != 0){
|
|
field_0x7B4 = dComIfGp_event_getPreItemNo();
|
|
retval = true;
|
|
}else{
|
|
retval = false;
|
|
}
|
|
}else{
|
|
field_0x7B4 = 0xFF;
|
|
retval = true;
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
/* 00001774-000017B4 .text chk_parts_notMov__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::chk_parts_notMov() {
|
|
bool retval = 0;
|
|
if((field_0x772 != m_jnt.mAngles[0][1])||
|
|
(field_0x774 != m_jnt.mAngles[1][1])||
|
|
(mAngleY != current.angle.y)){
|
|
retval = 1;
|
|
}
|
|
return retval;
|
|
|
|
}
|
|
|
|
/* 000017B4-00001808 .text searchByID__11daNpc_Kk1_cFUiPi */
|
|
fopAc_ac_c* daNpc_Kk1_c::searchByID(fpc_ProcID param_1, int* param_2) {
|
|
fopAc_ac_c *fiveActors[4];
|
|
fiveActors[0] = NULL;
|
|
*param_2 = 0;
|
|
if(!fopAcM_SearchByID(param_1,fiveActors)){
|
|
*param_2 = 1;
|
|
}
|
|
return fiveActors[0];
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 00001808-000018B8 .text partner_search_sub__11daNpc_Kk1_cFPFPvPv_Pv */
|
|
bool daNpc_Kk1_c::partner_search_sub(void* (*param_1)(void*,void*)) {
|
|
|
|
bool retVal = false;
|
|
mPartnerProcID = -1;
|
|
l_check_wrk = 0;
|
|
|
|
for(int i = 0; i != 0x14; i++){
|
|
l_check_inf[i] = 0x0000;
|
|
}
|
|
fpcEx_Search(*param_1, this);
|
|
if(l_check_wrk != 0){
|
|
mPartnerProcID = fopAcM_GetID(l_check_inf[0]);
|
|
retVal = 1;
|
|
}
|
|
|
|
return retVal;
|
|
}
|
|
|
|
/* 000018B8-00001924 .text partner_search__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::partner_search() {
|
|
|
|
bool cVar1;
|
|
if(field_0x821 == '\x01'){
|
|
|
|
switch(field_0x820){
|
|
|
|
|
|
case 0:
|
|
cVar1 = partner_search_sub(searchActor_SWC00);
|
|
break;
|
|
default:
|
|
cVar1 = 1;
|
|
}
|
|
if(cVar1){
|
|
field_0x821 += 1;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
|
|
/* 00001924-00001B10 .text lookBack__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::lookBack() {
|
|
|
|
field_0x772 = m_jnt.getHead_y();
|
|
field_0x774 = m_jnt.getBackbone_y();
|
|
mAngleY = current.angle.y;
|
|
cXyz vec1;
|
|
cXyz vec2 = current.pos;
|
|
vec2.y = eyePos.y;
|
|
|
|
vec1.setall(0.0);
|
|
|
|
int Int1;
|
|
fopAc_ac_c *pActor;
|
|
cXyz* vecPtr1 = NULL;
|
|
s16 targetY = current.angle.y;
|
|
s8 state = field_0x81E;
|
|
bool someBool = field_0x7C4;
|
|
switch(state){
|
|
case 1:
|
|
field_0x738 = dNpc_playerEyePos(-20.0);
|
|
vec1 = field_0x738;
|
|
vecPtr1 = &vec1;
|
|
break;
|
|
case 2:
|
|
vec1 = field_0x738;
|
|
vecPtr1 = &vec1;
|
|
break;
|
|
case 3:
|
|
targetY = field_0x7AC;
|
|
break;
|
|
case 4:
|
|
if ((pActor = searchByID(field_0x700,&Int1),pActor != NULL) && Int1 == 0){
|
|
field_0x738 = pActor->current.pos;
|
|
field_0x738.y = pActor->eyePos.y;
|
|
vec1 = field_0x738;
|
|
vecPtr1 = &vec1;
|
|
}
|
|
break;
|
|
case 5:
|
|
kyorokyoro();
|
|
vec1 = field_0x738;
|
|
vecPtr1 = &vec1;
|
|
break;
|
|
}
|
|
m_jnt.lookAtTarget_2(¤t.angle.y,vecPtr1,vec2,targetY,l_HIO.field_0x1E,someBool);
|
|
return;
|
|
|
|
}
|
|
|
|
/* 00001B10-00001B90 .text chkAttention__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::chkAttention() {
|
|
fopAc_ac_c* npcPtr;
|
|
if((dComIfGp_getAttention().LockonTruth()) != 0){
|
|
npcPtr = dComIfGp_getAttention().LockonTarget(0);
|
|
return this == npcPtr;
|
|
|
|
}else{
|
|
npcPtr = dComIfGp_getAttention().ActionTarget(0);
|
|
return this==npcPtr;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
/* 00001B90-00001BE8 .text setAttention__11daNpc_Kk1_cFb */
|
|
void daNpc_Kk1_c::setAttention(bool i_attn_flag) {
|
|
|
|
f32 f1 = current.pos.z;
|
|
f32 f2 = current.pos.y + l_HIO.field_0x20;
|
|
f32 f3 = current.pos.x;
|
|
|
|
attention_info.position.set(f3,f2,f1);
|
|
|
|
|
|
if((field_0x778 == 0) && !i_attn_flag){return;}
|
|
|
|
f2 = field_0x72C.z;
|
|
f1 = field_0x72C.y;
|
|
|
|
eyePos.set(field_0x72C.x,f1,f2);
|
|
|
|
}
|
|
|
|
/* 00001BE8-00001C70 .text decideType__11daNpc_Kk1_cFi */
|
|
BOOL daNpc_Kk1_c::decideType(int) {
|
|
BOOL ret;
|
|
if(field_0x81F > 0){
|
|
ret = true;
|
|
}
|
|
else{
|
|
field_0x81F = 1;
|
|
field_0x820 = 0;
|
|
strcpy(&mArcName,"Kk");
|
|
ret = false;
|
|
if((field_0x81F != -1) && (field_0x820 != -1)){
|
|
ret = true;
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
/* 00001C70-00001D10 .text cut_init_RUN_START__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_RUN_START(int param_1) {
|
|
fopAc_ac_c* a_actor;
|
|
|
|
int idArray[2];
|
|
a_actor = searchByID(mPartnerProcID,idArray);
|
|
if(a_actor == NULL){
|
|
|
|
JUTAssertion::showAssert(JUTAssertion::getSDevice(),"d_a_npc_kk1.cpp",0x54f,"a_actor != 0");
|
|
OSPanic("d_a_npc_kk1.cpp",0x54f,"Halt");
|
|
}
|
|
dComIfGp_event_setItemPartner(a_actor);
|
|
mRunPath.nextIdxAuto();
|
|
return;
|
|
|
|
}
|
|
|
|
/* 00001D10-00001DD0 .text cut_move_RUN_START__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_RUN_START() {
|
|
daPy_py_c* pdVar2;
|
|
cXyz runPoint = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
short target = cLib_targetAngleY(¤t.pos,&runPoint);
|
|
cLib_addCalcAngleS(¤t.angle.y,target,l_HIO.field_0x30,l_HIO.field_0x32,0x80);
|
|
if(current.angle.y == target){
|
|
pdVar2 = g_dComIfG_gameInfo.play.mpPlayer[2];
|
|
pdVar2->mDemo.setDemoType(2);
|
|
pdVar2->mDemo.setDemoMode(1);
|
|
return true;
|
|
}
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
/* 00001DD0-00001E58 .text cut_init_RUN__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_RUN(int param_1) {
|
|
|
|
s32* somePtr = (s32*)g_dComIfG_gameInfo.play.mEvtManager.getMySubstanceP(param_1,"Timer",3);
|
|
field_0x798 = -1;
|
|
if(somePtr != NULL){
|
|
field_0x798 = *somePtr;
|
|
}
|
|
setAnm_NUM(4,1);
|
|
field_0x7B6 = 1;
|
|
field_0x815 = 2;
|
|
field_0x816 = 0;
|
|
return;
|
|
}
|
|
|
|
/* 00001E58-00001EAC .text cut_move_RUN__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_RUN() {
|
|
bool r3 = this->event_move(0);
|
|
|
|
if (this->field_0x798 < 0) {
|
|
return r3;
|
|
}
|
|
return cLib_calcTimer(&this->field_0x798) == 0;
|
|
}
|
|
|
|
/* 00001EAC-00001F08 .text cut_init_CATCH_START__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_CATCH_START(int) {
|
|
|
|
daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer();
|
|
player->onPlayerNoDraw();
|
|
setAnm_NUM(8,1);
|
|
mpMorf->setMorf(0.0);
|
|
|
|
}
|
|
|
|
/* 00001F08-00001F2C .text cut_move_CATCH_START__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_CATCH_START() {
|
|
if(field_0x7B2){
|
|
field_0x778 = 0;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* 00001F2C-00001FAC .text cut_init_CATCH_END__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_CATCH_END(int param_1) {
|
|
|
|
daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer();
|
|
player->offPlayerNoDraw();
|
|
current.angle.y += 0x8000;
|
|
setAnm_NUM(0,1);
|
|
mpMorf->setMorf(0.0);
|
|
field_0x81E = 1;
|
|
field_0x7C4 = 0;
|
|
m_jnt.mbTrn = true;
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
/* 00001FAC-00001FB4 .text cut_move_CATCH_END__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_CATCH_END() {
|
|
return true;
|
|
}
|
|
|
|
|
|
/* 00001FB4-000022BC .text cut_init_TRN__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_TRN(int) {
|
|
if(field_0x816 != 5){
|
|
u8 currentPoint = mRunPath.mCurrPointIndex;
|
|
if((currentPoint >= 0x19)&&(currentPoint <= 0x28)){
|
|
u8 sp58[] = {
|
|
0x28, 0x27, 0x26, 0x25,
|
|
0x24, 0x23, 0x22, 0x21,
|
|
0x22, 0x23, 0x24, 0x25,
|
|
0x26, 0x27, 0x28, 0x29,
|
|
};
|
|
|
|
mRunPath.mCurrPointIndex = sp58[currentPoint-0x19];
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
return;
|
|
}
|
|
mRunPath.setNearPathIndx(&dComIfGp_getLinkPlayer()->current.pos,100);
|
|
u8 linkPathIndex = mRunPath.mCurrPointIndex;
|
|
|
|
mRunPath.setNearPathIndx(¤t.pos,100);
|
|
u8 muuruPathIndex = mRunPath.mCurrPointIndex;
|
|
s16 maxPoint = mRunPath.maxPoint();
|
|
s16 midpointIndexFloat = maxPoint / 2.0f + 0.5f;
|
|
|
|
if(muuruPathIndex > linkPathIndex){
|
|
linkPathIndex += mRunPath.maxPoint();
|
|
}
|
|
|
|
s16 r26 = linkPathIndex - muuruPathIndex;
|
|
if(r26 > midpointIndexFloat){
|
|
r26 -= maxPoint;
|
|
}
|
|
mRunPath.mCurrPointIndex = currentPoint;
|
|
bool bVar10 = false;
|
|
if (r26 == 0){
|
|
cXyz muuruPoint = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
f32 muuruDistance = (current.pos - muuruPoint).absXZ();
|
|
f32 linkDistance = (dComIfGp_getLinkPlayer()->current.pos - muuruPoint).absXZ();
|
|
|
|
bVar10 = (linkDistance < muuruDistance);
|
|
}
|
|
if(r26 > 0 || bVar10){
|
|
mRunPath.decIdxAuto();
|
|
mRunPath.decIdxAuto();
|
|
mRunPath.mbGoingForwards = (mRunPath.mbGoingForwards ^ 1);
|
|
}
|
|
}
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
}
|
|
|
|
/* 000022BC-00002364 .text cut_move_TRN__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_TRN() {
|
|
cXyz a = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
s16 target = cLib_targetAngleY(¤t.pos,&a);
|
|
cLib_addCalcAngleS(¤t.angle.y,target,l_HIO.field_0x30,l_HIO.field_0x32,0x80);
|
|
s16 sVar1 = current.angle.y;
|
|
if(sVar1 == target){
|
|
shape_angle.y = sVar1;
|
|
return true;
|
|
}
|
|
return false;
|
|
|
|
}
|
|
|
|
/* 00002364-00002388 .text cut_init_BYE_START__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_BYE_START(int) {
|
|
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->onPlayerNoDraw();
|
|
field_0x7BB = 1;
|
|
return;
|
|
}
|
|
|
|
/* 00002388-00002390 .text cut_move_BYE_START__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_BYE_START() {
|
|
return true;
|
|
}
|
|
|
|
/* 00002390-00002490 .text cut_init_BYE__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_BYE(int param_1) {
|
|
|
|
s32* somePtr = (s32*)g_dComIfG_gameInfo.play.mEvtManager.getMySubstanceP(param_1,"Timer",3);
|
|
s32* somePtr2 = (s32*)g_dComIfG_gameInfo.play.mEvtManager.getMySubstanceP(param_1,"Delay",3);
|
|
s32* somePtr3 = (s32*)g_dComIfG_gameInfo.play.mEvtManager.getMySubstanceP(param_1,"prm_0",3);
|
|
|
|
field_0x798 = 0x1e;
|
|
|
|
if(somePtr != NULL){
|
|
field_0x798 = *somePtr;
|
|
}
|
|
field_0x79A = 0xffff;
|
|
if(somePtr2 != NULL){
|
|
field_0x79A = *somePtr2;
|
|
}
|
|
field_0x7B0 = 0;
|
|
if(somePtr3 != NULL){
|
|
field_0x7B0 = *somePtr3;
|
|
}
|
|
setAnm_NUM(4,1);
|
|
field_0x815 = 2;
|
|
field_0x7B6 = 1;
|
|
return;
|
|
}
|
|
|
|
/* 00002490-00002568 .text cut_move_BYE__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_BYE() {
|
|
|
|
event_move(0);
|
|
if (field_0x79A > 0) {
|
|
if (cLib_calcTimer(&field_0x79A) == 0) {
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->setPlayerPosAndAngle(&dComIfGp_getLinkPlayer()->current.pos,-0x3217);
|
|
daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer();
|
|
player->mDemo.setDemoType(3);
|
|
player->mDemo.setParam0(0);
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->mDemo.setDemoMode(9);
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->mDemo.setParam0(0x3217);
|
|
}
|
|
}
|
|
if (cLib_calcTimer(&field_0x798) == 0) {
|
|
if (field_0x7B0 == 0) {
|
|
speedF = 0.0;
|
|
}
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
|
|
}
|
|
|
|
/* 00002568-000025C8 .text cut_init_BYE_CONTINUE__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_BYE_CONTINUE(int param_1) {
|
|
s32* somePtr = (s32*)g_dComIfG_gameInfo.play.mEvtManager.getMySubstanceP(param_1,"Timer",3);
|
|
field_0x798 = 0x1E;
|
|
if(somePtr != NULL){
|
|
field_0x798 = *somePtr;
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
/* 000025C8-00002620 .text cut_move_BYE_CONTINUE__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_BYE_CONTINUE() {
|
|
|
|
this->event_move(0);
|
|
if (cLib_calcTimer(&this->field_0x798) == 0) {
|
|
speedF = 0.0;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* 00002620-000026BC .text cut_init_BYE_END__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_BYE_END(int) {
|
|
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->changeOriginalDemo();
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->changeDemoMode(4);
|
|
s16 angle_y = cLib_targetAngleY(&((daPy_py_c*)dComIfGp_getLinkPlayer())->current.pos,¤t.pos);
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->setPlayerPosAndAngle(&dComIfGp_getLinkPlayer()->current.pos, angle_y);
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->offPlayerNoDraw();
|
|
field_0x7C0 = 1;
|
|
}
|
|
|
|
/* 000026BC-000026C4 .text cut_move_BYE_END__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_BYE_END() {
|
|
return 1;
|
|
|
|
}
|
|
|
|
/* 000026C4-000026C8 .text cut_init_PLYER_TRN__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_PLYER_TRN(int) {
|
|
return;
|
|
}
|
|
|
|
/* 000026C8-000026D0 .text cut_move_PLYER_TRN__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_PLYER_TRN() {
|
|
return true;
|
|
}
|
|
|
|
/* 000026D0-00002744 .text cut_init_OTOBOKE__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_OTOBOKE(int) {
|
|
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(1);
|
|
player->changeOriginalDemo();
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->changeDemoMode(4);
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->setPlayerPosAndAngle(&dComIfGp_getLinkPlayer()->current.pos, current.angle.y);
|
|
field_0x798 = 2;
|
|
return;
|
|
}
|
|
|
|
/* 00002744-00002798 .text cut_move_OTOBOKE__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_OTOBOKE() {
|
|
if ( cLib_calcTimer(&this->field_0x798) == 0) {
|
|
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(1);
|
|
player->mDemo.setDemoType(2);
|
|
player->mDemo.setDemoMode(1);
|
|
return true;
|
|
}
|
|
return false;
|
|
|
|
}
|
|
|
|
/* 00002798-000028A4 .text cut_init_PLYER_MOV__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_PLYER_MOV(int param_1) {
|
|
|
|
cXyz cStack_1c;
|
|
s16 sVar3 = cLib_targetAngleY(¤t.pos,&dComIfGp_getLinkPlayer()->current.pos);
|
|
sVar3 = sVar3 - current.angle.y;
|
|
|
|
if(abs(sVar3)>0x2000){
|
|
dComIfGp_evmng_setGoal(&dComIfGp_getLinkPlayer()->current.pos);
|
|
}else{
|
|
cXyz local_28;
|
|
local_28.setall(0.0);
|
|
s32 sVar1 = (s16)((sVar3>0)?0x2800:-0x2800);
|
|
int added = current.angle.y+sVar1; //TODO: Necessary unused instruction?
|
|
mDoMtx_stack_c::transS(current.pos.x,current.pos.y,current.pos.z);
|
|
mDoMtx_stack_c::YrotM(current.angle.y+sVar1);
|
|
local_28.z = 150.0;
|
|
mDoMtx_stack_c::multVec(&local_28,&cStack_1c);
|
|
dComIfGp_evmng_setGoal(&cStack_1c);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 000028A4-000028AC .text cut_move_PLYER_MOV__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_PLYER_MOV() {
|
|
return true;
|
|
|
|
}
|
|
|
|
/* 000028AC-00002A40 .text cut_init_RUNAWAY_START__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_RUNAWAY_START(int param_1) {
|
|
|
|
|
|
|
|
s32* puVar2 = (s32*)g_dComIfG_gameInfo.play.mEvtManager.getMySubstanceP(param_1,"Timer",3);
|
|
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->changeOriginalDemo();
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->changeDemoMode(4);
|
|
|
|
short sVar4 = cLib_targetAngleY(&dComIfGp_getLinkPlayer()->current.pos,¤t.pos);
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->setPlayerPosAndAngle(&dComIfGp_getLinkPlayer()->current.pos,sVar4);
|
|
s16 r29=cLib_targetAngleY(¤t.pos,&dComIfGp_getLinkPlayer()->current.pos);
|
|
shape_angle.y = r29 + 0x8000;
|
|
|
|
|
|
|
|
field_0x7BF = 1;
|
|
speedF = 0.0;
|
|
m_jnt.mAngles[0][1] = 0;
|
|
m_jnt.mAngles[0][0] = 0;
|
|
m_jnt.mAngles[1][1] = 0;
|
|
m_jnt.mAngles[1][0] = 0;
|
|
field_0x81E = 0;
|
|
if (abs((s16)(r29 - current.angle.y)) > 0x3800) {
|
|
current.angle.y = r29 + 0x8000;
|
|
|
|
setAnm_NUM(8,1);
|
|
|
|
}
|
|
else {
|
|
|
|
cXyz local_28;
|
|
local_28.set(0.0,-50.0,0.0);
|
|
|
|
field_0x798 = 0x26;
|
|
if (puVar2 != NULL) {
|
|
field_0x798 = *puVar2;
|
|
}
|
|
current.angle.y = r29;
|
|
setAnm_NUM(0,1);
|
|
|
|
setBikon(local_28);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 00002A40-00002AD0 .text cut_move_RUNAWAY_START__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_RUNAWAY_START() {
|
|
if(field_0x81A == 8){
|
|
if(field_0x7B2 != 0){
|
|
daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer();
|
|
current.angle.y = cLib_targetAngleY(¤t.pos,&player->current.pos);
|
|
setAnm_NUM(0,1);
|
|
mpMorf->setMorf(0.0);
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}else{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
/* 00002AD0-00002B08 .text cut_init_RUNAWAY_END__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::cut_init_RUNAWAY_END(int) {
|
|
((daPy_py_c*)dComIfGp_getLinkPlayer())->offPlayerNoDraw();
|
|
field_0x7B6 = 0;
|
|
speedF = 0.0;
|
|
field_0x7C0 = 1;
|
|
|
|
return;
|
|
}
|
|
|
|
/* 00002B08-00002B10 .text cut_move_RUNAWAY_END__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::cut_move_RUNAWAY_END() {
|
|
return true;
|
|
}
|
|
|
|
/* 00002B10-00002D98 .text privateCut__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::privateCut(int param_1) {
|
|
enum { //TODO: Declare somewhere else?
|
|
RUN_START,
|
|
RUN,
|
|
CATCH_START,
|
|
CATCH_END,
|
|
TRN,
|
|
BYE_START,
|
|
BYE,
|
|
BYE_END,
|
|
PLYER_TRN,
|
|
OTOBOKE,
|
|
PLYER_MOV,
|
|
RUNAWAY_START,
|
|
RUNAWAY_END,
|
|
BYE_CONTINUE,
|
|
CUT_END = -1,
|
|
};
|
|
static char* a_cut_tbl[14] = {
|
|
"RUN_START",
|
|
"RUN",
|
|
"CATCH_START",
|
|
"CATCH_END",
|
|
"TRN",
|
|
"BYE_START",
|
|
"BYE",
|
|
"BYE_END",
|
|
"PLYER_TRN",
|
|
"OTOBOKE",
|
|
"PLYER_MOV",
|
|
"RUNAWAY_START",
|
|
"RUNAWAY_END",
|
|
"BYE_CONTINUE",
|
|
|
|
};
|
|
int uVar2;
|
|
|
|
bool uVar1;
|
|
|
|
if (param_1 != -1) {
|
|
uVar2 = dComIfGp_evmng_getMyActIdx(param_1,a_cut_tbl,0xe,1,0);
|
|
mCutsceneIndex = uVar2;
|
|
if (mCutsceneIndex == CUT_END) {
|
|
dComIfGp_evmng_cutEnd(param_1);
|
|
}
|
|
else {
|
|
if (dComIfGp_evmng_getIsAddvance(param_1)) {
|
|
switch(mCutsceneIndex) {
|
|
case RUN_START:
|
|
cut_init_RUN_START(param_1);
|
|
break;
|
|
case RUN:
|
|
cut_init_RUN(param_1);
|
|
break;
|
|
case CATCH_START:
|
|
cut_init_CATCH_START(param_1);
|
|
break;
|
|
case CATCH_END:
|
|
cut_init_CATCH_END(param_1);
|
|
break;
|
|
case TRN:
|
|
cut_init_TRN(param_1);
|
|
break;
|
|
case BYE_START:
|
|
cut_init_BYE_START(param_1);
|
|
break;
|
|
case BYE:
|
|
cut_init_BYE(param_1);
|
|
break;
|
|
case BYE_END:
|
|
cut_init_BYE_END(param_1);
|
|
break;
|
|
case PLYER_TRN:
|
|
cut_init_PLYER_TRN(param_1);
|
|
break;
|
|
case OTOBOKE:
|
|
cut_init_OTOBOKE(param_1);
|
|
break;
|
|
case PLYER_MOV:
|
|
cut_init_PLYER_MOV(param_1);
|
|
break;
|
|
case RUNAWAY_START:
|
|
cut_init_RUNAWAY_START(param_1);
|
|
break;
|
|
case RUNAWAY_END:
|
|
cut_init_RUNAWAY_END(param_1);
|
|
break;
|
|
case BYE_CONTINUE:
|
|
cut_init_BYE_CONTINUE(param_1);
|
|
}
|
|
}
|
|
switch(this->mCutsceneIndex) {
|
|
case RUN_START:
|
|
uVar1 = cut_move_RUN_START();
|
|
break;
|
|
case RUN:
|
|
uVar1 = cut_move_RUN();
|
|
break;
|
|
case CATCH_START:
|
|
uVar1 = cut_move_CATCH_START();
|
|
break;
|
|
case CATCH_END:
|
|
uVar1 = cut_move_CATCH_END();
|
|
break;
|
|
case TRN:
|
|
uVar1 = cut_move_TRN();
|
|
break;
|
|
case BYE_START:
|
|
uVar1 = cut_move_BYE_START();
|
|
break;
|
|
case BYE:
|
|
uVar1 = cut_move_BYE();
|
|
break;
|
|
case BYE_END:
|
|
uVar1 = cut_move_BYE_END();
|
|
break;
|
|
case PLYER_TRN:
|
|
uVar1 = cut_move_PLYER_TRN();
|
|
break;
|
|
case OTOBOKE:
|
|
uVar1 = cut_move_OTOBOKE();
|
|
break;
|
|
case PLYER_MOV:
|
|
uVar1 = cut_move_PLYER_MOV();
|
|
break;
|
|
case RUNAWAY_START:
|
|
uVar1 = cut_move_RUNAWAY_START();
|
|
break;
|
|
case RUNAWAY_END:
|
|
uVar1 = cut_move_RUNAWAY_END();
|
|
break;
|
|
case BYE_CONTINUE:
|
|
uVar1 = cut_move_BYE_CONTINUE();
|
|
break;
|
|
default:
|
|
uVar1 = 1;
|
|
}
|
|
if ((uVar1 & 0xff) != 0) {
|
|
dComIfGp_evmng_cutEnd(param_1);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 00002D98-00002DBC .text endEvent__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::endEvent() {
|
|
dComIfGp_event_reset();
|
|
mAnimationNum = 0xff;
|
|
field_0x818 = 0xff;
|
|
return;
|
|
}
|
|
|
|
/* 00002DBC-00002DF4 .text isEventEntry__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::isEventEntry() {
|
|
dComIfGp_evmng_getMyStaffId(mEventCut.getActorName(),NULL,0);
|
|
return;
|
|
}
|
|
|
|
/* 00002DF4-00002F80 .text event_proc__11daNpc_Kk1_cFi */
|
|
void daNpc_Kk1_c::event_proc(int param_1) {
|
|
|
|
if (dComIfGp_evmng_endCheck(mEvtIDTbl[mEvtIDIdx])) {
|
|
s16 idx = mEvtIDIdx;
|
|
|
|
|
|
switch(idx){
|
|
case 0:
|
|
case 1:
|
|
setStt(5);
|
|
break;
|
|
case 2:
|
|
|
|
eventInfo.mEventId = -1;
|
|
switch(mCurrMsgNo) {
|
|
case 0x1c99:
|
|
case 0x1c9b:
|
|
case 0x1c9d:
|
|
case 0x1c9e:
|
|
break;
|
|
case 0x1c9a:
|
|
this->field_0x81B = 10;
|
|
this->field_0x81E = 0;
|
|
this->field_0x7C4 = 1;
|
|
break;
|
|
case 0x1c98:
|
|
case 0x1c9c:
|
|
this->field_0x81B = 7;
|
|
this->field_0x81E = 1;
|
|
this->field_0x7C4 = 1;
|
|
break;
|
|
case 0x1c9f:
|
|
setStt(6);
|
|
this->field_0x81B = 6;
|
|
this->field_0x81E = 0;
|
|
this->field_0x7C4 = 1;
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
|
|
|
|
field_0x81B = 1;
|
|
dComIfGs_onEventBit(0xE08);
|
|
field_0x7BA = 1;
|
|
break;
|
|
|
|
case 4:
|
|
case 6:
|
|
case 7:
|
|
fopAcM_delete(this);
|
|
break;
|
|
case 5:
|
|
break;
|
|
|
|
|
|
}
|
|
endEvent();
|
|
return;
|
|
}
|
|
if(mEventCut.cutProc() == 0){
|
|
privateCut(param_1);
|
|
}
|
|
}
|
|
|
|
/* 00002F80-00002FB8 .text checkCommandTalk__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::checkCommandTalk() {
|
|
|
|
bool retval = false;
|
|
|
|
|
|
if (eventInfo.checkCommandTalk()){
|
|
retval = true;
|
|
if((field_0x816 == 5)&&(field_0x7A4 != 0)){
|
|
retval = false;
|
|
}
|
|
}
|
|
return retval;
|
|
|
|
}
|
|
|
|
/* 00002FB8-00003064 .text set_action__11daNpc_Kk1_cFM11daNpc_Kk1_cFPCvPvPv_iPv */
|
|
bool daNpc_Kk1_c::set_action(ActionFunc param_1, void* param_2) {
|
|
if(field_0x6F0 != param_1){
|
|
if(field_0x6F0 != 0){
|
|
field_0x821 = 9;
|
|
(this->*field_0x6F0)(param_2);
|
|
}
|
|
field_0x6F0 = param_1;
|
|
field_0x821 = 0;
|
|
(this->*field_0x6F0)(param_2);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
/* 00003064-0000311C .text setStt__11daNpc_Kk1_cFSc */
|
|
void daNpc_Kk1_c::setStt(signed char param_1) {
|
|
|
|
|
|
s8 uVar1 = field_0x81C;
|
|
field_0x81C = param_1;
|
|
switch((s8)field_0x81C) {
|
|
|
|
case 1:
|
|
case 4:
|
|
case 6:
|
|
case 7:
|
|
field_0x81B = 0;
|
|
field_0x7A4 = 0;
|
|
speedF = 0.0;
|
|
break;
|
|
case 2:
|
|
field_0x81B = 0;
|
|
mAnimationNum = 0xff;
|
|
field_0x818 = 0xff;
|
|
field_0x822 = 0;
|
|
field_0x7A2 = 0;
|
|
field_0x81D = uVar1;
|
|
break;
|
|
case 3:
|
|
field_0x81B = 0;
|
|
break;
|
|
|
|
case 5:
|
|
field_0x81B = 0;
|
|
field_0x815 = 2;
|
|
field_0x816 = 0;
|
|
field_0x7B6 = 1;
|
|
break;
|
|
|
|
case 0:
|
|
break;
|
|
|
|
|
|
}
|
|
setAnm();
|
|
return;
|
|
}
|
|
|
|
/* 0000311C-000032D8 .text createTama__11daNpc_Kk1_cFf */
|
|
void daNpc_Kk1_c::createTama(float param_1) {
|
|
|
|
cXyz plrEyePos;
|
|
csXyz local_5c(0.0f,0.0f,0.0f);
|
|
|
|
cXyz local_30 = eyePos;
|
|
local_30.y=15+eyePos.y;
|
|
plrEyePos = dNpc_playerEyePos(-20);
|
|
|
|
|
|
|
|
f32 a = (plrEyePos-eyePos).absXZ(); //TODO: Unused abs call?
|
|
local_5c.y = cLib_targetAngleY(&local_30,&plrEyePos);
|
|
local_5c.x = cLib_targetAngleX(&local_30,&plrEyePos);
|
|
daTama_c* tama = (daTama_c *)fopAcM_fastCreate(0x1D6,0,&eyePos,fopAcM_GetRoomNo(this),&local_5c,NULL,0xFF,NULL,NULL);
|
|
fpc_ProcID procID;
|
|
if (tama != NULL) {
|
|
if (this != NULL) {
|
|
procID = base.mBsPcId;
|
|
|
|
}
|
|
else {
|
|
procID = -1;
|
|
}
|
|
tama->setPartnerID(procID);
|
|
tama->setDis(param_1);
|
|
tama->setSpd(50);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 000032D8-0000345C .text chk_areaIN__11daNpc_Kk1_cFf4cXyz */
|
|
bool daNpc_Kk1_c::chk_areaIN(float param_1, cXyz param_2) {
|
|
|
|
float distanceXZ = (dComIfGp_getLinkPlayer()->current.pos - param_2).absXZ();
|
|
|
|
|
|
s16 angdiff = cLib_targetAngleY(¤t.pos,&dComIfGp_getLinkPlayer()->current.pos) - current.angle.y;
|
|
float fVar1 = param_1;
|
|
if (abs(angdiff) > 0x4E38) {
|
|
fVar1 *= 0.5f;
|
|
}
|
|
bool result = (distanceXZ < param_1);
|
|
if (result && ((g_Counter.mCounter0 % 3) == 0)) {
|
|
createTama(fVar1);
|
|
|
|
}
|
|
return result;
|
|
}
|
|
|
|
/* 0000345C-00003578 .text startEvent_check__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::startEvent_check() {
|
|
|
|
uint uVar3;
|
|
float fVar4;
|
|
|
|
|
|
uVar3 = chk_areaIN(l_HIO.field_0x5C,current.pos);
|
|
if ((uVar3 & 0xff) != 0) {
|
|
fVar4 = current.pos.abs(dComIfGp_getLinkPlayer()->current.pos);
|
|
|
|
if ((fVar4 < g_regHIO.mChild[9].mFloatRegs[0] + 210.0f) ||
|
|
(field_0x6ba != 0)) {
|
|
return 1;
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
|
|
/* 00003578-00003600 .text chkHitPlayer__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::chkHitPlayer() {
|
|
|
|
cCcD_Obj *pcVar1;
|
|
fopAc_ac_c *pfVar2;
|
|
bool bVar4;
|
|
|
|
bVar4 = false;
|
|
if (mCyl.ChkCoHit()){
|
|
pcVar1 = mCyl.GetCoHitObj();
|
|
if(pcVar1 != NULL) {
|
|
|
|
pfVar2 = pcVar1->GetAc();
|
|
|
|
if(pfVar2 != NULL){
|
|
bVar4 = pfVar2->base.mProcName == 0xA9;
|
|
}
|
|
}
|
|
}
|
|
return bVar4;
|
|
}
|
|
|
|
/* 00003600-000036A8 .text set_pthPoint__11daNpc_Kk1_cFUc */
|
|
void daNpc_Kk1_c::set_pthPoint(unsigned char param_1) {
|
|
|
|
if(mRunPath.mPath != NULL){
|
|
mRunPath.mCurrPointIndex = param_1;
|
|
current.pos = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
if(mRunPath.nextIdx()){
|
|
cXyz runpoint = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
current.angle.y = cLib_targetAngleY(¤t.pos,&runpoint);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* 000036A8-00003940 .text event_move__11daNpc_Kk1_cFb */
|
|
bool daNpc_Kk1_c::event_move(bool param_1) {
|
|
|
|
s16 sVar2;
|
|
f32 speed;
|
|
dPath* path = mRunPath.mPath;
|
|
if(path == NULL){
|
|
return 1;
|
|
}
|
|
|
|
if (dPath_ChkClose(path) == 0){
|
|
return 1;
|
|
}
|
|
if(field_0x7B6 != 0){
|
|
if(mRunPath.chkPointPass(current.pos,mRunPath.mbGoingForwards)){
|
|
mRunPath.nextIdxAuto();
|
|
if(param_1 != 0){
|
|
s8 pointarg = mRunPath.pointArg(mRunPath.mCurrPointIndex);
|
|
if( pointarg >= 0){
|
|
pointarg += 1;
|
|
}
|
|
if((pointarg != 2) && (pointarg != 3)){
|
|
field_0x7B6 = 0;
|
|
|
|
}
|
|
else{
|
|
field_0x815 = pointarg;
|
|
field_0x816 = 0;
|
|
field_0x7B6 = 1;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
cXyz runpoint = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
s16 target = cLib_targetAngleY(¤t.pos,&runpoint);
|
|
sVar2 = current.angle.y;
|
|
cLib_addCalcAngleS(¤t.angle.y,target,l_HIO.field_0x30,l_HIO.field_0x32,0x80);
|
|
f32 targetfloat;
|
|
float fVar3;
|
|
if(field_0x815 == 2){
|
|
if(field_0x7B6 == 0){
|
|
targetfloat = 0.0;
|
|
}else{
|
|
targetfloat = l_HIO.field_0x44;
|
|
}
|
|
fVar3 = speedF * l_HIO.field_0x4C;
|
|
speed = l_HIO.field_0x48;
|
|
}else{
|
|
|
|
if(field_0x7B6 == 0){
|
|
targetfloat = 0.0;
|
|
}else{
|
|
targetfloat = l_HIO.field_0x50;
|
|
}
|
|
fVar3 = speedF * l_HIO.field_0x58;
|
|
speed = l_HIO.field_0x54;
|
|
}
|
|
cLib_chaseF(&speedF,targetfloat,speed);
|
|
|
|
|
|
mpMorf->setPlaySpeed(cLib_minLimit(fVar3,0.5f));
|
|
if((int)targetfloat == 0){
|
|
current.angle.y = sVar2;
|
|
if((int)speedF == 0){
|
|
speedF = 0.0;
|
|
s8 cVar6 = mRunPath.pointArg(mRunPath.mCurrPointIndex);
|
|
if((s32)cVar6 >= 0){
|
|
cVar6 += 1;
|
|
}
|
|
field_0x816 = (u8)cVar6;
|
|
return true;
|
|
|
|
}
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
/* 00003940-000039F0 .text kyoroPos__11daNpc_Kk1_cFi */
|
|
cXyz daNpc_Kk1_c::kyoroPos(int param_1) {
|
|
|
|
static f32 a_tgt_offst[12][3] = {0.0, 0.0, 0.0, -100.0, 0.0, 0.0, 100.0, 0.0,
|
|
0.0, -100.0, 0.0, 100.0, 100.0, 0.0, 100.0, 0.0,
|
|
0.0, 100.0, -100.0, 40.0, 0.0, 100.0, 40.0, 0.0,
|
|
-100.0, 40.0, 100.0, 100.0, 40.0, 100.0, 0.0, 40.0,
|
|
100.0, -40.0, 10.0, 40.0};
|
|
Vec local_1c;
|
|
Vec local_28;
|
|
local_1c.x = a_tgt_offst[param_1][0];
|
|
local_1c.y = a_tgt_offst[param_1][1];
|
|
local_1c.z = a_tgt_offst[param_1][2];
|
|
mDoMtx_stack_c::transS(eyePos);
|
|
|
|
mDoMtx_YrotM(mDoMtx_stack_c::get(),this->current.angle.y);
|
|
|
|
mDoMtx_stack_c::multVec(&local_1c,&local_28);
|
|
return (cXyz)local_28;
|
|
|
|
}
|
|
|
|
/* 000039F0-00003A84 .text kyorokyoro__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::kyorokyoro() {
|
|
|
|
|
|
s16 retval = cLib_calcTimer(&field_0x794);
|
|
if(retval){
|
|
field_0x738 = kyoroPos(field_0x796);
|
|
return 1;
|
|
}
|
|
int rng = cLib_getRndValue(1,10);
|
|
field_0x796 = rng;
|
|
field_0x794 = l_HIO.field_0x28;
|
|
field_0x792 = l_HIO.field_0x2A;
|
|
return 0;
|
|
}
|
|
|
|
/* 00003A84-00003C9C .text chk_attn__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::chk_attn() {
|
|
/* Nonmatching */
|
|
// float fVar1;
|
|
// bool bVar2;
|
|
// short sVar4;
|
|
// int iVar3;
|
|
// cXyz local_54;
|
|
// cXyz local_48 [2];
|
|
// int uVar5;
|
|
|
|
// s16 fVar6 = (current.pos-dComIfGp_getLinkPlayer()->current.pos).absXZ();
|
|
// fVar1 = current.pos.y - dComIfGp_getLinkPlayer()->current.pos.y;
|
|
// sVar4 = cLib_targetAngleY(¤t.pos,&dComIfGp_getLinkPlayer()->current.pos);
|
|
// iVar3 = (sVar4 - current.angle.y);
|
|
// if(field_0x81E == 1){
|
|
// u32 uVar5 = 0;
|
|
// bVar2 = false;
|
|
// if (fVar6 < 200.0 && (fabs(iVar3)/182.0444) < 90.0){
|
|
// bVar2 = true;
|
|
// }
|
|
// if ((bVar2) && (fabs(fVar1) < 300.0)) {
|
|
// uVar5 = 1;
|
|
// }
|
|
// //return uVar5;
|
|
// }
|
|
// else{
|
|
// uVar5 = 0;
|
|
// bVar2 = false;
|
|
// if((fVar6 < 200.0f)&&(fabs(iVar3) / 182.0444 < 60.0)){
|
|
// bVar2 = true;
|
|
// }
|
|
// if((bVar2) && (abs(fVar1)) < 300.0){
|
|
// uVar5 = 1;
|
|
// }
|
|
// }
|
|
// return uVar5;
|
|
|
|
|
|
f32 fVar6;
|
|
|
|
u8 bVar2;
|
|
bool retval = 0;
|
|
|
|
fVar6 = (current.pos-dComIfGp_getLinkPlayer()->current.pos).absXZ();
|
|
|
|
f32 fVar1 = current.pos.y - dComIfGp_getLinkPlayer()->current.pos.y;
|
|
s16 sVar4 = cLib_targetAngleY(¤t.pos, &dComIfGp_getLinkPlayer()->current.pos);
|
|
s16 iVar3 = (sVar4 - current.angle.y);
|
|
if ((s32)field_0x81E == 1) {
|
|
retval = 0;
|
|
bVar2 = 0;
|
|
if ((fVar6 < 200.0f) && (((f32)abs(iVar3) / 182.04445f) < 90.0f)) {
|
|
bVar2 = 1;
|
|
}
|
|
if ((bVar2) && (std::fabsf(fVar1) < 300.0f)) {
|
|
retval = 1;
|
|
}
|
|
return retval;
|
|
}else{
|
|
retval = 0;
|
|
bVar2 = 0;
|
|
if ((fVar6 < 200.0f) && (((f32) abs(iVar3) / 182.04445f) < 60.0f)) {
|
|
bVar2 = 1;
|
|
}
|
|
if ((bVar2) && (std::fabsf(fVar1) < 300.0f)) {
|
|
retval = 1;
|
|
}
|
|
return retval;
|
|
}
|
|
|
|
|
|
}
|
|
/* 00003C9C-00003D9C .text setBikon__11daNpc_Kk1_cF4cXyz */
|
|
void daNpc_Kk1_c::setBikon(cXyz param_1) {
|
|
|
|
JPABaseEmitter *pJVar1;
|
|
cXyz cStack_18;
|
|
|
|
delBikon();
|
|
PSMTXTrans(mDoMtx_stack_c::get(),current.pos.x,current.pos.y,current.pos.z);
|
|
mDoMtx_stack_c::YrotM(current.angle.y);
|
|
PSMTXMultVec(mDoMtx_stack_c::get(),¶m_1,&cStack_18);
|
|
|
|
dPa_control_c* particle = g_dComIfG_gameInfo.play.getParticle();
|
|
pJVar1 = particle->set(0,0x8152,&cStack_18,NULL,NULL,0xFF,NULL,-1,NULL,NULL,NULL);
|
|
|
|
if(pJVar1 != NULL){
|
|
mDoAud_seStart(0x58BD,¤t.pos);
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 00003D9C-00003DA0 .text delBikon__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::delBikon() {
|
|
return;
|
|
}
|
|
|
|
/* 00003DA0-00003E18 .text setAse__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::setAse() {
|
|
|
|
JPABaseEmitter* pJVar1;
|
|
delAse();
|
|
dPa_control_c* particle = g_dComIfG_gameInfo.play.getParticle();
|
|
pJVar1 = particle->set(0,0x819E,¤t.pos,¤t.angle,NULL,0xFF,NULL,-1,NULL,NULL,NULL);
|
|
field_0x810 = pJVar1;
|
|
return;
|
|
}
|
|
|
|
/* 00003E18-00003EA4 .text flwAse__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::flwAse() {
|
|
|
|
JPABaseEmitter* iVar3;
|
|
JGeometry::TVec3<f32> out;
|
|
if (field_0x810 != NULL) {
|
|
mDoMtx_stack_c::copy(mpMorf->mpModel->getAnmMtx(mAnmMtxIdx));
|
|
mDoMtx_stack_c::multVecZero(out);
|
|
field_0x810->setGlobalTranslation(out);
|
|
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 00003EA4-00003ED0 .text delAse__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::delAse() {
|
|
JPABaseEmitter* Ase = field_0x810;
|
|
if(field_0x810 == NULL){
|
|
return;
|
|
}
|
|
Ase->mMaxFrame = -1;
|
|
Ase->mFlags |= 1;
|
|
|
|
field_0x810 = NULL;
|
|
return;
|
|
}
|
|
|
|
/* 00003ED0-0000415C .text wait_1__11daNpc_Kk1_cFv */
|
|
BOOL daNpc_Kk1_c::wait_1() {
|
|
if(field_0x7C3 != 0){
|
|
if(chk_talk() != 0){
|
|
setStt(2);
|
|
setAnm_NUM(0,1);
|
|
field_0x81E = 1;
|
|
field_0x7C4 = 0;
|
|
m_jnt.setTrn();
|
|
}
|
|
return 1;
|
|
}
|
|
field_0x81B = 2;
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
|
|
cXyz sp20;
|
|
if(field_0x7B6 != 0){
|
|
sp20 = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
s16 temp_r3 = cLib_targetAngleY(¤t.pos,&sp20);
|
|
cLib_addCalcAngleS(¤t.angle.y,temp_r3,l_HIO.field_0x30,l_HIO.field_0x32, 0x80);
|
|
temp_r3 = temp_r3 - current.angle.y;
|
|
if(abs(temp_r3) < 0x1800){
|
|
setStt('\x03');
|
|
field_0x7B7 = 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
if(field_0x81A == 0xB){
|
|
if(field_0x7B2 != 0){
|
|
setAnm_NUM(0,1);
|
|
field_0x7A4 = cLib_getRndValue(0x3C, 0x1E);
|
|
field_0x7B7 = 1;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
cXyz sp14(-100.0f,0.0f,0.0f);
|
|
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_YrotM(mDoMtx_stack_c::get(),field_0x71A);
|
|
|
|
mDoMtx_stack_c::multVec(&sp14,&sp20);
|
|
s16 temp_r3_r2 = cLib_targetAngleY(¤t.pos,&sp20);
|
|
|
|
cLib_addCalcAngleS(¤t.angle.y,temp_r3_r2,l_HIO.field_0x30,l_HIO.field_0x32, 0x80);
|
|
temp_r3_r2 = temp_r3_r2 - current.angle.y;
|
|
if(field_0x7B7 == 0){
|
|
|
|
if(temp_r3_r2 == 0){
|
|
setAnm_NUM(0xB,1);
|
|
}
|
|
return 1;
|
|
}
|
|
if(cLib_calcTimer(&field_0x7A4) == 0){
|
|
if(mRunPath.mPath != NULL){
|
|
u8 temp_r3_3 = mRunPath.maxPoint();
|
|
if((temp_r3_3 > 2) && (((daObj_Roten_c*)temp_r3_3)->getCreateCount() > 1)){
|
|
field_0x7B6 = 1;
|
|
return 1;
|
|
}
|
|
}
|
|
field_0x7B7 = 0;
|
|
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 0000415C-0000449C .text walk_1__11daNpc_Kk1_cFv */
|
|
BOOL daNpc_Kk1_c::walk_1() {
|
|
|
|
short sVar2;
|
|
float fVar3;
|
|
short target;
|
|
float fVar7;
|
|
cXyz local_40;
|
|
|
|
local_40 = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
if (dPath_ChkClose(mRunPath.mPath)) {
|
|
return 1;
|
|
}
|
|
u8 idx;
|
|
fVar7 = (current.pos-local_40).absXZ();
|
|
if ((field_0x7B6) && (fVar7 < l_HIO.field_0x34) ) {
|
|
bool r29 = (mRunPath.nextIdxAuto() == 0);
|
|
if (!r29 && mRunPath.mbGoingForwards){
|
|
idx = mRunPath.mCurrPointIndex;
|
|
if( idx >= ((daObj_Roten_c*)r29)->getCreateCount() ){
|
|
mRunPath.decIdx();
|
|
mRunPath.decIdx();
|
|
r29 = true;
|
|
}
|
|
}
|
|
if (r29 != 0) {
|
|
field_0x7B6 = 0;
|
|
mRunPath.mbGoingForwards ^= 1;
|
|
}
|
|
}
|
|
|
|
target = cLib_targetAngleY(¤t.pos,&local_40);
|
|
|
|
sVar2 = current.angle.y;
|
|
cLib_addCalcAngleS(¤t.angle.y,target,l_HIO.field_0x30,l_HIO.field_0x32,0x80);
|
|
fVar7 = l_HIO.field_0x38;
|
|
if (!field_0x7B6 || field_0x7C3 || chk_attn()) {
|
|
fVar7 = 0.0;
|
|
}
|
|
cLib_chaseF(&speedF,fVar7,l_HIO.field_0x3C);
|
|
fVar3 = speedF*l_HIO.field_0x40;
|
|
fVar3 = cLib_minLimit(fVar3,0.5f);
|
|
mpMorf->mFrameCtrl.setRate(fVar3);
|
|
if ((int)fVar7 == 0) {
|
|
current.angle.y = sVar2;
|
|
if ((s32)speedF == 0) {
|
|
if (field_0x7C3) {
|
|
if(chk_talk()){
|
|
setStt(1);
|
|
setAnm_NUM(0,1);
|
|
field_0x81E = 1;
|
|
field_0x7C4 = 0;
|
|
m_jnt.setTrn();
|
|
}
|
|
return 1;
|
|
}
|
|
if (!field_0x7B6) {
|
|
setStt('\x01');
|
|
field_0x7B7 = 0;
|
|
field_0x7B6 = 0;
|
|
return 1;
|
|
}
|
|
setStt('\a');
|
|
field_0x7B7 = 0;
|
|
field_0x7B6 = 0;
|
|
return 1;
|
|
}
|
|
}
|
|
field_0x81B = 2;
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 0000449C-00004614 .text wait_2__11daNpc_Kk1_cFv */
|
|
BOOL daNpc_Kk1_c::wait_2() {
|
|
|
|
int sp8;
|
|
cLib_addCalcAngleS(¤t.angle.y,field_0x71A,4,0x800,0x80);
|
|
if(field_0x7C3 != 0){
|
|
if(chk_talk() != 0){
|
|
setStt(2);
|
|
field_0x81E = 1;
|
|
field_0x7C4 = 0;
|
|
field_0x7C5 = 0;
|
|
m_jnt.setTrn();
|
|
}
|
|
return 1;
|
|
}
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
s8 temp_r0 = field_0x81B;
|
|
if(temp_r0 == 3 || temp_r0 == 4){
|
|
return 1;
|
|
}
|
|
if(field_0x7B8 != 0){
|
|
u8 temp_r4 = field_0x7B5;
|
|
if((temp_r4 != 0xFF) && (dComIfGs_isSwitch(temp_r4,current.roomNo) != 0)){
|
|
fopAc_ac_c* temp_r3 = searchByID(mPartnerProcID,&sp8);
|
|
if((temp_r3 != NULL) && (sp8 == 0)){
|
|
s16 difference = cLib_targetAngleY(&temp_r3->current.pos,&dComIfGp_getLinkPlayer()->current.pos)-temp_r3->current.angle.y;
|
|
if(abs(difference) < 0x4000){
|
|
field_0x81B = 4;
|
|
}else{
|
|
field_0x81B = 3;
|
|
}
|
|
mStts.SetWeight(0xD9);
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
field_0x81B = 2;
|
|
return 1;
|
|
|
|
}
|
|
|
|
/* 00004614-0000466C .text init_CMT_WAI__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::init_CMT_WAI() {
|
|
|
|
field_0x7A4 = cLib_getRndValue(0x5a,0xb4);
|
|
this->field_0x81E = 5;
|
|
this->field_0x7C4 = 1;
|
|
setAnm_NUM(0,1);
|
|
return;
|
|
}
|
|
|
|
/* 0000466C-00004754 .text move_CMT_WAI__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::move_CMT_WAI() {
|
|
|
|
short sVar2;
|
|
uint uVar1;
|
|
|
|
|
|
sVar2 = cLib_calcTimer(&field_0x7A4);
|
|
if (sVar2 == 0) {
|
|
if ((field_0x81B != 1) && (field_0x81B < 3)) {
|
|
//local_18 = ;
|
|
uVar1 = chk_areaIN(l_HIO.field_0x5C,current.pos);
|
|
if ((uVar1 & 0xff) != 0) {
|
|
this->field_0x81B = 8;
|
|
return;
|
|
}
|
|
}
|
|
field_0x816 = 0;
|
|
setAnm_NUM(3,1);
|
|
field_0x7B6 = 1;
|
|
}
|
|
else if (((field_0x81B != 1) && (field_0x81B < 3)) &&
|
|
(startEvent_check() != 0)) {
|
|
field_0x81B = 9;
|
|
}
|
|
return;
|
|
}
|
|
|
|
/* 00004754-000047D4 .text init_CMT_TRN__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::init_CMT_TRN() {
|
|
|
|
field_0x7AA = current.angle.y;
|
|
s16 uVar1 = cLib_getRndValue(0x5A,0xB4);
|
|
field_0x7A4 = uVar1;
|
|
field_0x798 = l_HIO.field_0x2C;
|
|
field_0x794 = l_HIO.field_0x28;
|
|
field_0x792 = l_HIO.field_0x2A;
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
setAnm_NUM(0,1);
|
|
return;
|
|
}
|
|
|
|
/* 000047D4-00004A14 .text move_CMT_TRN__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::move_CMT_TRN() {
|
|
|
|
short sVar1;
|
|
uint uVar2;
|
|
short sVar3;
|
|
short sVar4;
|
|
cXyz local_20;
|
|
|
|
sVar1 = field_0x7AA + 0x8000;
|
|
sVar3 = current.angle.y;
|
|
uVar2 = cLib_calcTimer(&field_0x798);
|
|
if ((short)uVar2 != 0) {
|
|
s8 temp_r0 = field_0x81B;
|
|
if((temp_r0 != 1) && (temp_r0 < 3) && startEvent_check() != 0){
|
|
field_0x81B = 9;
|
|
}
|
|
}else if (field_0x7A4 == 0) {
|
|
local_20 = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
sVar3 = cLib_targetAngleY(¤t.pos,&local_20);
|
|
sVar1 = cLib_addCalcAngleS(¤t.angle.y,sVar3,l_HIO.field_0x30,l_HIO.field_0x32,0x80);
|
|
uVar2 = (uint)sVar1;
|
|
if ((field_0x81B != 1) && ((char)field_0x81B < 3)) {
|
|
|
|
if (startEvent_check() != 0) {
|
|
field_0x81B = 9;
|
|
return;
|
|
}
|
|
if (current.angle.y == (int)sVar3) {
|
|
field_0x816 = 0;
|
|
setAnm_NUM(3,1);
|
|
field_0x7B6 = 1;
|
|
}
|
|
}
|
|
}else {
|
|
sVar4 = cLib_addCalcAngleS(¤t.angle.y,sVar1,l_HIO.field_0x30,l_HIO.field_0x32,0x80);
|
|
uVar2 = (uint)sVar4;
|
|
sVar4 = current.angle.y;
|
|
if (sVar4 == sVar1) {
|
|
if (sVar4 != sVar3) {
|
|
field_0x81E = 5;
|
|
field_0x7C4 = 1;
|
|
}
|
|
if (cLib_calcTimer(&field_0x7A4) == 0) {
|
|
if ((field_0x81B != '\x01') && ((char)field_0x81B < '\x03')) {
|
|
if (chk_areaIN(l_HIO.field_0x5C,current.pos)) {
|
|
field_0x81B = 8;
|
|
}
|
|
}
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
}
|
|
}
|
|
if (((field_0x81B != '\x01') && ((char)field_0x81B < '\x03')) &&
|
|
(uVar2 = startEvent_check(), (uVar2 & 0xff) != 0)) {
|
|
field_0x81B = 9;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 00004A14-00004A84 .text init_CMT_PCK__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::init_CMT_PCK() {
|
|
|
|
setAnm_NUM(1,1);
|
|
field_0x7A4 = l_HIO.field_0x26;
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
mEvtIDIdx = 2;
|
|
eventInfo.mEventId = mEvtIDTbl[mEvtIDIdx];
|
|
}
|
|
|
|
/* 00004A84-00004C34 .text move_CMT_PCK__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::move_CMT_PCK() {
|
|
/* Nonmatching */
|
|
cXyz sp8;
|
|
s16 temp_r3;
|
|
u8 temp_r0;
|
|
u8 temp_r0_2;
|
|
|
|
if (field_0x7A4 == 0) {
|
|
sp8 = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
|
|
temp_r3 = cLib_targetAngleY(¤t.pos,&sp8);
|
|
cLib_addCalcAngleS(¤t.angle.y, temp_r3, l_HIO.field_0x30, l_HIO.field_0x32, 0x80);
|
|
temp_r0 = field_0x81B;
|
|
if (((s8) temp_r0 != 1) && ((s8) temp_r0 < 3)) {
|
|
if (startEvent_check() != 0) {
|
|
field_0x81B = 9;
|
|
return;
|
|
}
|
|
if (current.angle.y == temp_r3) {
|
|
field_0x816 = 0;
|
|
setAnm_NUM(3, 1);
|
|
field_0x7B6 = 1;
|
|
}
|
|
}
|
|
} else if ((u8) field_0x7C3 == 0) {
|
|
temp_r0_2 = field_0x81B;
|
|
if (((s8) temp_r0_2 != 1) && ((s8) temp_r0_2 < 3) && (chkHitPlayer() != 0)) {
|
|
field_0x81B = 1;
|
|
return;
|
|
}
|
|
if (!cLib_calcTimer(&field_0x7A4)) {
|
|
setAnm_NUM(0, 1);
|
|
eventInfo.mEventId = -1;
|
|
field_0x81B = 0;
|
|
return;
|
|
}
|
|
mDoAud_seStart(0x509BU, ¤t.pos);
|
|
field_0x81B = 2;
|
|
}
|
|
}
|
|
|
|
/* 00004C34-00004DD0 .text cmmt_1__11daNpc_Kk1_cFv */
|
|
BOOL daNpc_Kk1_c::cmmt_1() {
|
|
/* Nonmatching */
|
|
u8 temp_r0;
|
|
|
|
u8 temp_r0_4;
|
|
|
|
switch (field_0x816) { /* irregular */
|
|
case 1:
|
|
move_CMT_WAI();
|
|
return 1;
|
|
case 4:
|
|
move_CMT_TRN();
|
|
return 1;
|
|
case 5:
|
|
move_CMT_PCK();
|
|
return 1;
|
|
case 0:
|
|
default:
|
|
if ((field_0x81B != 1) && (field_0x81B < 3) && (field_0x81A != 1) && (startEvent_check() != 0)) {
|
|
field_0x81B = 9;
|
|
}
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
if (event_move( 1) != 0) {
|
|
if ((field_0x81B == 1) || (field_0x81B >= 3)) {
|
|
return 1;
|
|
}
|
|
temp_r0_4 = field_0x816;
|
|
switch ((s8) temp_r0_4) {
|
|
case 1:
|
|
init_CMT_WAI();
|
|
break;
|
|
case 4:
|
|
init_CMT_TRN();
|
|
break;
|
|
case 5:
|
|
init_CMT_PCK();
|
|
break;
|
|
case 0:
|
|
default:
|
|
field_0x816 = 0;
|
|
setAnm_NUM(3, 1);
|
|
field_0x7B6 = 1;
|
|
break;
|
|
}
|
|
|
|
}
|
|
if ((field_0x81B == 1) || (field_0x81B >= 3)) {
|
|
return 1;
|
|
}
|
|
field_0x81B = 0;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
/* 00004DD0-00004F74 .text wait_3__11daNpc_Kk1_cFv */
|
|
BOOL daNpc_Kk1_c::wait_3() {
|
|
|
|
|
|
|
|
|
|
float fVar4 = (current.pos-dComIfGp_getLinkPlayer()->current.pos).absXZ();
|
|
|
|
field_0x7C5 = fVar4 > 300.0f;
|
|
if (field_0x7C5) {
|
|
cLib_addCalcAngleS(¤t.angle.y,field_0x71A,4,0x800,0x80);
|
|
}
|
|
if (field_0x7C3 != 0) {
|
|
if (chk_talk()) {
|
|
setStt(2);
|
|
this->field_0x81E = 1;
|
|
this->field_0x7C4 = 0;
|
|
this->field_0x7C5 = 0;
|
|
m_jnt.mbTrn = true;
|
|
|
|
}
|
|
return 1;
|
|
}
|
|
else {
|
|
field_0x81E = 0;
|
|
field_0x7C4 = 1;
|
|
if (chk_attn()) {
|
|
this->field_0x81E = 1;
|
|
}
|
|
if ((this->field_0x81B != 1) && (field_0x81B < 3)) {
|
|
this->field_0x81B = 2;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 00004F74-00005170 .text wait_4__11daNpc_Kk1_cFv */
|
|
BOOL daNpc_Kk1_c::wait_4() {
|
|
/* Nonmatching */
|
|
float fVar1;
|
|
bool bVar3;
|
|
short target;
|
|
int iVar2;
|
|
float fVar4;
|
|
cXyz local_44;
|
|
cXyz local_38;
|
|
cXyz local_2c;
|
|
cXyz local_20 [2];
|
|
|
|
fVar4 = (current.pos-dComIfGp_getLinkPlayer()->current.pos).absXZ();
|
|
|
|
|
|
|
|
if (this->field_0x7C3) {
|
|
if (chk_talk()) {
|
|
setStt('\x02');
|
|
setAnm_NUM(0,1);
|
|
this->field_0x81E = 1;
|
|
this->field_0x7C4 = 0;
|
|
m_jnt.mbTrn = true;
|
|
}
|
|
return 1;
|
|
}
|
|
else {
|
|
this->field_0x81B = 2;
|
|
this->field_0x81E = 1;
|
|
this->field_0x7C4 = 0;
|
|
this->field_0x7B6 = fVar4 > 300.0f;
|
|
if (this->field_0x7B6) {
|
|
local_20[0] = mRunPath.getPoint(mRunPath.mCurrPointIndex);
|
|
|
|
target = cLib_targetAngleY(¤t.pos,local_20);
|
|
cLib_addCalcAngleS(¤t.angle.y,target,l_HIO.field_0x30,l_HIO.field_0x32,0x80);
|
|
s16 diff = target - current.angle.y;
|
|
iVar2 = abs(diff);
|
|
if (iVar2 < 0x1800) {
|
|
setStt('\x03');
|
|
field_0x7B7 = 0;
|
|
}
|
|
this->field_0x81E = 0;
|
|
this->field_0x7C4 = 1;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 00005170-000052B4 .text talk_1__11daNpc_Kk1_cFv */
|
|
BOOL daNpc_Kk1_c::talk_1() {
|
|
|
|
msg_class *pmVar3;
|
|
int uVar4;
|
|
short sVar5;
|
|
|
|
int uVar6 = chk_parts_notMov();
|
|
talk(1);
|
|
pmVar3 = mpCurrMsg;
|
|
if (pmVar3 == NULL) {
|
|
return 1;
|
|
}
|
|
switch(pmVar3->mStatus){
|
|
case 6:
|
|
case 2:
|
|
break;
|
|
case 19:
|
|
field_0x7B4 = 0xff;
|
|
field_0x7C3 = 0;
|
|
|
|
setStt(field_0x81D);
|
|
uVar4 = cLib_getRndValue(0xF,0x1E);
|
|
field_0x79E = uVar4;
|
|
|
|
switch(mCurrMsgNo){
|
|
case 0x1CA9:
|
|
dComIfGs_onEventBit(0xE10);
|
|
break;
|
|
case 0x1CAB:
|
|
field_0x81B = 7;
|
|
break;
|
|
case 0x1CAC:
|
|
field_0x81E = 1;
|
|
field_0x7C4 = 0;
|
|
field_0x7A2 = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
endEvent();
|
|
break;
|
|
}
|
|
sVar5 = cLib_calcTimer(&field_0x7A2);
|
|
if ((sVar5 != 0) && (field_0x7A2 == 1)) {
|
|
this->field_0x81E = 1;
|
|
this->field_0x7C4 = 0;
|
|
}
|
|
return uVar6;
|
|
}
|
|
|
|
|
|
/* 000052B4-000053F4 .text wait_action1__11daNpc_Kk1_cFPv */
|
|
int daNpc_Kk1_c::wait_action1(void* arg0) {
|
|
|
|
u8 temp_r0;
|
|
u8 temp_r0_2;
|
|
|
|
temp_r0 = this->field_0x821;
|
|
switch ((s8) temp_r0) {
|
|
|
|
case 0:
|
|
if (dKy_daynight_check() == 0) {
|
|
this->field_0x7B7 = 0;
|
|
setStt(1);
|
|
this->field_0x821 += 1;
|
|
} else {
|
|
setStt(4);
|
|
this->field_0x821 += 1;
|
|
}
|
|
break;
|
|
|
|
case 9:
|
|
default:
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
field_0x7C2 = chkAttention();
|
|
|
|
switch (field_0x81C) {
|
|
case 1:
|
|
field_0x778 = wait_1();
|
|
break;
|
|
case 2:
|
|
field_0x778 = talk_1();
|
|
break;
|
|
case 3:
|
|
field_0x778 = walk_1();
|
|
break;
|
|
case 4:
|
|
field_0x778 = wait_2();
|
|
break;
|
|
case 5:
|
|
field_0x778 = cmmt_1();
|
|
break;
|
|
case 6:
|
|
field_0x778 = wait_3();
|
|
break;
|
|
case 7:
|
|
field_0x778 = wait_4();
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 000053F4-00005534 .text demo__11daNpc_Kk1_cFv */
|
|
u8 daNpc_Kk1_c::demo() {
|
|
|
|
//dDemo_actor_c *this_00;
|
|
J3DAnmTexPattern *pJVar2;
|
|
|
|
if (demoActorID == 0) {
|
|
if (field_0x7C6 != 0) {
|
|
field_0x7C6 = 0;
|
|
}
|
|
}
|
|
else {
|
|
if (field_0x7C6 == NULL) {
|
|
field_0x7C6 = 1;
|
|
field_0x7BF = 0;
|
|
|
|
m_jnt.setHead_y(0);
|
|
m_jnt.setHead_x(0);
|
|
m_jnt.setBackBone_y(0);
|
|
m_jnt.setBackBone_x(0);
|
|
|
|
}
|
|
dDemo_actor_c* this_00 = dComIfGp_demo_getActor(demoActorID);
|
|
|
|
pJVar2 = mBtpAnm.getBtpAnm();
|
|
|
|
if (pJVar2 != NULL) {
|
|
|
|
u8 cmp = pJVar2 ->getFrameMax();
|
|
field_0x6EC += 1;
|
|
if (field_0x6EC >= cmp) {
|
|
field_0x6EC = cmp;
|
|
}
|
|
}
|
|
|
|
pJVar2 = (J3DAnmTexPattern*)(this_00)->getP_BtpData(&mArcName);
|
|
if (pJVar2 != NULL) {
|
|
mBtpAnm.init(mpMorf->getModel()->getModelData(),pJVar2,1,0,1.0,0,-1,true,0);
|
|
|
|
field_0x819 = 1;
|
|
field_0x6EC = 0;
|
|
}
|
|
dDemo_setDemoData(this,0x6A,mpMorf,&mArcName,0,0,0,0);
|
|
|
|
}
|
|
return field_0x7C6;
|
|
|
|
}
|
|
|
|
/* 00005534-000055C4 .text shadowDraw__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::shadowDraw() {
|
|
|
|
cXyz local_18(current.pos.x,current.pos.y + 150.0f, current.pos.z);
|
|
|
|
GXTexObj* tex = dDlst_shadowControl_c::getSimpleTex();
|
|
|
|
mShadowID = dComIfGd_setShadow(mShadowID,1,mpMorf->getModel(),&local_18,800.0f,40.0f,current.pos.y,mObjAcch.GetGroundH(),
|
|
mObjAcch.m_gnd,&tevStr,0,1.0,tex);
|
|
|
|
}
|
|
|
|
/* 000055C4-00005798 .text _draw__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::_draw() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 00005798-000059EC .text _execute__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::_execute() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 000059EC-00005A58 .text _delete__11daNpc_Kk1_cFv */
|
|
bool daNpc_Kk1_c::_delete() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 00005A58-00005B98 .text _create__11daNpc_Kk1_cFv */
|
|
cPhs_State daNpc_Kk1_c::_create() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 00006118-0000638C .text bodyCreateHeap__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::bodyCreateHeap() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 0000638C-000065E0 .text effcCreateHeap__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::effcCreateHeap() {
|
|
/* Nonmatching */
|
|
}
|
|
|
|
/* 000065E0-00006684 .text CreateHeap__11daNpc_Kk1_cFv */
|
|
void daNpc_Kk1_c::CreateHeap() {
|
|
return;
|
|
}
|
|
|
|
/* 00006684-000066A4 .text daNpc_Kk1_Create__FP10fopAc_ac_c */
|
|
static cPhs_State daNpc_Kk1_Create(fopAc_ac_c* obj) {
|
|
(static_cast<daNpc_Kk1_c*>(obj))->_create();
|
|
|
|
}
|
|
|
|
/* 000066A4-000066C4 .text daNpc_Kk1_Delete__FP11daNpc_Kk1_c */
|
|
static BOOL daNpc_Kk1_Delete(daNpc_Kk1_c* obj) {
|
|
(static_cast<daNpc_Kk1_c*>(obj))->_delete();
|
|
}
|
|
|
|
/* 000066C4-000066E4 .text daNpc_Kk1_Execute__FP11daNpc_Kk1_c */
|
|
static BOOL daNpc_Kk1_Execute(daNpc_Kk1_c* obj) {
|
|
(static_cast<daNpc_Kk1_c*>(obj))->_execute();
|
|
}
|
|
|
|
/* 000066E4-00006704 .text daNpc_Kk1_Draw__FP11daNpc_Kk1_c */
|
|
static BOOL daNpc_Kk1_Draw(daNpc_Kk1_c* obj) {
|
|
(static_cast<daNpc_Kk1_c*>(obj))->_draw();
|
|
}
|
|
|
|
/* 00006704-0000670C .text daNpc_Kk1_IsDelete__FP11daNpc_Kk1_c */
|
|
static BOOL daNpc_Kk1_IsDelete(daNpc_Kk1_c*) {
|
|
return true;
|
|
}
|
|
|
|
|
|
|
|
static actor_method_class l_daNpc_Kk1_Method = {
|
|
(process_method_func)daNpc_Kk1_Create,
|
|
(process_method_func)daNpc_Kk1_Delete,
|
|
(process_method_func)daNpc_Kk1_Execute,
|
|
(process_method_func)daNpc_Kk1_IsDelete,
|
|
(process_method_func)daNpc_Kk1_Draw,
|
|
};
|
|
|
|
actor_process_profile_definition g_profile_NPC_KK1 = {
|
|
/* LayerID */ fpcLy_CURRENT_e,
|
|
/* ListID */ 0x0007,
|
|
/* ListPrio */ fpcPi_CURRENT_e,
|
|
/* ProcName */ PROC_NPC_KK1,
|
|
/* Proc SubMtd */ &g_fpcLf_Method.base,
|
|
/* Size */ sizeof(daNpc_Kk1_c),
|
|
/* SizeOther */ 0,
|
|
/* Parameters */ 0,
|
|
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
|
/* Priority */ PRIO_NPC_KK1,
|
|
/* Actor SubMtd */ &l_daNpc_Kk1_Method,
|
|
/* Status */ 0x08 | fopAcStts_SHOWMAP_e | fopAcStts_NOCULLEXEC_e | fopAcStts_CULL_e | fopAcStts_UNK40000_e,
|
|
/* Group */ fopAc_ACTOR_e,
|
|
/* CullType */ fopAc_CULLBOX_CUSTOM_e,
|
|
};
|