From a8afa74412cc9ef11c06859df90f45c57063f9f3 Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Mon, 21 Sep 2026 21:56:21 -0400 Subject: [PATCH] dAcBombf_c minor adjustments --- config/SOUE01/rels/d_a_bombfNP/symbols.txt | 2 +- include/d/a/d_a_bombf.h | 3 +- src/REL/d/a/d_a_bombf.cpp | 36 ++++++++++++---------- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/config/SOUE01/rels/d_a_bombfNP/symbols.txt b/config/SOUE01/rels/d_a_bombfNP/symbols.txt index ea050f56..201d14c9 100644 --- a/config/SOUE01/rels/d_a_bombfNP/symbols.txt +++ b/config/SOUE01/rels/d_a_bombfNP/symbols.txt @@ -58,4 +58,4 @@ lbl_17_data_190 = .data:0x00000190; // type:object size:0x34 lbl_17_data_1C4 = .data:0x000001C4; // type:object size:0x5 data:string __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global lbl_17_bss_8 = .bss:0x00000008; // type:object size:0x10 -AcBombf__StateID_Wait = .bss:0x00000018; // type:object size:0x30 data:4byte +StateID_Wait__10dAcBombf_c = .bss:0x00000018; // type:object size:0x30 data:4byte diff --git a/include/d/a/d_a_bombf.h b/include/d/a/d_a_bombf.h index 5a0d6c54..9b7897ec 100644 --- a/include/d/a/d_a_bombf.h +++ b/include/d/a/d_a_bombf.h @@ -12,7 +12,6 @@ public: dAcBombf_c() : mStateMgr(*this) {} virtual ~dAcBombf_c() {} virtual bool createHeap() override; - virtual int create() override; virtual int actorExecute() override; virtual int draw() override; virtual int doDelete() override; @@ -31,7 +30,7 @@ private: /* 0x394 */ UNKWORD field_0x394; /* 0x398 */ cBgS_PolyInfo field_0x398; /* 0x3C4 */ TimeAreaStruct mTimeAreaStruct; - /* 0x3D0 */ bool field_0x3D0; + /* 0x3D0 */ bool mIsUnderground; /* 0x3D1 */ u8 mDespawnSceneFlag; /* 0x3D2 */ u8 field_0x3D2; /* 0x3D3 */ u8 field_0x3D3; diff --git a/src/REL/d/a/d_a_bombf.cpp b/src/REL/d/a/d_a_bombf.cpp index 14d84eaa..d1cfd327 100644 --- a/src/REL/d/a/d_a_bombf.cpp +++ b/src/REL/d/a/d_a_bombf.cpp @@ -14,6 +14,13 @@ SPECIAL_ACTOR_PROFILE(BOMBF, dAcBombf_c, fProfile::BOMBF, 0x129, 0, 4099); STATE_DEFINE(dAcBombf_c, Wait); +class dAcBombf_HIO_c { +public: + inline static const char *getBombName() { + return "Bomb"; + } +}; + bool dAcBombf_c::createHeap() { nw4r::g3d::ResFile resFile(getOarcResFile("FlowerBomb")); nw4r::g3d::ResMdl resMdl = resFile.GetResMdl("LeafBomb"); @@ -30,8 +37,8 @@ int dAcBombf_c::actorCreate() { CREATE_ALLOCATOR(dAcBombf_c); field_0x3D2 = (mParams >> 4) & 0xF; - field_0x3D0 = field_0x3D2 == 1; - if (field_0x3D0) { + mIsUnderground = field_0x3D2 == 1; + if (mIsUnderground) { mModel.setPriorityDraw(0x82, 0x7F); } @@ -133,7 +140,7 @@ int dAcBombf_c::actorExecute() { } int dAcBombf_c::draw() { - if (field_0x3D0 != 0 && !dAcPy_c::LINK->checkActionFlagsCont(0x400000)) { + if (mIsUnderground != 0 && !dAcPy_c::LINK->checkActionFlagsCont(0x400000)) { return SUCCEEDED; } drawModelType1(&mModel); @@ -143,15 +150,12 @@ int dAcBombf_c::draw() { void dAcBombf_c::regrowBomb() { // These params are hell s8 viewclip_idx = checkActorProperty(dAcBase_c::AC_PROP_0x1) ? mViewClipIdx : -1; - u32 actorParams1; - actorParams1 = dAcBomb_c::BOMBF; - if (field_0x3D0) { - actorParams1 = dAcBomb_c::BOMBF_CRAWLSPACE; - } - dAcObjBase_c *ac = dAcObjBase_c::create( - "Bomb", mRoomID, actorParams1, &mPosition, nullptr, nullptr, 0xFFFFFFFF, 0xFFFF, viewclip_idx + u32 bombType = mIsUnderground ? dAcBomb_c::BOMBF_CRAWLSPACE : dAcBomb_c::BOMBF; + const char *name = dAcBombf_HIO_c::getBombName(); + dAcBomb_c *ac = static_cast( + dAcObjBase_c::create(name, mRoomID, bombType, &mPosition, nullptr, nullptr, 0xFFFFFFFF, 0xFFFF, viewclip_idx) ); - mBombRef.link(static_cast(ac)); + mBombRef.link(ac); dAcBomb_c *bomb = mBombRef.get(); if (bomb != nullptr) { field_0x394 = 0x3C; @@ -167,8 +171,6 @@ void dAcBombf_c::regrowBomb() { void dAcBombf_c::initializeState_Wait() {} -extern "C" u16 lbl_8057A750; - void dAcBombf_c::executeState_Wait() { if (SceneflagManager::sInstance->checkBoolFlag(mRoomID, mDespawnSceneFlag)) { deleteRequest(); @@ -194,7 +196,9 @@ void dAcBombf_c::executeState_Wait() { } else { startSound(SE_TIMESLIP_TIMESLIP_REV); } - dJEffManager_c::spawnEffect(lbl_8057A750, mPosition, nullptr, nullptr, nullptr, nullptr, 0, 0); + dJEffManager_c::spawnEffect( + PARTICLE_RESOURCE_ID_MAPPING_464_, mPosition, nullptr, nullptr, nullptr, nullptr, 0, 0 + ); } scaleFactor *= mTimeAreaStruct.field_0x00; @@ -206,14 +210,14 @@ void dAcBombf_c::executeState_Wait() { } dAcBomb_c *bomb = mBombRef.get(); if (bomb != nullptr) { - if (!bomb->mStateMgr.isState(dAcBomb_c::StateID_FlowerWait) && field_0x3D0 == 0) { + if (!bomb->mStateMgr.isState(dAcBomb_c::StateID_FlowerWait) && mIsUnderground == 0) { mBombRef.unlink(); field_0x394 = 0x3C; } } else { if (field_0x394 != 0) { field_0x394--; - } else if (field_0x3D0 == 0 || dAcPy_c::LINK->getSquareDistanceTo(mPosition) > 22500.0f) { + } else if (mIsUnderground == 0 || dAcPy_c::LINK->getSquareDistanceTo(mPosition) > 22500.0f) { regrowBomb(); } }