Files
dusklight/src/d/actor/d_a_npc_uri.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

1948 lines
66 KiB
C++

/**
* @file d_a_npc_uri.cpp
*
*/
#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_uri.h"
#include "Z2AudioLib/Z2Instances.h"
#include "m_Do/m_Do_graphic.h"
/* 80B2D068-80B2D078 000020 0010+00 1/1 0/0 0/0 .data l_bmdData */
static int l_bmdData[2][2] = {{12, 1}, {33, 2}};
/* 80B2D078-80B2D0D0 -00001 0058+00 0/1 0/0 0/0 .data l_evtList */
static daNpcT_evtData_c l_evtList[11] = {
{"", 0},
{"DEFAULT_GETITEM", 2},
{"NO_RESPONSE", 0},
{"FIRST_CONVERSATION", 2},
{"CONVERSATION", 2},
{"START_CARRY_TUTORIAL", 2},
{"END_CARRY_TUTORIAL", 2},
{"FAILURE_CARRY_TUTORIAL", 2},
{"CONVERSATION_WITH_MOI", 3},
{"FIND_WOLF", 3},
{"MEETING_AGAIN", 4},
};
/* 80B2D0D0-80B2D0E8 -00001 0018+00 3/4 0/0 0/0 .data l_resNameList */
static char* l_resNameList[6] = {
"", "Uri", "Uri1", "Uri2", "Uri3", "Uri_P1",
};
/* 80B2D0E8-80B2D0EC 0000A0 0002+02 1/0 0/0 0/0 .data l_loadResPtrn0 */
static s8 l_loadResPtrn0[2] = {1, -1};
/* 80B2D0EC-80B2D0F0 0000A4 0003+01 1/0 0/0 0/0 .data l_loadResPtrn1 */
static s8 l_loadResPtrn1[3] = {
1,
2,
-1,
};
/* 80B2D0F0-80B2D0F4 0000A8 0003+01 1/0 0/0 0/0 .data l_loadResPtrn2 */
static s8 l_loadResPtrn2[3] = {
1,
3,
-1,
};
/* 80B2D0F4-80B2D0FC 0000AC 0005+03 1/0 0/0 0/0 .data l_loadResPtrn3 */
static s8 l_loadResPtrn3[5] = {
1, 2, 3, 4, -1,
};
/* 80B2D0FC-80B2D100 0000B4 0003+01 1/0 0/0 0/0 .data l_loadResPtrn4 */
static s8 l_loadResPtrn4[3] = {
1,
5,
-1,
};
/* 80B2D100-80B2D108 0000B8 0005+03 1/0 0/0 0/0 .data l_loadResPtrn9 */
static s8 l_loadResPtrn9[5] = {
1, 2, 3, 4, -1,
};
/* 80B2D108-80B2D124 -00001 001C+00 1/2 0/0 0/0 .data l_loadResPtrnList */
static s8* l_loadResPtrnList[7] = {l_loadResPtrn0, l_loadResPtrn1, l_loadResPtrn0, l_loadResPtrn2,
l_loadResPtrn3, l_loadResPtrn4, l_loadResPtrn9};
/* 80B2D124-80B2D338 0000DC 0214+00 0/1 0/0 0/0 .data l_faceMotionAnmData */
static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[19] = {
{-1, 0, 0, 18, 2, 1, TRUE}, {-1, 0, 0, -1, 0, 0, FALSE}, {6, 0, 1, 18, 2, 1, TRUE},
{10, 0, 2, 43, 0, 2, FALSE}, {11, 0, 2, 44, 0, 2, FALSE}, {9, 0, 2, 42, 0, 2, FALSE},
{12, 0, 2, 45, 0, 2, FALSE}, {6, 0, 3, 21, 0, 3, FALSE}, {8, 0, 3, 23, 0, 3, FALSE},
{15, 2, 2, 18, 2, 1, TRUE}, {7, 2, 2, 18, 2, 1, TRUE}, {14, 2, 2, 47, 2, 2, FALSE},
{13, 2, 2, 46, 2, 2, FALSE}, {8, 2, 2, 41, 2, 2, FALSE}, {10, 2, 3, 18, 2, 1, TRUE},
{7, 0, 3, 22, 0, 3, FALSE}, {11, 2, 3, 18, 2, 1, TRUE}, {7, 0, 1, 20, 0, 1, FALSE},
{8, 2, 1, 21, 2, 1, FALSE},
};
/* 80B2D338-80B2D6F0 0002F0 03B8+00 1/2 0/0 0/0 .data l_motionAnmData */
static daNpcT_motionAnmData_c l_motionAnmData[34] = {
{9, 2, 1, 15, 0, 1, 1, 0}, {-1, 0, 0, -1, 0, 0, 0, 0}, {9, 2, 3, 18, 2, 3, 0, 0},
{-1, 0, 0, -1, 0, 0, 0, 0}, {-1, 0, 0, -1, 0, 0, 0, 0}, {-1, 0, 0, -1, 0, 0, 0, 0},
{-1, 0, 0, -1, 0, 0, 0, 0}, {-1, 0, 0, -1, 0, 0, 0, 0}, {30, 0, 2, 15, 0, 1, 1, 0},
{27, 2, 2, 15, 0, 1, 1, 0}, {28, 0, 2, 15, 0, 1, 1, 0}, {29, 2, 2, 38, 2, 2, 0, 0},
{18, 2, 2, 36, 2, 2, 0, 0}, {26, 2, 2, 37, 2, 2, 0, 0}, {22, 2, 2, 15, 0, 1, 1, 0},
{23, 2, 2, 15, 0, 1, 1, 0}, {24, 2, 2, 15, 0, 1, 1, 0}, {25, 2, 2, 15, 0, 1, 1, 0},
{20, 0, 2, 15, 0, 1, 1, 0}, {21, 0, 2, 15, 0, 1, 1, 0}, {16, 0, 2, 15, 0, 1, 1, 0},
{17, 2, 2, 15, 0, 1, 1, 0}, {12, 0, 3, 15, 0, 1, 1, 0}, {13, 2, 3, 15, 0, 1, 1, 0},
{14, 0, 3, 15, 0, 1, 1, 0}, {15, 0, 3, 15, 0, 1, 1, 0}, {6, 2, 4, 15, 0, 1, 1, 0},
{7, 0, 4, 15, 0, 1, 1, 0}, {8, 0, 4, 15, 0, 1, 1, 0}, {10, 2, 4, 15, 0, 1, 1, 0},
{9, 0, 4, 15, 0, 1, 1, 0}, {4, 2, 4, 15, 0, 1, 1, 0}, {5, 0, 4, 15, 0, 1, 1, 0},
{19, 0, 2, 15, 0, 1, 1, 0},
};
/* 80B2D6F0-80B2D810 0006A8 0120+00 0/1 0/0 0/0 .data l_faceMotionSequenceData */
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_faceMotionSequenceData[72] = {
{2, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {7, -1, 1}, {14, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {3, -1, 1}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {4, -1, 1}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {5, -1, 1}, {11, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {12, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {13, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{6, -1, 1}, {9, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1}, {14, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {17, -1, 0}, {18, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {14, -1, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {15, -1, 1}, {16, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {16, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {10, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{11, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {9, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {18, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {0, -1, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0},
};
/* 80B2D810-80B2D9F0 0007C8 01E0+00 0/1 0/0 0/0 .data l_motionSequenceData */
static daNpcT_MotionSeqMngr_c::sequenceStepData_c l_motionSequenceData[120] = {
{0, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {28, -1, 1}, {29, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {30, -1, 1}, {26, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {31, -1, 0}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {32, -1, 1}, {31, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {9, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {29, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{10, -1, 1}, {9, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {14, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {18, -1, 1}, {14, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {19, -1, 1}, {14, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {15, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {11, -1, 0},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {13, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{25, -1, 1}, {24, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {2, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {24, -1, 1}, {2, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {26, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {27, -1, 1},
{26, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {20, -1, 1}, {21, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{21, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {23, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0}, {22, -1, 1}, {23, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {33, 4, 1}, {-1, 0, 0},
{-1, 0, 0}, {-1, 0, 0}, {12, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {8, -1, 1},
{9, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {3, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{16, -1, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {17, -1, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 0},
};
/* 80B2D9F0-80B2DA0C -00001 001C+00 1/1 0/0 0/0 .data mCutNameList__11daNpc_Uri_c */
const char* daNpc_Uri_c::mCutNameList[7] = {
"",
"CONVERSATION",
"START_CARRY_TUTORIAL",
"END_CARRY_TUTORIAL",
"CONVERSATION_WITH_MOI",
"FIND_WOLF",
"MEETING_AGAIN",
};
/* 80B2DA54-80B2DAA8 000A0C 0054+00 1/2 0/0 0/0 .data mCutList__11daNpc_Uri_c */
daNpc_Uri_c::cutFunc daNpc_Uri_c::mCutList[7] = {
NULL,
&daNpc_Uri_c::cutConversation,
&daNpc_Uri_c::cutStartCarryTutorial,
&daNpc_Uri_c::cutEndCarryTutorial,
&daNpc_Uri_c::cutConversationWithMoi,
&daNpc_Uri_c::cutFindWolf,
&daNpc_Uri_c::cutMeetingAgain,
};
/* 80B267AC-80B268F8 0000EC 014C+00 1/0 0/0 0/0 .text __dt__11daNpc_Uri_cFv */
daNpc_Uri_c::~daNpc_Uri_c() {
if (mpMorf[0] != 0) {
mpMorf[0]->stopZelAnime();
}
deleteRes(l_loadResPtrnList[mType], (char const**)l_resNameList);
}
/* ############################################################################################## */
/* 80B2CE14-80B2CEC0 000000 00AC+00 14/14 0/0 0/0 .rodata m__17daNpc_Uri_Param_c */
daNpc_Uri_HIOParam const daNpc_Uri_Param_c::m = {
200.0f, // field_0x00
-3.0f, // field_0x04
1.0f, // field_0x08
500.0f, // field_0x0c
255.0f, // field_0x10
180.0f, // field_0x14
35.0f, // field_0x18
30.0f, // field_0x1c
0.0f, // field_0x20
0.0f, // field_0x24
10.0f, // field_0x28
-10.0f, // field_0x2c
30.0f, // field_0x30
-10.0f, // field_0x34
45.0f, // field_0x38
-45.0f, // field_0x3c
0.6f, // field_0x40
20.0f, // field_0x44
3, // field_0x48
6, // field_0x4a
5, // field_0x4c
6, // field_0x4e
110.0f, // field_0x50
400.0f, // field_0x54
300.0f, // field_0x58
-300.0f, // field_0x5c
60, // field_0x60
8, // field_0x62
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
4.0f, // field_0x6c
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
120, // field_0x8c
120, // field_0x8e
60, // field_0x90
180, // field_0x92
10, // field_0x94
0, // field_0x96
350.0f, // field_0x98
400.0f, // field_0x9c
3000.0f, // field_0xa0
200.0f, // field_0xa4
600.0f, // field_0xa8
};
/* 80B268F8-80B26BE4 000238 02EC+00 1/1 0/0 0/0 .text create__11daNpc_Uri_cFv */
int daNpc_Uri_c::create() {
static const int heapSize[] = {0, 0x3F20, 0, 0, 0x3740, 0x3740, 0};
fopAcM_SetupActor2(this, daNpc_Uri_c, l_faceMotionAnmData,
(const daNpcT_motionAnmData_c*)l_motionAnmData,
(const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_faceMotionSequenceData,
4, (const daNpcT_MotionSeqMngr_c::sequenceStepData_c*)l_motionSequenceData,
4, (const daNpcT_evtData_c*)l_evtList, (char**)l_resNameList);
mType = getType();
mFlowNodeNo = getFlowNodeNo();
mTwilight = 0;
int phase = loadRes(l_loadResPtrnList[mType], (const char**)l_resNameList);
if (phase == 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);
field_0x9c0.init(&mAcch, 0.0f, 0.0f);
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_Uri_Param_c::m.field_0x10, 0, this);
mCyl.Set(mCcDCyl);
mCyl.SetStts(&mCcStts);
mCyl.SetTgHitCallback(tgHitCallBack);
if (mType == TYPE_4) {
mAcch.SetGrndNone();
mAcch.SetWallNone();
}
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 phase;
}
/* 80B26BE4-80B26ED0 000524 02EC+00 1/1 0/0 0/0 .text CreateHeap__11daNpc_Uri_cFv */
int daNpc_Uri_c::CreateHeap() {
J3DModelData* modelData = static_cast<J3DModelData*>(
dComIfG_getObjectRes(l_resNameList[l_bmdData[0][1]], l_bmdData[0][0]));
if (modelData == NULL) {
return 1;
}
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 (mType == TYPE_1) {
J3DModelData* modelData2;
if (l_bmdData[1][0] >= 0) {
modelData2 = static_cast<J3DModelData*>(
dComIfG_getObjectRes(l_resNameList[l_bmdData[1][1]], l_bmdData[1][0]));
} else {
modelData2 = NULL;
}
if (modelData2 != NULL) {
mpModel[0] = mDoExt_J3DModel__create(modelData2, 0x80000, 0x11000084);
}
if (mpModel[0] == NULL) {
return 0;
}
}
if (setFaceMotionAnm(2, false) && setMotionAnm(0, 0.0f, 0)) {
return 1;
}
return 0;
}
/* 80B2708C-80B270C0 0009CC 0034+00 1/1 0/0 0/0 .text Delete__11daNpc_Uri_cFv */
int daNpc_Uri_c::Delete() {
fopAcM_GetID(this);
this->~daNpc_Uri_c();
return 1;
}
/* 80B270C0-80B270E0 000A00 0020+00 2/2 0/0 0/0 .text Execute__11daNpc_Uri_cFv */
int daNpc_Uri_c::Execute() {
return daNpcT_c::execute();
}
/* 80B270E0-80B27174 000A20 0094+00 1/1 0/0 0/0 .text Draw__11daNpc_Uri_cFv */
int daNpc_Uri_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);
}
/* 80B27174-80B27194 000AB4 0020+00 1/1 0/0 0/0 .text
* createHeapCallBack__11daNpc_Uri_cFP10fopAc_ac_c */
int daNpc_Uri_c::createHeapCallBack(fopAc_ac_c* i_this) {
return static_cast<daNpc_Uri_c*>(i_this)->CreateHeap();
}
/* 80B27194-80B271EC 000AD4 0058+00 1/1 0/0 0/0 .text ctrlJointCallBack__11daNpc_Uri_cFP8J3DJointi
*/
int daNpc_Uri_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) {
if (param_1 == 0) {
J3DModel* model = j3dSys.getModel();
daNpc_Uri_c* i_this = reinterpret_cast<daNpc_Uri_c*>(model->getUserArea());
if (i_this != 0) {
i_this->ctrlJoint(param_0, model);
}
}
return 1;
}
/* 80B271EC-80B27260 000B2C 0074+00 1/1 0/0 0/0 .text getType__11daNpc_Uri_cFv */
u8 daNpc_Uri_c::getType() {
switch (fopAcM_GetParam(this) & 0xFF) {
case 0:
return TYPE_0;
break;
case 1:
return TYPE_1;
break;
case 2:
return TYPE_2;
break;
case 3:
return TYPE_3;
break;
case 4:
return TYPE_4;
break;
case 5:
return TYPE_5;
}
return TYPE_6;
}
/* 80B27260-80B272F0 000BA0 0090+00 1/1 0/0 0/0 .text isDelete__11daNpc_Uri_cFv */
int daNpc_Uri_c::isDelete() {
switch (mType) {
case TYPE_0:
return FALSE;
case TYPE_1:
return FALSE;
case TYPE_2:
return FALSE;
case TYPE_3:
return (chkPlayerGetWoodShield() == 0);
case TYPE_4:
return FALSE;
case TYPE_5:
return FALSE;
default:
return FALSE;
}
}
/* 80B272F0-80B27750 000C30 0460+00 1/1 0/0 0/0 .text reset__11daNpc_Uri_cFv */
void daNpc_Uri_c::reset() {
csXyz cStack_a0;
cXyz acStack_38;
cXyz cStack_44;
int iVar1 = (u8*)&field_0x1014 - (u8*)&field_0xfc0[0];
if (mpMatAnm[0] != NULL) {
mpMatAnm[0]->initialize();
}
initialize();
for (int i = 0; i < 2; i++) {
mActorMngr[i].initialize();
}
if (getPathID() != 0xFF) {
mPath.initialize();
mPath.setPathInfo(getPathID(), fopAcM_GetRoomNo(this), 0);
}
memset(&field_0xfc0[0], 0, iVar1);
cStack_a0.setall(0);
cStack_a0.y = home.angle.y;
switch (mType) {
case TYPE_1:
mPath.setNextPathInfo(fopAcM_GetRoomNo(this), 0);
int num = mPath.getNumPnts();
acStack_38 = mPath.getPntPos(num - 2);
cStack_44 = mPath.getPntPos(num - 1);
field_0xfd8 = cStack_44;
field_0xfe4.setall(0);
field_0xfe4.y = cLib_targetAngleY(&acStack_38, &field_0xfd8);
/* dSv_event_flag_c::F_0032 - Ordon Ranch - 3rd day - First convo with fado (before forced goat chase) */
if (daNpcT_chkEvtBit(0x25)) {
setPos(cStack_44);
cStack_a0.y = cLib_targetAngleY(&acStack_38, &cStack_44);
mPath.setPathInfo(getPathID(), fopAcM_GetRoomNo(this), 0);
field_0x100e = 1;
} else {
acStack_38 = mPath.getPntPos(0);
cStack_44 = mPath.getPntPos(1);
setPos(acStack_38);
cStack_a0.y = cLib_targetAngleY(&acStack_38, &cStack_44);
mPath.setNextIdx(mPath.getNumPnts());
}
/* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or fail) */
if (daNpcT_chkEvtBit(0x20)
/* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
|| daNpcT_chkEvtBit(0x1E)
/* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
|| daNpcT_chkEvtBit(0x92) )
{
setPos(home.pos);
/* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or fail) */
if (daNpcT_chkEvtBit(0x20)) {
field_0x100d = 1;
} else {
/* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (daNpcT_chkEvtBit(0x1E)
/* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
|| daNpcT_chkEvtBit(0x92)) {
field_0x100f = 1;
}
}
}
break;
case TYPE_4:
field_0x100d = 1;
break;
case TYPE_0:
case TYPE_2:
case TYPE_3:
case TYPE_5:
break;
}
/* T_0007 - Ordon Village - During Uli's pick-up tutorial */
daNpcT_offTmpBit(7);
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
dComIfGs_offTmpBit(0x1308);
setAngle(cStack_a0);
}
/* 80B27750-80B27820 001090 00D0+00 1/0 0/0 0/0 .text afterJntAnm__11daNpc_Uri_cFi */
void daNpc_Uri_c::afterJntAnm(int param_1) {
if (param_1 == 1) {
mDoMtx_stack_c::YrotM(mStagger.getAngleZ(1));
mDoMtx_stack_c::ZrotM(-mStagger.getAngleX(1));
} else if (param_1 == 4) {
mDoMtx_stack_c::YrotM(mStagger.getAngleZ(0));
mDoMtx_stack_c::ZrotM(mStagger.getAngleX(0));
}
if (0.0f < field_0x1004) {
if (param_1 == 18) {
mpMorf[0]->onMorfNone();
} else if (param_1 == 28) {
mpMorf[0]->offMorfNone();
}
}
}
/* 80B27820-80B27994 001160 0174+00 1/0 0/0 0/0 .text setParam__11daNpc_Uri_cFv */
void daNpc_Uri_c::setParam() {
selectAction();
srchActors();
s16 sVar7 = daNpc_Uri_Param_c::m.field_0x48;
s16 sVar6 = daNpc_Uri_Param_c::m.field_0x4a;
s16 sVar5 = daNpc_Uri_Param_c::m.field_0x4c;
s16 sVar4 = daNpc_Uri_Param_c::m.field_0x4e;
if (mType == TYPE_1) {
sVar6 = 4;
sVar4 = 4;
}
daPy_py_c* player = daPy_getPlayerActorClass();
if (player->checkHorseRide()) {
sVar7 = 7;
sVar5 = 9;
}
attention_info.distances[fopAc_attn_LOCK_e] = daNpcT_getDistTableIdx(sVar5, sVar4);
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(sVar7, sVar6);
attention_info.flags = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
scale.set(daNpc_Uri_Param_c::m.field_0x08, daNpc_Uri_Param_c::m.field_0x08,
daNpc_Uri_Param_c::m.field_0x08);
mCcStts.SetWeight(daNpc_Uri_Param_c::m.field_0x10);
mCylH = daNpc_Uri_Param_c::m.field_0x14;
mWallR = daNpc_Uri_Param_c::m.field_0x1c;
mAttnFovY = daNpc_Uri_Param_c::m.field_0x50;
mAcchCir.SetWallR(mWallR);
mAcchCir.SetWallH(daNpc_Uri_Param_c::m.field_0x18);
mRealShadowSize = daNpc_Uri_Param_c::m.field_0x0c;
gravity = daNpc_Uri_Param_c::m.field_0x04;
mExpressionMorfFrame = daNpc_Uri_Param_c::m.field_0x6c;
mMorfFrames = daNpc_Uri_Param_c::m.field_0x44;
if (mType == TYPE_4) {
mAcch.SetGrndNone();
mAcch.SetWallNone();
gravity = 0.0f;
}
}
/* 80B27994-80B27B3C 0012D4 01A8+00 1/0 0/0 0/0 .text checkChangeEvt__11daNpc_Uri_cFv */
BOOL daNpc_Uri_c::checkChangeEvt() {
if (!chkAction(&daNpc_Uri_c::talk)) {
mPreItemNo = 0;
if (dComIfGp_event_chkTalkXY()) {
if (dComIfGp_evmng_ChkPresentEnd()) {
mEvtNo = 2;
evtChange();
}
return TRUE;
}
switch (mType) {
case TYPE_1:
/* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (!daNpcT_chkEvtBit(0x1E)
/* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
&& !daNpcT_chkEvtBit(0x92)) {
/* T_0007 - Ordon Village - During Uli's pick-up tutorial */
if (!daNpcT_chkTmpBit(0x7)) {
/* dSv_event_flag_c::F_0031 - Ordon Village - 2nd day - Spoke to Uli bfore finding basket */
if (daNpcT_chkEvtBit(0x24)) {
mEvtNo = 4;
} else {
mEvtNo = 3;
}
evtChange();
return TRUE;
}
/* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or fail) */
} else if (!daNpcT_chkEvtBit(0x20) && field_0x100b == 0) {
mEvtNo = 7;
evtChange();
return TRUE;
}
break;
case TYPE_4:
/* dSv_event_flag_c::M_028 - Cutscene - [cutscene: 14] restore mountain spirit - Reuinion with Colin et al. */
if (daNpcT_chkEvtBit(0x3D)
/* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time (first forced conversation) */
&& !daNpcT_chkEvtBit(0x14A)) {
mEvtNo = 10;
evtChange();
return TRUE;
}
break;
case TYPE_0:
case TYPE_2:
case TYPE_3:
case TYPE_5:
break;
}
}
return FALSE;
}
/* 80B27B3C-80B27BF0 00147C 00B4+00 2/0 0/0 0/0 .text setAfterTalkMotion__11daNpc_Uri_cFv
*/
void daNpc_Uri_c::setAfterTalkMotion() {
int iVar2 = 17;
switch (mFaceMotionSeqMngr.getNo()) {
case 1:
iVar2 = 10;
break;
case 4:
return;
case 5:
return;
case 7:
iVar2 = 15;
break;
case 8:
iVar2 = 10;
break;
case 11:
iVar2 = 12;
break;
case 9:
iVar2 = 16;
}
mFaceMotionSeqMngr.setNo(iVar2, -1.0f, 0, 0);
}
/* 80B27BF0-80B27C8C 001530 009C+00 1/1 0/0 0/0 .text srchActors__11daNpc_Uri_cFv */
void daNpc_Uri_c::srchActors() {
switch (mType) {
case TYPE_0:
case TYPE_1:
case TYPE_2:
break;
case TYPE_3:
if (!mActorMngr[0].getActorP()) {
mActorMngr[0].entry(getNearestActorP(0x262));
}
break;
case TYPE_4:
if (!mActorMngr[0].getActorP()) {
mActorMngr[0].entry(getNearestActorP(0x262));
}
break;
case TYPE_5:
break;
}
}
/* 80B27C8C-80B27D2C 0015CC 00A0+00 1/0 0/0 0/0 .text evtTalk__11daNpc_Uri_cFv */
BOOL daNpc_Uri_c::evtTalk() {
if (chkAction(&daNpc_Uri_c::talk)) {
(this->*field_0xfc0[1])(NULL);
} else {
setAction(&daNpc_Uri_c::talk);
}
return 1;
}
/* 80B27D2C-80B27DF4 00166C 00C8+00 1/0 0/0 0/0 .text evtCutProc__11daNpc_Uri_cFv */
BOOL daNpc_Uri_c::evtCutProc() {
int staffId = dComIfGp_getEventManager().getMyStaffId("Uri", this, -1);
if (staffId != -1) {
mStaffId = staffId;
int actIdx =
dComIfGp_getEventManager().getMyActIdx(mStaffId, (char**)mCutNameList, 7, 0, 0);
if ((this->*(mCutList[actIdx]))(mStaffId) != 0) {
dComIfGp_getEventManager().cutEnd(mStaffId);
}
return true;
}
return false;
}
/* 80B27DF4-80B27F14 001734 0120+00 1/0 0/0 0/0 .text action__11daNpc_Uri_cFv */
void daNpc_Uri_c::action() {
fopAc_ac_c* hitActor = hitChk(&mCyl, 0xffffffff);
if (mStagger.checkRebirth()) {
mStagger.initialize();
mMode = 1;
}
if (field_0xfc0[0] != NULL) {
if (field_0xfc0[1] == field_0xfc0[0]) {
(this->*field_0xfc0[1])(NULL);
} else {
setAction(field_0xfc0[0]);
}
}
if (!dComIfGp_event_runCheck() && field_0x1012 != 0) {
fopAcM_delete(this);
}
}
/* 80B27F14-80B27FD8 001854 00C4+00 1/0 0/0 0/0 .text beforeMove__11daNpc_Uri_cFv */
void daNpc_Uri_c::beforeMove() {
fopAcM_OffStatus(this, 0x8000000);
if (checkHide()) {
fopAcM_OnStatus(this, 0x8000000);
}
if (checkHide() || mNoDraw != 0) {
attention_info.flags = 0;
}
}
/* 80B2DD64-80B2DD68 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
static daNpc_Uri_Param_c l_HIO;
/* 80B27FD8-80B28318 001918 0340+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Uri_cFv */
void daNpc_Uri_c::setAttnPos() {
cXyz acStack_3c(-30.0f, 10.0f, 0.0f);
mStagger.calc(0);
f32 dVar6 = cM_s2rad(mCurAngle.y - field_0xd7e.y);
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
getNeckJointNo(), getHeadJointNo(), l_HIO.m.field_0x24, l_HIO.m.field_0x20,
l_HIO.m.field_0x2c, l_HIO.m.field_0x28, l_HIO.m.field_0x34, l_HIO.m.field_0x30,
l_HIO.m.field_0x3c, l_HIO.m.field_0x38, l_HIO.m.field_0x40, dVar6, NULL);
mJntAnm.calcJntRad(0.2f, 1.0f, dVar6);
setMtx();
mDoMtx_stack_c::copy(mpMorf[0]->getModel()->getAnmMtx(getHeadJointNo()));
mDoMtx_stack_c::multVec(&acStack_3c, &eyePos);
mJntAnm.setEyeAngleX(eyePos, 1.0f, 0);
mJntAnm.setEyeAngleY(eyePos, mCurAngle.y + field_0xd8a.y, 1, 1.0f, 0);
acStack_3c.set(0.0f, 0.0f, 0.0f);
acStack_3c.y = l_HIO.m.field_0x00;
if (field_0x100d != 0) {
if (mType == TYPE_1) {
acStack_3c.y -= 10.0f;
acStack_3c.z = -60.0f;
} else if (mType == TYPE_4) {
acStack_3c.y -= 20.0f;
}
}
mDoMtx_stack_c::YrotS(mCurAngle.y);
mDoMtx_stack_c::multVec(&acStack_3c, &acStack_3c);
attention_info.position = acStack_3c + current.pos;
static cXyz prtclScl(1.0f, 1.0f, 1.0f);
setFootPos();
if (3.0f < speedF) {
setFootPrtcl(&prtclScl, 11.0f, 0);
}
}
/* 80B28318-80B284D4 001C58 01BC+00 1/0 0/0 0/0 .text setCollision__11daNpc_Uri_cFv */
void daNpc_Uri_c::setCollision() {
cXyz cStack_48;
if (mHide == 0) {
u32 tgType = 0xd8fbfdff;
u32 tgSPrm = 0x1f;
if (mTwilight != 0) {
tgType = 0;
tgSPrm = 0;
} else {
if (mStagger.checkStagger()) {
tgType = 0;
tgSPrm = 0;
}
}
mCyl.SetCoSPrm(0x79);
mCyl.SetTgType(tgType);
mCyl.SetTgSPrm(tgSPrm);
mCyl.OnTgNoHitMark();
cStack_48.set(0.0f, 0.0f, 10.0f);
f32 cylHeight = mCylH;
f32 cylRadius = mWallR;
if (field_0x100d != 0) {
switch (mType) {
case TYPE_1:
cylHeight = mCylH - 10.0f;
cylRadius = mWallR;
cStack_48.set(0.0f, 0.0f, -60.0f);
break;
case TYPE_4:
cylHeight = mCylH - 20.0f;
cylRadius = mWallR;
cStack_48.set(0.0f, 0.0f, 0.0f);
break;
case TYPE_2:
case TYPE_3:
case TYPE_5:
break;
}
}
mDoMtx_stack_c::YrotS(mCurAngle.y);
mDoMtx_stack_c::multVec(&cStack_48, &cStack_48);
cStack_48 += current.pos;
mCyl.SetH(cylHeight);
mCyl.SetR(cylRadius);
mCyl.SetC(cStack_48);
dComIfG_Ccsp()->Set(&mCyl);
}
mCyl.ClrCoHit();
mCyl.ClrTgHit();
}
/* 80B284D4-80B284DC 001E14 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpc_Uri_cFv */
int daNpc_Uri_c::drawDbgInfo() {
return 0;
}
/* 80B284DC-80B285B4 001E1C 00D8+00 1/0 0/0 0/0 .text drawOtherMdl__11daNpc_Uri_cFv */
void daNpc_Uri_c::drawOtherMdl() {
static int const jointNo[1] = {12};
Mtx mtx;
J3DModel* model = mpMorf[0]->getModel();
for (int i = 0; i < 1; i++) {
if (mpModel[i] != NULL && i == 0 && field_0x1008 != 0) {
g_env_light.setLightTevColorType_MAJI(mpModel[i], &tevStr);
mDoMtx_stack_c::copy(model->getAnmMtx(jointNo[0]));
cMtx_copy(mDoMtx_stack_c::get(), mtx);
mpModel[i]->setBaseTRMtx(mtx);
mDoExt_modelUpdateDL(mpModel[i]);
dComIfGd_addRealShadow(mShadowKey, mpModel[i]);
}
}
}
/* 80B285B4-80B285EC 001EF4 0038+00 1/0 0/0 0/0 .text afterSetMotionAnm__11daNpc_Uri_cFiifi */
bool daNpc_Uri_c::afterSetMotionAnm(int param_1, int param_2, f32 param_3, int param_4) {
field_0x1008 = 0;
switch (param_1) {
case 11:
case 12:
case 13:
case 14:
case 15:
case 16:
case 17:
case 18:
case 19:
case 20:
case 21:
case 33:
field_0x1008 = 1;
break;
case 22:
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 32:
break;
}
return true;
}
/* 80B285EC-80B28618 001F2C 002C+00 1/0 0/0 0/0 .text changeBck__11daNpc_Uri_cFPiPi */
void daNpc_Uri_c::changeBck(int* param_0, int* param_1) {
if (mType != TYPE_5) {
return;
}
if (*param_0 != 10) {
return;
}
*param_0 = 4;
*param_1 = 5;
}
/* 80B28618-80B28644 001F58 002C+00 1/0 0/0 0/0 .text changeBtp__11daNpc_Uri_cFPiPi */
void daNpc_Uri_c::changeBtp(int* param_0, int* param_1) {
if (mType != TYPE_5) {
return;
}
if (*param_0 != 43) {
return;
}
*param_0 = 7;
*param_1 = 5;
}
/* 80B28644-80B28794 001F84 0150+00 1/1 0/0 0/0 .text selectAction__11daNpc_Uri_cFv */
int daNpc_Uri_c::selectAction() {
field_0xfc0[0] = NULL;
switch (mType) {
case TYPE_1:
if (field_0x100d != NULL) {
field_0xfc0[0] = &daNpc_Uri_c::sitWait;
} else {
if (field_0x100e != NULL) {
/* T_0007 - Ordon Village - During Uli's pick-up tutorial */
if (daNpcT_chkTmpBit(7) && field_0x100f == NULL) {
field_0xfc0[0] = &daNpc_Uri_c::walk;
} else {
field_0xfc0[0] = &daNpc_Uri_c::wait;
}
} else {
field_0xfc0[0] = &daNpc_Uri_c::krun;
}
}
break;
case TYPE_4:
field_0xfc0[0] = &daNpc_Uri_c::sitWait;
break;
default:
field_0xfc0[0] = &daNpc_Uri_c::wait;
break;
}
return 1;
}
/* 80B28794-80B287C0 0020D4 002C+00 2/2 0/0 0/0 .text
* chkAction__11daNpc_Uri_cFM11daNpc_Uri_cFPCvPvPv_i */
int daNpc_Uri_c::chkAction(int (daNpc_Uri_c::*action)(void*)) {
return field_0xfc0[1] == action;
}
/* 80B287C0-80B28868 002100 00A8+00 2/2 0/0 0/0 .text
* setAction__11daNpc_Uri_cFM11daNpc_Uri_cFPCvPvPv_i */
int daNpc_Uri_c::setAction(int (daNpc_Uri_c::*action)(void*)) {
mMode = 3;
if (field_0xfc0[1] != NULL) {
(this->*field_0xfc0[1])(NULL);
}
mMode = 0;
field_0xfc0[1] = action;
if (field_0xfc0[1] != NULL) {
(this->*field_0xfc0[1])(NULL);
}
return 1;
}
/* 80B28868-80B288DC 0021A8 0074+00 2/2 0/0 0/0 .text chkPlayerCarryBasket__11daNpc_Uri_cFv */
BOOL daNpc_Uri_c::chkPlayerCarryBasket() {
fopAc_ac_c* actor = NULL;
daPy_py_c* player = daPy_getPlayerActorClass();
if (fopAcM_SearchByID(player->getGrabActorID(), &actor) && actor != NULL &&
fopAcM_GetName(actor) == PROC_OBJ_KAGO)
{
return TRUE;
}
return FALSE;
}
/* 80B288DC-80B28910 00221C 0034+00 1/1 0/0 0/0 .text chkPlayerGetWoodShield__11daNpc_Uri_cFv */
BOOL daNpc_Uri_c::chkPlayerGetWoodShield() {
return dComIfGs_isCollectShield(0);
}
/* 80B28910-80B28FB8 002250 06A8+00 2/2 0/0 0/0 .text getTutorialCond__11daNpc_Uri_cF4cXyz */
int daNpc_Uri_c::getTutorialCond(cXyz param_1) {
cXyz local_44;
cXyz local_50;
cXyz cStack_5c;
local_44 = mPath.getPntPos(mPath.getNumPnts() - 1);
if (local_44.absXZ(param_1) < daNpc_Uri_Param_c::m.field_0x98) {
return 9;
}
f32 fVar11 = (param_1 - current.pos).absXZ();
s16 sVar8 = cLib_targetAngleY(&current.pos, &param_1) - mCurAngle.y;
s16 uVar5 = abs(sVar8);
if (daNpc_Uri_Param_c::m.field_0xa4 < fVar11 && ((u32)uVar5 & 0xFFFF) > 0x4000) {
if (daNpc_Uri_Param_c::m.field_0xa8 < fVar11) {
field_0x1000 = daNpc_Uri_Param_c::m.field_0xa8 - 100.0f;
return 5;
}
if (field_0x1009 != NULL) {
return 8;
}
}
int i;
for (i = 0; i < mPath.getNumPnts() - 1; i++) {
local_44 = mPath.getPntPos(i);
local_50 = mPath.getPntPos(i + 1);
if (!((param_1 - local_44).absXZ() < daNpc_Uri_Param_c::m.field_0xa8)) {
if (!((param_1 - local_50).absXZ() < daNpc_Uri_Param_c::m.field_0xa8)) {
f32 local_a8;
if (cM3d_Len2dSqPntAndSegLine(param_1.x, param_1.z, local_44.x, local_44.z,
local_50.x, local_50.z, &cStack_5c.x, &cStack_5c.z,
&local_a8) &&
local_a8 < daNpc_Uri_Param_c::m.field_0xa8)
{
break;
}
} else {
break;
}
} else {
break;
}
}
if (mPath.getNumPnts() - 1 <= i) {
field_0x1000 = daNpc_Uri_Param_c::m.field_0xa8 - 100.0f;
return 5;
}
return 2;
}
/* 80B28FB8-80B29198 0028F8 01E0+00 1/0 0/0 0/0 .text cutConversation__11daNpc_Uri_cFi */
int daNpc_Uri_c::cutConversation(int param_1) {
int rv = 0;
int iVar4 = -1;
int iVar3 = 0;
int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_1, "prm");
if (piVar1) {
iVar4 = *piVar1;
}
piVar1 = dComIfGp_evmng_getMyIntegerP(param_1, "msgNo");
if (piVar1) {
iVar3 = *piVar1;
}
if (dComIfGp_getEventManager().getIsAddvance(param_1)) {
switch (iVar4) {
case 0:
initTalk(mFlowNodeNo, NULL);
break;
case 3:
initTalk(mFlowNodeNo, NULL);
break;
}
}
int local_28[2] = {-1, -1};
switch (iVar4) {
case 0:
case 1:
case 2:
case 3:
mJntAnm.lookPlayer(0);
if (iVar4 == 0 || iVar4 == 2) {
mJntAnm.lookNone(0);
}
local_28[0] = iVar3;
if (talkProc(local_28, 0, NULL, 0)) {
if (iVar3 == 0) {
if (mFlow.checkEndFlow() != 0) {
rv = 1;
}
} else {
rv = 1;
}
}
break;
}
return rv;
}
/* 80B29198-80B293C0 002AD8 0228+00 1/0 0/0 0/0 .text cutStartCarryTutorial__11daNpc_Uri_cFi */
int daNpc_Uri_c::cutStartCarryTutorial(int param_1) {
cXyz acStack_30;
csXyz cStack_38;
int uVar7 = 0;
int iVar6 = -1;
int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_1, "prm");
if (piVar1) {
iVar6 = *piVar1;
}
if (dComIfGp_getEventManager().getIsAddvance(param_1)) {
switch (iVar6) {
case 0:
break;
case 1:
if (daNpcT_getPlayerInfoFromPlayerList(23, fopAcM_GetRoomNo(this), &acStack_30,
&cStack_38))
{
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&acStack_30, cStack_38.y, 0);
dComIfGp_evmng_setGoal(&acStack_30);
}
mFaceMotionSeqMngr.setNo(17, 0.0f, 0, 0);
mMotionSeqMngr.setNo(8, 0.0f, 0, 0);
mJntAnm.lookPlayer(0);
setAngle(fopAcM_searchPlayerAngleY(this));
break;
case 2:
initTalk(mFlowNodeNo, NULL);
}
}
switch (iVar6) {
case 0:
uVar7 = 1;
break;
case 1:
uVar7 = 1;
break;
case 2:
if (talkProc(NULL, 0, NULL, 0) && mFlow.checkEndFlow()) {
uVar7 = 1;
}
}
return uVar7;
}
/* 80B293C0-80B296B8 002D00 02F8+00 1/0 0/0 0/0 .text cutEndCarryTutorial__11daNpc_Uri_cFi */
int daNpc_Uri_c::cutEndCarryTutorial(int param_1) {
cXyz acStack_30;
csXyz cStack_44;
int uVar8 = 0;
int iVar7 = -1;
int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_1, "prm");
if (piVar1) {
iVar7 = *piVar1;
}
if (dComIfGp_getEventManager().getIsAddvance(param_1)) {
switch (iVar7) {
case 0:
break;
case 1:
if (daNpcT_getPlayerInfoFromPlayerList(21, fopAcM_GetRoomNo(this), &acStack_30,
&cStack_44))
{
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&acStack_30, cStack_44.y, 0);
dComIfGp_evmng_setGoal(&acStack_30);
}
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
mJntAnm.lookPlayer(0);
setPos(home.pos);
setAngle(home.angle.y);
speedF = 0;
speed.setall(0.0f);
daNpcT_onEvtBit(0x1e);
break;
case 2:
initTalk(19, NULL);
mItemPartnerId = fpcM_ERROR_PROCESS_ID_e;
}
}
switch (iVar7) {
case 0:
action();
uVar8 = 1;
break;
case 1:
uVar8 = 1;
break;
case 2:
int local_48;
if (talkProc(NULL, 0, NULL, 0) && mFlow.checkEndFlow() &&
(s32)mFlow.getEventId(&local_48) == 1)
{
if (mItemPartnerId == fpcM_ERROR_PROCESS_ID_e) {
mItemPartnerId =
fopAcM_createItemForPresentDemo(&current.pos, local_48, 0, -1, -1, NULL, NULL);
}
if (fopAcM_IsExecuting(mItemPartnerId)) {
/* T_0007 - Ordon Village - During Uli's pick-up tutorial */
daNpcT_offTmpBit(7);
/* dSv_event_tmp_flag_c::T_0009 - Ordon Village - Walked a bit during Uli's pick-up tutorial */
daNpcT_offTmpBit(10);
/* dSv_event_tmp_flag_c::T_0031 - Ordon Village - Borrow Rusl's sword */
daNpcT_offTmpBit(0x20);
field_0x100b = 1;
mEvtNo = 1;
evtChange();
}
}
}
return uVar8;
}
/* 80B296B8-80B2985C 002FF8 01A4+00 1/0 0/0 0/0 .text cutConversationWithMoi__11daNpc_Uri_cFi */
int daNpc_Uri_c::cutConversationWithMoi(int param_1) {
int uVar5 = 0;
int iVar4 = -1;
int iVar3 = 0;
int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_1, "prm");
if (piVar1) {
iVar4 = *piVar1;
}
piVar1 = dComIfGp_evmng_getMyIntegerP(param_1, "msgNo");
if (piVar1) {
iVar3 = *piVar1;
}
fopAc_ac_c* actors[2] = {mActorMngr[0].getActorP(), (fopAc_ac_c*)this};
dComIfGp_setMesgCameraInfoActor(actors[0], actors[1], 0, 0, 0, 0, 0, 0, 0, 0);
if (dComIfGp_getEventManager().getIsAddvance(param_1)) {
switch (iVar4) {
case 0:
initTalk(0xce, &actors[0]);
break;
case 1:
break;
}
}
int local_30[2] = {-1, -1};
switch (iVar4) {
case 0:
case 1:
local_30[0] = iVar3;
if (talkProc(local_30, 1, &actors[0], 0)) {
if (iVar3 == 0) {
if (mFlow.checkEndFlow()) {
uVar5 = 1;
}
} else {
uVar5 = 1;
}
}
}
return uVar5;
}
/* 80B2985C-80B29BA4 00319C 0348+00 1/0 0/0 0/0 .text cutFindWolf__11daNpc_Uri_cFi */
int daNpc_Uri_c::cutFindWolf(int param_1) {
cXyz cStack_2c;
int iVar12 = 0;
int iVar11 = -1;
int local_30 = 0;
int* piVar2 = dComIfGp_evmng_getMyIntegerP(param_1, "prm");
if (piVar2) {
iVar11 = *piVar2;
}
int* puVar3 = dComIfGp_evmng_getMyIntegerP(param_1, "timer");
if (puVar3) {
local_30 = *puVar3;
}
if (dComIfGp_getEventManager().getIsAddvance(param_1)) {
switch (iVar11) {
case 0:
mFaceMotionSeqMngr.setNo(12, 0.0f, 0, 0);
mMotionSeqMngr.setNo(23, 0.0f, 0, 0);
mSound.startCreatureVoice(JAISoundID(Z2SE_URI_V_SCREAM_S), -1);
mEventTimer = local_30;
s16 sVar9 = fopAcM_searchPlayerAngleY(this);
sVar9 -= home.angle.y;
if (sVar9 > 0x4000) {
sVar9 = 0x4000;
} else if (sVar9 < -0x4000) {
sVar9 = -0x4000;
}
sVar9 += home.angle.y;
cStack_2c.set(0.0f, 300.0f, daNpc_Uri_Param_c::m.field_0x54 + 150.0f);
mDoMtx_stack_c::YrotS(sVar9);
mDoMtx_stack_c::multVec(&cStack_2c, &cStack_2c);
cStack_2c += current.pos;
mGndChk.SetPos(&cStack_2c);
cStack_2c.y = dComIfG_Bgsp().GroundCross(&mGndChk);
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&cStack_2c, sVar9 - (s16)0x8000, 0);
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
dComIfGs_onTmpBit(0x1308);
break;
case 1:
fopAc_ac_c* actor = mActorMngr[0].getActorP();
if (actor) {
dComIfGp_getEvent().setPt2(actor);
}
break;
}
}
switch (iVar11) {
case 0:
mJntAnm.lookPlayer(0);
if (mEventTimer != 0 && cLib_calcTimer(&mEventTimer) == 0) {
iVar12 = 1;
}
if (iVar12 != 0) {
fopAc_ac_c* actor = mActorMngr[0].getActorP();
if (actor) {
s16 angle = cLib_targetAngleY(&daPy_getPlayerActorClass()->current.pos,
&actor->current.pos);
daPy_getPlayerActorClass()->changeDemoMoveAngle(angle);
}
}
break;
case 1:
mJntAnm.lookPlayer(0);
break;
}
return iVar12;
}
/* 80B29BA4-80B29EA0 0034E4 02FC+00 1/0 0/0 0/0 .text cutMeetingAgain__11daNpc_Uri_cFi */
int daNpc_Uri_c::cutMeetingAgain(int param_1) {
cXyz acStack_40;
csXyz cStack_48;
int uVar9 = 0;
int iVar10 = -1;
int uVar8 = 0;
int* piVar1 = dComIfGp_evmng_getMyIntegerP(param_1, "prm");
if (piVar1) {
iVar10 = *piVar1;
}
int* puVar2 = dComIfGp_evmng_getMyIntegerP(param_1, "timer");
if (puVar2) {
uVar8 = *puVar2;
}
if (dComIfGp_getEventManager().getIsAddvance(param_1)) {
switch (iVar10) {
case 0:
mJntAnm.lookPlayer(0);
/* dSv_event_tmp_flag_c::T_0010 - General use - General use temporary flag (flow control) A */
daNpcT_offTmpBit(0xB);
initTalk(mFlowNodeNo, NULL);
break;
case 1:
case 3:
acStack_40.set(0.0f, 100.0f, 150.0f);
cStack_48.y = fopAcM_searchPlayerAngleY(this);
mDoMtx_stack_c::YrotS(cStack_48.y);
mDoMtx_stack_c::multVec(&acStack_40, &acStack_40);
acStack_40 += current.pos;
mGndChk.SetPos(&acStack_40);
acStack_40.y = dComIfG_Bgsp().GroundCross(&mGndChk);
cStack_48.y = cLib_targetAngleY(&acStack_40, &current.pos);
if (iVar10 == 1) {
daPy_getPlayerActorClass()->setPlayerPosAndAngle(
&daPy_getPlayerActorClass()->current.pos, cStack_48.y, 0);
dComIfGp_evmng_setGoal(&acStack_40);
mEventTimer = uVar8;
}
if (iVar10 == 3) {
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&acStack_40, cStack_48.y, 0);
initTalk(mFlowNodeNo, NULL);
mEventTimer = 0;
}
}
}
switch (iVar10) {
case 0:
case 1:
case 2:
if (talkProc(NULL, 0, NULL, 0)) {
if (mFlow.checkEndFlow() != 0) {
uVar9 = 1;
}
} else {
switch (iVar10) {
case 0:
if (mDoGph_gInf_c::isFade()) {
uVar9 = 1;
}
break;
case 1:
uVar9 = 1;
}
}
break;
case 3:
iVar10 = talkProc(NULL, 0, NULL, 0);
if (iVar10 != 0 && mFlow.checkEndFlow() != 0) {
uVar9 = 1;
}
break;
}
return uVar9;
}
/* 80B29EA0-80B2A1B4 0037E0 0314+00 1/0 0/0 0/0 .text krun__11daNpc_Uri_cFPv */
int daNpc_Uri_c::krun(void* param_0) {
int iVar7 = daNpc_Uri_Param_c::m.field_0x8c / 2;
switch (mMode) {
case MODE_ENTER:
case MODE_INIT:
if (!mStagger.checkStagger()) {
mFaceMotionSeqMngr.setNo(13, -1.0f, 0, 0);
mMotionSeqMngr.setNo(25, -1.0f, 0, 0);
mMode = MODE_RUN;
}
case MODE_RUN:
if (!mStagger.checkStagger()) {
mJntAnm.lookNone(0);
if (field_0xfec == 0) {
cXyz cStack_58;
int iVar2 = mPath.getDstPosH(current.pos, &cStack_58, mPath.getNumPnts(), 4);
calcSpeedAndAngle(cStack_58, iVar2, 6, 0x800);
if (iVar2 != 0 && cM3d_IsZero(speedF)) {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(11, -1.0f, 0, 0);
field_0xfec = cLib_getRndValue(iVar7 * 0.5f, iVar7 * 1.5f);
mPath.setPathInfo(getPathID(), fopAcM_GetRoomNo(this), 0);
daNpcT_onEvtBit(0x25);
}
} else {
J3DAnmTransform* anm_transform = getTrnsfrmAnmP(
l_resNameList[l_motionAnmData[15].mBckArcIdx], l_motionAnmData[15].mBckFileIdx);
if (anm_transform == mpMorf[0]->getAnm() && mpMorf[0]->checkFrame(14.0f)) {
mSound.startCreatureVoice(Z2SE_M036_URI_01, -1);
}
iVar7 = cLib_calcTimer(&field_0xfec);
if (iVar7 == 0) {
field_0x100e = 1;
}
}
}
attention_info.flags = 0;
break;
case MODE_EXIT:
case MODE_4:
break;
}
return 1;
}
/* 80B2A1B4-80B2AB60 003AF4 09AC+00 2/0 0/0 0/0 .text wait__11daNpc_Uri_cFPv */
int daNpc_Uri_c::wait(void* param_0) {
s16 sVar10 = home.angle.y;
switch (mMode) {
case MODE_ENTER:
case MODE_INIT:
if (!mStagger.checkStagger()) {
switch (mType) {
case TYPE_1:
if (field_0x100b) {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
} else {
if (field_0x100f) {
/* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (!daNpcT_chkEvtBit(0x1E)
/* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
&& !daNpcT_chkEvtBit(0x92)) {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
} else {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
} else {
/* dSv_event_flag_c::F_0031 - Ordon Village - 2nd day - Spoke to Uli bfore finding basket */
if (daNpcT_chkEvtBit(0x24)) {
mFaceMotionSeqMngr.setNo(5, -1.0f, 0, 0);
mMotionSeqMngr.setNo(12, -1.0f, 0, 0);
} else {
mFaceMotionSeqMngr.setNo(6, -1.0f, 0, 0);
mMotionSeqMngr.setNo(13, -1.0f, 0, 0);
}
}
}
break;
case TYPE_3:
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
if (dComIfGs_isTmpBit(0x1308)) {
mFaceMotionSeqMngr.setNo(12, -1.0f, 0, 0);
mMotionSeqMngr.setNo(22, -1.0f, 0, 0);
} else {
mFaceMotionSeqMngr.setNo(10, -1.0f, 0, 0);
mMotionSeqMngr.setNo(16, -1.0f, 0, 0);
}
break;
default:
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
mMode = 2;
}
case MODE_RUN:
switch (mType) {
case TYPE_1:
/* T_0007 - Ordon Village - During Uli's pick-up tutorial */
if (daNpcT_chkTmpBit(0x7)) {
if (chkPlayerCarryBasket()) {
switch (getTutorialCond(daPy_getPlayerActorClass()->current.pos)) {
case 9:
field_0x1009 = 0;
field_0x100a = 0;
mEvtNo = 6;
break;
default:
field_0x1009 = 0;
field_0x100a = 0;
break;
}
}
} else {
/* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (!daNpcT_chkEvtBit(0x1E)
/* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
&& !daNpcT_chkEvtBit(0x92)) {
cXyz acStack_70 = getAttnPos(daPy_getPlayerActorClass());
int dist_index = attention_info.distances[1];
f32 fVar2 = dComIfGp_getAttention()->getDistTable(dist_index).mLowerY * -1.0f;
f32 fVar3 = dComIfGp_getAttention()->getDistTable(dist_index).mUpperY * -1.0f;
if (chkPointInArea(acStack_70, attention_info.position, 200.0f, fVar2, fVar3,
0))
{
if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0 &&
chkPlayerCarryBasket())
{
mEvtNo = 5;
}
}
sVar10 = field_0xfe4.y;
}
}
break;
case TYPE_2:
break;
case TYPE_3:
/* dSv_event_flag_c::F_0205 - Ordon Village - Heard Rusl and Uli talking in Ordon village at night */
if (daNpcT_chkEvtBit(0xCD)) {
cXyz cStack_7c = getAttnPos(daPy_getPlayerActorClass());
if (chkPointInArea(cStack_7c, attention_info.position,
daNpc_Uri_Param_c::m.field_0x54, daNpc_Uri_Param_c::m.field_0x58,
daNpc_Uri_Param_c::m.field_0x5c, mCurAngle.y))
{
if (!daPy_getPlayerActorClass()->checkPlayerFly()) {
if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) {
if (chkActorInSight(daPy_getPlayerActorClass(), mAttnFovY,
home.angle.y))
{
mEvtNo = 9;
}
}
}
}
} else {
mEvtNo = 8;
field_0xe33 = true;
}
}
if (!mStagger.checkStagger()) {
if (mType == TYPE_1 && field_0x100b != 0) {
mSpeakEvent = true;
field_0xe33 = true;
}
/* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
if (dComIfGs_isTmpBit(0x1308)) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
mJntAnm.lookPlayer(0);
} else {
if (mMotionSeqMngr.getNo() == 22) {
mFaceMotionSeqMngr.setNo(10, -1.0f, 0, 0);
mMotionSeqMngr.setNo(16, -1.0f, 0, 0);
}
if (mPlayerActorMngr.getActorP() && !mTwilight) {
mJntAnm.lookPlayer(0);
if (mType == TYPE_1 && !field_0x100b && !field_0x100f) {
mJntAnm.lookNone(0);
} else if (!chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY,
mCurAngle.y))
{
mJntAnm.lookNone(0);
}
if (!srchPlayerActor() && sVar10 == mCurAngle.y) {
mMode = 1;
}
} else {
mJntAnm.lookNone(0);
if (sVar10 != mCurAngle.y) {
if (field_0xe34) {
if (field_0x1008) {
if (step(sVar10, 17, 24, 15, 0)) {
mMode = 1;
}
} else if (step(sVar10, -1, -1, 15, 0)) {
mMode = 1;
}
} else {
setAngle(sVar10);
mMode = 1;
}
attention_info.flags = 0;
} else {
if (!mTwilight) {
srchPlayerActor();
}
}
}
}
}
break;
case MODE_EXIT:
case MODE_4:
break;
}
return 1;
}
/* 80B2AB60-80B2B24C 0044A0 06EC+00 1/0 0/0 0/0 .text walk__11daNpc_Uri_cFPv */
int daNpc_Uri_c::walk(void* param_0) {
BOOL bVar = FALSE;
int uVar2 = daNpc_Uri_Param_c::m.field_0x8c;
int uVar3 = daNpc_Uri_Param_c::m.field_0x8e;
int uVar4 = daNpc_Uri_Param_c::m.field_0x90;
switch (mMode) {
case MODE_ENTER:
case MODE_INIT:
if (!mStagger.checkStagger()) {
field_0xff4 = 0;
field_0xff8 = 0;
mMode = MODE_RUN;
}
case MODE_RUN:
if (chkPlayerCarryBasket()) {
fopAcM_searchPlayerAngleY(this);
switch (getTutorialCond(daPy_getPlayerActorClass()->current.pos)) {
case 9:
field_0x1009 = 0;
field_0x100a = 0;
mEvtNo = 6;
break;
default:
field_0x1009 = 0;
field_0x100a = 0;
break;
}
}
if (!mStagger.checkStagger()) {
cXyz cStack_84;
int iVar2 = mPath.getDstPosH(current.pos, &cStack_84, mPath.getNumPnts(), 4);
if (iVar2) {
bVar = TRUE;
}
calcSpeedAndAngle(cStack_84, bVar, 6, 0x800);
if (iVar2 && cM3d_IsZero(speedF) && mMotionSeqMngr.getNo() != 8) {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
int num = mPath.getNumPnts();
cXyz cStack_54 = mPath.getPntPos((int)num - 1);
cXyz cStack_60 = mPath.getPntPos((int)num - 2);
home.angle.y = cLib_targetAngleY(&cStack_54, &cStack_60);
}
if (!bVar && field_0x1011 == 0) {
if (field_0xffc == 0) {
bool bVar11 = false;
if (mMotionSeqMngr.getNo() != 28 && mMotionSeqMngr.getNo() != 29) {
bVar11 = true;
field_0xfec = 0;
} else {
cLib_chaseF(&field_0x1004, 0.0f, 1.0f);
}
if (field_0xfec == 0) {
if (bVar11 || mpMorf[0]->isLoop()) {
field_0xfec = cLib_getRndValue((f32)uVar2 * 0.5f, (f32)uVar2 * 1.5f);
field_0x1004 = mMorfFrames;
if (mMotionSeqMngr.getNo() == 28) {
mMotionSeqMngr.setNo(29, -1.0f, 0, 0);
} else {
mMotionSeqMngr.setNo(28, -1.0f, 0, 0);
}
}
} else {
field_0xfec -= 1;
}
} else {
field_0xffc -= 1;
}
}
if (field_0xff4 == 0) {
if (field_0xff8 != 0) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
field_0xff8 -= 1;
} else {
field_0xff4 = cLib_getRndValue((f32)uVar3 * 0.5f, (f32)uVar3 * 1.5f);
}
} else {
field_0xff4 -= 1;
if (field_0xff4 == 0) {
field_0xff8 = cLib_getRndValue((f32)uVar4 * 0.5f, (f32)uVar4 * 1.5f);
}
}
if (iVar2 && home.angle.y != mCurAngle.y) {
mJntAnm.lookNone(0);
if (step(home.angle.y, 17, 24, 15, 0)) {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
field_0x100f = 1;
}
attention_info.flags = 0;
} else {
if (mPlayerActorMngr.getActorP() && !mTwilight) {
if (field_0xff8 == 0) {
field_0x1011 = 0;
}
mJntAnm.lookPlayer(0);
if (!chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y) &&
field_0xff8 == 0)
{
mJntAnm.lookNone(0);
}
if (!srchPlayerActor() && home.angle.y == mCurAngle.y) {
mMode = MODE_INIT;
}
} else {
mJntAnm.lookNone(0);
if (!mTwilight) {
srchPlayerActor();
}
}
}
}
break;
case MODE_EXIT:
case MODE_4:
break;
}
return 1;
}
/* 80B2B24C-80B2B7C0 004B8C 0574+00 2/0 0/0 0/0 .text sitWait__11daNpc_Uri_cFPv */
int daNpc_Uri_c::sitWait(void* param_0) {
int sVar2 = daNpc_Uri_Param_c::m.field_0x92;
switch (mMode) {
case MODE_ENTER:
case MODE_INIT:
if (!mStagger.checkStagger()) {
switch (mType) {
case TYPE_1:
if (field_0x100c != 0) {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(26, 4.0f, 0, 0);
} else {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(5, -1.0f, 0, 0);
field_0xff0 = cLib_getRndValue(sVar2 * 0.5f, sVar2 * 1.5f);
}
break;
case TYPE_4:
/* dSv_event_flag_c::M_028 - Cutscene - [cutscene: 14] restore mountain spirit - Reuinion with Colin et al. */
if (daNpcT_chkEvtBit(0x3D)
/* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time
(first forced conversation) */
&& (daNpcT_chkEvtBit(0x14A)
/* dSv_event_flag_c::F_0516 - Ordon Village - Told Uli directly about having found kids */
|| daNpcT_chkEvtBit(0x204)))
{
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(3, -1.0f, 0, 0);
} else {
mFaceMotionSeqMngr.setNo(10, -1.0f, 0, 0);
mMotionSeqMngr.setNo(18, -1.0f, 0, 0);
}
break;
}
mMode = MODE_RUN;
}
case MODE_RUN:
/* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time
(first forced conversation) */
if (mType == TYPE_4 && !daNpcT_chkEvtBit(0x14A)) {
mSpeakEvent = true;
field_0xe33 = true;
}
if (!mStagger.checkStagger()) {
if (field_0x100c != 0) {
mJntAnm.lookNone(0);
if (mMotionSeqMngr.getNo() == 26 && mMotionSeqMngr.checkEndSequence()) {
field_0x100c = 0;
mMode = MODE_INIT;
}
attention_info.flags = 0;
} else {
if (mPlayerActorMngr.getActorP() && !mTwilight) {
mJntAnm.lookPlayer(0);
if (!chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y)) {
mJntAnm.lookNone(0);
}
if (!srchPlayerActor() && home.angle.y == mCurAngle.y) {
mMode = MODE_INIT;
}
} else {
mJntAnm.lookNone(0);
if (mType == TYPE_1) {
if (field_0xff0 == 0) {
if (mMotionSeqMngr.getNo() == 7) {
if (mMotionSeqMngr.checkEndSequence()) {
mMode = MODE_INIT;
}
} else {
mMotionSeqMngr.setNo(7, -1.0f, 0, 0);
}
} else {
field_0xff0 -= 1;
}
}
if (!mTwilight && srchPlayerActor()) {
mMode = MODE_INIT;
}
}
}
switch (mJntAnm.getMode()) {
case 0:
if (mType == TYPE_4) {
fopAc_ac_c* actor = mActorMngr[0].getActorP();
if (actor) {
mJntAnm.lookPos(&actor->eyePos, 0);
}
}
break;
}
}
break;
case MODE_EXIT:
case MODE_4:
break;
}
return 1;
}
/* 80B2B7C0-80B2BA08 005100 0248+00 3/0 0/0 0/0 .text talk__11daNpc_Uri_cFPv */
int daNpc_Uri_c::talk(void* param_0) {
switch (mMode) {
case MODE_ENTER:
case MODE_INIT:
if (!mStagger.checkStagger()) {
if (field_0x100b != 0) {
initTalk(0x13, NULL);
} else {
initTalk(mFlowNodeNo, NULL);
}
mMode = MODE_RUN;
}
case MODE_RUN:
if (!mStagger.checkStagger()) {
if (mTwilight || mPlayerAngle == mCurAngle.y || field_0x100d != 0 || field_0x100f != 0)
{
if (talkProc(NULL, 0, NULL, 0) && mFlow.checkEndFlow() != 0) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
dComIfGp_event_reset();
if (field_0x100b != 0) {
field_0x100b = 0;
field_0x100c = 1;
field_0x100d = 1;
}
mMode = MODE_EXIT;
}
mJntAnm.lookPlayer(0);
if (mTwilight != 0) {
mJntAnm.lookNone(0);
}
} else {
mJntAnm.lookPlayer(0);
if (field_0x1008 != 0) {
step(mPlayerAngle, 17, 24, 15, 0);
} else {
step(mPlayerAngle, -1, -1, 15, 0);
}
}
}
break;
case MODE_EXIT:
case MODE_4:
break;
}
return 0;
}
/* 80B2BA08-80B2BA28 005348 0020+00 1/0 0/0 0/0 .text daNpc_Uri_Create__FPv */
static int daNpc_Uri_Create(void* i_this) {
return static_cast<daNpc_Uri_c*>(i_this)->create();
}
/* 80B2BA28-80B2BA48 005368 0020+00 1/0 0/0 0/0 .text daNpc_Uri_Delete__FPv */
static int daNpc_Uri_Delete(void* i_this) {
return static_cast<daNpc_Uri_c*>(i_this)->Delete();
}
/* 80B2BA48-80B2BA68 005388 0020+00 1/0 0/0 0/0 .text daNpc_Uri_Execute__FPv */
static int daNpc_Uri_Execute(void* i_this) {
return static_cast<daNpc_Uri_c*>(i_this)->Execute();
}
/* 80B2BA68-80B2BA88 0053A8 0020+00 1/0 0/0 0/0 .text daNpc_Uri_Draw__FPv */
static int daNpc_Uri_Draw(void* i_this) {
return static_cast<daNpc_Uri_c*>(i_this)->Draw();
}
/* 80B2BA88-80B2BA90 0053C8 0008+00 1/0 0/0 0/0 .text daNpc_Uri_IsDelete__FPv */
static int daNpc_Uri_IsDelete(void* i_this) {
return 1;
}
/* 80B2DB44-80B2DB64 -00001 0020+00 1/0 0/0 0/0 .data daNpc_Uri_MethodTable */
static actor_method_class daNpc_Uri_MethodTable = {
(process_method_func)daNpc_Uri_Create, (process_method_func)daNpc_Uri_Delete,
(process_method_func)daNpc_Uri_Execute, (process_method_func)daNpc_Uri_IsDelete,
(process_method_func)daNpc_Uri_Draw,
};
/* 80B2DB64-80B2DB94 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_URI */
extern actor_process_profile_definition g_profile_NPC_URI = {
fpcLy_CURRENT_e, // mLayerID
7, // mListID
fpcPi_CURRENT_e, // mListPrio
PROC_NPC_URI, // mProcName
&g_fpcLf_Method.base, // sub_method
sizeof(daNpc_Uri_c), // mSize
0, // mSizeOther
0, // mParameters
&g_fopAc_Method.base, // sub_method
378, // mPriority
&daNpc_Uri_MethodTable, // sub_method
0x00040107, // mStatus
fopAc_NPC_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
AUDIO_INSTANCES;