dAcBombf_c minor adjustments

This commit is contained in:
elijah-thomas774
2026-09-21 21:56:21 -04:00
parent 73cdc25674
commit a8afa74412
3 changed files with 22 additions and 19 deletions
+1 -1
View File
@@ -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
+1 -2
View File
@@ -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;
+20 -16
View File
@@ -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<dAcBomb_c *>(
dAcObjBase_c::create(name, mRoomID, bombType, &mPosition, nullptr, nullptr, 0xFFFFFFFF, 0xFFFF, viewclip_idx)
);
mBombRef.link(static_cast<dAcBomb_c *>(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();
}
}