summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorelijah-thomas774 <elijahthomas774@gmail.com>2026-03-01 13:49:50 -0500
committerelijah-thomas774 <elijahthomas774@gmail.com>2026-03-01 13:49:50 -0500
commite407be820c956dc2339aac116c2bf82a52c49aeb (patch)
tree7c89f1839989292c5f81a5150ed7a9d611d4bc9a /src
parent90e60e3341d82a6cf9faa84b532ab7d998ea9813 (diff)
d_t_scene_change OK
Diffstat (limited to 'src')
-rw-r--r--src/REL/d/t/d_t_scene_change.cpp66
1 files changed, 34 insertions, 32 deletions
diff --git a/src/REL/d/t/d_t_scene_change.cpp b/src/REL/d/t/d_t_scene_change.cpp
index 0ae26989..972d2406 100644
--- a/src/REL/d/t/d_t_scene_change.cpp
+++ b/src/REL/d/t/d_t_scene_change.cpp
@@ -3,7 +3,6 @@
#include "c/c_lib.h"
#include "common.h"
#include "d/a/d_a_player.h"
-#include "d/a/npc/d_a_npc_salbage_robot.h"
#include "d/a/npc/d_a_npc_volcano_f2_salbo.h"
#include "d/flag/sceneflag_manager.h"
#include "d/flag/storyflag_manager.h"
@@ -13,8 +12,11 @@
#include "m/m_vec.h"
#include "toBeSorted/area_math.h"
#include "toBeSorted/d_path.h"
+#include "toBeSorted/event.h"
#include "toBeSorted/event_manager.h"
+const char *ScrapperStopEvent = "HailToPlayerToStop";
+
SPECIAL_ACTOR_PROFILE(SC_CHANGE_TAG, dTgSceneChange_c, fProfile::SC_CHANGE_TAG, 0x21, 0, 4);
int dTgSceneChange_c::create() {
@@ -57,12 +59,15 @@ int dTgSceneChange_c::actorExecute() {
return SUCCEEDED;
}
- if (mEnableStoryflag == 0 || mEnableStoryflag >= 0x7FF || !StoryflagManager::sInstance->getFlag(mEnableStoryflag)) {
- return SUCCEEDED;
+ if (mEnableStoryflag != 0 && mEnableStoryflag < 0x7FF) {
+ if (!StoryflagManager::sInstance->getFlag(mEnableStoryflag)) {
+ return SUCCEEDED;
+ }
}
-
- if (mEnableSceneflag < 0xFF && !SceneflagManager::sInstance->checkBoolFlag(mRoomID, mEnableSceneflag)) {
- return SUCCEEDED;
+ if (mEnableSceneflag < 0xFF) {
+ if (!SceneflagManager::sInstance->checkBoolFlag(mRoomID, mEnableSceneflag)) {
+ return SUCCEEDED;
+ }
}
dAcPy_c *pPlayer = dAcPy_c::GetLinkM();
@@ -83,36 +88,33 @@ int dTgSceneChange_c::actorExecute() {
extern "C" dAcOrdinaryNpc_c *SCRAPPER_PTR;
bool dTgSceneChange_c::checkScrapper() {
- if (SCRAPPER_PTR == nullptr) {
- return false;
- }
-
- if (SCRAPPER_PTR->mProfileName != fProfile::NPC_SLB2) {
- return false;
- }
-
- if (!static_cast<dAcNpcSlb2_c*>(SCRAPPER_PTR)->fn_61_6A10()) {
- return false;
- }
-
- dPath_c path;
- if (path.initWithPathIndex(mPathId, mRoomID, 0) && path.getNumPoints() > 1) {
- if (EventManager::isInEvent(SCRAPPER_PTR, "HailToPlayerToStop")) {
- mVec3_c p0, p1;
- p0.copyFrom(path.getPoint(0));
- p1.copyFrom(path.getPoint(1));
- mAng a = cLib::targetAngleY(p0, p1);
-
-
-
+ if (SCRAPPER_PTR != nullptr && SCRAPPER_PTR->mProfileName == fProfile::NPC_SLB2) {
+ dAcNpcSlb2_c *pScrapper = static_cast<dAcNpcSlb2_c *>(SCRAPPER_PTR);
+ if (!pScrapper->fn_61_6A10()) {
+ return false;
+ }
+ dPath_c path;
+ if (path.initWithPathIndex(mPathId, mRoomID, 0) && (u32)path.getNumPoints() >= 2) {
+ if (EventManager::isInEvent(pScrapper, ScrapperStopEvent)) {
+ mVec3_c p0, p1;
+ p0.copyFrom(path.getPoint(0));
+ p1.copyFrom(path.getPoint(1));
+ mAng a = cLib::targetAngleY(p0, p1);
+ pScrapper->fn_61_56C0(field_0x138, &mPosition, &a);
+
+ return true;
+ } else {
+ void *zev = pScrapper->getOarcZev("DesertRobot");
+ u32 flag1 = 0x100000;
+ Event e(ScrapperStopEvent, zev, 100, flag1 + 1, 0, 0);
+ EventManager::alsoSetAsCurrentEvent(pScrapper, &e, nullptr);
+ return true;
+ }
}
}
-
return false;
-
-
-}
+}
void dTgSceneChange_c::savePlayerPosition() {
if (SCRAPPER_PTR == nullptr) {