Small cleanup

This commit is contained in:
robojumper
2026-05-24 14:15:13 +02:00
parent 916f07e286
commit 9e27df8adf
3 changed files with 75 additions and 75 deletions
+2 -2
View File
@@ -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
+13 -13
View File
@@ -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<dAcObjBase_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<dAcObjBase_c> mRef2;
/* 0x704 */ STATE_MGR_DECLARE(dAcArrow_c);
+60 -60
View File
@@ -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)) {