mirror of
https://github.com/zeldaret/ss
synced 2026-05-27 16:13:08 -04:00
dAcEremly_c::StateWait
This commit is contained in:
@@ -93,10 +93,14 @@ public:
|
||||
|
||||
private:
|
||||
void fn_177_6A40();
|
||||
bool fn_177_6B10(bool, mAng);
|
||||
void fn_177_6EA0(bool);
|
||||
|
||||
// Checks if Batreaux is Human
|
||||
bool fn_177_7330();
|
||||
|
||||
bool fn_177_73C0();
|
||||
|
||||
bool fn_177_75E0();
|
||||
|
||||
/** false -> comapres to camera
|
||||
@@ -111,8 +115,11 @@ private:
|
||||
bool fn_177_7B10();
|
||||
|
||||
void fn_177_8520(bool);
|
||||
bool fn_177_86C0();
|
||||
bool fn_177_8980(f32);
|
||||
bool fn_177_8AC0();
|
||||
bool fn_177_8C20(mAng);
|
||||
bool fn_177_8F90();
|
||||
|
||||
private:
|
||||
/* 0x378 */ STATE_MGR_DECLARE(dAcEremly_c);
|
||||
@@ -147,7 +154,8 @@ private:
|
||||
/* 0xB08 */ f32 field_0xB08;
|
||||
/* 0xB0C */ f32 field_0xB0C;
|
||||
/* 0xB10 */ f32 field_0xB10;
|
||||
/* 0xB14 */ u8 _B14[0xB1E - 0xB14];
|
||||
/* 0xB14 */ u32 field_0xB14;
|
||||
/* 0xB18 */ u8 _B14[0xB1E - 0xB18];
|
||||
/* 0xB1E */ mAng3_c field_0xB1E;
|
||||
/* 0xB24 */ s16 field_0xB24;
|
||||
/* 0xB26 */ s16 field_0xB26;
|
||||
@@ -155,11 +163,12 @@ private:
|
||||
/* 0xB38 */ f32 field_0xB38;
|
||||
/* 0xB3C */ f32 field_0xB3C;
|
||||
/* 0xB40 */ f32 field_0xB40;
|
||||
/* */ u8 _B44[0xB48 - 0xB44];
|
||||
/* 0xB44 */ u16 field_0xB44;
|
||||
/* 0xB46 */ u16 field_0xB46;
|
||||
/* 0xB48 */ u16 field_0xB48;
|
||||
/* */ u8 _B4A[0xB4E - 0xB4A];
|
||||
/* 0xB4E */ u16 field_0xB4E;
|
||||
/* */ u8 _B50[0xB52 - 0xB50];
|
||||
/* 0xB50 */ u16 field_0xB50;
|
||||
/* 0xB52 */ u16 field_0xB52;
|
||||
/* 0xB54 */ u16 field_0xB54;
|
||||
/* 0xB56 */ u16 field_0xB56;
|
||||
@@ -172,12 +181,14 @@ private:
|
||||
/* 0xB64 */ u8 field_0xB64;
|
||||
/* */ u8 _B65;
|
||||
/* 0xB66 */ u8 field_0xB66;
|
||||
/* */ u8 _B67;
|
||||
/* 0xB67 */ u8 field_0xB67;
|
||||
/* 0xB68 */ u8 field_0xB68;
|
||||
/* 0xB69 */ u8 field_0xB69;
|
||||
/* 0xB6A */ u8 field_0xB6A;
|
||||
/* 0xB6B */ u8 field_0xB6B;
|
||||
/* 0xB6C */ u8 field_0xB6C;
|
||||
/* 0xB6D */ u8 field_0xB6D;
|
||||
/* 0xB6E */ u8 field_0xB6E;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -539,9 +539,125 @@ int dAcEremly_c::draw() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
void dAcEremly_c::initializeState_Wait() {}
|
||||
void dAcEremly_c::executeState_Wait() {}
|
||||
void dAcEremly_c::initializeState_Wait() {
|
||||
field_0xB14 = 0;
|
||||
mAcceleration = -3.f;
|
||||
|
||||
fn_177_8520(true);
|
||||
|
||||
if (field_0xB66 || field_0xB6A) {
|
||||
mMdl.setAnm("RemlyWaitStand", m3d::PLAY_MODE_4, 4.f);
|
||||
field_0xB60 = 0;
|
||||
|
||||
field_0xB48 = cM::rndF(48.f) + 48.f;
|
||||
} else {
|
||||
mMdl.setAnm("RemlyWaitSit", m3d::PLAY_MODE_4, 4.f);
|
||||
field_0xB60 = 1;
|
||||
|
||||
field_0xB44 = cM::rndF(128.f) + 128.f;
|
||||
}
|
||||
}
|
||||
void dAcEremly_c::executeState_Wait() {
|
||||
const dAcPy_c *pPlayer = dAcPy_c::GetLink();
|
||||
if (field_0xB6A == 0) {
|
||||
fn_177_6EA0(false);
|
||||
}
|
||||
sLib::addCalcScaled(&mSpeed, 0.7f, 5.f);
|
||||
|
||||
if (fn_177_7330()) {
|
||||
mStateMgr.changeState(StateID_EscapeDash);
|
||||
return;
|
||||
}
|
||||
|
||||
if (fn_177_86C0()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (field_0xB60 == 2) {
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mMdl.setAnm("RemlytWaitSit", m3d::PLAY_MODE_4, 10.f);
|
||||
field_0xB60 = 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (fn_177_73C0()) {
|
||||
if (field_0xB6E == 0) {
|
||||
if (fn_800301b0(mPositionCopy2, mRotation.y + 0x8000, true, 140.f) != 0 /* TODO: Enum?*/) {
|
||||
field_0xB6E = 1;
|
||||
} else if (isWithinPlayerRadius(600.f) || mNearbyBombRef.isLinked()) {
|
||||
mStateMgr.changeState(StateID_Escape);
|
||||
field_0xB6A = 1;
|
||||
} else {
|
||||
fn_177_6B10(false, 0);
|
||||
field_0xB48 = 48.f + cM::rndF(48.f);
|
||||
field_0xB44 = 0x80;
|
||||
if (isWithinPlayerRadius(250.f)) {
|
||||
mStateMgr.changeState(StateID_Scared);
|
||||
}
|
||||
}
|
||||
} else if (fn_177_6B10(0, 0)) {
|
||||
mStateMgr.changeState(StateID_Escape);
|
||||
field_0xB6A = 1;
|
||||
field_0xB48 = 20;
|
||||
field_0xB44 = 128;
|
||||
} else if (isWithinPlayerRadius(250.f)) {
|
||||
mStateMgr.changeState(StateID_Scared);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
field_0xB6E = 0;
|
||||
fn_177_6B10(0, 0);
|
||||
if (field_0xB56 != 0 || fn_177_8F90()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (0 == sLib::calcTimer(&field_0xB48) && field_0xB66 != 0) {
|
||||
field_0xB66 = 0;
|
||||
field_0xB6A = 0;
|
||||
field_0xB6E = 0;
|
||||
field_0xB44 = 128.f + cM::rndF(128.f);
|
||||
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
return;
|
||||
}
|
||||
|
||||
if (field_0xB61 == 1) {
|
||||
return;
|
||||
}
|
||||
if (sLib::calcTimer(&field_0xB44)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Maybe Inline
|
||||
bool coPlayer = false;
|
||||
if (mSph.ChkCoHit()) {
|
||||
coPlayer = true;
|
||||
if (mSph.GetCoActor()->isActorPlayer()) {
|
||||
coPlayer = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0xB50 == 0 && !coPlayer && !fn_177_8C20(getXZAngleToPlayer())) {
|
||||
mAng a = (pPlayer->mRotation.y + 0x8000);
|
||||
if (mAng::abs(getXZAngleToPlayer() - a) > 0x2000) {
|
||||
field_0xB69 = 1;
|
||||
field_0xB67 = 0;
|
||||
|
||||
mStateMgr.changeState(StateID_Walk);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0xB60 == 1) {
|
||||
mMdl.setAnm("RemlytWaitSitCry", m3d::PLAY_MODE_4, 10.f);
|
||||
field_0xB60 = 2;
|
||||
}
|
||||
field_0xB44 = 128.f + cM::rndF(128.f);
|
||||
}
|
||||
void dAcEremly_c::finalizeState_Wait() {}
|
||||
|
||||
void dAcEremly_c::initializeState_Walk() {}
|
||||
void dAcEremly_c::executeState_Walk() {}
|
||||
void dAcEremly_c::finalizeState_Walk() {}
|
||||
@@ -611,3 +727,23 @@ void dAcEremly_c::finalizeState_NightJumpAttack() {}
|
||||
void dAcEremly_c::initializeState_BirthWait() {}
|
||||
void dAcEremly_c::executeState_BirthWait() {}
|
||||
void dAcEremly_c::finalizeState_BirthWait() {}
|
||||
|
||||
bool dAcEremly_c::fn_177_73C0() {
|
||||
if (isState(StateID_Sleep) || fn_177_7330() || field_0xB68) {
|
||||
return false;
|
||||
}
|
||||
|
||||
dAcPy_c *pPlayer = dAcPy_c::GetLinkM();
|
||||
if (pPlayer->isUsingSword() || pPlayer->checkActionFlagsCont(0x2) || pPlayer->checkActionFlagsCont(0x80) ||
|
||||
pPlayer->isCarryingBomb() || pPlayer->isUsingWhip() || pPlayer->checkActionFlagsCont(0x4) ||
|
||||
pPlayer->checkActionFlagsCont(0x100) || pPlayer->checkActionFlagsCont(0x10)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (mNearbyBombRef.isLinked()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
field_0xB6C = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user