diff --git a/config/SOUE01/rels/d_a_e_remlyNP/symbols.txt b/config/SOUE01/rels/d_a_e_remlyNP/symbols.txt index 021bdb7d..aab454e1 100644 --- a/config/SOUE01/rels/d_a_e_remlyNP/symbols.txt +++ b/config/SOUE01/rels/d_a_e_remlyNP/symbols.txt @@ -95,19 +95,19 @@ initializeState_BirthWait__11dAcEremly_cFv = .text:0x00006870; // type:function executeState_BirthWait__11dAcEremly_cFv = .text:0x000068F0; // type:function size:0x13C finalizeState_BirthWait__11dAcEremly_cFv = .text:0x00006A30; // type:function size:0x4 playWink__11dAcEremly_cFv = .text:0x00006A40; // type:function size:0xCC -fn_177_6B10__11dAcEremly_cFbRC4mAng = .text:0x00006B10; // type:function size:0x38C -calcHeadRotation__11dAcEremly_cFb = .text:0x00006EA0; // type:function size:0x120 +calcHeadRotation__11dAcEremly_cFbRC4mAng = .text:0x00006B10; // type:function size:0x38C +calcHeadPitch__11dAcEremly_cFb = .text:0x00006EA0; // type:function size:0x120 resetHeadRotation__11dAcEremly_cFb = .text:0x00006FC0; // type:function size:0x78 fn_177_7040__11dAcEremly_cFUlf = .text:0x00007040; // type:function size:0x2EC isScary__11dAcEremly_cFv = .text:0x00007330; // type:function size:0x90 shouldBeScared__11dAcEremly_cFv = .text:0x000073C0; // type:function size:0x144 -fn_177_7510__11dAcEremly_cFf = .text:0x00007510; // type:function size:0xC8 -fn_177_75E0__11dAcEremly_cFv = .text:0x000075E0; // type:function size:0x6C +isWithinTargetRadius__11dAcEremly_cFf = .text:0x00007510; // type:function size:0xC8 +isHorwellRemlitQuestComplete__11dAcEremly_cFv = .text:0x000075E0; // type:function size:0x6C fn_177_7650__11dAcEremly_cCFb = .text:0x00007650; // type:function size:0x164 fn_177_77C0__11dAcEremly_cFv = .text:0x000077C0; // type:function size:0x108 applyScaryMat__11dAcEremly_cFv = .text:0x000078D0; // type:function size:0xF4 fn_177_79D0__11dAcEremly_cFb = .text:0x000079D0; // type:function size:0x134 -fn_177_7B10__11dAcEremly_cFv = .text:0x00007B10; // type:function size:0x1B4 +isUnderWater__11dAcEremly_cFv = .text:0x00007B10; // type:function size:0x1B4 nightSleepDemoImpl__11dAcEremly_cFv = .text:0x00007CD0; // type:function size:0x844 checkSlope__11dAcEremly_cFb = .text:0x00008520; // type:function size:0xD8 spawnGroundEffect__11dAcEremly_cFv = .text:0x00008600; // type:function size:0xC0 @@ -116,7 +116,7 @@ fn_177_8980__11dAcEremly_cFf = .text:0x00008980; // type:function size:0x13C fn_177_8AC0__11dAcEremly_cFv = .text:0x00008AC0; // type:function size:0x160 fn_177_8C20__11dAcEremly_cF4mAng = .text:0x00008C20; // type:function size:0x36C fn_177_8F90__11dAcEremly_cFv = .text:0x00008F90; // type:function size:0x3E0 -fn_177_9370__11dAcEremly_cFf = .text:0x00009370; // type:function size:0xE8 +isPlayerInNightRange__11dAcEremly_cFf = .text:0x00009370; // type:function size:0xE8 vt_0x88__11dAcEnBase_cFi = .text:0x00009460; // type:function size:0x8 vt_0x84__11dAcEnBase_cFv = .text:0x00009470; // type:function size:0x4 vt_0x80__11dAcEnBase_cFv = .text:0x00009480; // type:function size:0x4 diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 5dd40801..816f8f26 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -2103,7 +2103,7 @@ tryAttach__10dLinkage_cFP12dAcObjBase_cP12dAcObjBase_cP12dAcRefBase_cQ210dLinkag fn_80050DC0__10dLinkage_cFP12dAcObjBase_cff4mAng = .text:0x80050DC0; // type:function size:0x34 fn_80050E00__10dLinkage_cFP12dAcObjBase_cff4mAng = .text:0x80050E00; // type:function size:0x34 fn_80050E40__10dLinkage_cFP12dAcObjBase_cff4mAng = .text:0x80050E40; // type:function size:0x60 -fn_80050EA0__10dLinkage_cFP12dAcObjBase_c = .text:0x80050EA0; // type:function size:0xC +forceRemove__10dLinkage_cFP12dAcObjBase_c = .text:0x80050EA0; // type:function size:0xC fn_80050EB0__10dLinkage_cFP12dAcObjBase_c = .text:0x80050EB0; // type:function size:0x140 bushTpFunc__10dLinkage_cFR9dBgS_Acch = .text:0x80050FF0; // type:function size:0x19C fn_80051190__10dLinkage_cFP12dAcObjBase_c = .text:0x80051190; // type:function size:0x4C diff --git a/include/d/a/e/d_a_e_remly.h b/include/d/a/e/d_a_e_remly.h index b92786f6..b7f27ce8 100644 --- a/include/d/a/e/d_a_e_remly.h +++ b/include/d/a/e/d_a_e_remly.h @@ -110,19 +110,18 @@ public: private: void playWink(); - bool fn_177_6B10(bool lookAtTarget, const mAng &); - void calcHeadRotation(bool); + + bool calcHeadRotation(bool lookAtTarget, const mAng &); // the Side-to-side angle + void calcHeadPitch(bool); // The up-down angle void resetHeadRotation(bool); bool fn_177_7040(u32, f32); bool isScary(); - bool shouldBeScared(); - bool fn_177_7510(f32); - - bool fn_177_75E0(); + bool isWithinTargetRadius(f32 radius); + bool isHorwellRemlitQuestComplete(); /** false -> compares to camera * true -> compares to player */ @@ -135,7 +134,7 @@ private: void fn_177_79D0(bool); - bool fn_177_7B10(); + bool isUnderWater(); void nightSleepDemoImpl(); void checkSlope(bool); @@ -145,7 +144,7 @@ private: bool fn_177_8AC0(); bool fn_177_8C20(mAng); bool fn_177_8F90(); - bool fn_177_9370(f32); + bool isPlayerInNightRange(f32 range); private: /* 0x378 */ STATE_MGR_DECLARE(dAcEremly_c); @@ -162,7 +161,7 @@ private: /* 0x9C4 */ dEmitter_c mEmitters[2]; - /* 0xA2C */ dAcRef_c mRef1; // Temporary until type known + /* 0xA2C */ dAcRef_c mHorwellRef; /* 0xA38 */ dAcRef_c mNearbyBombRef; /* 0xA44 */ mVec3_c mTargetPosition; @@ -212,8 +211,8 @@ private: /* 0xB5C */ u16 mFlySpeedCounter; /* 0xB5E */ u16 mFlyAngleCounter; /* 0xB60 */ u8 mAnimation; - /* 0xB61 */ u8 field_0xB61; - /* 0xB62 */ u8 mSleepDemoPlayedSceneflag; + /* 0xB61 */ u8 mIsHorwellsPet; + /* 0xB62 */ u8 mSceneflag; /* 0xB63 */ u8 mNightSleepDemoStep; /* 0xB64 */ u8 field_0xB64; /* 0xB65 */ u8 mAnmStep; diff --git a/include/d/d_linkage.h b/include/d/d_linkage.h index fd6fcc39..720f1769 100644 --- a/include/d/d_linkage.h +++ b/include/d/d_linkage.h @@ -74,7 +74,7 @@ public: void fn_80050DC0(dAcObjBase_c *, f32, f32, mAng); void fn_80050E00(dAcObjBase_c *, f32, f32, mAng); void fn_80050E40(dAcObjBase_c *, f32, f32, mAng); - void fn_80050EA0(dAcObjBase_c *); + void forceRemove(dAcObjBase_c *); void fn_800511E0(dAcObjBase_c *); void bushTpFunc(dBgS_Acch &); void fn_80051190(dAcObjBase_c *); diff --git a/src/REL/d/a/e/d_a_e_remly.cpp b/src/REL/d/a/e/d_a_e_remly.cpp index 81cca403..df9c8ddc 100644 --- a/src/REL/d/a/e/d_a_e_remly.cpp +++ b/src/REL/d/a/e/d_a_e_remly.cpp @@ -51,26 +51,10 @@ SPECIAL_ACTOR_PROFILE(E_REMLY, dAcEremly_c, fProfile::E_REMLY, 0xE1, 0, 3); static dCcD_SrcSph sSphSrc = { - {{ - AT_TYPE_DAMAGE, - 0xD, - {0, 0, 0}, - 2, - 0, - 0, - 0, - 0, - }, { - ~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), - 0x303, - {0, 0, 0x40F}, - 8, - 0, - }, { - 0xE5, - }}, - { - 50.f, }, + {{AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 2, 0, 0, 0, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x303, {0, 0, 0x40F}, 8, 0}, + {0xE5}}, + {50.f}, }; struct dAcEremly_HIO_c { @@ -170,8 +154,8 @@ int dAcEremly_c::actorCreate() { CREATE_ALLOCATOR(dAcEremly_c); u8 p = getFromParams(0, 0xF); - field_0xB61 = p != 15 ? p : 0; - mSleepDemoPlayedSceneflag = getFromParams(4, 0xFF); + mIsHorwellsPet = p != 15 ? p : 0; + mSceneflag = getFromParams(4, 0xFF); s32 f = getFromParams(12, 0xFF); mPatrolAreaSize = f != 0xFF ? f * 100.f : 1000.f; @@ -207,7 +191,7 @@ int dAcEremly_c::actorCreate() { mYPosition = mPosition.y; mStartingRot = mRotation; - mRef1.unlink(); + mHorwellRef.unlink(); mNearbyBombRef.unlink(); field_0xB64 = 1; @@ -227,7 +211,7 @@ int dAcEremly_c::actorCreate() { mAcch.SetField_0xD4(100.f + _weird_zero); field_0xB04 = 60.f; - if (field_0xB61 == 0) { + if (mIsHorwellsPet == 0) { mAcch.SetGndThinCellingOff(); if (dScGame_c::currentSpawnInfo.isNight()) { mTargetFiTextID = 1; @@ -254,13 +238,12 @@ int dAcEremly_c::actorCreate() { applyScaryMat(); mAnimTimer = 24.f + cM::rndF(24.f); - if (mSleepDemoPlayedSceneflag == 0xFF || - SceneflagManager::sInstance->checkBoolFlag(mRoomID, mSleepDemoPlayedSceneflag)) { + if (mSceneflag == 0xFF || SceneflagManager::sInstance->checkBoolFlag(mRoomID, mSceneflag)) { changeState(StateID_NightWait); } else { changeState(StateID_NightSleepDemo); } - } else if (field_0xB61 == 1) { + } else if (mIsHorwellsPet == 1) { setBattleBgmRelated(0); changeState(StateID_Sleep); } else { @@ -270,14 +253,14 @@ int dAcEremly_c::actorCreate() { } int dAcEremly_c::actorPostCreate() { - if (field_0xB61 == 1) { + if (mIsHorwellsPet == 1) { fBase_c *pActor = fManager_c::searchBaseByProfName(fProfile::NPC_SKN2); if (pActor != nullptr) { dAcNpcSkn2_c *pSkn2 = static_cast(pActor); - mRef1.link(pSkn2); + mHorwellRef.link(pSkn2); mAcch.ClrRoofNone(); - if (fn_177_75E0()) { + if (isHorwellRemlitQuestComplete()) { fn_177_79D0(false); mRotation.y = mAngle.y = cLib::targetAngleY(mPosition, mStartingPos); @@ -293,8 +276,8 @@ int dAcEremly_c::actorPostCreate() { return SUCCEEDED; } - mRef1.unlink(); - field_0xB61 = 0; + mHorwellRef.unlink(); + mIsHorwellsPet = 0; } return SUCCEEDED; } @@ -470,7 +453,7 @@ int dAcEremly_c::actorExecute() { mNoGroundCounter = 1; } if (mNoGroundCounter != 0) { - if (field_0xB61 == 1 && !fn_177_75E0() && EventManager::isInEvent()) { + if (mIsHorwellsPet == 1 && !isHorwellRemlitQuestComplete() && EventManager::isInEvent()) { setActorProperty(AC_PROP_0x1); mPosition.set(mStartingPos.x, mStartingPos.y, mStartingPos.z); mRotation.y = mStartingRot.y; @@ -497,7 +480,7 @@ int dAcEremly_c::actorExecute() { mYPosition = mPosition.y + mYOffset; } - if (!fn_177_7B10() && isState(StateID_Water)) { + if (!isUnderWater() && isState(StateID_Water)) { field_0xB6B = true; } @@ -534,9 +517,8 @@ int dAcEremly_c::actorExecute() { dCcS::GetInstance()->Set(&mSph); - if (!(isScary() && field_0xB64 != 0) // Check Batreaux Human - && !(isState(StateID_Hold) || mAnimation == ANM_Swim) // Hold - && !isState(StateID_Stun) && !isState(StateID_Jump)) { + if (!(isScary() && field_0xB64 != 0) && !(isState(StateID_Hold) || mAnimation == ANM_Swim) && + !isState(StateID_Stun) && !isState(StateID_Jump)) { AttentionManager::GetInstance()->addPickUpTarget(*this, 3.f * radius * mScaleF); if (mLinkage.checkConnection(dLinkage_c::CONNECTION_1)) { changeState(StateID_Hold); @@ -623,7 +605,7 @@ void dAcEremly_c::initializeState_Wait() { void dAcEremly_c::executeState_Wait() { const dAcPy_c *pPlayer = dAcPy_c::GetLink(); if (field_0xB6A == 0) { - calcHeadRotation(false); + calcHeadPitch(false); } sLib::addCalcScaled(&mSpeed, 0.7f, 5.f); @@ -652,14 +634,14 @@ void dAcEremly_c::executeState_Wait() { changeState(StateID_Escape); field_0xB6A = 1; } else { - fn_177_6B10(false, 0); + calcHeadRotation(false, 0); mAnimTimer = 48.f + cM::rndF(48.f); field_0xB44 = 128; if (isWithinPlayerRadius(250.f)) { changeState(StateID_Scared); } } - } else if (fn_177_6B10(false, 0)) { + } else if (calcHeadRotation(false, 0)) { changeState(StateID_Escape); field_0xB6A = 1; mAnimTimer = 20; @@ -671,7 +653,7 @@ void dAcEremly_c::executeState_Wait() { } field_0xB6E = 0; - fn_177_6B10(false, 0); + calcHeadRotation(false, 0); if (field_0xB56 != 0 || fn_177_8F90()) { return; } @@ -686,7 +668,7 @@ void dAcEremly_c::executeState_Wait() { return; } - if (field_0xB61 == 1) { + if (mIsHorwellsPet == 1) { return; } if (sLib::calcTimer(&field_0xB44)) { @@ -786,10 +768,10 @@ void dAcEremly_c::executeState_Walk() { return; } } else if (field_0xB6A == 0 && !fn_177_8C20(mRotation.y)) { - fn_177_6B10(false, 0); + calcHeadRotation(false, 0); - if (fn_177_75E0()) { - mTargetPosition.set(mRef1.get()->mPosition); + if (isHorwellRemlitQuestComplete()) { + mTargetPosition.set(mHorwellRef.get()->mPosition); fn_177_7040(2, 0.8f); } else { fn_177_7040(0, 0.8f); @@ -797,7 +779,7 @@ void dAcEremly_c::executeState_Walk() { } else { sLib::addCalcScaled(&mSpeed, 0.7f, 3.f + _weird_zero); fn_177_7040(0, 0.f); - if (mAng::absDiff2(getXZAngleToPlayer(), mRotation.y) < 0x400 && !fn_177_6B10(false, -1000)) { + if (mAng::absDiff2(getXZAngleToPlayer(), mRotation.y) < 0x400 && !calcHeadRotation(false, -1000)) { changeState(StateID_Wait); mMdl.setAnm("RemlyWaitSitCry", m3d::PLAY_MODE_4, 4.f); mAnimation = ANM_WaitSitCry; @@ -825,7 +807,7 @@ void dAcEremly_c::initializeState_Run() { } void dAcEremly_c::executeState_Run() { resetHeadRotation(true); - fn_177_6B10(false, 0); + calcHeadRotation(false, 0); if (fn_177_86C0()) { return; } @@ -838,8 +820,8 @@ void dAcEremly_c::executeState_Run() { } return; } - if (fn_177_75E0()) { - mTargetPosition.set(mRef1.get()->mPosition); + if (isHorwellRemlitQuestComplete()) { + mTargetPosition.set(mHorwellRef.get()->mPosition); fn_177_7040(2, 5.f); } else { fn_177_7040(0, 5.f); @@ -886,7 +868,7 @@ void dAcEremly_c::executeState_Escape() { if (field_0xB6A != 0) { f32 f = (_weird_zero + 400.f); field_0xB6C = 1; - if (!fn_177_7510(600.f + f) && !mNearbyBombRef.isLinked()) { + if (!isWithinTargetRadius(600.f + f) && !mNearbyBombRef.isLinked()) { field_0xB69 = 0; changeState(StateID_Walk); } @@ -969,7 +951,7 @@ void dAcEremly_c::executeState_Wind() { return; } - if (fn_177_9370(100.f)) { + if (isPlayerInNightRange(100.f)) { changeState(StateID_NightRun); } else { changeState(StateID_NightRet); @@ -1007,7 +989,7 @@ void dAcEremly_c::initializeState_Hold() { mLinkage.field_0x90 = 13.f + _weird_zero; mLinkage.field_0x8C = 13.f + _weird_zero; - if (field_0xB61 == 1) { + if (mIsHorwellsPet == 1) { mLinkage.field_0x90 = 26.f + _weird_zero; mLinkage.field_0x8C = 13.f + _weird_zero; } @@ -1139,7 +1121,7 @@ void dAcEremly_c::initializeState_Fly() { void dAcEremly_c::executeState_Fly() { s32 _weird_zero = 0; - if (field_0xB61 == 1 && !fn_177_75E0() && EventManager::isInEvent()) { + if (mIsHorwellsPet == 1 && !isHorwellRemlitQuestComplete() && EventManager::isInEvent()) { setActorProperty(AC_PROP_0x1); mPosition.set(mStartingPos.x, mStartingPos.y, mStartingPos.z); mAngle.y = mRotation.y = mStartingRot.y; @@ -1320,7 +1302,7 @@ void dAcEremly_c::executeState_Damage() { } else { mAngle.y = mRotation.y; if (isScary() && field_0xB64 != 0) { - if (fn_177_9370(100.f)) { + if (isPlayerInNightRange(100.f)) { changeState(StateID_NightRun); } else { changeState(StateID_NightRet); @@ -1369,7 +1351,7 @@ void dAcEremly_c::executeState_Scared() { fn_177_86C0(); if (mMdl.getAnm().getRate()) { resetHeadRotation(false); - } else if (field_0xB64) { + } else if (field_0xB64 != 0) { sLib::addCalcAngle(mMdlCallback.mHeadRotation.z.ref(), 8000, 20, 0x100); if (mSomeCounter > 80 && !shouldBeScared()) { field_0xB68 = 0; @@ -1380,7 +1362,7 @@ void dAcEremly_c::executeState_Scared() { sLib::addCalcScaled(&mSpeed, 0.7f, 3.f); - if (!field_0xB64) { + if (field_0xB64 == 0) { return; } @@ -1443,7 +1425,7 @@ void dAcEremly_c::executeState_Stun() { if (mMdl.getAnm().isStop()) { mStts.SetRank(5); if (isScary()) { - if (fn_177_9370(100.f)) { + if (isPlayerInNightRange(100.f)) { changeState(StateID_NightRun); } else { changeState(StateID_NightRet); @@ -1542,7 +1524,7 @@ void dAcEremly_c::executeState_Water() { } fn_177_7040(0, 0.8f); (void)dAcPy_c::GetLink()->mPosition.absXZTo(mPosition); - if (fn_177_7510(220.f)) { + if (isWithinTargetRadius(220.f)) { mSpeed = 0.f; } f32 yTarget = mWaterHeight + yOffset + mAng(mSwimPosYCounter * 2000).sin() * 3.f; @@ -1566,7 +1548,7 @@ void dAcEremly_c::initializeState_Hear() { } break; case ANM_CryWalk: case ANM_RemlyWalk: - case ANM_Run: { + case ANM_Run: { mMdl.setAnm("RemlyWaitStand", m3d::PLAY_MODE_4, 4.f); mAnimation = ANM_WaitStand; field_0xB66 = true; @@ -1586,7 +1568,7 @@ void dAcEremly_c::executeState_Hear() { } } break; case 1: { - if (!fn_177_6B10(false, 0) && fn_177_86C0()) { + if (!calcHeadRotation(false, 0) && fn_177_86C0()) { if (mAnimation == ANM_WaitSitCry && mMdl.getAnm().isStop()) { mMdl.setAnm("RemlyWaitSit", m3d::PLAY_MODE_4, 20.f); mAnimation = ANM_WaitSit; @@ -1598,7 +1580,7 @@ void dAcEremly_c::executeState_Hear() { mAnimation = ANM_WaitSitCry; } } - calcHeadRotation(false); + calcHeadPitch(false); } } else if (shouldBeScared()) { changeState(StateID_Escape); @@ -1717,7 +1699,7 @@ void dAcEremly_c::executeState_NightReflectionFoo() { return; } - if (pPlayer->mPosition.absXZTo(mStartingPos) > mPatrolAreaSize + 500.f || !fn_177_9370(100.f)) { + if (pPlayer->mPosition.absXZTo(mStartingPos) > mPatrolAreaSize + 500.f || !isPlayerInNightRange(100.f)) { changeState(StateID_NightRet); } else { changeState(StateID_NightRun); @@ -1738,7 +1720,7 @@ void dAcEremly_c::executeState_NightWait() { return; } - if (fn_177_9370(0.f)) { + if (isPlayerInNightRange(0.f)) { changeState(StateID_NightRun); return; } @@ -1775,7 +1757,7 @@ void dAcEremly_c::initializeState_NightWalk() { } } void dAcEremly_c::executeState_NightWalk() { - fn_177_6B10(true, 0); + calcHeadRotation(true, 0); if (mNearbyBombRef.isLinked()) { changeState(StateID_NightRet); return; @@ -1802,7 +1784,7 @@ void dAcEremly_c::executeState_NightWalk() { } } - if (fn_177_9370(0.f)) { + if (isPlayerInNightRange(0.f)) { changeState(StateID_NightRun); } else if (fn_177_86C0()) { changeState(StateID_NightFoo); @@ -1824,7 +1806,7 @@ void dAcEremly_c::initializeState_NightRun() { } void dAcEremly_c::executeState_NightRun() { const dAcPy_c *pPlayer = dAcPy_c::GetLink(); - fn_177_6B10(false, 0); + calcHeadRotation(false, 0); mMtx_c m; mVec3_c in, out; @@ -1861,7 +1843,7 @@ void dAcEremly_c::executeState_NightRun() { return; } - if (!fn_177_9370(100.f)) { + if (!isPlayerInNightRange(100.f)) { changeState(StateID_NightFoo); field_0xB6B = true; return; @@ -1976,7 +1958,7 @@ void dAcEremly_c::executeState_BirthWait() { if (isScary()) { changeState(StateID_NightWait); - } else if (field_0xB61 == 1 && fn_177_75E0()) { + } else if (mIsHorwellsPet == 1 && isHorwellRemlitQuestComplete()) { changeState(StateID_Wait); } else { changeState(StateID_Sleep); @@ -1999,7 +1981,7 @@ void dAcEremly_c::playWink() { } // NONMATCHING -bool dAcEremly_c::fn_177_6B10(bool lookAtTarget, const mAng &range) { +bool dAcEremly_c::calcHeadRotation(bool lookAtTarget, const mAng &range) { const dAcPy_c *pPlayer = dAcPy_c::GetLink(); mAng angleTargetX, angleTargetY; @@ -2031,8 +2013,8 @@ bool dAcEremly_c::fn_177_6B10(bool lookAtTarget, const mAng &range) { angleTargetY -= mRotation.y; } - if (fn_177_75E0()) { - outpos.set(mRef1.get()->mPosition); + if (isHorwellRemlitQuestComplete()) { + outpos.set(mHorwellRef.get()->mPosition); outpos.y += 100.f; angleTargetX = cLib::targetAngleX(mPosition, outpos) * 0.7f; @@ -2069,7 +2051,7 @@ bool dAcEremly_c::fn_177_6B10(bool lookAtTarget, const mAng &range) { return b; } -void dAcEremly_c::calcHeadRotation(bool b) { +void dAcEremly_c::calcHeadPitch(bool b) { if (!b && shouldBeScared()) { return; } @@ -2189,9 +2171,9 @@ bool dAcEremly_c::shouldBeScared() { return false; } -bool dAcEremly_c::fn_177_7510(f32 radius) { - if (fn_177_75E0()) { - mTargetPosition.set(mRef1.get()->getPosition()); +bool dAcEremly_c::isWithinTargetRadius(f32 radius) { + if (isHorwellRemlitQuestComplete()) { + mTargetPosition.set(mHorwellRef.get()->getPosition()); if (mTargetPosition.squareDistanceToXZ(mPosition) < radius * radius) { return true; } @@ -2204,9 +2186,9 @@ bool dAcEremly_c::fn_177_7510(f32 radius) { return false; } -bool dAcEremly_c::fn_177_75E0() { - if (mRef1.isLinked() && mSleepDemoPlayedSceneflag != 0xFF) { - if (SceneflagManager::sInstance->checkBoolFlag(mRoomID, mSleepDemoPlayedSceneflag)) { +bool dAcEremly_c::isHorwellRemlitQuestComplete() { + if (mHorwellRef.isLinked() && mSceneflag != 0xFF) { + if (SceneflagManager::sInstance->checkBoolFlag(mRoomID, mSceneflag)) { return true; } } @@ -2269,11 +2251,11 @@ void dAcEremly_c::applyScaryMat() { void dAcEremly_c::fn_177_79D0(bool b) { mMtx_c m; mVec3_c in, out; - if (mRef1.isLinked()) { - m.YrotS(mRef1.get()->mRotationCopy.y + 0x5000); + if (mHorwellRef.isLinked()) { + m.YrotS(mHorwellRef.get()->mRotationCopy.y + 0x5000); in.set(0.f, 0.f, 120.f); m.multVec(in, out); - out += mRef1.get()->getPosition(); + out += mHorwellRef.get()->getPosition(); if (!b) { setPosition(out); @@ -2286,7 +2268,7 @@ void dAcEremly_c::fn_177_79D0(bool b) { } } -bool dAcEremly_c::fn_177_7B10() { +bool dAcEremly_c::isUnderWater() { s32 _weird_zero = 0; if (dBgS_WtrChk::CheckPos(&mPosition, true, 600.f + _weird_zero, -100.f + _weird_zero)) { @@ -2295,7 +2277,7 @@ bool dAcEremly_c::fn_177_7B10() { if (mPosition.y < dBgS_WtrChk::GetWaterHeight() && mAcch.GetGroundH() < dBgS_WtrChk::GetWaterHeight()) { if (mAcch.GetGroundH() < -8.f + mWaterHeight) { if (isState(StateID_Hold)) { - mLinkage.fn_80050EA0(this); + mLinkage.forceRemove(this); } if (isState(StateID_Jump)) { mAngle.y = mRotation.y; @@ -2313,8 +2295,7 @@ bool dAcEremly_c::fn_177_7B10() { void dAcEremly_c::nightSleepDemoImpl() { s32 _weird_zero = 0; - if (mSleepDemoPlayedSceneflag == 0xFF || - SceneflagManager::sInstance->checkBoolFlag(mRoomID, mSleepDemoPlayedSceneflag)) { + if (mSceneflag == 0xFF || SceneflagManager::sInstance->checkBoolFlag(mRoomID, mSceneflag)) { return; } @@ -2459,8 +2440,8 @@ void dAcEremly_c::nightSleepDemoImpl() { mMdl.setAnm("RemlyWaitStandNight", m3d::PLAY_MODE_4, 0.f); mAngle.y = mStartingRot.y + -30000; mRotation.y = mAngle.y; - if (mSleepDemoPlayedSceneflag != 0xFF) { - SceneflagManager::sInstance->setFlag(mRoomID, mSleepDemoPlayedSceneflag); + if (mSceneflag != 0xFF) { + SceneflagManager::sInstance->setFlag(mRoomID, mSceneflag); } } } @@ -2469,8 +2450,8 @@ void dAcEremly_c::nightSleepDemoImpl() { if (mNightSleepDemoStep == 5) { cLib::addCalcPos2(&field_0xAB0, field_0xAE0, 0.3f, 10.f); } - if (mNightSleepDemoStep == 2 || mNightSleepDemoStep == 3 || mNightSleepDemoStep == 4 || mNightSleepDemoStep == 5 || mNightSleepDemoStep == 6 || - mNightSleepDemoStep == 7 || mNightSleepDemoStep == 8 || mNightSleepDemoStep == 9) { + if (mNightSleepDemoStep == 2 || mNightSleepDemoStep == 3 || mNightSleepDemoStep == 4 || mNightSleepDemoStep == 5 || + mNightSleepDemoStep == 6 || mNightSleepDemoStep == 7 || mNightSleepDemoStep == 8 || mNightSleepDemoStep == 9) { pCamera->setEventCamView(field_0xABC, field_0xAB0, 50.f, 0.f); if (EventManager::fn_800A0B80()) { mMdl.setRate(0.f); @@ -2562,9 +2543,10 @@ bool dAcEremly_c::fn_177_8980(f32 f) { } bool dAcEremly_c::fn_177_8AC0() { - bool b = (isAnimation(ANM_Fly)) || (isAnimation(ANM_FlyDamage)) || (isAnimation(ANM_HoldBata)) || (isAnimation(ANM_HoldJumpStart)) || - (isAnimation(ANM_HoldJumpEnd)) || (isAnimation(ANM_Run)) || (isAnimation(ANM_Scared)) || (isAnimation(ANM_Swim)) || - (isAnimation(ANM_SwimDamage)) || (isAnimation(ANM_Water)) || (isAnimation(ANM_WindBack)) || (isAnimation(ANM_Piyo1)) || + bool b = (isAnimation(ANM_Fly)) || (isAnimation(ANM_FlyDamage)) || (isAnimation(ANM_HoldBata)) || + (isAnimation(ANM_HoldJumpStart)) || (isAnimation(ANM_HoldJumpEnd)) || (isAnimation(ANM_Run)) || + (isAnimation(ANM_Scared)) || (isAnimation(ANM_Swim)) || (isAnimation(ANM_SwimDamage)) || + (isAnimation(ANM_Water)) || (isAnimation(ANM_WindBack)) || (isAnimation(ANM_Piyo1)) || (isAnimation(ANM_Piyo2)) || (isAnimation(ANM_Piyo3)); if (b) { return true; @@ -2619,16 +2601,16 @@ bool dAcEremly_c::fn_177_8F90() { const dAcPy_c *pPlayer = dAcPy_c::GetLink(); if (isState(StateID_Sleep)) { - if (fn_177_7510(400.f) && std::abs(mPosition.y - pPlayer->mPosition.y) < 100.f) { + if (isWithinTargetRadius(400.f) && std::abs(mPosition.y - pPlayer->mPosition.y) < 100.f) { return true; } } else if (isState(StateID_Walk)) { - if (!fn_177_7510(300.f)) { + if (!isWithinTargetRadius(300.f)) { changeState(StateID_Run); return true; } - if (!fn_177_6B10(false, -1000) && field_0xB69 == 0 && fn_177_7510(120.f)) { + if (!calcHeadRotation(false, -1000) && field_0xB69 == 0 && isWithinTargetRadius(120.f)) { sLib::addCalcScaled(&mSpeed, 0.7f, 5.f); if (++mSomeCounter < 20) { return false; @@ -2637,7 +2619,7 @@ bool dAcEremly_c::fn_177_8F90() { return true; } } else if (isState(StateID_Run)) { - if (fn_177_7510(200.f)) { + if (isWithinTargetRadius(200.f)) { field_0xB67 = 1; changeState(StateID_Walk); return true; @@ -2656,14 +2638,14 @@ bool dAcEremly_c::fn_177_8F90() { if (mSomeCounter2 == 0) { (void)pPlayer->mPosition.absXZTo(mPosition); - if (!fn_177_7510(220.f)) { + if (!isWithinTargetRadius(220.f)) { field_0xB67 = 1; changeState(StateID_Walk); return true; } } - if (fn_177_6B10(false, 0)) { + if (calcHeadRotation(false, 0)) { field_0xB67 = 1; changeState(StateID_Walk); return true; @@ -2672,7 +2654,7 @@ bool dAcEremly_c::fn_177_8F90() { return false; } -bool dAcEremly_c::fn_177_9370(f32 f) { +bool dAcEremly_c::isPlayerInNightRange(f32 f) { const dAcPy_c *pPlayer = dAcPy_c::GetLink(); if (!pPlayer->isRecovering() && pPlayer->mPosition.absXZTo(mStartingPos) < mPatrolAreaSize && diff --git a/src/REL/d/a/obj/d_a_obj_barrel.cpp b/src/REL/d/a/obj/d_a_obj_barrel.cpp index 3f7c6857..acf9eaa7 100644 --- a/src/REL/d/a/obj/d_a_obj_barrel.cpp +++ b/src/REL/d/a/obj/d_a_obj_barrel.cpp @@ -537,7 +537,7 @@ void dAcOBarrel_c::executeState_GrabUp() { dAcNpcCeFriend_c *pCeFriend = mCeFriend.get(); if (0 == sLib::calcTimer(&field_0xE15)) { if ((pCeLady && pCeLady->fn_12_1C20(this)) || (pCeFriend && pCeFriend->fn_11_17C0(this))) { - getLinkage().fn_80050EA0(this); + getLinkage().forceRemove(this); quat_0xD80 = quat_0xD60; mStateMgr.changeState(StateID_Wait); return; @@ -827,7 +827,7 @@ void dAcOBarrel_c::initializeState_Rebirth() { mCyl.ClrCoSet(); mCyl.ClrTgSet(); - getLinkage().fn_80050EA0(this); + getLinkage().forceRemove(this); mStts.SetRank(0); setObjectProperty(OBJ_PROP_0x200); @@ -1070,7 +1070,7 @@ void dAcOBarrel_c::fn_293_3DB0() { extern "C" void fn_800307E0(const mVec3_c &, s32); void dAcOBarrel_c::fn_293_4200() { - getLinkage().fn_80050EA0(this); + getLinkage().forceRemove(this); if (field_0xE04 || field_0xE05) { dAcNpcCeLady_c *pCeLady = mCeLady.get(); diff --git a/src/REL/d/a/obj/d_a_obj_tubo.cpp b/src/REL/d/a/obj/d_a_obj_tubo.cpp index ced7927e..68e71f1e 100644 --- a/src/REL/d/a/obj/d_a_obj_tubo.cpp +++ b/src/REL/d/a/obj/d_a_obj_tubo.cpp @@ -284,9 +284,9 @@ void dAcOtubo_c::executeState_Grab() { dAcNpcCeLady_c *lady = mCeLady.get(); dAcNpcCeFriend_c *ceFriend = mCeFriend.get(); if (ceFriend && ceFriend->fn_11_17C0(this)) { - getLinkage().fn_80050EA0(this); + getLinkage().forceRemove(this); } else if (lady && lady->fn_12_1C20(this)) { - getLinkage().fn_80050EA0(this); + getLinkage().forceRemove(this); } } @@ -403,7 +403,7 @@ void dAcOtubo_c::initializeState_Rebirth() { mSph.ClrCoSet(); mSph.ClrTgSet(); setObjectProperty(OBJ_PROP_0x200); - getLinkage().fn_80050EA0(this); + getLinkage().forceRemove(this); int item_drop_table = getParams2UpperByte(); switch (item_drop_table) { @@ -452,7 +452,7 @@ void dAcOtubo_c::destroy() { return; } fn_80022BE0(dLightEnv_c::GetPInstance(), mPosition); - getLinkage().fn_80050EA0(this); + getLinkage().forceRemove(this); dEmitterBase_c *fx_thing = dJEffManager_c::spawnEffect( PARTICLE_RESOURCE_ID_MAPPING_211_, mPositionCopy2, nullptr, nullptr, nullptr, nullptr, 0, 0 diff --git a/src/d/d_linkage.cpp b/src/d/d_linkage.cpp index 3c44fafd..f473b461 100644 --- a/src/d/d_linkage.cpp +++ b/src/d/d_linkage.cpp @@ -115,7 +115,7 @@ void dLinkage_c::fn_80050E40(dAcObjBase_c *pActor, const f32 speed, const f32 ve pActor->mAngle.y = rot; } -void dLinkage_c::fn_80050EA0(dAcObjBase_c *pActor) { +void dLinkage_c::forceRemove(dAcObjBase_c *pActor) { mState = STATE_DELETE; fn_80050EB0(pActor); } @@ -178,7 +178,7 @@ void dLinkage_c::bushTpFunc(dBgS_Acch &acch) { if (mType == CONNECTION_7 && mControllingActor.p_owner == player) { if (!checkFlag(0x10000)) { if (acch.ChkWallHit(nullptr)) { - fn_80050EA0(player->getWhippedItem()); + forceRemove(player->getWhippedItem()); return; } field_0x1A = 3; @@ -210,7 +210,7 @@ void dLinkage_c::fn_80051190(dAcObjBase_c *pActor) { } pLinkedActor = nullptr; - fn_80050EA0(pActor); + forceRemove(pActor); } void dLinkage_c::fn_800511E0(dAcObjBase_c *pActor) {