From 9e27df8adf6dc4a6f6777086003a97a911828017 Mon Sep 17 00:00:00 2001 From: robojumper Date: Sun, 24 May 2026 14:15:13 +0200 Subject: [PATCH] Small cleanup --- config/SOUE01/symbols.txt | 4 +- include/d/a/obj/d_a_obj_arrow.h | 26 +++---- src/d/a/obj/d_a_obj_arrow.cpp | 120 ++++++++++++++++---------------- 3 files changed, 75 insertions(+), 75 deletions(-) diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index dfe94f37..f3b3da84 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -14045,7 +14045,7 @@ create__10dAcArrow_cFv = .text:0x8025D9D0; // type:function size:0x184 changeState__79sStateMgr_c<10dAcArrow_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x8025DB60; // type:function size:0x10 __dt__10dAcArrow_cFv = .text:0x8025DB70; // type:function size:0x110 hitCallback__10dAcArrow_cFP8cCcD_ObjP12dAcObjBase_cP8cCcD_Obj = .text:0x8025DC80; // type:function size:0xA0 -fn_8025DD20__10dAcArrow_cFRC7mVec3_cR7mVec3_cb = .text:0x8025DD20; // type:function size:0x1AC +checkWaterHit__10dAcArrow_cFRC7mVec3_cR7mVec3_cb = .text:0x8025DD20; // type:function size:0x1AC fn_8025DED0__10dAcArrow_cFf = .text:0x8025DED0; // type:function size:0x288 fn_8025E160__10dAcArrow_cFv = .text:0x8025E160; // type:function size:0x480 updateRoomId__10dAcArrow_cFv = .text:0x8025E5E0; // type:function size:0x60 @@ -14071,7 +14071,7 @@ finalizeState_BgStop__10dAcArrow_cFv = .text:0x8025FF30; // type:function size:0 initializeState_ActorStop__10dAcArrow_cFv = .text:0x8025FF40; // type:function size:0x8C executeState_ActorStop__10dAcArrow_cFv = .text:0x8025FFD0; // type:function size:0x6C finalizeState_ActorStop__10dAcArrow_cFv = .text:0x80260040; // type:function size:0x10 -fn_80260050__10dAcArrow_cFRC7mVec3_cb = .text:0x80260050; // type:function size:0x80 +onSlingshotHit__10dAcArrow_cFRC7mVec3_cb = .text:0x80260050; // type:function size:0x80 fn_802600D0__10dAcArrow_cFb = .text:0x802600D0; // type:function size:0xE8 fn_802601C0__10dAcArrow_cFv = .text:0x802601C0; // type:function size:0x90 fn_80260250__10dAcArrow_cFP12dAcObjBase_cP12dAcObjBase_c = .text:0x80260250; // type:function size:0x78 diff --git a/include/d/a/obj/d_a_obj_arrow.h b/include/d/a/obj/d_a_obj_arrow.h index a1a17b4b..7a44ee7d 100644 --- a/include/d/a/obj/d_a_obj_arrow.h +++ b/include/d/a/obj/d_a_obj_arrow.h @@ -37,7 +37,7 @@ private: static const u8 sDamageArrMaybe[]; static u16 sCounter; - bool fn_8025DD20(const mVec3_c &v1, mVec3_c &v2, bool noEffect); + bool checkWaterHit(const mVec3_c &v1, mVec3_c &v2, bool noEffect); void fn_8025DED0(f32 f); void fn_8025E160(); void updateRoomId(); @@ -48,20 +48,20 @@ private: dAcObjBase_c *fn_8025E960(); void initPickupCc(); bool checkPickup(); - void fn_80260050(const mVec3_c &v, bool); + void onSlingshotHit(const mVec3_c &v, bool); void fn_802600D0(bool); void fn_802601C0(); bool fn_80260250(dAcObjBase_c *o1, dAcObjBase_c *o2); enum ArrowFlag_e { ARROW_0x1 = 1 << 0, - ARROW_0x2 = 1 << 1, + ARROW_SHOULD_DESPAWN = 1 << 1, ARROW_INITIAL_SPAWN = 1 << 2, ARROW_0x8 = 1 << 3, - ARROW_0x10 = 1 << 4, - ARROW_0x20 = 1 << 5, + ARROW_OLD = 1 << 4, + ARROW_WATER_HIT = 1 << 5, ARROW_0x40 = 1 << 6, - ARROW_0x80 = 1 << 7, + ARROW_FULLY_CHARGED = 1 << 7, ARROW_0x100 = 1 << 8, ARROW_0x200 = 1 << 9, ARROW_0x400 = 1 << 10, @@ -98,22 +98,22 @@ private: /* 0x350 */ dAcRef_c mRef1; /* 0x35C */ dCcD_Cps mCcCps; /* 0x4CC */ dCcD_Sph mCcSph; - /* 0x61C */ cBgS_PolyInfo mPolyInfo; // ?? + /* 0x61C */ cBgS_PolyInfo mPolyInfo; /* 0x648 */ dEmitter_c mEffects; /* 0x67C */ u32 mArrowFlags; /* 0x680 */ u8 mArrowType; - /* 0x681 */ u8 field_0x681; + /* 0x681 */ u8 mHiddenTimer; /* 0x682 */ u8 mDespawnTimer; /* 0x683 */ u8 field_0x683; - /* 0x684 */ s16 field_0x684; + /* 0x684 */ s16 mCounterIdx; /* 0x686 */ u8 field_0x686[0x688 - 0x686]; /* 0x688 */ s16 field_0x688; /* 0x68A */ s16 field_0x68A; /* 0x68C */ u16 mEffectId; - /* 0x68E */ mAng field_0x68E; + /* 0x68E */ mAng mEffectRotationZ; /* 0x690 */ mAng field_0x690; - /* 0x692 */ mAng3_c field_0x692; - /* 0x698 */ UNKWORD field_0x698; + /* 0x692 */ mAng3_c mEffectRotation; + /* 0x698 */ s32 mBoundJntIdx; /* 0x69C */ f32 field_0x69C; /* 0x6A0 */ f32 field_0x6A0; /* 0x6A4 */ f32 field_0x6A4; @@ -123,7 +123,7 @@ private: /* 0x6BC */ mVec3_c field_0x6BC; /* 0x6C8 */ mVec3_c field_0x6C8; /* 0x6D4 */ mVec3_c field_0x6D4; - /* 0x6E0 */ mVec3_c field_0x6E0; + /* 0x6E0 */ mVec3_c mEffectTranslation; /* 0x6EC */ mVec3_c field_0x6EC; /* 0x6F8 */ dAcRef_c mRef2; /* 0x704 */ STATE_MGR_DECLARE(dAcArrow_c); diff --git a/src/d/a/obj/d_a_obj_arrow.cpp b/src/d/a/obj/d_a_obj_arrow.cpp index a52f5daf..9ef086a9 100644 --- a/src/d/a/obj/d_a_obj_arrow.cpp +++ b/src/d/a/obj/d_a_obj_arrow.cpp @@ -131,7 +131,7 @@ int dAcArrow_c::create() { } mBoundingBox.Set(mVec3_c(-6.0f, -6.0f, 0.0f), mVec3_c(6.0f, 6.0f, 110.0f)); - field_0x684 = -1; + mCounterIdx = -1; field_0x68A = 300; field_0x688 = 50.0f - cM::rndF(20.0f); field_0x6A8 = 80.0f; @@ -145,11 +145,11 @@ dAcArrow_c::~dAcArrow_c() {} void dAcArrow_c::hitCallback(cCcD_Obj *i_objInfA, dAcObjBase_c *i_actorB, cCcD_Obj *i_objInfB) { dJntCol_c *col = i_actorB->getLinkage().getJntCol(); if (col != nullptr) { - field_0x698 = col->getArrowOffsetPosAndAngle( + mBoundJntIdx = col->getArrowOffsetPosAndAngle( &i_objInfA->GetAtHitPos(), &mRotation, &field_0x6B0, &field_0x6BC, i_objInfB->ChkTg_0x4C(0x2000) ); - if (field_0x698 >= 0) { + if (mBoundJntIdx >= 0) { mRef1.link(i_actorB); } else { mRef1.unlink(); @@ -157,7 +157,7 @@ void dAcArrow_c::hitCallback(cCcD_Obj *i_objInfA, dAcObjBase_c *i_actorB, cCcD_O } } -bool dAcArrow_c::fn_8025DD20(const mVec3_c &v1, mVec3_c &v2, bool noEffect) { +bool dAcArrow_c::checkWaterHit(const mVec3_c &v1, mVec3_c &v2, bool noEffect) { if (dBgS_WtrLinChk::SetIsWater(&v1, &v2, this)) { const mVec3_c &end = dBgS_WtrLinChk::GetInstance().GetLinEnd(); if (isSlingshotProjectile()) { @@ -210,12 +210,11 @@ void dAcArrow_c::fn_8025DED0(f32 f) { mVec3_c next = mVec3_c(mPosition + mVelocity * (field_0x6A0 + 1.0f)); mCcCps.OnAtSet(); - if (!checkArrowFlag(ARROW_0x20)) { + if (!checkArrowFlag(ARROW_WATER_HIT)) { if (!isSlingshotProjectile()) { holdSound(SE_AW_FLY_LV); } - fb: - fn_8025DD20(mPosition, next, true); + checkWaterHit(mPosition, next, true); } else { f32 diff = next.y - field_0x6D4.y; if (diff < -300.0f) { @@ -253,7 +252,7 @@ void dAcArrow_c::fn_8025E160() { link->fn_80209700(field_0x6A4, field_0x69C, false); } else { link->fn_80209700(field_0x6A4, field_0x69C, false); - if (checkArrowFlag(ARROW_0x80)) { + if (checkArrowFlag(ARROW_FULLY_CHARGED)) { const mVec3_c *v = link->fn_802097E0(mRotation.x, mRotation.y); if (v != nullptr) { mPosition = *v; @@ -276,7 +275,7 @@ void dAcArrow_c::fn_8025E160() { } // Spawn additional projectiles for Mighty Scattershot - if (isSlingshotProjectile() && checkArrowFlag(ARROW_0x80)) { + if (isSlingshotProjectile() && checkArrowFlag(ARROW_FULLY_CHARGED)) { mVec3_c tmp = mVec3_c::Ez; tmp.rotX(mAngle.x); tmp.rotY(mAngle.y); @@ -304,7 +303,7 @@ void dAcArrow_c::fn_8025E160() { field_0x6C8 = mPosition; mVelocity.fromXY(mAngle.x, mAngle.y, field_0x69C); if (!isSlingshotProjectile()) { - field_0x684 = sCounter; + mCounterIdx = sCounter; sCounter++; if (sCounter == 6) { sCounter = 0; @@ -385,7 +384,7 @@ dAcObjBase_c *dAcArrow_c::fn_8025E960() { } else { dJntCol_c *col = o1->getLinkage().getJntCol(); if (col != nullptr) { - col->setArrowPosAndAngle(&field_0x6B0, &field_0x6BC, field_0x698, &mPosition, &mRotation); + col->setArrowPosAndAngle(&field_0x6B0, &field_0x6BC, mBoundJntIdx, &mPosition, &mRotation); } else { MTXMultVec(o1->mWorldMtx, field_0x6B0, mPosition); mVec3_c tmp; @@ -413,7 +412,7 @@ bool dAcArrow_c::checkPickup() { if (dAcPy_c::getCurrentBowType() != 0) { if (mCcSph.ChkCoHit()) { dAcItem_c::giveItem(ITEM_SINGLE_ARROW, 0, -1); - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); return true; } mCcSph.SetC(mPosition); @@ -432,7 +431,7 @@ void dAcArrow_c::executeState_Wait() { if (checkArrowFlag(ARROW_0x800)) { mStateMgr.changeState(StateID_Move); } else if (isSlingshotProjectile()) { - field_0x681 = 1; + mHiddenTimer = 1; } } @@ -448,7 +447,7 @@ void dAcArrow_c::initializeState_Move() { mEffectId = PARTICLE_RESOURCE_ID_MAPPING_207_; } else { u8 dmg = sDamageArrMaybe[dAcPy_c::getCurrentBowType()]; - if (checkArrowFlag(ARROW_0x80)) { + if (checkArrowFlag(ARROW_FULLY_CHARGED)) { mCcCps.SetAtFlagsUpper(0x2000000); mEffectId = PARTICLE_RESOURCE_ID_MAPPING_2_; dmg = (s32)dmg * 1.5f + 0.5f; @@ -466,7 +465,7 @@ void dAcArrow_c::initializeState_Move() { void dAcArrow_c::executeState_Move() { mPosition += mVelocity; mVec3_c next = mVec3_c(mPosition + mVelocity * field_0x6A0); - if (!checkArrowFlag(ARROW_0x20)) { + if (!checkArrowFlag(ARROW_WATER_HIT)) { sArrowLinChk.Set(&mOldPosition, &next, this); mVec3_c t; if (dBgS::GetInstance()->LineCross(&sArrowLinChk)) { @@ -475,8 +474,8 @@ void dAcArrow_c::executeState_Move() { t = next; } - if (fn_8025DD20(mOldPosition, t, false)) { - setArrowFlag(ARROW_0x20); + if (checkWaterHit(mOldPosition, t, false)) { + setArrowFlag(ARROW_WATER_HIT); unsetArrowFlag(ARROW_0x200); field_0x6D4 = dBgS_WtrLinChk::GetInstance().GetLinEnd(); mVelocity.normalize(); @@ -531,7 +530,7 @@ void dAcArrow_c::executeState_Move() { } dLightEnv_c::GetPInstance()->setBPM8_Type6(&mCcCps.GetAtHitPos()); if (isSlingshotProjectile()) { - fn_80260050(mCcCps.GetAtHitPos(), 0); + onSlingshotHit(mCcCps.GetAtHitPos(), 0); return; } atActor = mCcCps.GetAtActor(); @@ -539,18 +538,18 @@ void dAcArrow_c::executeState_Move() { if (atActor != nullptr && atActor->getLinkage().hasJntCol()) { bool b = false; if (atActor != mRef1.get()) { - field_0x698 = atActor->getLinkage().getArrowOffsetPosAndAngle( + mBoundJntIdx = atActor->getLinkage().getArrowOffsetPosAndAngle( &mCcCps.GetAtHitPos(), &mRotation, &field_0x6B0, &field_0x6BC, mCcCps.GetAtFlag0x2() ); b = true; } - if (field_0x698 >= 0) { + if (mBoundJntIdx >= 0) { what = 4; if (b) { mRef1.link(atActor); } - } else if (field_0x698 == -2 || mCcCps.GetAtFlag0x2()) { + } else if (mBoundJntIdx == -2 || mCcCps.GetAtFlag0x2()) { what = 2; } } else { @@ -576,8 +575,8 @@ void dAcArrow_c::executeState_Move() { switch (what) { default: { if (what == 2) { - if (checkArrowFlag(ARROW_0x20)) { - setArrowFlag(ARROW_0x2); + if (checkArrowFlag(ARROW_WATER_HIT)) { + setArrowFlag(ARROW_SHOULD_DESPAWN); } else { if (mCcCps.ChkAtHit()) { mPosition = mCcCps.GetAtHitPos(); @@ -587,8 +586,8 @@ void dAcArrow_c::executeState_Move() { } else if (what == 4) { mStateMgr.changeState(StateID_ActorStop); } else { - setArrowFlag(ARROW_0x2); - if (!checkArrowFlag(ARROW_0x20) && mCcCps.ChkAtHit()) { + setArrowFlag(ARROW_SHOULD_DESPAWN); + if (!checkArrowFlag(ARROW_WATER_HIT) && mCcCps.ChkAtHit()) { mPosition = mCcCps.GetAtHitPos(); } } @@ -598,9 +597,9 @@ void dAcArrow_c::executeState_Move() { case 3: { if (isCross) { mPosition = sArrowLinChk.GetLinEnd(); - if (checkArrowFlag(ARROW_0x20) && + if (checkArrowFlag(ARROW_WATER_HIT) && (isSlingshotProjectile() || mPosition.y - field_0x6D4.y < -300.0f)) { - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); } else { s32 polyAtt0 = dBgS::GetInstance()->GetPolyAtt0(sArrowLinChk); s32 polyAtt1 = dBgS::GetInstance()->GetPolyAtt1(sArrowLinChk); @@ -610,18 +609,18 @@ void dAcArrow_c::executeState_Move() { polyAtt0 == POLY_ATT_0_NONE || polyAtt0 == POLY_ATT_0_NUMA || polyAtt0 == POLY_ATT_0_STONE || polyAtt0 == POLY_ATT_0_METAL || (polyAtt0 == POLY_ATT_0_LIFE && (polyAtt1 == 2 || polyAtt1 == 3))) { - if (checkArrowFlag(ARROW_0x20)) { - setArrowFlag(ARROW_0x2); + if (checkArrowFlag(ARROW_WATER_HIT)) { + setArrowFlag(ARROW_SHOULD_DESPAWN); } else { dAcPy_c::fn_801E2FC0(mPosition, sArrowLinChk, 0.5f); if (isSlingshotProjectile()) { - fn_80260050(mPosition, polyAtt0 == POLY_ATT_0_LAVA); + onSlingshotHit(mPosition, polyAtt0 == POLY_ATT_0_LAVA); } else { startBgHitSound(SE_AW_HIT, sArrowLinChk, nullptr); if (polyAtt0 == POLY_ATT_0_LAVA || polyAtt0 == POLY_ATT_0_NUMA || polyAtt0 == POLY_ATT_0_NONE || specialCode == 16 || specialCode == 10 || specialCode == 11) { - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); } else { mStateMgr.changeState(StateID_Bound); } @@ -631,23 +630,23 @@ void dAcArrow_c::executeState_Move() { mStateMgr.changeState(StateID_BgStop); } } - } else if (checkArrowFlag(ARROW_0x20)) { + } else if (checkArrowFlag(ARROW_WATER_HIT)) { if (isSlingshotProjectile()) { mPosition = next; - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); } else { f32 diff = mPosition.y - field_0x6D4.y; if (diff < -300.0f) { mCcCps.ClrAtSet(); mCcCps.ClrAtHit(); if (sLib::chase(&mScale.x, 0.0f, 0.1f)) { - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); } else { mScale.y = mScale.z = mScale.x; mModel.setScale(mScale); } } else if (diff > 90.0f) { - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); } else { fn_8025DED0(mPosition.distance(field_0x6C8)); } @@ -676,7 +675,7 @@ void dAcArrow_c::executeState_Move() { if (field_0x68A != 0) { field_0x68A--; } else { - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); return; } mRotation.x = mVelocity.atan2snY_XZ(); @@ -697,7 +696,7 @@ void dAcArrow_c::finalizeState_Move() {} void dAcArrow_c::initializeState_Bound() { if (isSlingshotProjectile()) { - fn_80260050(mPosition, false); + onSlingshotHit(mPosition, false); } else { mSpeed = 0.0f; fn_802601C0(); @@ -738,7 +737,7 @@ void dAcArrow_c::executeState_Bound() { setArrowFlag(ARROW_0x1); } } else if ((checkArrowFlag(ARROW_0x1) && mVelocity.y <= 0.0f) || field_0x6C8.y - 5000.0f > mPosition.y) { - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); } updateMtx(); @@ -791,10 +790,10 @@ void dAcArrow_c::executeState_BgStop() { ref = fn_8025E960(); } - if (checkArrowFlag(ARROW_0x10) || ref == nullptr || + if (checkArrowFlag(ARROW_OLD) || ref == nullptr || ((!ref->checkObjectProperty(OBJ_PROP_0x10000) || !checkArrowFlag(ARROW_0x8000)) && !dBgS::GetInstance()->ChkPolySafe(mPolyInfo))) { - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); } else if (!checkArrowFlag(ARROW_0x8000)) { bool b = false; s16 s1 = fn_8025E640(); @@ -829,8 +828,8 @@ void dAcArrow_c::initializeState_ActorStop() { void dAcArrow_c::executeState_ActorStop() { dAcObjBase_c *obj = fn_8025E960(); checkPickup(); - if (checkArrowFlag(ARROW_0x10) || obj == nullptr) { - setArrowFlag(ARROW_0x2); + if (checkArrowFlag(ARROW_OLD) || obj == nullptr) { + setArrowFlag(ARROW_SHOULD_DESPAWN); } unsetArrowFlag(ARROW_0x10000); } @@ -839,13 +838,13 @@ void dAcArrow_c::finalizeState_ActorStop() { unsetArrowFlag(ARROW_0x10000); } -void dAcArrow_c::fn_80260050(const mVec3_c &v, bool b) { +void dAcArrow_c::onSlingshotHit(const mVec3_c &v, bool b) { if (b) { startSound(SE_PC_HIT_LAVA); } else { startSound(SE_PC_HIT); } - setArrowFlag(ARROW_0x2); + setArrowFlag(ARROW_SHOULD_DESPAWN); setArrowFlag(ARROW_0x100); dJEffManager_c::spawnEffect(PARTICLE_RESOURCE_ID_MAPPING_538_, v, nullptr, nullptr, nullptr, nullptr, 0, 0); } @@ -853,16 +852,16 @@ void dAcArrow_c::fn_80260050(const mVec3_c &v, bool b) { void dAcArrow_c::fn_802600D0(bool b) { // NONMATCHING if (b) { - mWorldMtx.getTranslation(field_0x6E0); - field_0x692.x.mVal = 0; - field_0x692.y.mVal = mRotation.y; - field_0x692.z.mVal = field_0x68E; + mWorldMtx.getTranslation(mEffectTranslation); + mEffectRotation.x.mVal = 0; + mEffectRotation.y.mVal = mRotation.y; + mEffectRotation.z.mVal = mEffectRotationZ; if (mEffectId == PARTICLE_RESOURCE_ID_MAPPING_2_) { - field_0x68E += 0x888; + mEffectRotationZ += 0x888; } mMtx_c mtx; - mtx.transS(field_0x6E0); - mtx.ZXYrotM(field_0x692); + mtx.transS(mEffectTranslation); + mtx.ZXYrotM(mEffectRotation); mEffects.holdEffect(mEffectId, mtx, nullptr, nullptr); } else { mEffects.setFading(5); @@ -900,7 +899,7 @@ int dAcArrow_c::actorExecute() { } } - if (checkArrowFlag(ARROW_0x2)) { + if (checkArrowFlag(ARROW_SHOULD_DESPAWN)) { // TODO - works but maybe temps or inlines? if (mRef2.isLinked()) { mRef2.get()->getLinkage().forceRemove(mRef2.get()); @@ -908,17 +907,16 @@ int dAcArrow_c::actorExecute() { fn_802601C0(); if (mDespawnTimer != 0) { mDespawnTimer--; - } else { deleteRequest(); return SUCCEEDED; } } else { - if (field_0x684 == sCounter) { - setArrowFlag(ARROW_0x10); + if (mCounterIdx == sCounter) { + setArrowFlag(ARROW_OLD); } - if (field_0x681 != 0) { - field_0x681--; + if (mHiddenTimer != 0) { + mHiddenTimer--; } mStateMgr.executeState(); if (mStateMgr.isState(StateID_Move)) { @@ -928,7 +926,9 @@ int dAcArrow_c::actorExecute() { mPositionCopy2 = mPositionCopy3 = mPosition; if (checkArrowFlag(ARROW_0x1000)) { - fn_802600D0(mStateMgr.isState(StateID_Move) && !checkArrowFlag(ARROW_0x2) || checkArrowFlag(ARROW_0x100)); + fn_802600D0( + (mStateMgr.isState(StateID_Move) && !checkArrowFlag(ARROW_SHOULD_DESPAWN)) || checkArrowFlag(ARROW_0x100) + ); } updateRoomId(); dAcObjBase_c *obj = mRef2.get(); @@ -944,10 +944,10 @@ int dAcArrow_c::actorExecute() { } int dAcArrow_c::draw() { - if (field_0x681 != 0) { + if (mHiddenTimer != 0) { return SUCCEEDED; } - if (checkArrowFlag(ARROW_0x2)) { + if (checkArrowFlag(ARROW_SHOULD_DESPAWN)) { return SUCCEEDED; } if (mStateMgr.isState(StateID_Wait) && checkArrowFlag(ARROW_INITIAL_SPAWN)) {