From cbb28071ad4eedc34b79c10f1e7aef6e607de01b Mon Sep 17 00:00:00 2001 From: elijah-thomas774 Date: Fri, 3 Apr 2026 21:28:58 -0400 Subject: [PATCH] dAcEremly_c::StateEscape --- include/d/a/e/d_a_e_remly.h | 5 +++- src/REL/d/a/e/d_a_e_remly.cpp | 43 +++++++++++++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/include/d/a/e/d_a_e_remly.h b/include/d/a/e/d_a_e_remly.h index 0f0deea2..2ae47f81 100644 --- a/include/d/a/e/d_a_e_remly.h +++ b/include/d/a/e/d_a_e_remly.h @@ -105,6 +105,8 @@ private: bool fn_177_73C0(); + bool fn_177_7510(f32); + bool fn_177_75E0(); /** false -> comapres to camera @@ -161,7 +163,8 @@ private: /* 0xB0C */ f32 field_0xB0C; /* 0xB10 */ f32 field_0xB10; /* 0xB14 */ u32 field_0xB14; - /* 0xB18 */ u8 _B14[0xB1E - 0xB18]; + /* 0xB18 */ u32 field_0xB18; + /* 0xB1C */ u8 _B1C[0xB1E - 0xB1C]; /* 0xB1E */ mAng3_c field_0xB1E; /* 0xB24 */ s16 field_0xB24; /* 0xB26 */ s16 field_0xB26; diff --git a/src/REL/d/a/e/d_a_e_remly.cpp b/src/REL/d/a/e/d_a_e_remly.cpp index e70847d8..7b84f28a 100644 --- a/src/REL/d/a/e/d_a_e_remly.cpp +++ b/src/REL/d/a/e/d_a_e_remly.cpp @@ -794,9 +794,48 @@ void dAcEremly_c::executeState_Run() { } void dAcEremly_c::finalizeState_Run() {} -void dAcEremly_c::initializeState_Escape() {} -void dAcEremly_c::executeState_Escape() {} +void dAcEremly_c::initializeState_Escape() { + field_0xB6E = 0; + mAcceleration = -3.f; + mMdl.setAnm("RemlyRun", m3d::PLAY_MODE_4, 4.f); + field_0xB60 = 5; + mMdl.setRate(2.f); + field_0xB66 = 1; + field_0xB6A = 0; + field_0xB69 = 0; + field_0xB48 = 0; + field_0xB18 = 0; +} +void dAcEremly_c::executeState_Escape() { + fn_177_6FC0(false); + if (0 == sLib::calcTimer(&field_0xB48)) { + fn_177_7040(1, 20.f); + } else { + sLib::addCalcScaledDiff(&mSpeed, 20.f, 0.7f, 3.f); + } + + if (fn_177_8C20(mRotation.y) || fn_177_8980(140.f)) { + field_0xB6E = 1; + if (field_0xB64 == 0) { + changeState(StateID_Scared); + } else { + field_0xB69 = 0; + changeState(StateID_Walk); + } + return; + } + + if (field_0xB6A != 0) { + f32 f = mAng(0) + 400.f; + field_0xB6C = 1; + if (!fn_177_7510(f + 600.f) && !mNearbyBombRef.isLinked()) { + field_0xB69 = 0; + changeState(StateID_Walk); + } + } +} void dAcEremly_c::finalizeState_Escape() {} + void dAcEremly_c::initializeState_EscapeDash() {} void dAcEremly_c::executeState_EscapeDash() {} void dAcEremly_c::finalizeState_EscapeDash() {}