Files
dusklight/src/d/actor/d_a_npc_maro.cpp
T
LagoLunatic 6ec6fce8cb Fix JUT_ASSERT and several other macros (#2711)
* Fix JUT_ASSERT to be a nested define

* Switch names that appear in asserts to be constants instead of defines

* Replace `0` in asserts with `NULL` or `FALSE`

* Fix fpclassify

* Fix ARRAY_SIZE

* Use G_CM3D_F_INF

* More fixes for fpclassify

* Remove FLOAT_LABEL

* Remove incorrect FLAG_ON macro

* Remove UNK_BSS macro

* Silence clangd unused header warning for PCH
2025-09-28 13:11:07 -07:00

3508 lines
99 KiB
C++

/**
* @file d_a_npc_maro.cpp
*
*/
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_maro.h"
#include "d/actor/d_a_horse.h"
#include "d/actor/d_a_npc_len.h"
#include "d/actor/d_a_obj_itamato.h"
#include "d/actor/d_a_tag_evtarea.h"
#include "d/actor/d_a_tag_push.h"
#include "d/actor/d_a_tag_shop_item.h"
#include "d/d_camera.h"
#include "d/d_com_static.h"
#include "d/d_item.h"
#include "d/d_timer.h"
//
// Declarations:
//
daNpc_Maro_c::actionFunc dummy_lit_4085() {
return &daNpc_Maro_c::choccai;
}
/* 80564FBC-80564FCC 00002C 0010+00 1/1 0/0 0/0 .data l_bmdData */
static int l_bmdData[2][2] = {
{11, 1}, {5, 2},
};
/* 80564FCC-80565044 -00001 0078+00 0/1 0/0 0/0 .data l_evtList */
daNpcT_evtData_c l_evtList[15] = {
{"", 0},
{"DEFAULT_GETITEM", 0},
{"NO_RESPONSE", 0},
{"CONVERSATION_ABOUT_WOODSWD1", 9},
{"CONVERSATION_ABOUT_WOODSWD2", 9},
{"CONVERSATION_WITH_MARO1", 6},
{"CONVERSATION_WITH_MARO2", 6},
{"DEMO13_STB", 0},
{"SURPRISE", 3},
{"BREAK_ARROWTUTORIAL", 7},
{"CONTINUE_ARROWTUTORIAL", 7},
{"END_ARROWTUTORIAL", 7},
{"CLEAR_ARROWTUTORIAL", 7},
{"NOT_GONNA_LET_3", 6},
{"TALK_TO_KAKASHI", 3},
};
/* 80565044-8056506C -00001 0028+00 2/3 0/0 0/0 .data l_resNameList */
static char* l_resNameList[10] = {
"",
"Maro",
"Maro_TW",
"Maro1",
"Maro2",
"Maro3",
"Taro1",
"Taro2",
"Len1",
"Besu1",
};
/* 8056506C-80565070 0000DC 0003+01 1/0 0/0 0/0 .data l_loadResPtrn0 */
static s8 l_loadResPtrn0[3] = {1, 3, -1};
/* 80565070-80565074 0000E0 0003+01 1/0 0/0 0/0 .data l_loadResPtrn1 */
static s8 l_loadResPtrn1[3] = {1, 2, -1};
/* 80565074-80565078 0000E4 0004+00 1/0 0/0 0/0 .data l_loadResPtrn2 */
static s8 l_loadResPtrn2[4] = {1, 3, 4, -1};
/* 80565078-80565080 0000E8 0005+03 1/0 0/0 0/0 .data l_loadResPtrn3 */
static s8 l_loadResPtrn3[5] = {1, 2, 3, 4, -1};
/* 80565080-805650C4 -00001 0044+00 1/2 0/0 0/0 .data l_loadResPtrnList */
static s8* l_loadResPtrnList[17] = {
l_loadResPtrn2, l_loadResPtrn2, l_loadResPtrn0, l_loadResPtrn1,
l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn0, l_loadResPtrn2,
l_loadResPtrn2, l_loadResPtrn0, l_loadResPtrn2, l_loadResPtrn2,
l_loadResPtrn2, l_loadResPtrn2, l_loadResPtrn2, l_loadResPtrn2,
l_loadResPtrn3,
};
/* 805650C4-805651DC 000134 0118+00 0/1 0/0 0/0 .data l_faceMotionAnmData */
static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[10] = {
{-1, 0, 0, 17, 2, 1, 1},
{6, 0, 1, 18, 0, 1, 0},
{7, 0, 3, 22, 0, 3, 0},
{8, 0, 3, 23, 0, 3, 0},
{6, 0, 3, 21, 0, 3, 0},
{6, 0, 4, 10, 0, 4, 0},
{6, 0, 5, 10, 0, 5, 0},
{9, 2, 3, 24, 2, 3, 0},
{7, 2, 4, 11, 2, 4, 0},
{7, 2, 5, 11, 2, 5, 0},
};
/* 805651DC-805652F4 00024C 0118+00 0/1 0/0 0/0 .data l_motionAnmData */
static daNpcT_motionAnmData_c l_motionAnmData[10] = {
{8, 2, 1, 14, 0, 1, 1, 0},
{5, 2, 4, 14, 0, 1, 1, 0},
{5, 2, 5, 14, 0, 1, 1, 0},
{12, 0, 3, 14, 0, 1, 1, 0},
{13, 0, 3, 17, 0, 3, 0, 0},
{14, 0, 3, 18, 0, 3, 0, 0},
{4, 0, 5, 14, 0, 1, 1, 0},
{11, 2, 3, 14, 0, 1, 1, 0},
{7, 0, 1, 14, 0, 1, 1, 0},
{10, 2, 3, 14, 0, 1, 1, 0},
};
/* 805652F4-80565394 000364 00A0+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[40] = {
{1, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, {7, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{2, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {5, -1, 1}, {8, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{6, -1, 1}, {9, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {3, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{7, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{9, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
};
/* 80565394-80565424 000404 0090+00 0/1 0/0 0/0 .data l_motionSequenceData */
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[36] = {
{0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {3, -1, 1}, {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{1, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {6, -1, 1}, {2, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{7, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{5, -1, 1}, {0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, 4, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{9, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
};
/* 80565424-80565468 -00001 0044+00 1/1 0/0 0/0 .data mCutNameList__12daNpc_Maro_c */
char* daNpc_Maro_c::mCutNameList[17] = {
"",
"CONVERSATION_ABOUT_PACHINKO",
"CONVERSATION_ABOUT_WOODSWD",
"SWDTUTORIAL",
"HAIL",
"FIND_MONKEY",
"GIVEME_WOODSWD",
"GET_WOODSWD",
"CONVERSATION_WITH_MARO",
"CACARICO_CONVERSATION",
"SURPRISE",
"ARROWTUTORIAL",
"BOKIN_TALK",
"MAROS_WHISPER",
"TAG_PUSH1",
"NOT_GONNA_LET",
"TALK_TO_KAKASHI",
};
/* 80565528-805655F4 000598 00CC+00 1/2 0/0 0/0 .data mCutList__12daNpc_Maro_c */
daNpc_Maro_c::cutFunc daNpc_Maro_c::mCutList[17] = {
NULL,
&daNpc_Maro_c::cutConversationAboutPachinko,
&daNpc_Maro_c::cutConversationAboutWoodSwd,
&daNpc_Maro_c::cutSwdTutorial,
&daNpc_Maro_c::cutHail,
&daNpc_Maro_c::cutFindMonkey,
&daNpc_Maro_c::cutGiveMeWoodSwd,
&daNpc_Maro_c::cutGetWoodSwd,
&daNpc_Maro_c::cutConversationWithMaro,
&daNpc_Maro_c::cutCacaricoConversation,
&daNpc_Maro_c::cutSurprise,
&daNpc_Maro_c::cutArrowTutorial,
&daNpc_Maro_c::cutBokinTalk,
&daNpc_Maro_c::cutMarosWhisper,
&daNpc_Maro_c::cutTagPush1,
&daNpc_Maro_c::cutNotGonnaLet,
&daNpc_Maro_c::cutTalkToKakashi,
};
/* 8055B58C-8055B6E0 0000EC 0154+00 1/0 0/0 0/0 .text __dt__12daNpc_Maro_cFv */
daNpc_Maro_c::~daNpc_Maro_c() {
deleteObject();
if (field_0x10bc != 0xFFFFFFFF) {
dComIfG_TimerDeleteRequest(0);
}
if (mpMorf[0] != 0) {
mpMorf[0]->stopZelAnime();
}
deleteRes(l_loadResPtrnList[mType], (char const**)l_resNameList);
}
/* ############################################################################################## */
/* 80564BAC-80564C3C 000000 0090+00 15/15 0/0 0/0 .rodata m__18daNpc_Maro_Param_c */
const daNpc_Maro_HIOParam daNpc_Maro_Param_c::m = {
100.0f,
-3.0f,
1.0f,
400.0f,
255.0f,
80.0f,
35.0f,
30.0f,
0.0f,
0.0f,
10.0f,
-10.0f,
30.0f,
-10.0f,
30.0f,
-30.0f,
0.6f,
12.0f,
3,
6,
5,
6,
110.0f,
0.0f,
0.0f,
0.0f,
60,
8,
0,
0,
0,
0,
0,
4.0f,
-15.0f,
0.0f,
-15.0f,
15.0f,
30.0f,
15.0f,
30.0f,
0x00780000,
};
/* 8055B6E0-8055B9A8 000240 02C8+00 1/1 0/0 0/0 .text create__12daNpc_Maro_cFv */
int daNpc_Maro_c::create() {
static int const heapSize[17] = {
0x3310, 0x3310, 0, 0x3260,
0x3320, 0x3320, 0x3320, 0x3310,
0x3310, 0x3320, 0x3310, 0x3310,
0x3310, 0x3310, 0x3310, 0x3310,
0,
};
fopAcM_SetupActor2(this, daNpc_Maro_c, l_faceMotionAnmData, l_motionAnmData,
l_faceMotionSequenceData, 4, l_motionSequenceData, 4,
l_evtList, l_resNameList
);
mType = getType();
mFlowNodeNo = getFlowNodeNo();
mTwilight = dKy_darkworld_check();
if (mType == 9) {
mTwilight = 0;
}
int rv = loadRes(l_loadResPtrnList[mType], (const char**)l_resNameList);
if (rv == cPhs_COMPLEATE_e) {
if (isDelete()) {
return cPhs_ERROR_e;
}
if (!fopAcM_entrySolidHeap(this, createHeapCallBack, heapSize[mType])) {
return cPhs_ERROR_e;
}
J3DModelData* modelData = mpMorf[0]->getModel()->getModelData();
fopAcM_SetMtx(this, mpMorf[0]->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -200.0f, -100.0f, -200.0f, 200.0f, 300.0f, 200.0f);
mSound.init(&current.pos, &eyePos, 3, 1);
reset();
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1,
&mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this),
fopAcM_GetShapeAngle_p(this));
mCcStts.Init(daNpc_Maro_Param_c::m.common.weight, 0, this);
mCyl1.Set(mCcDCyl);
mCyl1.SetStts(&mCcStts);
mCyl1.SetTgHitCallback(tgHitCallBack);
mAcch.CrrPos(dComIfG_Bgsp());
mGndChk = mAcch.m_gnd;
mGroundH = mAcch.GetGroundH();
if (mGroundH != -G_CM3D_F_INF) {
setEnvTevColor();
setRoomNo();
}
mCreating = 1;
Execute();
mCreating = 0;
}
return rv;
}
/* 8055B9A8-8055BC2C 000508 0284+00 1/1 0/0 0/0 .text CreateHeap__12daNpc_Maro_cFv */
int daNpc_Maro_c::CreateHeap() {
int bmd_get_idx;
if (mTwilight == 1) {
bmd_get_idx = 1;
} else {
bmd_get_idx = 0;
}
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(
l_resNameList[l_bmdData[bmd_get_idx][1]], l_bmdData[bmd_get_idx][0]));
if (modelData == NULL) {
return 0;
}
mpMorf[0] = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound,
0x80000, 0x11020284);
if (mpMorf[0] == NULL || mpMorf[0]->getModel() == NULL) {
return 0;
}
J3DModel* model = mpMorf[0]->getModel();
for (u16 i = 0; i < modelData->getJointNum(); i++) {
modelData->getJointNodePointer(i)->setCallBack(ctrlJointCallBack);
}
model->setUserArea((uintptr_t)this);
mpMatAnm[0] = new daNpcT_MatAnm_c();
if (mpMatAnm[0] == NULL) {
return 0;
}
if (setFaceMotionAnm(1, false) && setMotionAnm(0, 0.0f, 0)) {
return 1;
}
return 0;
}
/* 8055BDE8-8055BE1C 000948 0034+00 1/1 0/0 0/0 .text Delete__12daNpc_Maro_cFv */
int daNpc_Maro_c::Delete() {
fopAcM_GetID(this);
this->~daNpc_Maro_c();
return 1;
}
/* 8055BE1C-8055BF0C 00097C 00F0+00 2/2 0/0 0/0 .text Execute__12daNpc_Maro_cFv */
int daNpc_Maro_c::Execute() {
if (!mCreating && !checkShopOpen() && mActorMngr[5].getActorP() != NULL && mType == 7 && !field_0x1131) {
initShopSystem();
setSellItemMax(getMaxNumItem());
field_0xf60 = -1;
setMasterType(2);
mShopCamAction.setCamDataIdx(NULL);
mShopCamAction.setCamAction(NULL);
field_0x1131 = 1;
}
daNpcT_c::execute();
if (field_0x1131 && searchItemActor()) {
mShopCamAction.move();
}
return 1;
}
/* 8055BF0C-8055BFA0 000A6C 0094+00 1/1 0/0 0/0 .text Draw__12daNpc_Maro_cFv */
int daNpc_Maro_c::Draw() {
if (mpMatAnm[0] != NULL) {
J3DModelData* modelData = mpMorf[0]->getModel()->getModelData();
modelData->getMaterialNodePointer(getEyeballMaterialNo())->setMaterialAnm(mpMatAnm[0]);
}
return daNpcT_c::draw(0, 0, mRealShadowSize, NULL, 100.0f, 0, 0, 0);
}
/* 8055BFA0-8055BFC0 000B00 0020+00 1/1 0/0 0/0 .text
* createHeapCallBack__12daNpc_Maro_cFP10fopAc_ac_c */
int daNpc_Maro_c::createHeapCallBack(fopAc_ac_c* i_this) {
return static_cast<daNpc_Maro_c*>(i_this)->CreateHeap();
}
/* 8055BFC0-8055C018 000B20 0058+00 1/1 0/0 0/0 .text
* ctrlJointCallBack__12daNpc_Maro_cFP8J3DJointi */
int daNpc_Maro_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) {
if (param_1 == 0) {
J3DModel* model = j3dSys.getModel();
daNpc_Maro_c* i_this = reinterpret_cast<daNpc_Maro_c*>(model->getUserArea());
if (i_this != 0) {
i_this->ctrlJoint(param_0, model);
}
}
return 1;
}
/* 8055C018-8055C0B4 000B78 009C+00 1/1 0/0 0/0 .text srchArrow__12daNpc_Maro_cFPvPv */
void* daNpc_Maro_c::srchArrow(void* param_1, void* param_2) {
if (mFindCount < 50 && param_1 != NULL && param_1 != param_2) {
if (fopAcM_IsExecuting(fopAcM_GetID(param_1)) && fopAcM_GetName(param_1) == PROC_ARROW) {
mFindActorPtrs[mFindCount] = (fopAc_ac_c*)param_1;
mFindCount++;
}
}
return NULL;
}
/* 8055C0B4-8055C1AC 000C14 00F8+00 1/1 0/0 0/0 .text getArrowP__12daNpc_Maro_cFv */
fopAc_ac_c* daNpc_Maro_c::getArrowP() {
fopAc_ac_c* pActor = NULL;
f32 minDist = G_CM3D_F_INF;
mFindCount = 0;
fopAcM_Search(srchArrow, this);
for (int i = 0; i < mFindCount; i++) {
if (cM3d_IsZero(mFindActorPtrs[i]->speedF) == false &&
fopAcM_searchActorDistance(this, mFindActorPtrs[i]) < minDist)
{
minDist = fopAcM_searchActorDistance(this, mFindActorPtrs[i]);
pActor = mFindActorPtrs[i];
}
}
return pActor;
}
/* 8055C1AC-8055C248 000D0C 009C+00 1/1 0/0 0/0 .text srchItaMato__12daNpc_Maro_cFPvPv */
void* daNpc_Maro_c::srchItaMato(void* arg0, void* arg1) {
fopAc_ac_c* fop1 = (fopAc_ac_c*) arg1;
if (mFindCount < 50 && arg0 != NULL && arg0 != fop1) {
if (fopAcM_IsExecuting(fopAcM_GetID(arg0)) && fopAcM_GetName(arg0) == PROC_OBJ_ITAMATO) {
mFindActorPtrs[mFindCount] = (fopAc_ac_c*)arg0;
mFindCount++;
}
}
return NULL;
}
/* 8055C248-8055C330 000DA8 00E8+00 1/1 0/0 0/0 .text getItaMatoP__12daNpc_Maro_cFi */
fopAc_ac_c* daNpc_Maro_c::getItaMatoP(int param_0) {
fopAc_ac_c* pActor = NULL;
f32 minDist = G_CM3D_F_INF;
mFindCount = 0;
fopAcM_Search(srchItaMato, this);
for (int i = 0; i < mFindCount; i++) {
if ( ((daObj_ItaMato_c*) mFindActorPtrs[i])->getNo() != param_0 ) {
continue;
}
if (fopAcM_searchActorDistance(this, mFindActorPtrs[i]) < minDist)
{
minDist = fopAcM_searchActorDistance(this, mFindActorPtrs[i]);
pActor = mFindActorPtrs[i];
}
}
return pActor;
}
/* 8055C330-8055C3E0 000E90 00B0+00 2/1 0/0 0/0 .text getType__12daNpc_Maro_cFv */
u8 daNpc_Maro_c::getType() {
u8 param = fopAcM_GetParam(this) & 0xFF;
switch (param) {
case 0:
return TYPE_0;
case 1:
return TYPE_1;
case 2:
return TYPE_2;
case 3:
return TYPE_3;
case 4:
return TYPE_4;
case 5:
return TYPE_5;
case 6:
return TYPE_6;
case 7:
return TYPE_7;
case 8:
return TYPE_8;
case 9:
return TYPE_9;
case 0xA:
return TYPE_10;
case 0xB:
return TYPE_11;
case 0xC:
return TYPE_12;
case 0xD:
return TYPE_13;
case 0xE:
return TYPE_14;
case 0xF:
return TYPE_15;
default:
return TYPE_16;
}
}
/* 8055C3E0-8055C614 000F40 0234+00 2/1 0/0 0/0 .text isDelete__12daNpc_Maro_cFv */
int daNpc_Maro_c::isDelete() {
switch (mType) {
case 0: {
return (!daNpcT_chkEvtBit(0x12) || daNpcT_chkEvtBit(0x1F));
}
case 1: {
return !daNpcT_chkEvtBit(0x12);
}
case 2: {
return true;
}
case 3: {
return false;
}
case 4: {
return (!daNpcT_chkEvtBit(0x3D) || daNpcT_chkEvtBit(0xA4));
}
case 5: {
return (!daNpcT_chkEvtBit(0xA4) || daNpcT_chkEvtBit(0x35));
}
case 6: {
return (!daNpcT_chkEvtBit(0x35) || daNpcT_chkEvtBit(0x55));
}
case 7: {
return !daNpcT_chkEvtBit(0x55);
}
case 8: {
return !daNpcT_chkEvtBit(0x40);
}
case 9: {
return false;
}
case 0xA: {
return daNpcT_chkEvtBit(0x13);
}
case 0xB: {
return (!daNpcT_chkEvtBit(0x13) || daNpcT_chkEvtBit(0x12));
}
case 0xC: {
return (!daNpcT_chkEvtBit(0x12) || daNpcT_chkEvtBit(0x25C));
}
case 0xD: {
return false;
}
case 0xE: {
return (!daNpcT_chkEvtBit(0x25C) || daNpcT_chkEvtBit(0x80));
}
case 0xF: {
return (!daNpcT_chkEvtBit(0x80) || daNpcT_chkEvtBit(0x235));
}
default: {
return false;
}
}
}
/* 8055C614-8055C834 001174 0220+00 1/1 0/0 0/0 .text reset__12daNpc_Maro_cFv */
void daNpc_Maro_c::reset() {
csXyz acStack_20;
int iVar1 = (u8*)&field_0x113C - (u8*)&field_0x110c;
if (mpMatAnm[0] != NULL) {
mpMatAnm[0]->initialize();
}
initialize();
for (int i = 0; i < 9; i++) {
mActorMngr[i].initialize();
}
memset(&field_0x110c, 0, iVar1);
acStack_20.setall(0);
acStack_20.y = home.angle.y;
switch (mType) {
case 0:{
eventInfo.setIdx(0);
break;
}
case 1: {
mHide = !daNpcT_chkEvtBit(0x1F);
eventInfo.setIdx(1);
break;
}
case 0xB: {
dComIfGs_setTmpReg(0xfbff, 0);
}
case 0xC:
case 0xD:
case 0xE:
case 0xF: {
break;
}
}
field_0x10bc = -1;
daNpcT_offTmpBit(0x3C);
daNpcT_offTmpBit(0x3F);
daNpcT_offTmpBit(0x40);
daNpcT_offTmpBit(0x41);
daNpcT_offTmpBit(0x42);
daNpcT_offTmpBit(0x64);
setAngle(acStack_20);
}
/* 8055C834-8055C8B0 001394 007C+00 1/0 0/0 0/0 .text afterJntAnm__12daNpc_Maro_cFi */
void daNpc_Maro_c::afterJntAnm(int param_1) {
if (param_1 == 1) {
mDoMtx_stack_c::YrotM(mStagger.getAngleX(1));
mDoMtx_stack_c::ZrotM(mStagger.getAngleZ(1));
} else if (param_1 == 4) {
mDoMtx_stack_c::YrotM(mStagger.getAngleX(0));
mDoMtx_stack_c::ZrotM(mStagger.getAngleZ(0));
}
}
/* 8055C8B0-8055CB14 001410 0264+00 1/0 0/0 0/0 .text setParam__12daNpc_Maro_cFv */
void daNpc_Maro_c::setParam() {
if (field_0x1130) {
if (field_0x112c == 2) {
mShopCamAction.Reset();
} else {
mShopCamAction.EventRecoverNotime();
}
field_0x1130 = 0;
}
selectAction();
if (&daNpc_Maro_c::arrowTutorial == field_0x110c && field_0x10bc == 0xFFFFFFFF) {
field_0x10bc = dTimer_createTimer(0, 60000, 0, 0, 210.0f, 410.0f, 32.0f, 419.0f);
}
srchActors();
u32 uVar7 = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
s16 sVar10 = daNpc_Maro_Param_c::m.common.talk_distance;
s16 sVar9 = daNpc_Maro_Param_c::m.common.talk_angle;
s16 sVar8 = daNpc_Maro_Param_c::m.common.attention_distance;
s16 sVar7 = daNpc_Maro_Param_c::m.common.attention_angle;
if (&daNpc_Maro_c::swdTutorial == field_0x110c) {
sVar10 = 11;
sVar9 = 6;
sVar8 = 15;
sVar7 = 6;
uVar7 = 0;
} else if (mType == 11) {
sVar10 = 7;
sVar8 = 9;
} else if (mType == 6) {
sVar10 = 4;
sVar8 = 6;
} else if (&daNpc_Maro_c::talk_withTaro == field_0x110c) {
sVar10 = 5;
sVar9 = 4;
sVar8 = 7;
sVar7 = 4;
}
if (field_0x1131) {
sVar10 = 5;
sVar8 = 5;
}
if (daPy_getPlayerActorClass()->checkHorseRide()) {
if (sVar10 < 7) {
sVar10 = 7;
}
if (sVar8 < 9) {
sVar8 = 9;
}
}
attention_info.distances[0] = daNpcT_getDistTableIdx(sVar8, sVar7);
attention_info.distances[1] = attention_info.distances[0];
attention_info.distances[3] = daNpcT_getDistTableIdx(sVar10, sVar9);
attention_info.flags = uVar7;
scale.set(daNpc_Maro_Param_c::m.common.scale, daNpc_Maro_Param_c::m.common.scale,
daNpc_Maro_Param_c::m.common.scale);
mCcStts.SetWeight(daNpc_Maro_Param_c::m.common.weight);
mCylH = daNpc_Maro_Param_c::m.common.height;
mWallR = daNpc_Maro_Param_c::m.common.width;
mAttnFovY = daNpc_Maro_Param_c::m.common.fov;
mAcchCir.SetWallR(mWallR);
mAcchCir.SetWallH(daNpc_Maro_Param_c::m.common.knee_length);
mRealShadowSize = daNpc_Maro_Param_c::m.common.real_shadow_size;
mExpressionMorfFrame = daNpc_Maro_Param_c::m.common.expression_morf_frame;
mMorfFrames = daNpc_Maro_Param_c::m.common.morf_frame;
gravity = daNpc_Maro_Param_c::m.common.gravity;
}
/* 8055CB14-8055CC9C 001674 0188+00 1/0 0/0 0/0 .text checkChangeEvt__12daNpc_Maro_cFv */
BOOL daNpc_Maro_c::checkChangeEvt() {
if (!chkAction(&daNpc_Maro_c::talk)) {
mPreItemNo = 0;
if (dComIfGp_event_chkTalkXY()) {
if (dComIfGp_evmng_ChkPresentEnd()) {
mEvtNo = 2;
evtChange();
}
return true;
}
switch (mType) {
case TYPE_1: {
if (daNpcT_chkEvtBit(0x269)) {
mEvtNo = 6;
} else {
mEvtNo = 5;
}
evtChange();
return true;
}
case TYPE_2: {
mEvtNo = 14;
evtChange();
return true;
}
case TYPE_11: {
if (daNpcT_chkEvtBit(0x266) && checkItemGet(0x3F, 1) && !daNpcT_chkEvtBit(0x22)) {
mEvtNo = 4;
} else {
mEvtNo = 3;
}
evtChange();
return true;
}
case TYPE_0:
case TYPE_3:
case TYPE_4:
case TYPE_5:
case TYPE_6:
case TYPE_7:
case TYPE_8:
case TYPE_9:
case TYPE_10:
case TYPE_12:
case TYPE_13:
case TYPE_14:
case TYPE_15: {
break;
}
}
}
return false;
}
/* 8055CC9C-8055CCD8 0017FC 003C+00 1/0 0/0 0/0 .text evtEndProc__12daNpc_Maro_cFv */
BOOL daNpc_Maro_c::evtEndProc() {
if (field_0x1138) {
dCam_getBody()->CorrectCenter();
}
return 1;
}
/* 8055CCD8-8055CD74 001838 009C+00 1/0 0/0 0/0 .text setAfterTalkMotion__12daNpc_Maro_cFv */
void daNpc_Maro_c::setAfterTalkMotion() {
int iVar2 = 9;
switch(mFaceMotionSeqMngr.getNo()) {
case 1:
return;
case 3:
iVar2 = 7;
break;
case 4:
iVar2 = 8;
break;
}
mFaceMotionSeqMngr.setNo(iVar2, -1.0f, 0, 0);
}
/* 8055CD74-8055D0D8 0018D4 0364+00 2/1 0/0 0/0 .text srchActors__12daNpc_Maro_cFv */
void daNpc_Maro_c::srchActors() {
switch (mType) {
case TYPE_0: {
if (mActorMngr[0].getActorP() == NULL) {
mActorMngr[0].entry(getNearestActorP(0x241));
}
if (mActorMngr[1].getActorP() == NULL) {
mActorMngr[1].entry(getNearestActorP(0x26E));
}
if (mActorMngr[2].getActorP() == NULL) {
mActorMngr[2].entry(getNearestActorP(0x245));
}
if (mActorMngr[3].getActorP() == NULL) {
mActorMngr[3].entry(getNearestActorP(0x25D));
}
break;
}
case TYPE_1: {
if (mActorMngr[0].getActorP() == NULL) {
mActorMngr[0].entry(getNearestActorP(0x241));
}
if (mActorMngr[1].getActorP() == NULL) {
mActorMngr[1].entry(getNearestActorP(0x26E));
}
break;
}
case TYPE_3: {
if (mActorMngr[8].getActorP() == NULL) {
mActorMngr[8].entry(getNearestActorP(0x250));
}
break;
}
case TYPE_8:
case TYPE_7: {
if (&daNpc_Maro_c::arrowTutorial == field_0x110c) {
if (mActorMngr[1].getActorP() == NULL) {
mActorMngr[1].entry(getNearestActorP(0x26E));
}
if (mActorMngr[6].getActorP() == NULL) {
mActorMngr[6].entry(getEvtAreaTagP(11, 0));
}
}
if (&daNpc_Maro_c::tend == field_0x110c && mActorMngr[5].getActorP() == NULL) {
mActorMngr[5].entry(getShopItemTagP());
}
break;
}
case TYPE_10: {
if (mActorMngr[2].getActorP() == NULL) {
mActorMngr[2].entry(getNearestActorP(0x245));
}
break;
}
case TYPE_12: {
if (mActorMngr[1].getActorP() == NULL) {
mActorMngr[1].entry(getNearestActorP(0x26E));
}
if (mActorMngr[3].getActorP() == NULL) {
mActorMngr[3].entry(getNearestActorP(0x25d));
}
if (mActorMngr[7].getActorP() == NULL) {
mActorMngr[7].entry(getNearestActorP(0x264));
}
break;
}
case TYPE_13: {
if (mActorMngr[0].getActorP() == NULL) {
mActorMngr[0].entry(getNearestActorP(0x241));
}
if (mActorMngr[1].getActorP() == NULL) {
mActorMngr[1].entry(getNearestActorP(0x26E));
}
if (mActorMngr[2].getActorP() == NULL) {
mActorMngr[2].entry(getNearestActorP(0x245));
}
if (mActorMngr[3].getActorP() == NULL) {
mActorMngr[3].entry(getNearestActorP(0x25D));
}
break;
}
case TYPE_4:
case TYPE_5:
case TYPE_6:
case TYPE_9:
case TYPE_11:
case TYPE_14:
case TYPE_15:
case TYPE_2: {
break;
}
}
}
/* 8055D0D8-8055D1F4 001C38 011C+00 1/0 0/0 0/0 .text evtTalk__12daNpc_Maro_cFv */
BOOL daNpc_Maro_c::evtTalk() {
if (field_0x1131) {
if (chkAction(&daNpc_Maro_c::shop)) {
(this->*(field_0x1118))(NULL);
} else {
mShopCamAction.shop_cam_action_init();
setAction(&daNpc_Maro_c::shop);
}
} else {
if (chkAction(&daNpc_Maro_c::talk)) {
(this->*(field_0x1118))(NULL);
} else {
setAction(&daNpc_Maro_c::talk);
}
}
return 1;
}
/* 8055D1F4-8055D368 001D54 0174+00 1/0 0/0 0/0 .text evtCutProc__12daNpc_Maro_cFv */
BOOL daNpc_Maro_c::evtCutProc() {
int staff_id = dComIfGp_getEventManager().getMyStaffId("Maro", this, -1);
if (staff_id != -1) {
if (mStaffId == -1) {
if (0 == strcmp(dComIfGp_getEventManager().getRunEventName(), "BREAK_ARROWTUTORIAL")
|| 0 == strcmp(dComIfGp_getEventManager().getRunEventName(), "CONTINUE_ARROWTUTORIAL")
|| 0 == strcmp(dComIfGp_getEventManager().getRunEventName(), "END_ARROWTUTORIAL")
|| 0 == strcmp(dComIfGp_getEventManager().getRunEventName(), "CLEAR_ARROWTUTORIAL")) {
field_0x1138 = 1;
}
}
mStaffId = staff_id;
int actIdx = dComIfGp_getEventManager().getMyActIdx(mStaffId, mCutNameList, 17, 0, 0);
if ((this->*(mCutList[actIdx]))(mStaffId) != 0) {
dComIfGp_getEventManager().cutEnd(mStaffId);
}
return 1;
}
if (field_0x1131) {
mShopCamAction.Save();
}
return 0;
}
/* 8055D368-8055D5C4 001EC8 025C+00 1/0 0/0 0/0 .text action__12daNpc_Maro_cFv */
void daNpc_Maro_c::action() {
fopAc_ac_c* actor_p = NULL;
if (!mTwilight) {
actor_p = hitChk(&mCyl1, -1);
}
if (actor_p != NULL && mType != 6) {
mStagger.setParam(this, actor_p, mCurAngle.y);
setDamage(0, 9, 0);
mDamageTimerStart = 0;
mJntAnm.lookNone(1);
}
if (mStagger.checkRebirth()) {
mStagger.initialize();
mMode = 1;
}
if (dComIfGp_event_runCheck() == 0) {
field_0x1138 = 0;
if (daNpcT_chkTmpBit(0x3C)) {
if (dComIfGs_getArrowNum() == 0) {
if (field_0x1128 && (cLib_calcTimer(&field_0x1128) == 0 || getArrowP() == NULL)) {
field_0x1128 = 0;
field_0x1137 = 1;
}
} else {
field_0x1128 = 30;
}
}
}
if (field_0x110c) {
if (field_0x1118 == field_0x110c) {
(this->*(field_0x1118))(NULL);
} else {
setAction(field_0x110c);
}
}
actor_p = field_0xba0.getActorP();
if (actor_p != NULL) {
switch (((daTag_Push_c*) actor_p)->getId()) {
case 5: {
mEvtNo = 8;
}
}
}
}
/* 8055D5C4-8055D688 002124 00C4+00 1/0 0/0 0/0 .text beforeMove__12daNpc_Maro_cFv */
void daNpc_Maro_c::beforeMove() {
fopAcM_OffStatus(this, fopAcM_STATUS_UNK_0x8000000);
if (checkHide()) {
fopAcM_OnStatus(this, fopAcM_STATUS_UNK_0x8000000);
}
if (checkHide() || mNoDraw) {
attention_info.flags = 0;
}
}
/* 8055D688-8055D918 0021E8 0290+00 1/0 0/0 0/0 .text setAttnPos__12daNpc_Maro_cFv */
void daNpc_Maro_c::setAttnPos() {
cXyz eyeOffset(0.0f, 0.0f, -30.0f);
if (field_0x1133) {
daPy_getPlayerActorClass()->onWolfEyeKeep();
}
mStagger.calc(0);
f32 dVar8 = cM_s2rad(mCurAngle.y - field_0xd7e.y);
mJntAnm.setParam(
this, mpMorf[0]->getModel(), &eyeOffset, getBackboneJointNo(), getNeckJointNo(),
getHeadJointNo(), daNpc_Maro_Param_c::m.common.body_angleX_min, daNpc_Maro_Param_c::m.common.body_angleX_max,
daNpc_Maro_Param_c::m.common.body_angleY_min, daNpc_Maro_Param_c::m.common.body_angleY_max,
daNpc_Maro_Param_c::m.common.head_angleX_min, daNpc_Maro_Param_c::m.common.head_angleX_max,
daNpc_Maro_Param_c::m.common.head_angleY_min, daNpc_Maro_Param_c::m.common.head_angleY_max,
daNpc_Maro_Param_c::m.common.neck_rotation_ratio, 0.0f, NULL);
mJntAnm.calcJntRad(0.2f, 1.0f, (float)dVar8);
setMtx();
mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo()));
mDoMtx_stack_c::multVec(&eyeOffset, &eyePos);
mJntAnm.setEyeAngleX(eyePos, 1.0f, 0);
mJntAnm.setEyeAngleY(eyePos, mCurAngle.y, 0, 1.0f, 0);
eyeOffset.set(0.0f, 0.0f, 0.0f);
eyeOffset.y = daNpc_Maro_Param_c::m.common.attention_offset;
mDoMtx_stack_c::YrotS(mCurAngle.y);
mDoMtx_stack_c::multVec(&eyeOffset, &eyeOffset);
attention_info.position = current.pos + eyeOffset;
}
/* 8055D918-8055DA70 002478 0158+00 1/0 0/0 0/0 .text setCollision__12daNpc_Maro_cFv */
void daNpc_Maro_c::setCollision() {
cXyz cStack_48;
if (!mHide) {
int tgType = 0xd8fbfdff;
int tgSPrm = 0x1f;
if (mTwilight) {
tgType = 0;
tgSPrm = 0;
} else if (mStagger.checkStagger()) {
tgType = 0;
tgSPrm = 0;
}
mCyl1.SetCoSPrm(0x79);
mCyl1.SetTgType(tgType);
mCyl1.SetTgSPrm(tgSPrm);
mCyl1.OnTgNoHitMark();
cStack_48.set(0.0f, 0.0f, 0.0f);
f32 cylH = mCylH;
f32 wallR = mWallR;
mDoMtx_stack_c::YrotS(mCurAngle.y);
mDoMtx_stack_c::multVec(&cStack_48, &cStack_48);
cStack_48 += current.pos;
mCyl1.SetH(cylH);
mCyl1.SetR(wallR);
mCyl1.SetC(cStack_48);
dComIfG_Ccsp()->Set(&mCyl1);
}
mCyl1.ClrCoHit();
mCyl1.ClrTgHit();
}
/* 8055DA70-8055DA78 0025D0 0008+00 1/0 0/0 0/0 .text drawDbgInfo__12daNpc_Maro_cFv */
BOOL daNpc_Maro_c::drawDbgInfo() {
return FALSE;
}
/* 8055DA78-8055DAD8 0025D8 0060+00 1/0 0/0 0/0 .text drawOtherMdl__12daNpc_Maro_cFv */
void daNpc_Maro_c::drawOtherMdl() {
if (field_0x1131) {
cXyz my_vec;
itemRotate();
my_vec.set(0.0f, 0.0f, 0.0f);
itemZoom(&my_vec);
drawCursor();
}
}
/* 8055DAD8-8055DB64 002638 008C+00 1/0 0/0 0/0 .text
* getFaceMotionAnm__12daNpc_Maro_cF26daNpcT_faceMotionAnmData_c */
daNpcT_faceMotionAnmData_c daNpc_Maro_c::getFaceMotionAnm(daNpcT_faceMotionAnmData_c param_0) {
daNpcT_faceMotionAnmData_c rv = param_0;
if (mTwilight != TYPE_0 && rv.mBtpFileIdx == 17) {
rv.mBtpFileIdx = 11;
rv.mBtpArcIdx = 2;
}
return rv;
}
/* 8055DB64-8055DBF0 0026C4 008C+00 1/0 0/0 0/0 .text
* getMotionAnm__12daNpc_Maro_cF22daNpcT_motionAnmData_c */
daNpcT_motionAnmData_c daNpc_Maro_c::getMotionAnm(daNpcT_motionAnmData_c param_0) {
daNpcT_motionAnmData_c rv = param_0;
if (mTwilight && rv.mBtkFileIdx == 14) {
rv.mBtkFileIdx = 8;
rv.mBtkArcIdx = 2;
}
return rv;
}
/* 8055DBF0-8055DD08 002750 0118+00 1/1 0/0 0/0 .text selectAction__12daNpc_Maro_cFv */
int daNpc_Maro_c::selectAction() {
field_0x110c = NULL;
switch (mType) {
case 7: {
field_0x110c = &daNpc_Maro_c::tend;
break;
}
case 8: {
field_0x110c = &daNpc_Maro_c::arrowTutorial;
break;
}
case 13: {
if ((u8)daNpcKakashi_chkSwdTutorialStage()) {
field_0x110c = &daNpc_Maro_c::swdTutorial;
} else {
field_0x110c = &daNpc_Maro_c::wait;
}
break;
}
default: {
field_0x110c = &daNpc_Maro_c::wait;
break;
}
}
return 1;
}
/* 8055DD08-8055DD34 002868 002C+00 2/2 0/0 0/0 .text
* chkAction__12daNpc_Maro_cFM12daNpc_Maro_cFPCvPvPv_i */
int daNpc_Maro_c::chkAction(int (daNpc_Maro_c::*param_0)(void*)) {
return field_0x1118 == param_0;
}
/* 8055DD34-8055DDDC 002894 00A8+00 2/2 0/0 0/0 .text
* setAction__12daNpc_Maro_cFM12daNpc_Maro_cFPCvPvPv_i */
int daNpc_Maro_c::setAction(int (daNpc_Maro_c::*action)(void*)) {
mMode = MODE_EXIT;
if (field_0x1118 != NULL) {
(this->*(field_0x1118))(NULL);
}
mMode = MODE_ENTER;
field_0x1118 = action;
if (field_0x1118 != NULL) {
(this->*(field_0x1118))(NULL);
}
return 1;
}
/* 8055DDDC-8055DF7C 00293C 01A0+00 1/0 0/0 0/0 .text
* cutConversationAboutPachinko__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutConversationAboutPachinko(int arg0) {
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
break;
}
case 1: {
mPlayerAngle = fopAcM_searchPlayerAngleY(this);
}
}
}
switch (prm_val) {
case 0: {
retval = 1;
break;
}
case 1: {
mJntAnm.lookPlayer(0);
if (mPlayerAngle == mCurAngle.y) {
retval = 1;
} else if (step(mPlayerAngle, 9, 7, 0xF, 0)) {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
}
}
return retval;
}
/* 8055DF7C-8055E124 002ADC 01A8+00 1/0 0/0 0/0 .text
* cutConversationAboutWoodSwd__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutConversationAboutWoodSwd(int arg0) {
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
mPlayerAngle = fopAcM_searchPlayerAngleY(this);
break;
}
case 1: {
break;
}
}
}
switch (prm_val) {
case 0: {
mJntAnm.lookPlayer(0);
if (mPlayerAngle != mCurAngle.y) {
if (step(mPlayerAngle, 9, 7, 0xF, 0)) {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
} else {
retval = 1;
}
break;
}
case 1: {
retval = 1;
break;
}
}
return retval;
}
/* 8055E124-8055E414 002C84 02F0+00 1/0 0/0 0/0 .text cutSwdTutorial__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutSwdTutorial(int arg0) {
cXyz my_vec_0;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
break;
}
case 1: {
break;
}
case 71: {
mFaceMotionSeqMngr.setNo(1, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
setAngle(home.angle.y);
setPos(current.pos);
}
}
}
switch (prm_val) {
case 0: {
mDamageTimer = 1;
action();
mJntAnm.lookNone(0);
retval = 1;
break;
}
case 1: {
mDamageTimer = 1;
action();
my_vec_0.set(0.0f, 30.0f, 30.0f);
mDoMtx_stack_c::YrotS(mCurAngle.y + 0x2000);
mDoMtx_stack_c::multVec(&my_vec_0, &my_vec_0);
field_0xd6c = current.pos + my_vec_0;
mJntAnm.sorasu1(&field_0xd6c, 0);
retval = 1;
break;
}
case 71: {
mJntAnm.lookCamera(0);
}
}
return retval;
}
/* 8055E414-8055E578 002F74 0164+00 1/0 0/0 0/0 .text cutHail__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutHail(int arg0) {
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
break;
}
case 1: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
break;
}
}
}
switch (prm_val) {
case 0: {
action();
retval = 1;
break;
}
case 1: {
mJntAnm.lookCamera(0);
break;
}
}
return retval;
}
/* 8055E578-8055E968 0030D8 03F0+00 1/0 0/0 0/0 .text cutFindMonkey__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutFindMonkey(int arg0) {
daHorse_c* actor_p = NULL;
cXyz my_vec_0;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
int timer_val = 0;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "timer");
if (param_p != NULL) {
timer_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
break;
}
case 1: {
break;
}
case 3: {
mEventTimer = timer_val;
if (mEventTimer == 0) {
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
}
break;
}
case 4: {
mHide = true;
speedF = 0.0f;
speed.setall(0.0f);
break;
}
}
}
switch (prm_val) {
case 2: {
break;
}
case 0: {
mJntAnm.lookNone(0);
retval = 1;
break;
}
case 1: {
mJntAnm.lookNone(0);
retval = 1;
break;
}
case 3: {
mJntAnm.lookNone(0);
if (mEventTimer == 0) {
actor_p = dComIfGp_getHorseActor();
JUT_ASSERT(0xA99, NULL != actor_p);
my_vec_0 = actor_p->current.pos;
if (50.0f < current.pos.absXZ(my_vec_0)) {
cLib_addCalcAngleS2(&current.angle.y, cLib_targetAngleY(&current.pos, &my_vec_0), 4, 0x800);
shape_angle.y = current.angle.y;
mCurAngle.y = shape_angle.y;
cLib_chaseF(&speedF, 10.0f, 0.5f);
} else {
retval = 1;
}
} else if (cLib_calcTimer(&mEventTimer) == 0) {
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
}
break;
}
case 4: {
retval = 1;
break;
}
}
return retval;
}
/* 8055E968-8055ECF4 0034C8 038C+00 1/0 0/0 0/0 .text cutGiveMeWoodSwd__12daNpc_Maro_cFi
*/
int daNpc_Maro_c::cutGiveMeWoodSwd(int arg0) {
fopAc_ac_c* actor_p = NULL;
cXyz my_vec_0;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
break;
}
case 1: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(4, 0.0f, 0, 0);
my_vec_0.set(-718.0f, 1331.0f, -2139.0f);
setPos(my_vec_0);
setAngle(cM_deg2s(50.0f));
mStepMode = 0;
break;
}
case 2: {
break;
}
case 3: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
my_vec_0.set(-511.0f, 1370.0f, -2153.0f);
setPos(my_vec_0);
setAngle(cM_deg2s(30.0f));
mStepMode = 0;
break;
}
}
}
switch (prm_val) {
case 0: {
mJntAnm.lookPlayer(0);
retval = 1;
break;
}
case 1: {
actor_p = mActorMngr[3].getActorP();
JUT_ASSERT(0xB00, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
retval = 1;
break;
}
case 2:
case 3: {
mJntAnm.lookPlayer(0);
retval = 1;
break;
}
}
return retval;
}
/* 8055ECF4-8055F508 003854 0814+00 3/0 0/0 0/0 .text cutGetWoodSwd__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutGetWoodSwd(int arg0) {
fopAc_ac_c* actor_p = NULL;
cXyz my_vec_0;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
int timer_val;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "timer");
if (param_p != NULL) {
timer_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
break;
}
case 1: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
my_vec_0.set(-718.0f, 1331.0f, -2139.0f);
setPos(my_vec_0);
setAngle(cM_deg2s(50.0f));
mStepMode = 0;
mHide = true;
break;
}
case 2: {
mHide = false;
break;
}
case 3: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
my_vec_0.set(-511.0f, 1370.0f, -2153.0f);
setPos(my_vec_0);
setAngle(cM_deg2s(30.0f));
mStepMode = 0;
break;
}
case 4: {
home.pos = current.pos;
home.angle.y = mCurAngle.y;
mEventTimer = timer_val;
if (mEventTimer == 0) {
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
}
break;
}
case 5: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
speedF = 0.0f;
speed.setall(0.0f);
mHide = true;
break;
}
case 11: {
mHide = false;
break;
}
}
}
switch (prm_val) {
case 0: {
mJntAnm.lookPlayer(0);
retval = 1;
break;
}
case 1: {
actor_p = mActorMngr[3].getActorP();
JUT_ASSERT(0xB79, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
retval = 1;
break;
}
case 2:
case 3: {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xB81, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
retval = 1;
break;
}
case 4: {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xB81, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
if (mEventTimer == 0) {
my_vec_0.set(0.0f, 0.0f, 1600.0f);
mDoMtx_stack_c::YrotS(home.angle.y + cM_deg2s(60.0f));
mDoMtx_stack_c::multVec(&my_vec_0, &my_vec_0);
my_vec_0 += home.pos;
if (50.0f < current.pos.absXZ(my_vec_0)) {
cLib_addCalcAngleS2(&current.angle.y, cLib_targetAngleY(&current.pos, &my_vec_0), 4, 0x800);
shape_angle.y = current.angle.y;
mCurAngle.y = shape_angle.y;
cLib_chaseF(&speedF, 10.0f, 0.5f);
} else {
speedF = 0.0f;
speed.setall(0.0f);
}
} else if (cLib_calcTimer(&mEventTimer) == 0) {
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
}
retval = 1;
break;
}
case 5: {
mJntAnm.lookNone(0);
retval = 1;
break;
}
case 10:
case 11: {
action();
retval = 1;
break;
}
}
return retval;
}
/* 8055F508-8055F634 004068 012C+00 1/0 0/0 0/0 .text cutConversationWithMaro__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutConversationWithMaro(int arg0) {
fopAc_ac_c* actor_p = NULL;
cXyz my_vec_0;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
dComIfGp_getEventManager().getIsAddvance(arg0);
switch (prm_val) {
case 0: {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xB81, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
retval = 1;
break;
}
}
return retval;
}
/* 8055F634-8055F82C 004194 01F8+00 1/0 0/0 0/0 .text cutCacaricoConversation__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutCacaricoConversation(int arg0) {
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
mPlayerAngle = fopAcM_searchPlayerAngleY(this);
if (checkStep()) {
mStepMode = 0;
}
}
case 1: {
break;
}
}
}
switch (prm_val) {
case 0: {
mJntAnm.lookPlayer(0);
if (mPlayerAngle != mCurAngle.y) {
if (step(mPlayerAngle, 9, 7, 0xF, 0)) {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
} else {
retval = 1;
}
break;
}
case 1: {
mJntAnm.lookPlayer(0);
retval = 1;
break;
}
}
return retval;
}
/* 8055F82C-8055FAF0 00438C 02C4+00 1/0 0/0 0/0 .text cutSurprise__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutSurprise(int arg0) {
daTag_Push_c* push_p = (daTag_Push_c*) field_0xba0.getActorP();
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mJntAnm.lookNone(1);
push_p->pushBackPlayer(1);
break;
}
case 1: {
initTalk(push_p->getFlowNodeNo(), NULL);
setAngle(mPlayerAngle);
mJntAnm.lookPlayer(1);
break;
}
}
}
switch (prm_val) {
case 0: {
retval = 1;
break;
}
case 1: {
if (talkProc(NULL, 0, NULL, 0) && mFlow.checkEndFlow()) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
field_0xba0.remove();
retval = 1;
}
break;
}
}
return retval;
}
int dummy_lit_6272(int arg) {
int dummy_vals[2] = {-1, -1};
return dummy_vals[arg];
}
/* 8055FAF0-805611E0 004650 16F0+00 3/0 0/0 0/0 .text cutArrowTutorial__12daNpc_Maro_cFi
*/
int daNpc_Maro_c::cutArrowTutorial(int arg0) {
fopAc_ac_c* actor_p = NULL;
cXyz my_vec_0, temp, my_vec_2;
csXyz my_s_vec;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
int timer_val = 0;
int msgNo_val = 0;
int msgNo2_val = 0;
int send_val = 0;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "timer");
if (param_p != NULL) {
timer_val = *param_p;
}
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "msgNo");
if (param_p != NULL) {
msgNo_val = *param_p;
}
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "msgNo2");
if (param_p != NULL) {
msgNo2_val = *param_p;
}
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "send");
if (param_p != NULL) {
send_val = *param_p;
}
fopAc_ac_c* local_4c[2] = {this, mActorMngr[1].getActorP()};
dComIfGp_setMesgCameraInfoActor(local_4c[0], local_4c[1], NULL, 0, 0, 0, 0, 0, 0, 0);
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
mActorMngr[4].entry(getItaMatoP(1));
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xCC3, NULL != actor_p);
dComIfGp_getEvent().setPtI(actor_p);
break;
}
case 1: {
mEventTimer = timer_val;
break;
}
case 2:
case 4: {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xCCE, NULL != actor_p);
dComIfGp_getEvent().setPt2(actor_p);
break;
}
case 3: {
mJntAnm.lookPlayer(1);
break;
}
case 5: {
mJntAnm.lookPlayer(1);
break;
}
case 20: {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
Z2GetAudioMgr()->subBgmStop();
break;
}
case 21: {
setAngle(home.angle.y);
mHide = true;
field_0x1135 = 0;
if (daNpcT_getPlayerInfoFromPlayerList(0x42, current.roomNo, &my_vec_2, &my_s_vec)) {
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&my_vec_2, my_s_vec.y, 0);
}
if (field_0x10bc != 0xFFFFFFFF) {
dComIfG_TimerDeleteRequest(0);
field_0x10bc = -1;
}
dComIfGp_getAttention()->offAttnDraw();
daNpcT_offTmpBit(0x3C);
daNpcT_offTmpBit(0x3F);
daNpcT_offTmpBit(0x40);
daNpcT_offTmpBit(0x41);
daNpcT_offTmpBit(0x42);
break;
}
case 22: {
mEventTimer = timer_val;
break;
}
case 30: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mEventTimer = timer_val;
dComIfGp_getEvent().setPtT(this);
mActorMngr[4].entry(getItaMatoP(1));
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xD0B, NULL != actor_p);
dComIfGp_getEvent().setPtI(actor_p);
break;
}
case 31: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
initTalk(mFlowNodeNo, local_4c);
setAngle(mPlayerAngle);
mHide = false;
mEventTimer = timer_val;
dComIfGp_getEvent().setPt2(this);
break;
}
case 32: {
mActorMngr[4].entry(getItaMatoP(2));
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xD1E, NULL != actor_p);
dComIfGp_getEvent().setPtI(actor_p);
dComIfGp_getEvent().setPt2(actor_p);
}
// fallthrough intentional.
case 33: {
mJntAnm.lookPlayer(1);
break;
}
case 40: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mEventTimer = timer_val;
mActorMngr[4].entry(getItaMatoP(2));
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xD2E, NULL != actor_p);
dComIfGp_getEvent().setPtI(actor_p);
dComIfGp_getEvent().setPt2(actor_p);
break;
}
case 41: {
initTalk(mFlowNodeNo, local_4c);
break;
}
case 50: {
if (daNpcT_chkEvtBit(0x4C) && daNpcT_chkEvtBit(0x4B)) {
initTalk(0x1D, local_4c);
} else {
initTalk(mFlowNodeNo, local_4c);
}
mEventTimer = timer_val;
break;
}
case 60: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mJntAnm.lookNone(1);
break;
}
case 61: {
initTalk(mFlowNodeNo, local_4c);
break;
}
case 65: {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xD2E, NULL != actor_p);
dComIfGp_getEvent().setPt2(actor_p);
break;
}
case 66: {
initTalk(29, local_4c);
break;
}
case 70: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mPlayerAngle = fopAcM_searchPlayerAngleY(this);
if (checkStep()) {
mStepMode = 0;
}
break;
}
case 71: {
initTalk(27, NULL);
break;
}
case 80: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
if (daNpcT_getPlayerInfoFromPlayerList(0x42, current.roomNo, &my_vec_2, &my_s_vec)) {
my_vec_0.set(0.0f, 0.0f, 300.0f);
mDoMtx_stack_c::YrotS(cLib_targetAngleY(&my_vec_2, &daPy_getPlayerActorClass()->current.pos));
mDoMtx_stack_c::multVec(&my_vec_0, &my_vec_0);
my_vec_0 += my_vec_2;
if (daPy_getPlayerActorClass()->current.pos.absXZ(my_vec_0) < 100.0f) {
my_vec_0.set(0.0f, 0.0f, 200.0f);
mDoMtx_stack_c::YrotS(cLib_targetAngleY(&my_vec_2, &daPy_getPlayerActorClass()->current.pos));
mDoMtx_stack_c::multVec(&my_vec_0, &my_vec_0);
my_vec_0 += my_vec_2;
}
dComIfGp_evmng_setGoal(&my_vec_0);
}
break;
}
case 90: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
setAngle(fopAcM_searchPlayerAngleY(this));
mHide = false;
initTalk(mFlowNodeNo, local_4c);
dComIfGp_getEvent().setPtT(this);
break;
}
case 7: {
dComIfGp_getEvent().setPt2(this);
break;
}
case 10: {
if (daNpcT_getPlayerInfoFromPlayerList(0x42, current.roomNo, &my_vec_2, &my_s_vec)) {
my_vec_0.set(0.0f, 300.0f, 200.0f);
mDoMtx_stack_c::transS(daPy_getPlayerActorClass()->current.pos);
mDoMtx_stack_c::YrotM(cLib_targetAngleY(&daPy_getPlayerActorClass()->current.pos, &my_vec_2));
mDoMtx_stack_c::multVec(&my_vec_0, &temp);
mGndChk.SetPos(&temp);
temp.y = dComIfG_Bgsp().GroundCross(&mGndChk);
JUT_ASSERT(0xDA9, -G_CM3D_F_INF != temp.y);
dComIfGp_evmng_setGoal(&temp);
}
break;
}
case 34: {
mActorMngr[4].entry(getItaMatoP(2));
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xDB3, NULL != actor_p);
dComIfGp_getEvent().setPtI(actor_p);
dComIfGp_getEvent().setPt2(actor_p);
}
// fallthrough intentional.
case 35: {
mJntAnm.lookPlayer(1);
break;
}
case 44: {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xDBD, NULL != actor_p);
dComIfGp_getEvent().setPt2(actor_p);
break;
}
case 64: {
initTalk(mFlowNodeNo, local_4c);
break;
}
case 93: {
break;
}
}
}
int evt_id;
int my_vals[3] = {-1, -1, -1};
switch (prm_val) {
case 0:
case 93: {
action();
retval = 1;
break;
}
case 1:
case 31: {
mJntAnm.lookPlayer(0);
my_vals[0] = msgNo_val;
my_vals[1] = msgNo2_val;
if (cLib_calcTimer(&mEventTimer) == 0 && talkProc(my_vals, false, local_4c, false)) {
if (msgNo_val == 0 && msgNo2_val == 0) {
if (mFlow.checkEndFlow()) {
retval = 1;
}
} else {
retval = 1;
}
}
if (prm_val == 1 && retval != 0) {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xDF0, NULL != actor_p);
dComIfGp_getEvent().setPt2(actor_p);
}
break;
}
case 2:
case 4:
case 5: {
if (prm_val != 5) {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xDFA, NULL != actor_p);
mJntAnm.lookActor(actor_p, 0.0f, 0);
}
my_vals[0] = msgNo_val;
if (talkProc(my_vals, send_val, local_4c, false)) {
if (msgNo_val == 0) {
if (mFlow.checkEndFlow()) {
switch (prm_val) {
case 2: {
mJntAnm.lookPlayer(1);
setAngle(home.angle.y);
}
// fallthrough intentional.
case 5: {
daNpcT_onEvtBit(0x4A);
}
// fallthrough intentional.
default: {
retval = 1;
}
}
}
} else {
retval = 1;
}
}
if (retval == 1) {
switch (prm_val) {
case 2:
case 4: {
dComIfGp_getEvent().setPt2(this);
break;
}
}
}
if (prm_val == 4 && send_val == 0) {
retval = 1;
}
break;
}
case 3: {
action();
retval = 1;
break;
}
case 6: {
if (home.angle.y != mCurAngle.y) {
step(home.angle.y, 9, 7, 15, 0);
} else {
retval = 1;
}
break;
}
case 20: {
mJntAnm.lookPlayer(0);
retval = 1;
break;
}
case 21: {
retval = 1;
break;
}
case 22: {
if (cLib_calcTimer(&mEventTimer) == 0) {
retval = 1;
}
break;
}
case 30: {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
mJntAnm.lookActor(actor_p, 0.0f, 0);
if (cLib_calcTimer(&mEventTimer) == 0) {
retval = 1;
}
break;
}
case 32:
case 91: {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
mJntAnm.lookActor(actor_p, 0.0f, 0);
my_vals[0] = msgNo_val;
if (talkProc(my_vals, send_val, local_4c, false)) {
if (msgNo_val == 0 && msgNo2_val == 0) {
if (mFlow.checkEndFlow()) {
retval = 1;
}
} else {
retval = 1;
}
}
if (retval != 0 && prm_val == 91) {
setAngle(home.angle.y);
}
if (send_val == 0) {
retval = 1;
}
break;
}
case 33: {
retval = 1;
break;
}
case 40: {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
mJntAnm.lookActor(actor_p, 0.0f, 0);
if (cLib_calcTimer(&mEventTimer) == 0) {
retval = 1;
}
break;
}
case 41: {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
mJntAnm.lookActor(actor_p, 0.0f, 0);
my_vals[0] = msgNo_val;
if (talkProc(my_vals, 0, local_4c, false)) {
if (msgNo_val == 0) {
if (mFlow.checkEndFlow()) {
retval = 1;
}
} else {
retval = 1;
}
}
if (retval != 0) {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
dComIfGp_getEvent().setPt2(actor_p);
}
break;
}
case 42:
case 43:
case 92: {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
my_vals[0] = msgNo_val;
if (talkProc(my_vals, send_val, local_4c, false)) {
if (msgNo_val == 0) {
if (mFlow.checkEndFlow()) {
retval = 1;
}
} else {
retval = 1;
}
}
if (retval != 0 && prm_val == 92) {
if (dComIfG_getTimerPtr() != NULL && dComIfG_getTimerMode() == 0 && dTimer_isStart() == 0) {
dComIfG_TimerStart(0, 0);
}
setAngle(home.angle.y);
}
if (prm_val == 43 && send_val == 0) {
retval = 1;
}
break;
}
case 50: {
if (cLib_calcTimer(&mEventTimer) == 0 && talkProc(NULL, false, local_4c, false) && mFlow.checkEndFlow()) {
retval = 1;
}
break;
}
case 60: {
retval = 1;
break;
}
case 61:
case 62:
case 63: {
mJntAnm.lookNone(0);
if (prm_val == 63) {
mJntAnm.lookPlayer(dComIfGp_getEventManager().getIsAddvance(arg0));
}
my_vals[0] = msgNo_val;
my_vals[1] = msgNo2_val;
if (talkProc(my_vals, 0, local_4c, false)) {
if (msgNo_val == 0 && msgNo2_val == 0) {
if (mFlow.checkEndFlow()) {
retval = 1;
}
} else {
retval = 1;
}
}
if (retval != 0) {
if (prm_val == 61) {
my_s_vec.y = fopAcM_searchActorAngleY(daPy_getPlayerActorClass(), this);
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&daPy_getPlayerActorClass()->current.pos,
my_s_vec.y, 0);
dComIfGp_getEvent().setPt2(this);
setAngle(fopAcM_searchPlayerAngleY(this));
} else if (prm_val == 63) {
if (!daNpcT_chkEvtBit(0x4B)) {
dComIfGs_offSaveSwitch(0x6D);
}
int evt_ret = mFlow.getEventId(&evt_id);
switch (evt_ret) {
case 1: {
if (mItemPartnerId == -1) {
mItemPartnerId = fopAcM_createItemForPresentDemo(&current.pos, evt_id, 0, -1, -1, NULL, NULL);
}
if (fopAcM_IsExecuting(mItemPartnerId)) {
mEvtNo = 1;
field_0x1135 = 1;
evtChange();
}
retval = 0;
break;
}
case 8: {
if (evt_id == 1) {
mEvtNo = 11;
evtChange();
}
retval = 0;
break;
}
}
}
}
break;
}
case 65: {
retval = 1;
break;
}
case 66: {
if (talkProc(my_vals, 0, local_4c, 0) && mFlow.checkEndFlow()) {
retval = 1;
}
break;
}
case 70: {
mJntAnm.lookPlayer(0);
if (mPlayerAngle != mCurAngle.y) {
step(mPlayerAngle, 9, 7, 0xF, 0);
} else {
retval = 1;
}
break;
}
case 71: {
mJntAnm.lookPlayer(0);
if (talkProc(NULL, 0, NULL, 0)) {
int evt_ret = mFlow.getEventId(&evt_id);
if (evt_ret == 8) {
switch (evt_id) {
case 1: {
mEvtNo = 11;
evtChange();
break;
}
case 2: {
mEvtNo = 10;
evtChange();
break;
}
default: {
if (mFlow.checkEndFlow()) {
retval = 1;
}
break;
}
}
}
}
break;
}
case 80: {
mJntAnm.lookPlayer(0);
retval = 1;
break;
}
case 90: {
retval = 1;
break;
}
case 7: {
mJntAnm.lookPlayer(dComIfGp_getEventManager().getIsAddvance(arg0));
if (talkProc(NULL, 0, NULL, 0)) {
retval = 1;
}
break;
}
case 10:
case 51: {
action();
retval = 1;
break;
}
case 34: {
actor_p = mActorMngr[4].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
mJntAnm.lookActor(actor_p, 0.0f, 0);
my_vals[0] = msgNo_val;
if (talkProc(my_vals, send_val, local_4c, 0)) {
if (msgNo_val == 0 && msgNo2_val == 0) {
if (mFlow.checkEndFlow()) {
retval = 1;
}
} else {
retval = 1;
}
}
if (retval != 0 && prm_val == 32) {
setAngle(home.angle.y);
}
if (send_val == 0) {
retval = 1;
}
break;
}
case 35: {
retval = 1;
break;
}
case 44: {
actor_p = mActorMngr[1].getActorP();
JUT_ASSERT(0xE48, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
my_vals[0] = msgNo_val;
if (talkProc(my_vals, send_val, local_4c, 0)) {
if (prm_val == 43) {
setAngle(home.angle.y);
if (dComIfG_getTimerPtr() != NULL && dComIfG_getTimerMode() == 0 && dTimer_isStart() == 0) {
dComIfG_TimerStart(0, 0);
}
}
if (prm_val == 44) {
setAngle(fopAcM_searchPlayerAngleY(this));
}
retval = 1;
}
if (send_val == 0) {
retval = 1;
}
break;
}
case 64: {
if (talkProc(NULL, 0, local_4c, 0)) {
retval = 1;
}
break;
}
}
return retval;
}
/* 805611E0-80561328 005D40 0148+00 1/0 0/0 0/0 .text cutBokinTalk__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutBokinTalk(int arg0) {
daTag_Push_c* push_p = (daTag_Push_c*) field_0xba0.getActorP();
(void) push_p;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
mFaceMotionSeqMngr.setNo(7, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
mJntAnm.lookCamera(0);
break;
}
}
}
switch (prm_val) {
case 0: {
retval = 1;
break;
}
}
return retval;
}
/* 80561328-80561614 005E88 02EC+00 1/0 0/0 0/0 .text cutMarosWhisper__12daNpc_Maro_cFi
*/
int daNpc_Maro_c::cutMarosWhisper(int arg0) {
fopAc_ac_c* actor_p = NULL;
cXyz my_vec_0;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
int timer_val = 0;
s16 angle_y;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "timer");
if (param_p != NULL) {
timer_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
endChoccai();
actor_p = mActorMngr[0].getActorP();
JUT_ASSERT(0xFF8, NULL != actor_p);
angle_y = fopAcM_searchActorAngleY(daPy_getPlayerActorClass(), actor_p);
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&daPy_getPlayerActorClass()->current.pos,
angle_y, 0);
break;
}
case 1:
case 2: {
mEventTimer = timer_val;
break;
}
case 3: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
setAngle(home.angle.y);
my_vec_0.set(0.0f, 40.0f, 40.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(mCurAngle.y - 0x2800);
mDoMtx_stack_c::multVec(&my_vec_0, &field_0xd6c);
mJntAnm.sorasu2(&field_0xd6c, 1);
initTalk(22, NULL);
dComIfGp_getEvent().setPtT(this);
dComIfGp_getEvent().setPt2(this);
}
}
}
switch (prm_val) {
case 0: {
retval = 1;
break;
}
case 1:
case 2: {
if (cLib_calcTimer(&mEventTimer) == 0) {
retval = 1;
}
break;
}
case 3: {
if (talkProc(NULL, 0, NULL, 0)) {
retval = 1;
}
break;
}
default: {
retval = 1;
break;
}
}
return retval;
}
/* 80561614-8056178C 006174 0178+00 1/0 0/0 0/0 .text cutTagPush1__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutTagPush1(int arg0) {
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
break;
}
case 1: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mJntAnm.lookCamera(0);
field_0x1132 = 1;
}
}
}
switch (prm_val) {
case 0: {
action();
mEvtNo = 0;
return 1;
}
case 1: {
return 1;
}
}
return 1;
}
/* 8056178C-80561E70 0062EC 06E4+00 3/0 0/0 0/0 .text cutNotGonnaLet__12daNpc_Maro_cFi */
int daNpc_Maro_c::cutNotGonnaLet(int arg0) {
fopAc_ac_c* actor_p = NULL;
cXyz my_vec_0;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
endChoccai();
field_0x1132 = 1;
break;
}
case 1: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(4, 0.0f, 0, 0);
actor_p = mActorMngr[3].getActorP();
JUT_ASSERT(0x108E, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
my_vec_0.set(-718.0f, 1331.0f, -2139.0f);
setPos(my_vec_0);
setAngle(cM_deg2s(50.0f));
mStepMode = 0;
break;
}
case 2: {
mJntAnm.lookPlayer(0);
break;
}
case 4: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mJntAnm.lookPlayer(0);
field_0x1132 = 0;
my_vec_0.set(-511.0f, 1370.0f, -2153.0f);
setPos(my_vec_0);
setAngle(cM_deg2s(30.0f));
break;
}
case 20: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
actor_p = mActorMngr[3].getActorP();
JUT_ASSERT(0x10B0, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 0);
my_vec_0.set(-718.0f, 1331.0f, -2139.0f);
setPos(my_vec_0);
setAngle(cM_deg2s(50.0f));
mStepMode = 0;
break;
}
case 21: {
my_vec_0.set(0.0f, 30.0f, 30.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(mCurAngle.y - 0x2800);
mDoMtx_stack_c::multVec(&my_vec_0, &field_0xd6c);
mJntAnm.sorasu1(&field_0xd6c, 0);
break;
}
case 31: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
mJntAnm.lookPlayer(1);
findPlayer();
setAngle(home.angle.y);
break;
}
}
}
switch (prm_val) {
case 0: {
action();
retval = 1;
break;
}
case 1: {
retval = 1;
break;
}
case 2: {
if (mCurAngle.y != fopAcM_searchPlayerAngleY(this)) {
if (step(fopAcM_searchPlayerAngleY(this), 9, 7, 15, 0)) {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
} else {
retval = 1;
}
break;
}
case 3:
case 4:
case 20:
case 21: {
retval = 1;
break;
}
case 30: {
action();
retval = 1;
break;
}
case 31: {
retval = 1;
break;
}
default: {
retval = 1;
break;
}
}
return retval;
}
/* 80561E70-80562174 0069D0 0304+00 1/0 0/0 0/0 .text cutTalkToKakashi__12daNpc_Maro_cFi
*/
int daNpc_Maro_c::cutTalkToKakashi(int arg0) {
fopAc_ac_c* actor_p = NULL;
cXyz my_vec_0;
cXyz temp;
int retval = 0;
int* param_p = NULL;
int prm_val = -1;
s16 angle_y;
param_p = dComIfGp_evmng_getMyIntegerP(arg0, "prm");
if (param_p != NULL) {
prm_val = *param_p;
}
if (dComIfGp_getEventManager().getIsAddvance(arg0)) {
switch (prm_val) {
case 0: {
my_vec_0.set(0.0f, 0.0f, 70.0f);
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::YrotM(mCurAngle.y);
mDoMtx_stack_c::multVec(&my_vec_0, &temp);
mDoMtx_stack_c::transS(temp);
mDoMtx_stack_c::YrotM(cLib_targetAngleY(&temp, &daPy_getPlayerActorClass()->current.pos));
my_vec_0.set(0.0f, 500.0f, 150.0f);
mDoMtx_stack_c::multVec(&my_vec_0, &temp);
mGndChk.SetPos(&temp);
temp.y = dComIfG_Bgsp().GroundCross(&mGndChk);
JUT_ASSERT(0xDA9, -G_CM3D_F_INF != temp.y);
angle_y = cLib_targetAngleY(&temp, &current.pos);
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&temp, angle_y, 0);
break;
}
case 1: {
mFaceMotionSeqMngr.setNo(9, 0.0f, 0, 0);
mMotionSeqMngr.setNo(0, 0.0f, 0, 0);
actor_p = mActorMngr[0].getActorP();
JUT_ASSERT(0x1133, NULL != actor_p);
mJntAnm.lookActor(actor_p, -40.0f, 1);
initTalk(mFlowNodeNo, NULL);
break;
}
}
}
switch (prm_val) {
case 0: {
mDamageTimer = 1;
action();
retval = 1;
break;
}
case 1: {
if (talkProc(NULL, 0, NULL, 0)) {
retval = 1;
}
break;
}
default: {
retval = 1;
break;
}
}
return retval;
}
/* 80562174-805629A4 006CD4 0830+00 2/0 0/0 0/0 .text wait__12daNpc_Maro_cFPv */
int daNpc_Maro_c::wait(void* param_0) {
fopAc_ac_c* actor_p = NULL;
switch (mMode) {
case 0:
case 1: {
if (mStagger.checkStagger() == 0) {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
mMode = 2;
}
}
case 2: {
switch (mType) {
case 0: {
if (daNpcT_chkEvtBit(0x1F) && mHide) {
fopAcM_delete(this);
return 1;
}
break;
}
case 3: {
actor_p = (daNpc_Len_c*)mActorMngr[8].getActorP();
if (actor_p != NULL &&
((daNpc_Len_c*) actor_p)->checkStartDemo13StbEvt(
this, daNpc_Maro_Param_c::m.common.box_min_x, daNpc_Maro_Param_c::m.common.box_min_y,
daNpc_Maro_Param_c::m.common.box_min_z, daNpc_Maro_Param_c::m.common.box_max_x,
daNpc_Maro_Param_c::m.common.box_max_y, daNpc_Maro_Param_c::m.common.box_max_z,
daNpc_Maro_Param_c::m.common.box_offset))
{
mEvtNo = 7;
field_0x1133 = 1;
}
if (field_0x1133 && daNpcT_chkEvtBit(0x3C) && dComIfGp_event_runCheck() == 0) {
field_0x1133 = 0;
}
break;
}
case 11: {
if (!daNpcT_chkEvtBit(0x266)) {
mSpeakEvent = true;
field_0xe33 = 1;
}
break;
}
case 12: {
if (daNpcT_chkEvtBit(0x25C)) {
fopAcM_delete(this);
return 1;
}
break;
}
}
if (mStagger.checkStagger() == 0) {
if (mType == 3) {
mJntAnm.lookNone(0);
if (getBitSW() != 0xFF) {
if (dComIfGs_isSwitch(getBitSW(), fopAcM_GetRoomNo(this))) {
field_0xd6c.setall(0.0f);
mJntAnm.lookPos(&field_0xd6c, 0);
}
}
attention_info.flags = 0;
} else {
switch (mType) {
case 1:
case 2: {
mPlayerActorMngr.remove();
break;
}
case 4:
case 5: {
mPlayerActorMngr.remove();
if (dComIfGs_isTmpBit(0xD02)) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
}
mJntAnm.lookNone(0);
break;
}
case 10: {
mPlayerActorMngr.remove();
break;
}
}
if (mPlayerActorMngr.getActorP() != NULL) {
if (mType != 4 && mType != 5) {
mJntAnm.lookPlayer(0);
if (chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y) == 0) {
mJntAnm.lookNone(0);
}
if (srchPlayerActor() == 0 && home.angle.y == mCurAngle.y) {
mMode = 1;
}
}
} else {
mJntAnm.lookNone(0);
if (home.angle.y != mCurAngle.y) {
if (field_0xe34) {
if (step(home.angle.y, 9, 7, 15, 0)) {
mMode = 1;
}
} else {
setAngle(home.angle.y);
mMode = 1;
}
attention_info.flags = 0;
} else if (mTwilight == 0 && mType != 4 && mType != 5) {
srchPlayerActor();
}
}
if (mType == 11) {
if (mJntAnm.getMode() == 1) {
dComIfGs_setTmpReg(0xFBFFU, 2);
} else {
dComIfGs_setTmpReg(0xFBFFU, 1);
}
if (mPlayerActorMngr.getActorP() == NULL) {
dComIfGs_setTmpReg(0xFBFFU, 0);
}
}
}
switch (mJntAnm.getMode()) {
case 0: {
switch (mType) {
case 1:
case 2: {
actor_p = mActorMngr[0].getActorP();
if (actor_p != NULL) {
mJntAnm.lookActor(actor_p, -40.0f, 0);
}
break;
}
case 4:
case 5: {
if (dComIfGs_isTmpBit(0xE40)) {
mJntAnm.lookPlayer(0);
}
break;
}
case 10: {
if (daNpcT_chkTmpBit(0x64)) {
field_0x1139 = 1;
home.angle.y = -0x8000;
}
if (field_0x1139) {
mJntAnm.lookCamera(0);
} else {
actor_p = mActorMngr[2].getActorP();
if (actor_p != NULL) {
mJntAnm.lookActor(actor_p, -40.0f, 0);
}
}
break;
}
}
break;
}
}
switch (mType) {
case 4:
case 5:
case 10: {
attention_info.flags = 0;
break;
}
}
}
}
case 3: {
break;
}
}
return 1;
}
/* 805629A4-80562B14 007504 0170+00 2/0 0/0 0/0 .text swdTutorial__12daNpc_Maro_cFPv */
int daNpc_Maro_c::swdTutorial(void* ) {
switch (mMode) {
case 0:
case 1: {
if (mStagger.checkStagger() == 0) {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
mMode = 2;
}
}
// fallthrough intentional
case 2: {
if (mStagger.checkStagger() == 0) {
mJntAnm.lookPlayer(0);
if (home.angle.y != mCurAngle.y) {
if (field_0xe34) {
if (step(home.angle.y, 9, 7, 15, 0)) {
mMode = 1;
}
} else {
setAngle(home.angle.y);
mMode = 1;
}
}
}
attention_info.flags = 0;
break;
}
case 3: {
break;
}
}
return 1;
}
/* 80562B14-80562CA4 007674 0190+00 1/0 0/0 0/0 .text talk_withTaro__12daNpc_Maro_cFPv */
int daNpc_Maro_c::talk_withTaro(void* ) {
switch (mMode) {
case 0:
case 1: {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
mMode = 2;
}
// fallthrough intentional
case 2: {
if (mStagger.checkStagger() == 0) {
mJntAnm.lookNone(0);
if (field_0x1132 || srchPlayerActor()) {
mJntAnm.lookPlayer(0);
}
if (home.angle.y != mCurAngle.y) {
if (step(home.angle.y, 9, 7, 15, 0)) {
mMode = 1;
}
}
}
break;
}
case 3: {
break;
}
}
return 1;
}
/* 80562CA4-80562EC8 007804 0224+00 1/0 0/0 2/0 .text choccai__12daNpc_Maro_cFPv */
int daNpc_Maro_c::choccai(void* ) {
fopAc_ac_c* actor_p = NULL;
switch (mMode) {
case 0:
case 1: {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
mMode = 2;
}
// fallthrough intentional
case 2: {
if (mStagger.checkStagger() == 0) {
mJntAnm.lookNone(0);
actor_p = mActorMngr[1].getActorP();
if (actor_p != NULL) {
s16 angle_y = fopAcM_searchActorAngleY(this, actor_p) + 0xA9E;
if (angle_y != mCurAngle.y) {
step(angle_y, 9, 7, 15, 0);
}
if (checkNowMotionIsChoccai() == 0) {
mFaceMotionSeqMngr.setNo(2, -1.0f, 0, 0);
mMotionSeqMngr.setNo(5, -1.0f, 0, 0);
} else if (checkEndMotionIsChoccai()) {
endChoccai();
}
}
attention_info.flags = 0;
}
break;
}
case 3: {
break;
}
}
return 1;
}
/* 80562EC8-8056319C 007A28 02D4+00 2/0 0/0 0/0 .text tend__12daNpc_Maro_cFPv */
int daNpc_Maro_c::tend(void* ) {
daTag_ShopItem_c* actor_p = (daTag_ShopItem_c*) mActorMngr[5].getActorP();
int do_step = 0;
switch (mMode) {
case 0:
case 1: {
if (actor_p == NULL) {
break;
}
if (dComIfGs_isSaveSwitch(actor_p->getSwitchBit1()) == 0) {
mFaceMotionSeqMngr.setNo(7, -1.0f, 0, 0);
mMotionSeqMngr.setNo(2, -1.0f, 0, 0);
} else {
mFaceMotionSeqMngr.setNo(7, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
mMode = 2;
}
// fallthrough intentional
case 2: {
mJntAnm.lookNone(0);
if (field_0x112c == 2) {
mSpeakEvent = true;
field_0xe33 = 1;
}
if (dComIfGs_isSaveSwitch(actor_p->getSwitchBit1()) == 0
&& daNpcT_chkDoBtnIsSpeak(this)) {
dComIfGp_setDoStatusForce(0x39, 2);
}
if (srchPlayerActor()) {
mJntAnm.lookPlayer(0);
do_step = checkStep();
} else {
mJntAnm.lookNone(0);
do_step = home.angle.y != mCurAngle.y;
}
if (do_step && step(home.angle.y, 9, 7, 15, 0)) {
mMode = 1;
}
break;
}
case 3: {
break;
}
}
return 1;
}
/* 8056319C-8056342C 007CFC 0290+00 3/0 0/0 0/0 .text arrowTutorial__12daNpc_Maro_cFPv */
int daNpc_Maro_c::arrowTutorial(void* ) {
daTag_EvtArea_c* actor_p = NULL;
int unused = 0;
(void) unused;
switch (mMode) {
case 0:
case 1: {
if (mStagger.checkStagger() == 0) {
mFaceMotionSeqMngr.setNo(9, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
mMode = 2;
}
}
// fallthrough intentional
case 2: {
mHide = daNpcT_chkTmpBit(0x3C) == 0;
if (!mHide) {
if (field_0x1135) {
mEvtNo = 12;
field_0xe33 = 1;
} else {
actor_p = (daTag_EvtArea_c*) mActorMngr[6].getActorP();
if (actor_p != NULL && !(daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) == 0)) {
if (actor_p->chkPointInArea(daPy_getPlayerActorClass()->current.pos) == 0) {
mEvtNo = 9;
}
}
if (field_0x1137 || field_0x1136) {
mSpeakEvent = true;
}
}
if (daNpcT_chkEvtBit(0x47) == 0 && dComIfG_getTimerPtr() != NULL
&& dComIfG_getTimerMode() == 0 && dComIfG_getTimerPtr()->getRestTimeMs() == 0) {
field_0x1136 = 1;
}
}
if (mStagger.checkStagger() == 0) {
mJntAnm.lookPlayer(0);
if (home.angle.y != mCurAngle.y && field_0x1135 == 0) {
if (field_0xe34) {
if (step(home.angle.y, 9, 7, 15, 0)) {
mMode = 1;
}
} else {
setAngle(home.angle.y);
mMode = 1;
}
attention_info.flags = 0;
}
}
break;
}
case 3: {
break;
}
}
return 1;
}
/* 8056342C-80563660 007F8C 0234+00 3/0 0/0 0/0 .text talk__12daNpc_Maro_cFPv */
int daNpc_Maro_c::talk(void* param_0) {
switch (mMode) {
case 0:
case 1: {
if (mStagger.checkStagger() == 0) {
initTalk((field_0x1137) ? 26 : (field_0x1136) ? 28 : mFlowNodeNo, NULL);
mMode = 2;
}
}
// fallthrough intentional
case 2: {
if (mStagger.checkStagger() == 0) {
if (mTwilight != 0 || mPlayerAngle == mCurAngle.y) {
if (talkProc(NULL, 0, NULL, 0)) {
int evt_id;
int get_ret = mFlow.getEventId(&evt_id);
if (get_ret == 8 && evt_id == 1) {
mEvtNo = 11;
evtChange();
} else if (mFlow.checkEndFlow()) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
dComIfGp_event_reset();
mMode = 3;
}
field_0x1136 = 0;
field_0x1137 = 0;
}
mJntAnm.lookPlayer(0);
if (mTwilight) {
mJntAnm.lookNone(0);
}
} else {
mJntAnm.lookPlayer(0);
step(mPlayerAngle, 9, 7, 15, 0);
}
}
break;
}
case 3: {
break;
}
}
return 0;
}
/* 80563660-80563780 0081C0 0120+00 2/0 0/0 0/0 .text shop__12daNpc_Maro_cFPv */
int daNpc_Maro_c::shop(void* param_0) {
int retval = 0;
switch (mMode) {
case 0:
case 1: {
if (field_0x112c == 2) {
shop_init(true);
} else {
mShopCamAction.Save();
initTalk(mFlowNodeNo, NULL);
shop_init(false);
}
mJntAnm.lookCamera(0);
mMode = 2;
}
// fallthrough intentional
case 2: {
field_0x112c = shop_process(this, &mFlow);
if (field_0x112c) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
dComIfGp_event_reset();
field_0x1130 = 1;
mMode = 3;
}
break;
}
case 3: {
break;
}
}
return retval;
}
/* 80563780-805637A0 0082E0 0020+00 1/0 0/0 0/0 .text daNpc_Maro_Create__FPv */
static int daNpc_Maro_Create(void* i_this) {
return static_cast<daNpc_Maro_c*>(i_this)->create();
}
/* 805637A0-805637C0 008300 0020+00 1/0 0/0 0/0 .text daNpc_Maro_Delete__FPv */
static int daNpc_Maro_Delete(void* i_this) {
return static_cast<daNpc_Maro_c*>(i_this)->Delete();
}
/* 805637C0-805637E0 008320 0020+00 1/0 0/0 0/0 .text daNpc_Maro_Execute__FPv */
static int daNpc_Maro_Execute(void* i_this) {
return static_cast<daNpc_Maro_c*>(i_this)->Execute();
}
/* 805637E0-80563800 008340 0020+00 1/0 0/0 0/0 .text daNpc_Maro_Draw__FPv */
static int daNpc_Maro_Draw(void* i_this) {
return static_cast<daNpc_Maro_c*>(i_this)->Draw();
}
/* 80563800-80563808 008360 0008+00 1/0 0/0 0/0 .text daNpc_Maro_IsDelete__FPv */
static int daNpc_Maro_IsDelete(void* i_this) {
return 1;
}
/* 80565D94-80565D98 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
static daNpc_Maro_Param_c l_HIO;
/* 80565BB8-80565BD8 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Maro_MethodTable */
static actor_method_class daNpc_Maro_MethodTable = {
(process_method_func)daNpc_Maro_Create,
(process_method_func)daNpc_Maro_Delete,
(process_method_func)daNpc_Maro_Execute,
(process_method_func)daNpc_Maro_IsDelete,
(process_method_func)daNpc_Maro_Draw,
};
/* 80565BD8-80565C08 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_MARO */
extern actor_process_profile_definition g_profile_NPC_MARO = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_NPC_MARO, // mProcName
&g_fpcLf_Method.base, // sub_method
sizeof(daNpc_Maro_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
353, // mPriority
&daNpc_Maro_MethodTable, // sub_method
0x00040107, // mStatus
fopAc_NPC_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};