mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-26 07:18:47 -04:00
6ec6fce8cb
* 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
3508 lines
99 KiB
C++
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(¤t.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(¤t.angle.y, cLib_targetAngleY(¤t.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(¤t.angle.y, cLib_targetAngleY(¤t.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(¤t.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, ¤t.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
|
|
};
|