Files
tww/src/d/actor/d_a_npc_kk1.cpp
T
WilliamArnett 41d9631073 82% text
2025-05-22 08:31:29 -05:00

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(&current.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(&current.pos,&runPoint);
cLib_addCalcAngleS(&current.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(&current.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(&current.pos,&a);
cLib_addCalcAngleS(&current.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,&current.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(&current.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,&current.pos);
((daPy_py_c*)dComIfGp_getLinkPlayer())->setPlayerPosAndAngle(&dComIfGp_getLinkPlayer()->current.pos,sVar4);
s16 r29=cLib_targetAngleY(&current.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(&current.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(&current.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(&current.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(&current.pos,&runpoint);
sVar2 = current.angle.y;
cLib_addCalcAngleS(&current.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(&current.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(&current.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(),&param_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,&current.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,&current.pos,&current.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(&current.pos,&sp20);
cLib_addCalcAngleS(&current.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(&current.pos,&sp20);
cLib_addCalcAngleS(&current.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(&current.pos,&local_40);
sVar2 = current.angle.y;
cLib_addCalcAngleS(&current.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(&current.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(&current.pos,&local_20);
sVar1 = cLib_addCalcAngleS(&current.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(&current.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(&current.pos,&sp8);
cLib_addCalcAngleS(&current.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, &current.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(&current.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(&current.pos,local_20);
cLib_addCalcAngleS(&current.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,
};