summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTrueffel <106771418+Trueffeloot@users.noreply.github.com>2025-11-23 20:51:19 +0100
committerGitHub <noreply@github.com>2025-11-23 21:51:19 +0200
commiteaf980174f97ca1ee08df8c93a4459fba9527bad (patch)
treedc983fdfd7e365d0a9a58240c24c3e75d7ad75cb /src
parent24c1bf1723facc75b841ef68d523573797efb445 (diff)
d_a_npc_guard all functions OK (#2849)
* guard about to match * weak func order messes linking up * improve executePath
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_npc_guard.cpp1444
1 files changed, 533 insertions, 911 deletions
diff --git a/src/d/actor/d_a_npc_guard.cpp b/src/d/actor/d_a_npc_guard.cpp
index 6dc592a7d5..c781941ade 100644
--- a/src/d/actor/d_a_npc_guard.cpp
+++ b/src/d/actor/d_a_npc_guard.cpp
@@ -1,1045 +1,667 @@
/**
* @file d_a_npc_guard.cpp
- *
-*/
+ *
+ */
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_guard.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" static void createHeapCallBack__FP10fopAc_ac_c();
-extern "C" void setAction__12daNpcGuard_cFQ212daNpcGuard_c6Mode_e();
-extern "C" void callInit__12daNpcGuard_cFv();
-extern "C" void callExecute__12daNpcGuard_cFv();
-extern "C" void initPath__12daNpcGuard_cFv();
-extern "C" void executePath__12daNpcGuard_cFv();
-extern "C" void __dt__8cM3dGPlaFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void initRun__12daNpcGuard_cFv();
-extern "C" void executeRun__12daNpcGuard_cFv();
-extern "C" void initFightWait__12daNpcGuard_cFv();
-extern "C" void executeFightWait__12daNpcGuard_cFv();
-extern "C" void initFightStep__12daNpcGuard_cFv();
-extern "C" void executeFightStep__12daNpcGuard_cFv();
-extern "C" void initFightMenace__12daNpcGuard_cFv();
-extern "C" void executeFightMenace__12daNpcGuard_cFv();
-extern "C" void initFear__12daNpcGuard_cFv();
-extern "C" void executeFear__12daNpcGuard_cFv();
-extern "C" void initEscape__12daNpcGuard_cFv();
-extern "C" void executeEscape__12daNpcGuard_cFv();
-extern "C" void setAngle__12daNpcGuard_cFv();
-extern "C" void setSpeed__12daNpcGuard_cFffPfi();
-extern "C" void pathMoveF__12daNpcGuard_cFv();
-extern "C" static void daNpcGuard_Create__FPv();
-extern "C" void create__12daNpcGuard_cFv();
-extern "C" void create_init__12daNpcGuard_cFv();
-extern "C" void setMtx__12daNpcGuard_cFv();
-extern "C" void lookat__12daNpcGuard_cFv();
-extern "C" void __dt__5csXyzFv();
-extern "C" void __dt__8dCcD_SphFv();
-extern "C" void __ct__8dCcD_SphFv();
-extern "C" void __dt__8cM3dGSphFv();
-extern "C" static void daNpcGuard_Delete__FPv();
-extern "C" void __dt__12daNpcGuard_cFv();
-extern "C" static void daNpcGuard_Execute__FPv();
-extern "C" void execute__12daNpcGuard_cFv();
-extern "C" static void daNpcGuard_Draw__FPv();
-extern "C" static bool daNpcGuard_IsDelete__FPv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void func_809F24B4(void* _this, int*);
-extern "C" void func_809F24D0(void* _this, f32, f32);
-extern "C" void func_809F250C(void* _this, int, int);
-extern "C" void __sinit_d_a_npc_guard_cpp();
-extern "C" static void func_809F26E8();
-extern "C" static void func_809F26F0();
-extern "C" void __dt__18daNpcT_ActorMngr_cFv();
-extern "C" void __dt__10daNpcCd2_cFv();
-extern "C" void __dt__16dNpcLib_lookat_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" extern char const* const d_a_npc_guard__stringBase0;
-extern "C" u8 ActionTable__12daNpcGuard_c[168];
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void scaleM__14mDoMtx_stack_cFfff();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void setMorf__13mDoExt_morf_cFf();
-extern "C" void play__16mDoExt_McaMorfSOFUlSc();
-extern "C" void modelCalc__16mDoExt_McaMorfSOFv();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
-extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb();
-extern "C" void fopAcM_getPolygonAngle__FPC8cM3dGPlas();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWallR__12dBgS_AcchCirFf();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void ChkTgHit__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
-extern "C" void initialize__18daNpcT_ActorMngr_cFv();
-extern "C" void getActorP__18daNpcT_ActorMngr_cFv();
-extern "C" void NpcCreate__10daNpcCd2_cFi();
-extern "C" void ObjCreate__10daNpcCd2_cFi();
-extern "C" void isM___10daNpcCd2_cFv();
-extern "C" void getAnmP__10daNpcCd2_cFii();
-extern "C" void setAttention__10daNpcCd2_cFi();
-extern "C" void loadResrc__10daNpcCd2_cFii();
-extern "C" void removeResrc__10daNpcCd2_cFii();
-extern "C" void setEnvTevCol__10daNpcCd2_cFv();
-extern "C" void setRoomNo__10daNpcCd2_cFv();
-extern "C" void setAnm__10daNpcCd2_cFP18J3DAnmTransformKeyffiii();
-extern "C" void drawShadow__10daNpcCd2_cFf();
-extern "C" void drawObj__10daNpcCd2_cFiP8J3DModelf();
-extern "C" void drawNpc__10daNpcCd2_cFv();
-extern "C" void setPath__11PathTrace_cFiiiP4cXyzb();
-extern "C" void checkPoint__11PathTrace_cF4cXyzf();
-extern "C" void checkPathEnd__11PathTrace_cF4cXyzf();
-extern "C" void getTargetPoint__11PathTrace_cFP3Vec();
-extern "C" void setNextPoint__11PathTrace_cFR4cXyz();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void __ct__16dNpcLib_lookat_cFv();
-extern "C" void init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz();
-extern "C" void action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __ct__5csXyzFsss();
-extern "C" void cM_rndF__Ff();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void SetC__8cM3dGSphFRC4cXyz();
-extern "C" void cLib_addCalc2__FPffff();
-extern "C" void cLib_addCalcAngleS2__FPssss();
-extern "C" void cLib_chaseF__FPfff();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_distanceAngleS__Fss();
-extern "C" void __ct__17Z2CreatureCitizenFv();
-extern "C" void __dt__17Z2CreatureCitizenFv();
-extern "C" void playVoice__17Z2CreatureCitizenFi();
-extern "C" void __dl__FPv();
-extern "C" void checkPass__12J3DFrameCtrlFf();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_24();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" u8 const m_cylDat__10daNpcCd2_c[68];
-extern "C" extern void* __vt__8dCcD_Sph[36];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" extern void* __vt__12cCcD_SphAttr[25];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" extern u8 l_Cd2_HIO[16396];
-extern "C" f32 Zero__4cXyz[3];
-extern "C" u8 sincosTable___5JMath[65536];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 809F2D48-809F2D48 0000F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_809F2D48 = "object";
-#pragma pop
+#include "d/d_bg_s.h"
+
+int daNpcGuard_c::createHeap() {
+ int rv = NpcCreate(m_type);
+
+ if (rv) {
+ rv = NULL != (mpModel = ObjCreate(mObjNum));
+ if (!rv) {
+ mpMorf->stopZelAnime();
+ }
+ if (m_type == 1) {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("object", 0x11);
+ JUT_ASSERT(125, modelData != NULL);
+
+ mpModel2 = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ if (mpModel2 == NULL) {
+ mpMorf->stopZelAnime();
+ rv = 0;
+ }
+ }
+ }
+
+ return rv;
+}
/* 809EFD58-809EFE20 000078 00C8+00 1/1 0/0 0/0 .text createHeapCallBack__FP10fopAc_ac_c
*/
-static void createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+static int createHeapCallBack(fopAc_ac_c* i_this) {
+ return static_cast<daNpcGuard_c*>(i_this)->createHeap();
}
-/* 809F2D70-809F2D7C -00001 000C+00 0/1 0/0 0/0 .data @3824 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3824[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)initPath__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2D7C-809F2D88 -00001 000C+00 0/1 0/0 0/0 .data @3825 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3825[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)executePath__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2D88-809F2D94 -00001 000C+00 0/1 0/0 0/0 .data @3826 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3826[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)initRun__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2D94-809F2DA0 -00001 000C+00 0/1 0/0 0/0 .data @3827 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3827[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)executeRun__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DA0-809F2DAC -00001 000C+00 0/1 0/0 0/0 .data @3828 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3828[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)initFightWait__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DAC-809F2DB8 -00001 000C+00 0/1 0/0 0/0 .data @3829 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3829[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)executeFightWait__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DB8-809F2DC4 -00001 000C+00 0/1 0/0 0/0 .data @3830 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3830[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)initFightStep__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DC4-809F2DD0 -00001 000C+00 0/1 0/0 0/0 .data @3831 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3831[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)executeFightStep__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DD0-809F2DDC -00001 000C+00 0/1 0/0 0/0 .data @3832 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3832[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)initFightMenace__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DDC-809F2DE8 -00001 000C+00 0/1 0/0 0/0 .data @3833 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3833[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)executeFightMenace__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DE8-809F2DF4 -00001 000C+00 0/1 0/0 0/0 .data @3834 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3834[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)initFear__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2DF4-809F2E00 -00001 000C+00 0/1 0/0 0/0 .data @3835 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3835[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)executeFear__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2E00-809F2E0C -00001 000C+00 0/1 0/0 0/0 .data @3836 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3836[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)initEscape__12daNpcGuard_cFv,
-};
-#pragma pop
-
-/* 809F2E0C-809F2E18 -00001 000C+00 0/1 0/0 0/0 .data @3837 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_3837[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)executeEscape__12daNpcGuard_cFv,
-};
-#pragma pop
-
/* 809F2E18-809F2EC0 0000C8 00A8+00 1/2 0/0 0/0 .data ActionTable__12daNpcGuard_c */
-SECTION_DATA u8 daNpcGuard_c::ActionTable[168] = {
- 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, 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, 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, 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,
- 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, 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,
+daNpcGuard_c::actionFunc daNpcGuard_c::ActionTable[7][2] = {
+ {&daNpcGuard_c::initPath, &daNpcGuard_c::executePath},
+ {&daNpcGuard_c::initRun, &daNpcGuard_c::executeRun},
+ {&daNpcGuard_c::initFightWait, &daNpcGuard_c::executeFightWait},
+ {&daNpcGuard_c::initFightStep, &daNpcGuard_c::executeFightStep},
+ {&daNpcGuard_c::initFightMenace, &daNpcGuard_c::executeFightMenace},
+ {&daNpcGuard_c::initFear, &daNpcGuard_c::executeFear},
+ {&daNpcGuard_c::initEscape, &daNpcGuard_c::executeEscape},
};
/* 809EFE20-809EFE64 000140 0044+00 8/8 0/0 0/0 .text
* setAction__12daNpcGuard_cFQ212daNpcGuard_c6Mode_e */
-void daNpcGuard_c::setAction(daNpcGuard_c::Mode_e param_0) {
- // NONMATCHING
+void daNpcGuard_c::setAction(daNpcGuard_c::Mode_e i_action) {
+ JUT_ASSERT(286, i_action < MODE_MAX_e);
+
+ mPrevActionIdx = mActionIdx;
+ mActionIdx = i_action;
+ mAction = ActionTable[mActionIdx];
+ callInit();
}
/* 809EFE64-809EFE8C 000184 0028+00 1/1 0/0 0/0 .text callInit__12daNpcGuard_cFv */
void daNpcGuard_c::callInit() {
- // NONMATCHING
+ JUT_ASSERT(328, mAction != NULL);
+ (this->*mAction[0])();
}
/* 809EFE8C-809EFEB8 0001AC 002C+00 1/1 0/0 0/0 .text callExecute__12daNpcGuard_cFv */
void daNpcGuard_c::callExecute() {
- // NONMATCHING
+ JUT_ASSERT(341, mAction != NULL);
+ (this->*mAction[1])();
}
-/* ############################################################################################## */
-/* 809F2C50-809F2C54 000000 0004+00 15/15 0/0 0/0 .rodata @3900 */
-SECTION_RODATA static f32 const lit_3900 = 1.0f;
-COMPILER_STRIP_GATE(0x809F2C50, &lit_3900);
-
-/* 809F2C54-809F2C58 000004 0004+00 3/6 0/0 0/0 .rodata @3901 */
-SECTION_RODATA static f32 const lit_3901 = 12.0f;
-COMPILER_STRIP_GATE(0x809F2C54, &lit_3901);
-
/* 809EFEB8-809EFF1C 0001D8 0064+00 1/0 0/0 0/0 .text initPath__12daNpcGuard_cFv */
void daNpcGuard_c::initPath() {
- // NONMATCHING
+ setAnm((J3DAnmTransformKey*)getAnmP(4, mObjNum), 1.0f, 12.0f, 2, 0, -1);
+ field_0xd9c = 1;
}
-/* ############################################################################################## */
-/* 809F2C58-809F2C60 000008 0008+00 2/4 0/0 0/0 .rodata @3951 */
-SECTION_RODATA static u8 const lit_3951[8] = {
- 0x40, 0x7F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809F2C58, &lit_3951);
-
-/* 809F2C60-809F2C68 000010 0008+00 2/5 0/0 0/0 .rodata @3952 */
-SECTION_RODATA static u8 const lit_3952[8] = {
- 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809F2C60, &lit_3952);
-
-/* 809F2EC0-809F2EE0 -00001 0020+00 1/0 0/0 0/0 .data daNpcGuard_METHODS */
-static actor_method_class daNpcGuard_METHODS = {
- (process_method_func)daNpcGuard_Create__FPv,
- (process_method_func)daNpcGuard_Delete__FPv,
- (process_method_func)daNpcGuard_Execute__FPv,
- (process_method_func)daNpcGuard_IsDelete__FPv,
- (process_method_func)daNpcGuard_Draw__FPv,
-};
-
-/* 809F2EE0-809F2F10 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_GUARD */
-extern actor_process_profile_definition g_profile_NPC_GUARD = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_NPC_GUARD, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daNpcGuard_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 406, // mPriority
- &daNpcGuard_METHODS, // sub_method
- 0x00040107, // mStatus
- fopAc_NPC_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
-
-/* 809F2F10-809F2F1C 0001C0 000C+00 2/2 0/0 0/0 .data __vt__12dBgS_AcchCir */
-SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_AcchCirFv,
-};
-
-/* 809F2F1C-809F2F28 0001CC 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
-
-/* 809F2F28-809F2F34 0001D8 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
-
-/* 809F2F34-809F2F40 0001E4 000C+00 2/2 0/0 0/0 .data __vt__16dNpcLib_lookat_c */
-SECTION_DATA extern void* __vt__16dNpcLib_lookat_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__16dNpcLib_lookat_cFv,
-};
-
-/* 809F2F40-809F2F4C 0001F0 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */
-SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGSphFv,
-};
-
-/* 809F2F4C-809F2F58 0001FC 000C+00 3/3 0/0 0/0 .data __vt__18daNpcT_ActorMngr_c */
-SECTION_DATA extern void* __vt__18daNpcT_ActorMngr_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18daNpcT_ActorMngr_cFv,
-};
-
-/* 809F2F58-809F2F64 000208 000C+00 2/2 0/0 0/0 .data __vt__12daNpcGuard_c */
-SECTION_DATA extern void* __vt__12daNpcGuard_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12daNpcGuard_cFv,
-};
-
-/* 809F2F64-809F2F70 000214 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
-
-/* 809F2F70-809F2F7C 000220 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
-
-/* 809F2F7C-809F2FA0 00022C 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */
-SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_ObjAcchFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_809F26F0,
- (void*)NULL,
- (void*)NULL,
- (void*)func_809F26E8,
-};
-
-/* 809F2FA0-809F2FAC 000250 000C+00 2/2 0/0 0/0 .data __vt__10daNpcCd2_c */
-SECTION_DATA extern void* __vt__10daNpcCd2_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10daNpcCd2_cFv,
-};
-
-/* 809F2FAC-809F2FB8 00025C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGPla */
-SECTION_DATA extern void* __vt__8cM3dGPla[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGPlaFv,
-};
-
/* 809EFF1C-809F0100 00023C 01E4+00 1/0 0/0 0/0 .text executePath__12daNpcGuard_cFv */
void daNpcGuard_c::executePath() {
- // NONMATCHING
-}
-
-/* 809F0100-809F0148 000420 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */
-// cM3dGPla::~cM3dGPla() {
-extern "C" void __dt__8cM3dGPlaFv() {
- // NONMATCHING
-}
-
-/* 809F0148-809F0184 000468 003C+00 2/2 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
+ if (m_path.isPath()) {
+ if (m_path.checkPoint(current.pos, speedF)) {
+ if (m_path.checkPathEnd(current.pos, speedF)) {
+ if (!m_path.isClose()) {
+ setAction(MODE_FIGHT_WAIT_e);
+ }
+ }
+ m_path.setNextPoint(current.pos);
+ }
+ if (field_0xd9c == 2 || field_0xd9c == 1) {
+ cXyz targetPoint;
+ m_path.getTargetPoint(&targetPoint);
+ cLib_addCalcAngleS2(&shape_angle.y, cLib_targetAngleY(&current.pos, &targetPoint), 0xD,
+ 0x600);
+
+ if (current.pos.y != old.pos.y) {
+ s16 polyAngle = 0x0;
+ cM3dGPla plane;
+ if (dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane)) {
+ polyAngle = fopAcM_getPolygonAngle(&plane, shape_angle.y);
+ }
+ if (polyAngle != 0x0) {
+ field_0xd94 = current.pos.y;
+ }
+ }
+ }
+ setAngle();
+ pathMoveF();
+ mAcch.CrrPos(dComIfG_Bgsp());
+ f32 power = std::pow(500.0f, 2.0f);
+ f32 playerDistXZ = fopAcM_searchPlayerDistanceXZ2(this);
+ if (playerDistXZ < power) {
+ setAction(MODE_FIGHT_WAIT_e);
+ }
+ }
}
/* 809F0184-809F01E8 0004A4 0064+00 1/0 0/0 0/0 .text initRun__12daNpcGuard_cFv */
void daNpcGuard_c::initRun() {
- // NONMATCHING
+ setAnm((J3DAnmTransformKey*)getAnmP(4, mObjNum), 1.0f, 12.0f, 2, 0, -1);
+ field_0xd9c = 1;
}
-/* ############################################################################################## */
-/* 809F2C68-809F2C6C 000018 0004+00 0/2 0/0 0/0 .rodata @4002 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4002 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x809F2C68, &lit_4002);
-#pragma pop
-
-/* 809F2C6C-809F2C70 00001C 0004+00 0/2 0/0 0/0 .rodata @4003 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4003 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x809F2C6C, &lit_4003);
-#pragma pop
-
-/* 809F2C70-809F2C74 000020 0004+00 0/9 0/0 0/0 .rodata @4004 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4004[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809F2C70, &lit_4004);
-#pragma pop
-
-/* 809F2C74-809F2C78 000024 0004+00 0/2 0/0 0/0 .rodata @4005 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4005 = 6.0f / 5.0f;
-COMPILER_STRIP_GATE(0x809F2C74, &lit_4005);
-#pragma pop
-
-/* 809F2C78-809F2C7C 000028 0004+00 1/5 0/0 0/0 .rodata @4006 */
-SECTION_RODATA static f32 const lit_4006 = 0.25f;
-COMPILER_STRIP_GATE(0x809F2C78, &lit_4006);
-
-/* 809F2C7C-809F2C80 00002C 0004+00 0/2 0/0 0/0 .rodata @4007 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4007 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x809F2C7C, &lit_4007);
-#pragma pop
-
/* 809F01E8-809F03FC 000508 0214+00 1/0 0/0 0/0 .text executeRun__12daNpcGuard_cFv */
void daNpcGuard_c::executeRun() {
- // NONMATCHING
+ field_0xda0 = fopAcM_searchPlayerAngleY(this);
+ cLib_addCalcAngleS2(&shape_angle.y, field_0xda0, 0xD, 0x600);
+ setAngle();
+ f32 maxSpeed = Cd2_HIO_maxSpeed(m_type);
+ f32 anmPlaySpeed = Cd2_HIO_anmPlaySpeed(m_type);
+ cLib_chaseF(&field_0xd8c, 1.0f, 0.05f);
+ setSpeed(0.7f, maxSpeed, &field_0xd90, 0);
+ setSpeed(0.7f, maxSpeed, &speedF, 1);
+ if (cLib_distanceAngleS(shape_angle.y, field_0xda0) >= 0x2000) {
+ cLib_chaseF(&field_0xd8c, 0.0f, 0.05f);
+ cLib_chaseF(&field_0xd90, 0.0f, 1.2f);
+ cLib_chaseF(&speedF, 0.0f, 1.2f);
+ }
+ cXyz* ccMoveP = mStts.GetCCMoveP();
+ if (ccMoveP != NULL) {
+ *ccMoveP *= 0.25f;
+ }
+ fopAcM_posMoveF(this, ccMoveP);
+
+ maxSpeed = field_0xd90 / maxSpeed;
+ if (maxSpeed > 1.0f) {
+ maxSpeed = 1.0f;
+ }
+ f32 playSpeed = anmPlaySpeed * maxSpeed;
+ if (playSpeed < 0.6f) {
+ playSpeed = 0.6f;
+ }
+ mpMorf->setPlaySpeed(playSpeed);
+ mAcch.CrrPos(dComIfG_Bgsp());
+ f32 power = std::pow(500.0f, 2.0f);
+ f32 playerDistXZ = fopAcM_searchPlayerDistanceXZ2(this);
+ if (playerDistXZ < power) {
+ setAction(MODE_FIGHT_WAIT_e);
+ }
}
-/* ############################################################################################## */
-/* 809F2C80-809F2C84 000030 0004+00 0/1 0/0 0/0 .rodata @4016 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4016 = 300.0f;
-COMPILER_STRIP_GATE(0x809F2C80, &lit_4016);
-#pragma pop
-
-/* 809F2C84-809F2C88 000034 0004+00 0/2 0/0 0/0 .rodata @4017 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4017 = 200.0f;
-COMPILER_STRIP_GATE(0x809F2C84, &lit_4017);
-#pragma pop
-
/* 809F03FC-809F04B4 00071C 00B8+00 1/0 0/0 0/0 .text initFightWait__12daNpcGuard_cFv */
void daNpcGuard_c::initFightWait() {
- // NONMATCHING
+ setAnm((J3DAnmTransformKey*)getAnmP(42, mObjNum), 1.0f, 12.0f, 2, 0, -1);
+ speedF = 0.0f;
+ field_0xd98 = cLib_getRndValue(300.0f, 200.0f);
+ if (fopAcM_searchPlayerDistanceXZ(this) - field_0xd98 < 0.0f) {
+ mCitizen.playVoice(1);
+ }
+ field_0xd9c = 0;
}
-/* ############################################################################################## */
-/* 809F2C88-809F2C8C 000038 0004+00 0/1 0/0 0/0 .rodata @4065 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4065 = 1.0f / 5.0f;
-COMPILER_STRIP_GATE(0x809F2C88, &lit_4065);
-#pragma pop
-
-/* 809F2C8C-809F2C90 00003C 0004+00 0/1 0/0 0/0 .rodata @4066 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4066 = 10.0f;
-COMPILER_STRIP_GATE(0x809F2C8C, &lit_4066);
-#pragma pop
-
-/* 809F2C90-809F2C94 000040 0004+00 0/1 0/0 0/0 .rodata @4067 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4067 = 500.0f;
-COMPILER_STRIP_GATE(0x809F2C90, &lit_4067);
-#pragma pop
-
/* 809F04B4-809F06F4 0007D4 0240+00 1/0 0/0 0/0 .text executeFightWait__12daNpcGuard_cFv
*/
void daNpcGuard_c::executeFightWait() {
- // NONMATCHING
+ f32 playerDist = fopAcM_searchPlayerDistanceXZ(this);
+ f32 dist = playerDist - field_0xd98;
+ f32 distCopy = dist;
+ cLib_addCalc2(&distCopy, 0.0f, 0.2f, 10.0f);
+ speedF = dist - distCopy;
+ field_0xda0 = fopAcM_searchPlayerAngleY(this);
+ cLib_addCalcAngleS2(&shape_angle.y, field_0xda0, 0x3, 0x600);
+ setAngle();
+
+ cXyz* ccMoveP = mStts.GetCCMoveP();
+ if (ccMoveP != NULL) {
+ *ccMoveP *= 0.25f;
+ }
+ fopAcM_posMoveF(this, ccMoveP);
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ f32 power = std::pow(2.0f, 2.0f);
+ if (current.pos.abs2XZ(old.pos) > power) {
+ setAnm(mpAnmKey2, 1.0f, 12.0f, 2, 0, -1);
+ } else {
+ if (cLib_distanceAngleS(shape_angle.y, field_0xda0) > 0x300) {
+ setAnm(mpAnmKey2, 1.0f, 12.0f, 2, 0, -1);
+ } else {
+ setAnm(mpAnmKey, 1.0f, 12.0f, 2, 0, -1);
+ }
+ }
+
+ if (mCyl.ChkTgHit() || mSpheres[0].ChkTgHit() || mSpheres[1].ChkTgHit()) {
+ setAction(MODE_FEAR_e);
+ } else if (cLib_calcTimer(&field_0xd88) == 0) {
+ setAction(MODE_FIGHT_MENACE_e);
+ } else if (playerDist > 500.0f) {
+ setAction(MODE_RUN_e);
+ }
}
/* 809F06F4-809F0700 000A14 000C+00 1/0 0/0 0/0 .text initFightStep__12daNpcGuard_cFv */
void daNpcGuard_c::initFightStep() {
- // NONMATCHING
+ field_0xd9c = 0;
}
/* 809F0700-809F0778 000A20 0078+00 1/0 0/0 0/0 .text executeFightStep__12daNpcGuard_cFv
*/
void daNpcGuard_c::executeFightStep() {
- // NONMATCHING
+ if (fopAcM_searchPlayerDistanceXZ2(this) > std::pow(500.0f, 2.0f)) {
+ setAction(MODE_RUN_e);
+ }
}
/* 809F0778-809F07F8 000A98 0080+00 1/0 0/0 0/0 .text initFightMenace__12daNpcGuard_cFv
*/
void daNpcGuard_c::initFightMenace() {
- // NONMATCHING
+ setAnm((J3DAnmTransformKey*)getAnmP(43, mObjNum), 1.0f, 12.0f, 0, 0, -1);
+ mCitizen.playVoice(2);
+ field_0xd88 = cLib_getRndValue(0x5A, 0x3C);
+ field_0xd9c = 0;
}
/* 809F07F8-809F08DC 000B18 00E4+00 1/0 0/0 0/0 .text executeFightMenace__12daNpcGuard_cFv */
void daNpcGuard_c::executeFightMenace() {
- // NONMATCHING
+ field_0xda0 = fopAcM_searchPlayerAngleY(this);
+ cLib_addCalcAngleS2(&shape_angle.y, field_0xda0, 0x3, 0x600);
+ setAngle();
+ if (mpMorf->isStop()) {
+ setAction(MODE_FIGHT_WAIT_e);
+ }
+ if (fopAcM_searchPlayerDistanceXZ2(this) > std::pow(500.0f, 2.0f)) {
+ setAction(MODE_RUN_e);
+ }
}
-/* ############################################################################################## */
-/* 809F2C94-809F2C98 000044 0004+00 0/1 0/0 0/0 .rodata @4111 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4111 = 4.0f;
-COMPILER_STRIP_GATE(0x809F2C94, &lit_4111);
-#pragma pop
-
/* 809F08DC-809F0960 000BFC 0084+00 1/0 0/0 0/0 .text initFear__12daNpcGuard_cFv */
void daNpcGuard_c::initFear() {
- // NONMATCHING
+ setAnm((J3DAnmTransformKey*)getAnmP(46, 0), 1.0f, 4.0f, 2, 0, -1);
+ field_0xd88 = cLib_getRndValue(0x96, 0x3C);
+ speedF = 0.0f;
+ field_0xd9c = 0;
}
/* 809F0960-809F0A50 000C80 00F0+00 1/0 0/0 0/0 .text executeFear__12daNpcGuard_cFv */
void daNpcGuard_c::executeFear() {
- // NONMATCHING
+ if (mpMorf->checkFrame(1.0f)) {
+ mCitizen.playVoice(2);
+ }
+
+ cXyz* ccMoveP = mStts.GetCCMoveP();
+ if (ccMoveP != NULL) {
+ *ccMoveP *= 0.25f;
+ }
+ fopAcM_posMoveF(this, ccMoveP);
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ u8 cutType = daPy_getPlayerActorClass()->getCutType();
+ if ((cutType == daPy_py_c::CUT_TYPE_WOLF_TURN_LEFT ||
+ cutType == daPy_py_c::CUT_TYPE_WOLF_TURN_RIGHT) &&
+ field_0xda2)
+ {
+ setAction(MODE_MAX_e);
+ } else {
+ if (cLib_calcTimer(&field_0xd88) == 0) {
+ setAction(MODE_FIGHT_WAIT_e);
+ }
+ }
}
-/* ############################################################################################## */
-/* 809F2C98-809F2C9C 000048 0004+00 0/2 0/0 0/0 .rodata @4141 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4141 = 2.0f;
-COMPILER_STRIP_GATE(0x809F2C98, &lit_4141);
-#pragma pop
-
-/* 809F2C9C-809F2CA0 00004C 0004+00 0/1 0/0 0/0 .rodata @4142 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4142 = 8.0f;
-COMPILER_STRIP_GATE(0x809F2C9C, &lit_4142);
-#pragma pop
-
-/* 809F2CA0-809F2CA8 000050 0004+04 0/2 0/0 0/0 .rodata @4143 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4143[1 + 1 /* padding */] = {
- 20.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x809F2CA0, &lit_4143);
-#pragma pop
-
/* 809F0A50-809F0B20 000D70 00D0+00 1/0 0/0 0/0 .text initEscape__12daNpcGuard_cFv */
void daNpcGuard_c::initEscape() {
- // NONMATCHING
+ setAnm((J3DAnmTransformKey*)getAnmP(4, 3), 2.0f, 8.0f, 2, 0, -1);
+ mCitizen.playVoice(0);
+ shape_angle.y = fopAcM_searchPlayerAngleY(this) + 0x8000;
+ speedF = 20.0f;
+ fopAcM_createItemFromTable(&current.pos, 7, -1, -1, NULL, 0, NULL, NULL, NULL, false);
+ field_0xd9c = 1;
}
-/* ############################################################################################## */
-/* 809F2CA8-809F2CB0 000058 0008+00 0/1 0/0 0/0 .rodata @4203 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4203[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809F2CA8, &lit_4203);
-#pragma pop
-
-/* 809F2CB0-809F2CB8 000060 0008+00 0/1 0/0 0/0 .rodata @4204 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4204[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809F2CB0, &lit_4204);
-#pragma pop
-
-/* 809F2CB8-809F2CC0 000068 0008+00 0/1 0/0 0/0 .rodata @4205 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4205[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809F2CB8, &lit_4205);
-#pragma pop
-
/* 809F0B20-809F0DD4 000E40 02B4+00 1/0 0/0 0/0 .text executeEscape__12daNpcGuard_cFv */
void daNpcGuard_c::executeEscape() {
- // NONMATCHING
+ if (field_0xd9c != 0) {
+ speedF = 20.0f;
+ mpMorf->setPlaySpeed(2.0f);
+ cLib_addCalcAngleS2(&shape_angle.y, fopAcM_searchPlayerAngleY(this) + 0x8000, 0xD, 0x600);
+ if (current.pos.y != old.pos.y) {
+ s16 polyAngle = 0x0;
+ cM3dGPla plane;
+ if (dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane)) {
+ polyAngle = fopAcM_getPolygonAngle(&plane, shape_angle.y);
+ }
+ if (polyAngle != 0x0) {
+ field_0xd94 = current.pos.y;
+ }
+ }
+ setAngle();
+
+ cXyz* ccMoveP = mStts.GetCCMoveP();
+ if (ccMoveP != NULL) {
+ *ccMoveP *= 0.25f;
+ }
+ fopAcM_posMoveF(this, ccMoveP);
+ mAcch.CrrPos(dComIfG_Bgsp());
+
+ if (mAcch.ChkWallHit() && current.pos.abs(old.pos) < 2.0f) {
+ field_0xda5++;
+ if (field_0xda5 > 30) {
+ setAnm((J3DAnmTransformKey*)getAnmP(46, 0), 1.0f, 12.0f, 2, 0, -1);
+ speedF = 0.0f;
+ field_0xd9c = 0;
+ }
+ } else {
+ field_0xda5 = 0;
+ }
+ }
+ if (fopAcM_CheckCondition(this, 4)) {
+ fopAcM_delete(this);
+ }
}
/* 809F0DD4-809F0DE0 0010F4 000C+00 5/5 0/0 0/0 .text setAngle__12daNpcGuard_cFv */
void daNpcGuard_c::setAngle() {
- // NONMATCHING
+ current.angle.y = shape_angle.y;
}
/* 809F0DE0-809F0ED4 001100 00F4+00 1/1 0/0 0/0 .text setSpeed__12daNpcGuard_cFffPfi */
-void daNpcGuard_c::setSpeed(f32 param_0, f32 param_1, f32* param_2, int param_3) {
- // NONMATCHING
-}
+inline void daNpcGuard_c::setSpeed(f32 param_1, f32 param_2, f32* i_speed, int param_4) {
+ f32 target = field_0xd8c * (param_2 * field_0xd8c);
+ f32 step = field_0xd8c * (param_1 * field_0xd8c);
-/* ############################################################################################## */
-/* 809F2CC0-809F2CC4 000070 0004+00 0/1 0/0 0/0 .rodata @4335 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4335 = 4.0f / 5.0f;
-COMPILER_STRIP_GATE(0x809F2CC0, &lit_4335);
-#pragma pop
-
-/* 809F2CC4-809F2CC8 000074 0004+00 0/2 0/0 0/0 .rodata @4336 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4336 = 1.5f;
-COMPILER_STRIP_GATE(0x809F2CC4, &lit_4336);
-#pragma pop
+ if (param_4 != 0 && mAcch.ChkWallHit()) {
+ s16 sVar1 = shape_angle.y + 0x8000 - mAcchCir.GetWallAngleY();
+ if (abs(sVar1) < 0x4000) {
+ target *= 1.0f - cM_scos(sVar1);
+ }
+ }
+
+ if (param_2 < target) {
+ target = param_2;
+ }
+
+ cLib_chaseF(i_speed, target, step);
+}
/* 809F0ED4-809F12D0 0011F4 03FC+00 1/1 0/0 0/0 .text pathMoveF__12daNpcGuard_cFv */
void daNpcGuard_c::pathMoveF() {
- // NONMATCHING
+ f32 walkSpeed = 0.0f;
+ f32 anmSpeed = 0.0f;
+
+ if (field_0xd9c == 2) {
+ walkSpeed = Cd2_HIO_walkMaxSpeed(m_type);
+ anmSpeed = Cd2_HIO_walkAnmPlaySpeed(m_type);
+
+ cLib_chaseF(&field_0xd8c, 0.8f, 0.05f);
+ setSpeed(0.7f, walkSpeed, &field_0xd90, 0);
+ setSpeed(0.7f, walkSpeed, &speedF, 1);
+ } else if (field_0xd9c == 1) {
+ walkSpeed = Cd2_HIO_maxSpeed(m_type);
+ anmSpeed = Cd2_HIO_anmPlaySpeed(m_type);
+ cLib_chaseF(&field_0xd8c, 1.0, 0.05f);
+ setSpeed(0.7f, walkSpeed, &field_0xd90, 0);
+ setSpeed(0.7f, walkSpeed, &speedF, 1);
+ } else if (field_0xd9c == 0) {
+ cLib_chaseF(&field_0xd8c, 0.0, 0.05f);
+ cLib_chaseF(&field_0xd90, 0.0f, 1.5f);
+ cLib_chaseF(&speedF, 0.0f, 1.5f);
+ }
+ cXyz targetPoint;
+ m_path.getTargetPoint(&targetPoint);
+ int angle = cLib_distanceAngleS(shape_angle.y, cLib_targetAngleY(&current.pos, &targetPoint));
+ if (angle >= 0x2000) {
+ cLib_chaseF(&field_0xd8c, 0.0f, 0.05f);
+ cLib_chaseF(&field_0xd90, 0.0f, 1.2f);
+ cLib_chaseF(&speedF, 0.0f, 1.2f);
+ }
+
+ cXyz* ccMoveP = mStts.GetCCMoveP();
+ if (ccMoveP != NULL) {
+ *ccMoveP *= 0.25f;
+ }
+ fopAcM_posMoveF(this, ccMoveP);
+ f32 playSpeed;
+ if (field_0xd9c != 0) {
+ playSpeed = field_0xd90 / walkSpeed;
+ if (playSpeed > 1.0f) {
+ playSpeed = 1.0f;
+ }
+ playSpeed = anmSpeed * playSpeed;
+ if (playSpeed < 0.6f) {
+ playSpeed = 0.6f;
+ }
+ mpMorf->setPlaySpeed(playSpeed);
+ }
}
/* 809F12D0-809F12F0 0015F0 0020+00 1/0 0/0 0/0 .text daNpcGuard_Create__FPv */
-static void daNpcGuard_Create(void* param_0) {
- // NONMATCHING
+static int daNpcGuard_Create(void* i_this) {
+ return static_cast<daNpcGuard_c*>(i_this)->create();
}
/* 809F12F0-809F14CC 001610 01DC+00 1/1 0/0 0/0 .text create__12daNpcGuard_cFv */
-void daNpcGuard_c::create() {
- // NONMATCHING
+int daNpcGuard_c::create() {
+ fopAcM_ct(this, daNpcGuard_c);
+
+ m_type = cLib_getRndValue(0, 2);
+ mObjNum = 2;
+ int phase = loadResrc(m_type, mObjNum);
+ if (phase == cPhs_COMPLEATE_e) {
+ if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x2220)) {
+ // Failed to create actor!
+ OS_REPORT("アクター生成失敗しました!\n");
+ return cPhs_ERROR_e;
+ }
+ create_init();
+ }
+
+ return phase;
+}
+
+void daNpcGuard_c::initCollision() {
+ dCcD_SrcSph sph = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x79}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 30.0f} // mSph
+ } // mSphAttr
+ };
+
+ mStts.Init(0x96, 0xff, this);
+ mStts.SetRoomId(fopAcM_GetRoomNo(this));
+ mCyl.SetStts(&mStts);
+ mCyl.Set(m_cylDat);
+ mCyl.SetR(m_type != 0 ? 60.0f : 40.0f);
+ mCyl.SetH(Cd2_HIO_cylH(m_type));
+ mCyl.SetTgType(0xd8000000);
+ mCyl.SetTgSPrm(0x11);
+ mCyl.OnTgNoHitMark();
+ mCyl.OnTgNoConHit();
+
+ for (int i = 0; i < 2; i++) {
+ mSpheres[i].SetStts(&mStts);
+ mSpheres[i].Set(sph);
+ mSpheres[i].SetTgType(0xd8000000);
+ mSpheres[i].SetTgSPrm(0x11);
+ mSpheres[i].OnTgNoHitMark();
+ mSpheres[i].OnTgNoConHit();
+ }
}
-/* ############################################################################################## */
-/* 809F2CC8-809F2D08 000078 0040+00 0/0 0/0 0/0 .rodata @4351 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4351[64] = {
- 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, 0x79, 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, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809F2CC8, &lit_4351);
-#pragma pop
-
-/* 809F2D08-809F2D0C 0000B8 0004+00 0/1 0/0 0/0 .rodata @4480 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4480 = -3.0f;
-COMPILER_STRIP_GATE(0x809F2D08, &lit_4480);
-#pragma pop
-
-/* 809F2D0C-809F2D10 0000BC 0004+00 0/1 0/0 0/0 .rodata @4481 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4481 = -40.0f;
-COMPILER_STRIP_GATE(0x809F2D0C, &lit_4481);
-#pragma pop
-
-/* 809F2D10-809F2D14 0000C0 0004+00 0/1 0/0 0/0 .rodata @4482 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4482 = -10.0f;
-COMPILER_STRIP_GATE(0x809F2D10, &lit_4482);
-#pragma pop
-
-/* 809F2D14-809F2D18 0000C4 0004+00 0/2 0/0 0/0 .rodata @4483 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4483 = -80.0f;
-COMPILER_STRIP_GATE(0x809F2D14, &lit_4483);
-#pragma pop
-
-/* 809F2D18-809F2D1C 0000C8 0004+00 0/1 0/0 0/0 .rodata @4484 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4484 = 40.0f;
-COMPILER_STRIP_GATE(0x809F2D18, &lit_4484);
-#pragma pop
-
-/* 809F2D1C-809F2D20 0000CC 0004+00 0/1 0/0 0/0 .rodata @4485 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4485 = 190.0f;
-COMPILER_STRIP_GATE(0x809F2D1C, &lit_4485);
-#pragma pop
-
-/* 809F2D20-809F2D24 0000D0 0004+00 0/2 0/0 0/0 .rodata @4486 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4486 = 90.0f;
-COMPILER_STRIP_GATE(0x809F2D20, &lit_4486);
-#pragma pop
-
-/* 809F2D24-809F2D28 0000D4 0004+00 0/2 0/0 0/0 .rodata @4487 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4487 = 45.0f;
-COMPILER_STRIP_GATE(0x809F2D24, &lit_4487);
-#pragma pop
-
-/* 809F2D28-809F2D2C 0000D8 0004+00 1/2 0/0 0/0 .rodata @4488 */
-SECTION_RODATA static f32 const lit_4488 = 60.0f;
-COMPILER_STRIP_GATE(0x809F2D28, &lit_4488);
-
/* 809F14CC-809F17D0 0017EC 0304+00 1/1 0/0 0/0 .text create_init__12daNpcGuard_cFv */
void daNpcGuard_c::create_init() {
- // NONMATCHING
+ gravity = -3.0f;
+ fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
+ fopAcM_setCullSizeBox(this, -40.0f, -10.0f, -80.0f, 40.0f, 190.0f, 200.0f);
+ mAcchCir.SetWall(Cd2_HIO_chkWallH(m_type), m_type != 0 ? 90.0f : 45.0f);
+ 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));
+ mAcch.SetRoofNone();
+ mAcch.SetWaterNone();
+ mAcch.CrrPos(dComIfG_Bgsp());
+ setEnvTevCol();
+ setRoomNo();
+ initCollision();
+ attention_info.flags = 0;
+ field_0xda2 = 0;
+ mpAnmKey = (J3DAnmTransformKey*)getAnmP(0x2A, mObjNum);
+ mpAnmKey2 = (J3DAnmTransformKey*)getAnmP(0x2C, mObjNum);
+ field_0xd88 = cLib_getRndValue(0x28, 0x28);
+ if (m_path.setPath(getPathID(), fopAcM_GetRoomNo(this), 1, &current.pos, false)) {
+ setAction(MODE_PATH_e);
+ } else {
+ setAction(MODE_FIGHT_WAIT_e);
+ }
+ mpMorf->setMorf(0.0f);
+ field_0xd94 = current.pos.y = mAcch.GetGroundH();
+ setMtx();
}
/* 809F17D0-809F1878 001AF0 00A8+00 2/2 0/0 0/0 .text setMtx__12daNpcGuard_cFv */
void daNpcGuard_c::setMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, field_0xd94, current.pos.z);
+ mDoMtx_stack_c::YrotM(shape_angle.y);
+ mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ field_0xa9c = 0;
+ mpMorf->modelCalc();
+ setAttention(m_type);
+ lookat();
+ field_0xa9c = 1;
+ mpMorf->modelCalc();
+ setAttention(m_type);
}
/* 809F1878-809F1D6C 001B98 04F4+00 1/1 0/0 0/0 .text lookat__12daNpcGuard_cFv */
void daNpcGuard_c::lookat() {
- // NONMATCHING
-}
-
-/* 809F1D6C-809F1DA8 00208C 003C+00 2/2 0/0 0/0 .text __dt__5csXyzFv */
-// csXyz::~csXyz() {
-extern "C" void __dt__5csXyzFv() {
- // NONMATCHING
-}
-
-/* 809F1DA8-809F1E74 0020C8 00CC+00 2/2 0/0 0/0 .text __dt__8dCcD_SphFv */
-// dCcD_Sph::~dCcD_Sph() {
-extern "C" void __dt__8dCcD_SphFv() {
- // NONMATCHING
-}
-
-/* 809F1E74-809F1EF8 002194 0084+00 1/1 0/0 0/0 .text __ct__8dCcD_SphFv */
-// dCcD_Sph::dCcD_Sph() {
-extern "C" void __ct__8dCcD_SphFv() {
- // NONMATCHING
-}
-
-/* 809F1EF8-809F1F40 002218 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */
-// cM3dGSph::~cM3dGSph() {
-extern "C" void __dt__8cM3dGSphFv() {
- // NONMATCHING
+ csXyz vecs1[3] = {
+ csXyz(Cd2_HIO_maxLmtX_BACKBONE(m_type), Cd2_HIO_maxLmtY_BACKBONE(m_type), 0),
+ csXyz(Cd2_HIO_maxLmtX_NECK(m_type), Cd2_HIO_maxLmtY_NECK(m_type), 0),
+ csXyz(Cd2_HIO_maxLmtX_HEAD(m_type), Cd2_HIO_maxLmtY_HEAD(m_type), 0),
+ };
+ csXyz vecs2[3] = {
+ csXyz(Cd2_HIO_minLmtX_BACKBONE(m_type), Cd2_HIO_minLmtY_BACKBONE(m_type), 0),
+ csXyz(Cd2_HIO_minLmtX_NECK(m_type), Cd2_HIO_minLmtY_NECK(m_type), 0),
+ csXyz(Cd2_HIO_minLmtX_HEAD(m_type), Cd2_HIO_minLmtY_HEAD(m_type), 0),
+ };
+ int local_68[4];
+ cXyz cStack_80(cXyz::Zero);
+ if (isM_()) {
+ local_68[0] = 1;
+ local_68[1] = 2;
+ local_68[2] = 3;
+ local_68[3] = -1;
+ } else {
+ local_68[0] = 1;
+ local_68[1] = 2;
+ local_68[2] = 3;
+ local_68[3] = -1;
+ }
+ mLookat.init(mpMorf->getModel(), local_68, vecs1, vecs2);
+ Mtx afStack_38;
+ if (mActorMngr.getActorP() != NULL) {
+ cMtx_copy(mpMorf->getModel()->getBaseTRMtx(), afStack_38);
+ cStack_80 = mActorMngr.getActorP()->eyePos;
+ } else {
+ cMtx_copy(mpMorf->getModel()->getBaseTRMtx(), afStack_38);
+ cStack_80 = cXyz::Zero;
+ }
+ mLookat.action(cStack_80, eyePos, this, afStack_38, NULL != mActorMngr.getActorP());
}
/* 809F1F40-809F1F74 002260 0034+00 1/0 0/0 0/0 .text daNpcGuard_Delete__FPv */
-static void daNpcGuard_Delete(void* param_0) {
- // NONMATCHING
+static int daNpcGuard_Delete(void* i_this) {
+ static_cast<daNpcGuard_c*>(i_this)->~daNpcGuard_c();
+ return 1;
}
/* 809F1F74-809F2024 002294 00B0+00 1/0 0/0 0/0 .text __dt__12daNpcGuard_cFv */
daNpcGuard_c::~daNpcGuard_c() {
- // NONMATCHING
+ removeResrc(m_type, mObjNum);
+ if (heap != NULL) {
+ mpMorf->stopZelAnime();
+ }
}
/* 809F2024-809F2044 002344 0020+00 1/0 0/0 0/0 .text daNpcGuard_Execute__FPv */
-static void daNpcGuard_Execute(void* param_0) {
- // NONMATCHING
+static int daNpcGuard_Execute(void* i_this) {
+ return static_cast<daNpcGuard_c*>(i_this)->execute();
+}
+
+void daNpcGuard_c::setCollision() {
+#ifdef DEBUG
+ mCyl.SetR(Cd2_HIO_cylR(m_type));
+ mCyl.SetH(Cd2_HIO_cylH(m_type));
+#endif
+ cXyz c;
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4));
+ mDoMtx_stack_c::multVecZero(&c);
+ c.y = current.pos.y;
+ mCyl.SetC(c);
+ if (!fopAcM_CheckCondition(this, 4)) {
+ dComIfG_Ccsp()->Set(&mCyl);
+ cXyz c2;
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(11));
+ mDoMtx_stack_c::scaleM(Cd2_HIO_objScale(m_type), Cd2_HIO_objScale(m_type),
+ Cd2_HIO_objScale(m_type));
+ for (int i = 0; i < 2; i++) {
+ c2.setall(0.0f);
+ c2.y = i == 0 ? -80.0f : -150.0f;
+ mDoMtx_stack_c::multVec(&c2, &c2);
+ mSpheres[i].SetC(c2);
+ dComIfG_Ccsp()->Set(&mSpheres[i]);
+ }
+ }
}
-/* ############################################################################################## */
-/* 809F2D2C-809F2D30 0000DC 0004+00 0/1 0/0 0/0 .rodata @4924 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4924 = 150.0f;
-COMPILER_STRIP_GATE(0x809F2D2C, &lit_4924);
-#pragma pop
-
-/* 809F2D30-809F2D34 0000E0 0004+00 0/1 0/0 0/0 .rodata @4925 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4925 = 2.0f / 5.0f;
-COMPILER_STRIP_GATE(0x809F2D30, &lit_4925);
-#pragma pop
-
-/* 809F2D34-809F2D38 0000E4 0004+00 0/1 0/0 0/0 .rodata @4926 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4926 = 25.0f;
-COMPILER_STRIP_GATE(0x809F2D34, &lit_4926);
-#pragma pop
-
-/* 809F2D38-809F2D40 0000E8 0004+04 0/1 0/0 0/0 .rodata @4927 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4927[1 + 1 /* padding */] = {
- -150.0f,
- /* padding */
- 0.0f,
-};
-COMPILER_STRIP_GATE(0x809F2D38, &lit_4927);
-#pragma pop
-
/* 809F2044-809F2374 002364 0330+00 1/1 0/0 0/0 .text execute__12daNpcGuard_cFv */
-void daNpcGuard_c::execute() {
- // NONMATCHING
+int daNpcGuard_c::execute() {
+ mAcchCir.SetWallH(Cd2_HIO_chkWallH(m_type));
+ mAcchCir.SetWallR(m_type != 0 ? 90.0f : 45.0f);
+
+ if (mActionIdx != MODE_MAX_e) {
+ if (dComIfGp_checkPlayerStatus1(0, 0x800000)) {
+ f32 ballSearchScale = daPy_getPlayerActorClass()->getSearchBallScale() + 150.0f;
+ if (fopAcM_searchPlayerDistanceXZ(this) <= ballSearchScale) {
+ field_0xda2 = 1;
+ } else {
+ field_0xda2 = 0;
+ }
+ }
+ u8 cutType = daPy_getPlayerActorClass()->getCutType();
+ if ((cutType == daPy_py_c::CUT_TYPE_WOLF_TURN_LEFT ||
+ cutType == daPy_py_c::CUT_TYPE_WOLF_TURN_RIGHT) &&
+ field_0xda2)
+ {
+ setAction(MODE_MAX_e);
+ }
+ }
+ callExecute();
+ cLib_addCalc2(&field_0xd94, current.pos.y, 0.4f, 25.0f);
+ mpMorf->play(0, 0);
+ setCollision();
+ setMtx();
+ return 1;
+}
+
+int daNpcGuard_c::draw() {
+ drawNpc();
+ drawObj(mObjNum, mpModel, Cd2_HIO_objScale(m_type));
+ drawShadow(60.0f);
+ if (m_type == 1 && mpModel2 != NULL) {
+ g_env_light.setLightTevColorType_MAJI(mpModel2, &tevStr);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(7));
+ mpModel2->setBaseTRMtx(mDoMtx_stack_c::get());
+ mDoExt_modelUpdateDL(mpModel2);
+ }
+ return 1;
}
/* 809F2374-809F2464 002694 00F0+00 1/0 0/0 0/0 .text daNpcGuard_Draw__FPv */
-static void daNpcGuard_Draw(void* param_0) {
- // NONMATCHING
+static int daNpcGuard_Draw(void* i_this) {
+ return static_cast<daNpcGuard_c*>(i_this)->draw();
}
/* 809F2464-809F246C 002784 0008+00 1/0 0/0 0/0 .text daNpcGuard_IsDelete__FPv */
-static bool daNpcGuard_IsDelete(void* param_0) {
- return true;
-}
-
-/* 809F246C-809F24B4 00278C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 809F24B4-809F24D0 0027D4 001C+00 2/2 0/0 0/0 .text cLib_calcTimer<i>__FPi */
-extern "C" void func_809F24B4(void* _this, int* param_0) {
- // NONMATCHING
+static int daNpcGuard_IsDelete(void* i_this) {
+ return 1;
}
-/* 809F24D0-809F250C 0027F0 003C+00 1/1 0/0 0/0 .text cLib_getRndValue<f>__Fff */
-extern "C" void func_809F24D0(void* _this, f32 param_0, f32 param_1) {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 809F2D40-809F2D48 0000F0 0008+00 1/1 0/0 0/0 .rodata @4990 */
-SECTION_RODATA static u8 const lit_4990[8] = {
- 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+/* 809F2EC0-809F2EE0 -00001 0020+00 1/0 0/0 0/0 .data daNpcGuard_METHODS */
+static actor_method_class daNpcGuard_METHODS = {
+ (process_method_func)daNpcGuard_Create, (process_method_func)daNpcGuard_Delete,
+ (process_method_func)daNpcGuard_Execute, (process_method_func)daNpcGuard_IsDelete,
+ (process_method_func)daNpcGuard_Draw,
};
-COMPILER_STRIP_GATE(0x809F2D40, &lit_4990);
-
-/* 809F250C-809F2588 00282C 007C+00 4/4 0/0 0/0 .text cLib_getRndValue<i>__Fii */
-extern "C" void func_809F250C(void* _this, int param_0, int param_1) {
- // NONMATCHING
-}
-
-/* 809F2588-809F26E8 0028A8 0160+00 0/0 1/0 0/0 .text __sinit_d_a_npc_guard_cpp */
-void __sinit_d_a_npc_guard_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x809F2588, __sinit_d_a_npc_guard_cpp);
-#pragma pop
-
-/* 809F26E8-809F26F0 002A08 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_809F26E8() {
- // NONMATCHING
-}
-
-/* 809F26F0-809F26F8 002A10 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_809F26F0() {
- // NONMATCHING
-}
-
-/* 809F26F8-809F2740 002A18 0048+00 1/0 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */
-// daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() {
-extern "C" void __dt__18daNpcT_ActorMngr_cFv() {
- // NONMATCHING
-}
-
-/* 809F2740-809F2990 002A60 0250+00 2/1 0/0 0/0 .text __dt__10daNpcCd2_cFv */
-// daNpcCd2_c::~daNpcCd2_c() {
-extern "C" void __dt__10daNpcCd2_cFv() {
- // NONMATCHING
-}
-/* 809F2990-809F2A78 002CB0 00E8+00 1/0 0/0 0/0 .text __dt__16dNpcLib_lookat_cFv */
-// dNpcLib_lookat_c::~dNpcLib_lookat_c() {
-extern "C" void __dt__16dNpcLib_lookat_cFv() {
- // NONMATCHING
-}
-
-/* 809F2A78-809F2AC0 002D98 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
-
-/* 809F2AC0-809F2B08 002DE0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
-}
-
-/* 809F2B08-809F2B64 002E28 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 809F2B64-809F2BD4 002E84 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
-
-/* 809F2BD4-809F2C44 002EF4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 809F2D48-809F2D48 0000F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 809F2EE0-809F2F10 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_GUARD */
+extern actor_process_profile_definition g_profile_NPC_GUARD = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_NPC_GUARD, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daNpcGuard_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 406, // mPriority
+ &daNpcGuard_METHODS, // sub_method
+ 0x00040107, // mStatus
+ fopAc_NPC_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};